;
Νβ"Ic            
   @   sή   d  d l  Z  d  d l Z d  d l Z d  d l m Z d  d l Z d  d l Z d Z d Z	 e j
   Z d   Z Gd   d e j  Z Gd   d	 e  Z Gd
   d  Z Gd   d e  Z d   Z e d k o e   n d S(   i    N(   u   supporti
   i   c             C   s<   t  j o. t j } j   z t |   Wd | ~ QXn d S(   u2   Helper function for printing out debugging output.N(   u   supportu   verboseu   _print_mutexu   __exit__u	   __enter__u   print(   u   argu   _[1](    (    u-   /mit/python/lib/python3.0/test/test_thread.pyu   verbose_print   s    
c             B   s   |  Ee  Z d    Z d S(   c             C   sP   t  j   |  _ |  j j   t  j   |  _ t  j   |  _ d |  _ d |  _ d  S(   Ni    (   u   threadu   allocate_locku
   done_mutexu   acquireu   running_mutexu   random_mutexu   runningu
   next_ident(   u   self(    (    u-   /mit/python/lib/python3.0/test/test_thread.pyu   setUp   s    	N(   u   __name__u
   __module__u   setUp(   u
   __locals__(    (    u-   /mit/python/lib/python3.0/test/test_thread.pyu   BasicThreadTest   s   
u   BasicThreadTestc             B   s2   |  Ee  Z d    Z d   Z d   Z d   Z d S(   c          	   C   so   |  j  j } j   zL |  j d 7_ t d |  j  t j |  j |  j f  |  j d 7_ Wd  | ~ QXd  S(   Ni   u   creating task %s(	   u   running_mutexu   __exit__u	   __enter__u
   next_identu   verbose_printu   threadu   start_new_threadu   tasku   running(   u   selfu   _[1](    (    u-   /mit/python/lib/python3.0/test/test_thread.pyu   newtask!   s
    c             C   sΓ   |  j  j } j   z t j   d } Wd  | ~ QXt d | t | d  f  t j |  t d |  |  j j } j   z4 |  j	 d 8_	 |  j	 d k o |  j
 j   n Wd  | ~ QXd  S(   Ng     Γ@u   task %s will run for %susg    .Au   task %s donei   i    (   u   random_mutexu   __exit__u	   __enter__u   randomu   verbose_printu   roundu   timeu   sleepu   running_mutexu   runningu
   done_mutexu   release(   u   selfu   identu   _[1]u   delayu   _[2](    (    u-   /mit/python/lib/python3.0/test/test_thread.pyu   task(   s    c             C   sF   x t  t  D] } |  j   q Wt d  |  j j   t d  d  S(   Nu    waiting for tasks to complete...u   all tasks done(   u   rangeu   NUMTASKSu   newtasku   verbose_printu
   done_mutexu   acquire(   u   selfu   i(    (    u-   /mit/python/lib/python3.0/test/test_thread.pyu   test_starting_threads3   s     
c             C   s  |  j  t j   d d  t j d  |  j  t j   d d  t j d k o d  Sd } y t j d  WnD t k
 o t d  Yn( t j k
 o d } t d	  Yn X| oΚ d
 } xF d D]> } t j |  |  j  t j   | | |  t d |  qΖ Wxg d D]_ } t d |  d |  _
 x t t  D] } |  j   q9Wt d  |  j j   t d  qWt j d  n d  S(   Ni    u   intial stack size is not 0u   stack_size not reset to defaultu   ntu   os2u   posixi   u3   caught expected ValueError setting stack_size(4096)u4   platform does not support changing thread stack sizeu&   stack_size(%d) failed - should succeedi   i   u   successfully set stack_size(%d)u   trying stack_size = (%d)u!   waiting for all tasks to completeu   all tasks done(   u   ntu   os2u   posixTF(   i   i   i    (   i   i   (   u   assertEqualsu   threadu
   stack_sizeu   osu   nameu   Trueu
   ValueErroru   verbose_printu   erroru   Falseu
   next_identu   rangeu   NUMTASKSu   newtasku
   done_mutexu   acquire(   u   selfu   tss_supportedu   fail_msgu   tssu   i(    (    u-   /mit/python/lib/python3.0/test/test_thread.pyu   test_stack_size;   s>      	 
N(   u   __name__u
   __module__u   newtasku   tasku   test_starting_threadsu   test_stack_size(   u
   __locals__(    (    u-   /mit/python/lib/python3.0/test/test_thread.pyu   ThreadRunningTests   s   
			u   ThreadRunningTestsc             B   s    |  Ee  Z d    Z d   Z d S(   c             C   sA   | |  _  d |  _ t j   |  _ t j   |  _ |  j j   d  S(   Ni    (   u   num_threadsu   waitingu   threadu   allocate_locku   checkin_mutexu   checkout_mutexu   acquire(   u   selfu   num_threads(    (    u-   /mit/python/lib/python3.0/test/test_thread.pyu   __init__e   s
    		c             C   s―   |  j  j   |  j d |  _ |  j |  j k o" |  j d |  _ |  j j   d  S|  j  j   |  j j   |  j d |  _ |  j d k o |  j  j   d  S|  j j   d  S(   Ni   i    (   u   checkin_mutexu   acquireu   waitingu   num_threadsu   checkout_mutexu   release(   u   self(    (    u-   /mit/python/lib/python3.0/test/test_thread.pyu   enterl   s    N(   u   __name__u
   __module__u   __init__u   enter(   u
   __locals__(    (    u-   /mit/python/lib/python3.0/test/test_thread.pyu   Barrierd   s   
	u   Barrierc             B   s    |  Ee  Z d    Z d   Z d S(   c             C   sj   t  t  |  _ t |  _ x* t t  D] } t j |  j | f  q% Wt d  |  j	 j
   t d  d  S(   Nu   waiting for tasks to endu
   tasks done(   u   Barrieru   NUMTASKSu   baru   runningu   rangeu   threadu   start_new_threadu   task2u   verbose_printu
   done_mutexu   acquire(   u   selfu   i(    (    u-   /mit/python/lib/python3.0/test/test_thread.pyu   test_barrier   s    	 
c             C   s  xΈ t  t  D]ͺ } | d k o
 d } n4 |  j j } j   z t j   d } Wd  | ~ QXt d | t | d  f  t j	 |  t d | | f  |  j
 j   t d |  q W|  j j } j   z" |  j d 8_ |  j d k } Wd  | ~ QX| o |  j j   n d  S(   Ni    g     Γ@u   task %s will run for %susg    .Au   task %s entering %su   task %s leaving barrieri   (   u   rangeu   NUMTRIPSu   random_mutexu   __exit__u	   __enter__u   randomu   verbose_printu   roundu   timeu   sleepu   baru   enteru   running_mutexu   runningu
   done_mutexu   release(   u   selfu   identu   iu   delayu   _[1]u   _[2]u   finished(    (    u-   /mit/python/lib/python3.0/test/test_thread.pyu   task2   s"     
N(   u   __name__u
   __module__u   test_barrieru   task2(   u
   __locals__(    (    u-   /mit/python/lib/python3.0/test/test_thread.pyu   BarrierTest}   s   
		u   BarrierTestc               C   s   t  j t t  d  S(   N(   u   supportu   run_unittestu   ThreadRunningTestsu   BarrierTest(    (    (    u-   /mit/python/lib/python3.0/test/test_thread.pyu	   test_main‘   s    u   __main__(   u   osu   unittestu   randomu   testu   supportu   _threadu   threadu   timeu   NUMTASKSu   NUMTRIPSu   allocate_locku   _print_mutexu   verbose_printu   TestCaseu   BasicThreadTestu   ThreadRunningTestsu   Barrieru   BarrierTestu	   test_mainu   __name__(    (    (    u-   /mit/python/lib/python3.0/test/test_thread.pyu   <module>   s    	E$	