Ñò
‘à"Ic        	   @   sê   d  d k  Z  d  d k Z d  d k Z d  d k l Z d  d k Z d  d k Z d Z d Z e i	 ƒ  Z
 d „  Z d e i f d „  ƒ  YZ d e f d	 „  ƒ  YZ d
 d d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z e d j o e ƒ  n d S(   iÿÿÿÿN(   t   test_supporti
   i   c         C   s/   t  i o! t i i ƒ  z	 |  GHWd QXn d S(   s2   Helper function for printing out debugging output.N(   R    t   verboset   _print_mutext   __exit__t	   __enter__(   t   arg(    (    s-   /mit/python/lib/python2.6/test/test_thread.pyt   verbose_print   s    
t   BasicThreadTestc           B   s   e  Z d  „  Z RS(   c         C   sP   t  i ƒ  |  _ |  i i ƒ  t  i ƒ  |  _ t  i ƒ  |  _ d |  _ d |  _ d  S(   Ni    (   t   threadt   allocate_lockt
   done_mutext   acquiret   running_mutext   random_mutext   runningt
   next_ident(   t   self(    (    s-   /mit/python/lib/python2.6/test/test_thread.pyt   setUp   s    	(   t   __name__t
   __module__R   (    (    (    s-   /mit/python/lib/python2.6/test/test_thread.pyR      s   t   ThreadRunningTestsc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   sg   |  i  i i ƒ  zL |  i d 7_ t d |  i ƒ t i |  i |  i f ƒ |  i d 7_ Wd  QXd  S(   Ni   s   creating task %s(	   R   R   R   R   R   R   t   start_new_threadt   taskR   (   R   (    (    s-   /mit/python/lib/python2.6/test/test_thread.pyt   newtask#   s
    c      
   C   s³   |  i  i i ƒ  z t i ƒ  d } Wd  QXt d | t | d ƒ f ƒ t i | ƒ t d | ƒ |  i i i ƒ  z4 |  i	 d 8_	 |  i	 d j o |  i
 i ƒ  n Wd  QXd  S(   Ng     ˆÃ@s   task %s will run for %susg    €„.As   task %s donei   i    (   R   R   R   t   randomR   t   roundt   timet   sleepR   R   R
   t   release(   R   t   identt   delay(    (    s-   /mit/python/lib/python2.6/test/test_thread.pyR   *   s    c         C   sF   x t  t ƒ D] } |  i ƒ  q Wt d ƒ |  i i ƒ  t d ƒ d  S(   Ns    waiting for tasks to complete...s   all tasks done(   t   ranget   NUMTASKSR   R   R
   R   (   R   t   i(    (    s-   /mit/python/lib/python2.6/test/test_thread.pyt   test_starting_threads5   s     
c      
   C   s…  |  i  t i ƒ  d d ƒ t i d ƒ |  i  t i ƒ  d d ƒ t i d j o d  St } y t i d ƒ WnB t j
 o t d ƒ n' t i j
 o t	 } t d	 ƒ n X| oÊ d
 } xF d D]> } t i | ƒ |  i  t i ƒ  | | | ƒ t d | ƒ qÄ Wxg d D]_ } t d | ƒ d |  _
 x t t ƒ D] } |  i ƒ  q7Wt d ƒ |  i i ƒ  t d ƒ qWt i d ƒ n d  S(   Ni    s   intial stack size is not 0s   stack_size not reset to defaultt   ntt   os2t   posixi   s3   caught expected ValueError setting stack_size(4096)s4   platform does not support changing thread stack sizes&   stack_size(%d) failed - should succeedi   i   s   successfully set stack_size(%d)s   trying stack_size = (%d)s!   waiting for all tasks to completes   all tasks done(   s   nts   os2s   posix(   i   i   i    (   i   i   (   t   assertEqualsR   t
   stack_sizet   ost   namet   Truet
   ValueErrorR   t   errort   FalseR   R   R    R   R
   R   (   R   t   tss_supportedt   fail_msgt   tssR!   (    (    s-   /mit/python/lib/python2.6/test/test_thread.pyt   test_stack_size=   s>      	 
(   R   R   R   R   R"   R1   (    (    (    s-   /mit/python/lib/python2.6/test/test_thread.pyR   !   s   			t   Barrierc           B   s   e  Z d  „  Z d „  Z RS(   c         C   sA   | |  _  d |  _ t i ƒ  |  _ t i ƒ  |  _ |  i i ƒ  d  S(   Ni    (   t   num_threadst   waitingR   R	   t   checkin_mutext   checkout_mutexR   (   R   R3   (    (    s-   /mit/python/lib/python2.6/test/test_thread.pyt   __init__g   s
    		c         C   s¯   |  i  i ƒ  |  i d |  _ |  i |  i j o" |  i d |  _ |  i i ƒ  d  S|  i  i ƒ  |  i i ƒ  |  i d |  _ |  i d j o |  i  i ƒ  d  S|  i i ƒ  d  S(   Ni   i    (   R5   R   R4   R3   R6   R   (   R   (    (    s-   /mit/python/lib/python2.6/test/test_thread.pyt   entern   s    (   R   R   R7   R8   (    (    (    s-   /mit/python/lib/python2.6/test/test_thread.pyR2   f   s   	t   BarrierTestc           B   s   e  Z d  „  Z d „  Z RS(   c         C   sj   t  t ƒ |  _ t |  _ x* t t ƒ D] } t i |  i | f ƒ q% Wt d ƒ |  i	 i
 ƒ  t d ƒ d  S(   Ns   waiting for tasks to ends
   tasks done(   R2   R    t   barR   R   R   R   t   task2R   R
   R   (   R   R!   (    (    s-   /mit/python/lib/python2.6/test/test_thread.pyt   test_barrier   s    	 
c      
   C   s  x° t  t ƒ D]¢ } | d j o
 d } n, |  i i i ƒ  z t i ƒ  d } Wd  QXt d | t | d ƒ f ƒ t i	 | ƒ t d | | f ƒ |  i
 i ƒ  t d | ƒ q W|  i i i ƒ  z" |  i d 8_ |  i d j } Wd  QX| o |  i i ƒ  n d  S(   Ni    g     ˆÃ@s   task %s will run for %susg    €„.As   task %s entering %ss   task %s leaving barrieri   (   R   t   NUMTRIPSR   R   R   R   R   R   R   R   R:   R8   R   R   R
   R   (   R   R   R!   R   t   finished(    (    s-   /mit/python/lib/python2.6/test/test_thread.pyR;   Š   s"     
(   R   R   R<   R;   (    (    (    s-   /mit/python/lib/python2.6/test/test_thread.pyR9      s   		c           C   s   t  i t t ƒ d  S(   N(   R    t   run_unittestR   R9   (    (    (    s-   /mit/python/lib/python2.6/test/test_thread.pyt	   test_main¤   s    t   __main__(    (   R(   t   unittestR   t   testR    R   R   R    R=   R	   R   R   t   TestCaseR   R   R2   R9   R@   R   (    (    (    s-   /mit/python/lib/python2.6/test/test_thread.pyt   <module>   s    	E%	