ó
ÐH/\c           @   sÛ  d  Z  d d l Z d d l Z y d d l m Z m Z Wn' e k
 ra d d l m Z m Z n Xd d l Z d d l	 Z	 y d d l
 m Z Wn! e k
 r± d d l
 m Z n Xd d l m Z d „  Z d e f d	 „  ƒ  YZ d
 e e	 j f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ e d k r×d GHn  d S(    s/   
Various tests for synchronization primitives.
iÿÿÿÿN(   t   start_new_threadt	   get_ident(   t   support(   t   test_support(   t   TimeAssertMixinc           C   s   t  j d ƒ d  S(   Ng{®Gáz„?(   t   timet   sleep(    (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   _wait   s    t   Bunchc           B   s5   e  Z d  Z e d „ Z d „  Z d „  Z d „  Z RS(   s   
    A bunch of threads.
    c            sh   ˆ  ˆ _  | ˆ _ g  ˆ _ g  ˆ _ | ˆ _ ‡  ‡ f d †  } x! t | ƒ D] } t | d ƒ qM Wd S(   s¹   
        Construct a bunch of `n` threads running the same function `f`.
        If `wait_before_exit` is True, the threads won't terminate until
        do_finish() is called.
        c             sS   t  ƒ  }  ˆ j j |  ƒ z ˆ  ƒ  Wd  ˆ j j |  ƒ x ˆ j sM t ƒ  q: WXd  S(   N(   R   t   startedt   appendt   finishedt	   _can_exitR   (   t   tid(   t   ft   self(    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   task(   s    	N(    (   R   t   nR	   R   R   t   rangeR    (   R   R   R   t   wait_before_exitR   t   _(    (   R   R   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   __init__   s    				
	c         C   s*   x# t  |  j ƒ |  j k  r% t ƒ  q Wd  S(   N(   t   lenR	   R   R   (   R   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   wait_for_started4   s    c         C   s*   x# t  |  j ƒ |  j k  r% t ƒ  q Wd  S(   N(   R   R   R   R   (   R   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   wait_for_finished8   s    c         C   s   t  |  _ d  S(   N(   t   TrueR   (   R   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt	   do_finish<   s    (   t   __name__t
   __module__t   __doc__t   FalseR   R   R   R   (    (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR      s
   		t   BaseTestCasec           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   t  j ƒ  |  _ d  S(   N(   R   t   threading_setupt   _threads(   R   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   setUpA   s    c         C   s   t  j |  j Œ  t  j ƒ  d  S(   N(   R   t   threading_cleanupR!   t   reap_children(   R   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   tearDownD   s    (   R   R   R"   R%   (    (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR   @   s   	t   BaseLockTestsc           B   s_   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z RS(
   s;   
    Tests for both recursive and non-recursive locks.
    c         C   s   t  ƒ  ‚ d  S(   N(   t   NotImplementedError(   R   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   locktypeN   s    c         C   s   |  j  ƒ  } ~ d  S(   N(   R(   (   R   t   lock(    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test_constructorQ   s    c         C   s   |  j  ƒ  } | j ƒ  ~ d  S(   N(   R(   t   acquire(   R   R)   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test_acquire_destroyU   s    
c         C   s'   |  j  ƒ  } | j ƒ  | j ƒ  ~ d  S(   N(   R(   R+   t   release(   R   R)   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test_acquire_releaseZ   s    

c         C   s0   |  j  ƒ  } |  j | j t ƒ ƒ | j ƒ  d  S(   N(   R(   t
   assertTrueR+   R   R-   (   R   R)   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test_try_acquire`   s    c            s`   |  j  ƒ  ‰  ˆ  j ƒ  g  ‰ ‡  ‡ f d †  } t | d ƒ j ƒ  |  j ˆ d ƒ ˆ  j ƒ  d  S(   Nc              s   ˆ j  ˆ  j t ƒ ƒ d  S(   N(   R
   R+   R   (    (   R)   t   result(    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR   i   s    i   i    (   R(   R+   R   R   t   assertFalseR-   (   R   R   (    (   R)   R1   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test_try_acquire_contendede   s    
c            s•   |  j  ƒ  ‰  ˆ  j ƒ  d } ‡  f d †  } t | | ƒ } | j ƒ  t ƒ  |  j t | j ƒ d ƒ ˆ  j ƒ  | j	 ƒ  |  j t | j ƒ | ƒ d  S(   Ni   c              s   ˆ  j  ƒ  ˆ  j ƒ  d  S(   N(   R+   R-   (    (   R)   (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR   s   s    
i    (
   R(   R+   R   R   R   t   assertEqualR   R   R-   R   (   R   t   NR   t   b(    (   R)   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test_acquire_contendedo   s    



c            sq   |  j  ƒ  ‰  ‡  f d †  } d  ‡  f d † } | ƒ  t | d ƒ j ƒ  |  j t | t ƒ t | d ƒ j ƒ  d  S(   Nc              s   ˆ  j  ƒ  ˆ  j ƒ  d  S(   N(   R+   R-   (    (   R)   (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR      s    
c            s&   ˆ   |  d  k	 r |  ‚ n  Wd  QXd  S(   N(   t   None(   t   err(   R)   (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   _with„   s    i   (   R(   R8   R   R   t   assertRaisest	   TypeError(   R   R   R:   (    (   R)   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt	   test_with   s    c            s`   |  j  ƒ  ‰  ‡  f d †  } t t j ƒ  ƒ } t | d ƒ j ƒ  |  j | t t j ƒ  ƒ ƒ d  S(   Nc              s   ˆ  j  ƒ  ˆ  j ƒ  d  S(   N(   R+   R-   (    (   R)   (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR   “   s    
i   (   R(   R   t	   threadingt	   enumerateR   R   R4   (   R   R   R   (    (   R)   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test_thread_leak   s
    (   R   R   R   R(   R*   R,   R.   R0   R3   R7   R=   R@   (    (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR&   I   s   						
		t	   LockTestsc           B   s    e  Z d  Z d „  Z d „  Z RS(   sn   
    Tests for non-recursive, weak locks
    (which can be acquired and released from different threads).
    c            s¦   |  j  ƒ  ‰  g  ‰ ‡  ‡ f d †  } t | d ƒ x ˆ sD t ƒ  q4 Wt ƒ  |  j t ˆ ƒ d ƒ ˆ  j ƒ  x t ˆ ƒ d k r‹ t ƒ  qo W|  j t ˆ ƒ d ƒ d  S(   Nc              s2   ˆ  j  ƒ  ˆ j d  ƒ ˆ  j  ƒ  ˆ j d  ƒ d  S(   N(   R+   R
   R8   (    (   R)   t   phase(    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR   ¦   s    

i   i   (    (   R(   R    R   R4   R   R-   (   R   R   (    (   R)   RB   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test_reacquire¢   s    	
c            sV   |  j  ƒ  ‰  ˆ  j ƒ  ‡  f d †  } t | d ƒ } | j ƒ  ˆ  j ƒ  ˆ  j ƒ  d  S(   Nc              s   ˆ  j  ƒ  d  S(   N(   R-   (    (   R)   (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR   ¹   s    i   (   R(   R+   R   R   R-   (   R   R   R6   (    (   R)   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test_different_threadµ   s    


(   R   R   R   RC   RD   (    (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyRA      s   	t
   RLockTestsc           B   s2   e  Z d  Z d „  Z d „  Z d „  Z d „  Z RS(   s$   
    Tests for recursive locks.
    c         C   sL   |  j  ƒ  } | j ƒ  | j ƒ  | j ƒ  | j ƒ  | j ƒ  | j ƒ  d  S(   N(   R(   R+   R-   (   R   R)   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyRC   Å   s    




c         C   sr   |  j  ƒ  } |  j t | j ƒ | j ƒ  | j ƒ  | j ƒ  | j ƒ  | j ƒ  | j ƒ  |  j t | j ƒ d  S(   N(   R(   R;   t   RuntimeErrorR-   R+   (   R   R)   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test_release_unacquiredÎ   s    





c            sV   |  j  ƒ  ‰  ‡  f d †  } t | d t ƒ } z |  j t ˆ  j ƒ Wd  | j ƒ  Xd  S(   Nc              s   ˆ  j  ƒ  d  S(   N(   R+   (    (   R)   (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR   Ý   s    i   (   R(   R   R   R;   RF   R-   R   (   R   R   R6   (    (   R)   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyRD   Ú   s    c            sÓ   |  j  ƒ  ‰  |  j ˆ  j ƒ  ƒ ˆ  j ƒ  |  j ˆ  j ƒ  ƒ ˆ  j ƒ  |  j ˆ  j ƒ  ƒ g  ‰ ‡  ‡ f d †  } t | d ƒ j ƒ  |  j ˆ d ƒ ˆ  j ƒ  |  j ˆ  j ƒ  ƒ ˆ  j ƒ  |  j ˆ  j ƒ  ƒ d  S(   Nc              s   ˆ j  ˆ  j ƒ  ƒ d  S(   N(   R
   t	   _is_owned(    (   R)   R1   (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR   í   s    i   i    (   R(   R2   RH   R+   R/   R   R   R-   (   R   R   (    (   R)   R1   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test__is_ownedå   s    



(   R   R   R   RC   RG   RD   RI   (    (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyRE   Á   s
   				t
   EventTestsc           B   s;   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s"   
    Tests for Event objects.
    c         C   s   t  ƒ  ‚ d  S(   N(   R'   (   R   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt	   eventtypeü   s    c         C   s—   |  j  ƒ  } |  j | j ƒ  ƒ | j ƒ  |  j | j ƒ  ƒ | j ƒ  |  j | j ƒ  ƒ | j ƒ  |  j | j ƒ  ƒ | j ƒ  |  j | j ƒ  ƒ d  S(   N(   RK   R2   t   is_sett   setR/   t   clear(   R   t   evt(    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test_is_setÿ   s    



c            s£   d } g  ‰ g  ‰ ‡  ‡ ‡ f d †  } t  | | ƒ } | j ƒ  t ƒ  |  j t ˆ ƒ d ƒ ˆ  j ƒ  | j ƒ  |  j ˆ t g | ƒ |  j ˆ t g | ƒ d  S(   Ni   c              s>   ˆ  j  ƒ  ˆ j ˆ  j ƒ  ƒ ˆ  j  ƒ  ˆ j ˆ  j ƒ  ƒ d  S(   N(   t   waitR
   RL   (    (   RO   t   results1t   results2(    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR     s    

i    (   R   R   R   R4   R   RM   R   R   (   R   RO   R5   R   R6   (    (   RO   RR   RS   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   _check_notify  s    


c         C   s>   |  j  ƒ  } |  j | ƒ | j ƒ  | j ƒ  |  j | ƒ d  S(   N(   RK   RT   RM   RN   (   R   RO   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test_notify  s
    

c            sü   |  j  ƒ  ‰  g  ‰ g  ‰ d } ‡  ‡ ‡ f d †  } t | | ƒ j ƒ  |  j ˆ t g | ƒ x4 ˆ D], \ } } |  j | ƒ |  j | d d ƒ qd Wg  ‰ g  ‰ ˆ  j ƒ  t | | ƒ j ƒ  |  j ˆ t g | ƒ x! ˆ D] \ } } |  j	 | ƒ qÛ Wd  S(   Ni   c             sl   ˆ  j  d ƒ ˆ j ˆ  j ƒ  ƒ t j ƒ  }  ˆ  j  d ƒ ˆ  j ƒ  } t j ƒ  } ˆ j | | |  f ƒ d  S(   Ng        gš™™™™™É?(   RQ   R
   RL   R   (   t   t1t   rt   t2(   RO   RR   RS   (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR   +  s    g
×£p=
Ç?i
   (
   RK   R   R   R4   R   R2   t   assertTimeWithinRangeRM   R   R/   (   R   R5   R   RW   t   dt(    (   RO   RR   RS   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test_timeout&  s"    
(   R   R   R   RK   RP   RT   RU   R[   (    (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyRJ   ÷   s   				t   ConditionTestsc           B   sM   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 RS(   s(   
    Tests for condition variables.
    c         G   s   t  ƒ  ‚ d  S(   N(   R'   (   R   t   args(    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   condtypeG  s    c         C   sÖ   |  j  ƒ  } | j ƒ  | j ƒ  | j ƒ  | j ƒ  t j ƒ  } |  j  | ƒ } | j ƒ  |  j | j t ƒ ƒ | j ƒ  |  j | j t ƒ ƒ |  j | j t ƒ ƒ | j ƒ  |  |  j | j t ƒ ƒ Wd  QXd  S(   N(   R^   R+   R-   R>   t   LockR2   R   R/   (   R   t   condR)   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test_acquireJ  s    






c         C   s#   |  j  ƒ  } |  j t | j ƒ d  S(   N(   R^   R;   RF   RQ   (   R   R`   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test_unacquired_wait]  s    c         C   s#   |  j  ƒ  } |  j t | j ƒ d  S(   N(   R^   R;   RF   t   notify(   R   R`   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test_unacquired_notifya  s    c            s  d } g  ‰ g  ‰ d ‰ ‡  ‡ ‡ ‡ f d †  } t  | | ƒ } | j ƒ  t ƒ  |  j ˆ g  ƒ ˆ  j ƒ  ˆ  j d ƒ t ƒ  d ‰ ˆ  j ƒ  x t ˆ ƒ d k  r­ t ƒ  q‘ W|  j ˆ d g d ƒ |  j ˆ g  ƒ ˆ  j ƒ  ˆ  j d ƒ t ƒ  d ‰ ˆ  j ƒ  x' t ˆ ƒ t ˆ ƒ d k  r,t ƒ  qW|  j ˆ d g d d g d ƒ |  j ˆ d g d ƒ ˆ  j ƒ  ˆ  j ƒ  t ƒ  d ‰ ˆ  j ƒ  x t ˆ ƒ d k  r°t ƒ  q”W|  j ˆ d g d d g d ƒ |  j ˆ d g d d g d ƒ | j	 ƒ  d  S(   Ni   i    c              sZ   ˆ  j  ƒ  ˆ  j ƒ  ˆ  j ƒ  ˆ j ˆ ƒ ˆ  j  ƒ  ˆ  j ƒ  ˆ  j ƒ  ˆ j ˆ ƒ d  S(   N(   R+   RQ   R-   R
   (    (   R`   t	   phase_numRR   RS   (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR   j  s    





i   i   i   i   (
   R   R   R   R4   R+   Rc   R-   R   t
   notify_allR   (   R   R`   R5   R   R6   (    (   R`   Re   RR   RS   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyRT   e  sJ    	




"


""c         C   s*   |  j  ƒ  } |  j | ƒ |  j | ƒ d  S(   N(   R^   RT   (   R   R`   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyRU   —  s    c            s{   |  j  ƒ  ‰  g  ‰ d } ‡  ‡ f d †  } t | | ƒ j ƒ  |  j t ˆ ƒ d ƒ x! ˆ D] } |  j | d d ƒ qZ Wd  S(   Ni   c             sN   ˆ  j  ƒ  t j ƒ  }  ˆ  j d ƒ t j ƒ  } ˆ  j ƒ  ˆ j | |  ƒ d  S(   Ngš™™™™™É?(   R+   R   RQ   R-   R
   (   RV   RX   (   R`   t   results(    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR   ¡  s    

gR¸…ëQÈ?g       @(   R^   R   R   R4   R   RY   (   R   R5   R   RZ   (    (   R`   Rg   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR[     s    (
   R   R   R   R^   Ra   Rb   Rd   RT   RU   R[   (    (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR\   B  s   					2	t   BaseSemaphoreTestsc           B   s_   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z RS(
   sB   
    Common tests for {bounded, unbounded} semaphore objects.
    c         G   s   t  ƒ  ‚ d  S(   N(   R'   (   R   R]   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   semtype´  s    c         C   sO   |  j  t |  j d d ƒ|  j  t |  j d t t d t t d d  ƒ ƒ ƒd  S(   Nt   valueiÿÿÿÿt   maxintt   maxsize(   R;   t
   ValueErrorRi   t   getattrt   sysR8   (   R   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR*   ·  s    c         C   s^   |  j  d ƒ } | j ƒ  | j ƒ  |  j  d ƒ } | j ƒ  | j ƒ  | j ƒ  | j ƒ  d  S(   Ni   i   (   Ri   R+   R-   (   R   t   sem(    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyRa   ½  s    




c         C   s   |  j  ƒ  } | j ƒ  ~ d  S(   N(   Ri   R+   (   R   Rp   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR,   Ç  s    
c            sÔ  |  j  d ƒ ‰ ˆ j ƒ  g  ‰ g  ‰ d ‰  ‡  ‡ ‡ ‡ f d †  } t | d ƒ } | j ƒ  x' t ˆ ƒ t ˆ ƒ d k  r… t ƒ  q_ W|  j ˆ ˆ d g d ƒ d ‰  x t d ƒ D] } ˆ j ƒ  q´ Wx' t ˆ ƒ t ˆ ƒ d k  rñ t ƒ  qË W|  j t	 ˆ ˆ ƒ d g d d g d ƒ d ‰  x t d ƒ D] } ˆ j ƒ  q1Wx' t ˆ ƒ t ˆ ƒ d	 k  rnt ƒ  qHW|  j t	 ˆ ˆ ƒ d g d d g d d g d ƒ |  j
 ˆ j t ƒ ƒ ˆ j ƒ  | j ƒ  d  S(
   Ni   i    c              s2   ˆ j  ƒ  ˆ j ˆ  ƒ ˆ j  ƒ  ˆ j ˆ  ƒ d  S(   N(   R+   R
   (    (   Re   RR   RS   Rp   (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR   Ó  s    

i
   i   i   i   i   i   (   Ri   R+   R   R   R   R   R4   R   R-   t   sortedR2   R   R   (   R   R   R6   R   (    (   Re   RR   RS   Rp   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR7   Ì  s4    

,7
c         C   su   |  j  d ƒ } |  j | j t ƒ ƒ |  j | j t ƒ ƒ |  j | j t ƒ ƒ | j ƒ  |  j | j t ƒ ƒ d  S(   Ni   (   Ri   R/   R+   R   R2   R-   (   R   Rp   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR0   ï  s    
c            sp   |  j  d ƒ ‰ ˆ j ƒ  g  ‰  ‡  ‡ f d †  } t | d ƒ j ƒ  |  j t ˆ  ƒ t g d t g d ƒ d  S(   Ni   c              s0   ˆ  j  ˆ j t ƒ ƒ ˆ  j  ˆ j t ƒ ƒ d  S(   N(   R
   R+   R   (    (   Rg   Rp   (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR   û  s    i   i   i   (   Ri   R+   R   R   R4   Rq   R   R   (   R   R   (    (   Rg   Rp   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR3   ÷  s    
c            sm   |  j  ƒ  ‰  ˆ  j ƒ  ‡  f d †  } t | d ƒ } | j ƒ  t ƒ  |  j | j ƒ ˆ  j ƒ  | j ƒ  d  S(   Nc              s   ˆ  j  ƒ  ˆ  j ƒ  d  S(   N(   R+   R-   (    (   Rp   (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR     s    
i   (	   Ri   R+   R   R   R   R2   R   R-   R   (   R   R   R6   (    (   Rp   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test_default_value  s    


c            s‚   ˆ  j  d ƒ ‰ d  ‡  ‡ f d † } | ƒ  ˆ  j ˆ j t ƒ ƒ ˆ j ƒ  ˆ  j t | t ƒ ˆ  j ˆ j t ƒ ƒ ˆ j ƒ  d  S(   Ni   c            sc   ˆ W ˆ  j  ˆ j t ƒ ƒ ˆ j ƒ  ˆ * ˆ  j ˆ j t ƒ ƒ |  rS |  ‚ n  Wd  QXWd  QXd  S(   N(   R/   R+   R   R-   R2   (   R9   (   R   Rp   (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR:     s    
(   Ri   R8   R/   R+   R   R-   R;   R<   (   R   R:   (    (   R   Rp   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR=     s    
(   R   R   R   Ri   R*   Ra   R,   R7   R0   R3   Rr   R=   (    (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyRh   ¯  s   			
		#			t   SemaphoreTestsc           B   s   e  Z d  Z d „  Z RS(   s)   
    Tests for unbounded semaphores.
    c         C   s;   |  j  d ƒ } | j ƒ  | j ƒ  | j ƒ  | j ƒ  d  S(   Ni   (   Ri   R-   R+   (   R   Rp   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyRG   (  s
    


(   R   R   R   RG   (    (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyRs   #  s   t   BoundedSemaphoreTestsc           B   s   e  Z d  Z d „  Z RS(   s'   
    Tests for bounded semaphores.
    c         C   sJ   |  j  ƒ  } |  j t | j ƒ | j ƒ  | j ƒ  |  j t | j ƒ d  S(   N(   Ri   R;   Rm   R-   R+   (   R   Rp   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyRG   6  s
    

(   R   R   R   RG   (    (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyRt   1  s   t   BarrierTestsc           B   s›   e  Z d  Z d Z d Z d „  Z d „  Z d „  Z d „  Z d d „ Z	 d	 „  Z
 d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s$   
    Tests for Barrier objects.
    i   g       @c         C   s"   |  j  |  j d |  j ƒ|  _ d  S(   Nt   timeout(   t   barriertypeR5   t   defaultTimeoutt   barrier(   R   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR"   E  s    c         C   s   |  j  j ƒ  d  S(   N(   Ry   t   abort(   R   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR%   G  s    c         C   s+   t  | |  j d ƒ } | ƒ  | j ƒ  d  S(   Ni   (   R   R5   R   (   R   R   R6   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   run_threadsJ  s    c         C   sß   |  j  j } |  j | |  j ƒ x t | ƒ D]‚ } | d j t ƒ |  j t | d ƒ | | ƒ |  j  j ƒ  | d j t ƒ |  j t | d ƒ | d | ƒ |  j  j ƒ  q, W|  j |  j  j	 d ƒ |  j
 |  j  j ƒ d  S(   Ni    i   (   Ry   t   partiesR4   R5   R   R
   R   R   RQ   t	   n_waitingR2   t   broken(   R   Rg   R   t   mt   i(    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt	   multipassO  s    "i   c            s2   g  g  g ‰ ‡  ‡ ‡ f d †  } ˆ j  | ƒ d S(   s;   
        Test that a barrier is passed in lockstep
        c              s   ˆ j  ˆ ˆ  ƒ d  S(   N(   R   (    (   t   passesRg   R   (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR   a  s    N(   R{   (   R   R‚   R   (    (   R‚   Rg   R   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test_barrier\  s    c         C   s   |  j  d ƒ S(   sC   
        Test that a barrier works for 10 consecutive runs
        i
   (   Rƒ   (   R   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test_barrier_10e  s    c            sN   g  ‰  ‡  ‡ f d †  } ˆ j  | ƒ ˆ j t ˆ  ƒ t t ˆ j ƒ ƒ ƒ d S(   s9   
        test the return value from barrier.wait
        c             s    ˆ j  j ƒ  }  ˆ  j |  ƒ d  S(   N(   Ry   RQ   R
   (   RW   (   Rg   R   (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR   p  s    N(   R{   R4   t   sumR   R5   (   R   R   (    (   Rg   R   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test_wait_returnk  s    c            sP   g  ‰ ‡ f d †  } ˆ j  ˆ j | ƒ ‰  ‡  ‡ ‡ f d †  } ˆ j | ƒ d S(   s,   
        Test the 'action' callback
        c              s   ˆ  j  t ƒ d  S(   N(   R
   R   (    (   Rg   (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   action|  s    c              s$   ˆ  j  ƒ  ˆ j t ˆ ƒ d ƒ d  S(   Ni   (   RQ   R4   R   (    (   Ry   Rg   R   (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR     s    
N(   Rw   R5   R{   (   R   R‡   R   (    (   Ry   Rg   R   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test_actionw  s
    c            sx   g  ‰  g  ‰ ‡  ‡ ‡ f d †  } ˆ j  | ƒ ˆ j t ˆ  ƒ d ƒ ˆ j t ˆ ƒ ˆ j d ƒ ˆ j ˆ j j ƒ d S(   sK   
        Test that an abort will put the barrier in a broken state
        c             sŽ   yI ˆ j  j ƒ  }  |  ˆ j d k r. t ‚ n  ˆ j  j ƒ  ˆ  j t ƒ Wn> t j k
 rl ˆ j t ƒ n t k
 r‰ ˆ j  j ƒ  n Xd  S(   Ni   (	   Ry   RQ   R5   RF   R
   R   R>   t   BrokenBarrierErrorRz   (   R€   (   RR   RS   R   (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR   ‹  s    	i    i   N(   R{   R4   R   R5   R/   Ry   R~   (   R   R   (    (   RR   RS   R   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt
   test_abort…  s    c            s‡   g  ‰  g  ‰ g  ‰ ‡  ‡ ‡ ‡ f d †  } ˆ j  | ƒ ˆ j t ˆ  ƒ d ƒ ˆ j t ˆ ƒ ˆ j d ƒ ˆ j t ˆ ƒ ˆ j ƒ d S(   sL   
        Test that a 'reset' on a barrier frees the waiting threads
        c             s¿   ˆ j  j ƒ  }  |  ˆ j d k r_ x* ˆ j  j ˆ j d k  rN t j d ƒ q% Wˆ j  j ƒ  nB y ˆ j  j ƒ  ˆ  j t ƒ Wn! t	 j
 k
 r  ˆ j t ƒ n Xˆ j  j ƒ  ˆ j t ƒ d  S(   Ni   i   gü©ñÒMbP?(   Ry   RQ   R5   R}   R   R   t   resetR
   R   R>   R‰   (   R€   (   RR   RS   t   results3R   (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR   £  s    i    i   N(   R{   R4   R   R5   (   R   R   (    (   RR   RS   RŒ   R   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt
   test_resetœ  s    c            sœ   g  ‰ g  ‰ g  ‰ ˆ j  ˆ j ƒ ‰  ‡  ‡ ‡ ‡ ‡ f d †  } ˆ j | ƒ ˆ j t ˆ ƒ d ƒ ˆ j t ˆ ƒ ˆ j d ƒ ˆ j t ˆ ƒ ˆ j ƒ d S(   sF   
        Test that a barrier can be reset after being broken.
        c             sÛ   yI ˆ j  j ƒ  }  |  ˆ j d k r. t ‚ n  ˆ j  j ƒ  ˆ j t ƒ Wn> t j k
 rl ˆ j t ƒ n t k
 r‰ ˆ j  j ƒ  n Xˆ  j ƒ  ˆ j d k r³ ˆ j  j	 ƒ  n  ˆ  j ƒ  ˆ j  j ƒ  ˆ j t ƒ d  S(   Ni   (
   Ry   RQ   R5   RF   R
   R   R>   R‰   Rz   R‹   (   R€   (   t   barrier2RR   RS   RŒ   R   (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR   Â  s    	
i    i   N(   Rw   R5   R{   R4   R   (   R   R   (    (   RŽ   RR   RS   RŒ   R   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test_abort_and_resetº  s    c            s    ‡  f d †  } ˆ  j  | ƒ d S(   s$   
        Test wait(timeout)
        c             sR   ˆ  j  j ƒ  }  |  ˆ  j d k r2 t j d ƒ n  ˆ  j t j ˆ  j  j d ƒ d  S(   Ni   g      ð?g      à?(   Ry   RQ   R5   R   R   R;   R>   R‰   (   R€   (   R   (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR   à  s
    N(   R{   (   R   R   (    (   R   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR[   Ü  s    c            s;   ˆ j  ˆ j d d ƒ‰  ‡  ‡ f d †  } ˆ j | ƒ d S(   s4   
        Test the barrier's default timeout
        Rv   g333333Ó?c             sI   ˆ  j  ƒ  }  |  ˆ j d k r/ t j d ƒ n  ˆ j t j ˆ  j  ƒ d  S(   Ni   g      ð?(   RQ   R5   R   R   R;   R>   R‰   (   R€   (   Ry   R   (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyR   ð  s    N(   Rw   R5   R{   (   R   R   (    (   Ry   R   s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test_default_timeoutê  s    c         C   s'   |  j  d ƒ } | j ƒ  | j ƒ  d  S(   Ni   (   Rw   RQ   (   R   R6   (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   test_single_threadø  s    
(   R   R   R   R5   Rx   R"   R%   R{   R   Rƒ   R„   R†   Rˆ   RŠ   R   R   R[   R   R‘   (    (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyRu   >  s"   											"		t   __main__sS   This module contains no tests; it is used by other test cases like test_threading_2(   R   Ro   R   t   threadR    R   t   ImportErrort   _threadR>   t   unittestt   testR   R   t   gevent.testing.testcaseR   R   t   objectR   t   TestCaseR   R&   RA   RE   RJ   R\   Rh   Rs   Rt   Ru   R   (    (    (    s6   lib/python2.7/site-packages/gevent/tests/lock_tests.pyt   <module>   s6   	'	T$6KmtÀ