;
Íâ"Ic               @   s  d  d l  Z d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l	 Z	 d  d l
 Z
 Gd „  d e ƒ Z Gd „  d e j ƒ Z Gd „  d e	 j ƒ Z Gd	 „  d
 e	 j ƒ Z Gd „  d e	 j ƒ Z d „  Z e d k o e ƒ  n d S(   i    N(   u   verbosec             B   s2   |  Ee  Z d  „  Z d „  Z d „  Z d „  Z d S(   c             C   s   d |  _  d  S(   Ni    (   u   value(   u   self(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   __init__   s    c             C   s   |  j  d 7_  d  S(   Ni   (   u   value(   u   self(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   inc   s    c             C   s   |  j  d 8_  d  S(   Ni   (   u   value(   u   self(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   dec   s    c             C   s   |  j  S(   N(   u   value(   u   self(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   get   s    N(   u   __name__u
   __module__u   __init__u   incu   decu   get(   u
   __locals__(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   Counter   s   
			u   Counterc             B   s    |  Ee  Z d  „  Z d „  Z d S(   c             C   s>   t  j j |  d | ƒ| |  _ | |  _ | |  _ | |  _ d  S(   Nu   name(   u	   threadingu   Threadu   __init__u   testcaseu   semau   mutexu   nrunning(   u   selfu   nameu   testcaseu   semau   mutexu   nrunning(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   __init__   s
    			c             C   sr  t  j  ƒ  d } t o t d |  j | d f ƒ n |  j j } j ƒ  z|  j j } j ƒ  zQ |  j j	 ƒ  t o t |  j j
 ƒ  d ƒ n |  j j |  j j
 ƒ  d k ƒ Wd  | ~ QXt j | ƒ t o t d |  j d ƒ n |  j j } j ƒ  z[ |  j j ƒ  |  j j |  j j
 ƒ  d k ƒ t o$ t d	 |  j |  j j
 ƒ  f ƒ n Wd  | ~ QXWd  | ~ QXd  S(
   Ng     ˆÃ@u   task %s will run for %.1f usecg    €„.Au   tasks are runningi   u   tasku   donei    u$   %s is finished. %d tasks are running(   u   randomu   verboseu   printu   nameu   semau   __exit__u	   __enter__u   mutexu   nrunningu   incu   getu   testcaseu   assert_u   timeu   sleepu   dec(   u   selfu   delayu   _[1]u   _[2]u   _[3](    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   run!   s&    +N(   u   __name__u
   __module__u   __init__u   run(   u
   __locals__(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu
   TestThread   s   
	u
   TestThreadc             B   sh   |  Ee  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 S(   c             C   sW  d } t  j d d ƒ } t  j ƒ  } t ƒ  } g  } xy t | ƒ D]k } t d | |  | | | ƒ } | j | ƒ |  j | j d  ƒ |  j
 t j d t | ƒ ƒ ƒ | j ƒ  q@ Wt o t d ƒ n xa | D]Y } | j | ƒ |  j
 | j ƒ  ƒ |  j | j d ƒ |  j
 t j d t | ƒ ƒ ƒ qË Wt o t d	 ƒ n |  j | j ƒ  d ƒ d  S(
   Ni
   u   valuei   u   <thread %d>u   <TestThread\(.*, initial\)>u!   waiting for all tasks to completei    u   <TestThread\(.*, \w+ -?\d+\)>u   all tasks done(   u	   threadingu   BoundedSemaphoreu   RLocku   Counteru   rangeu
   TestThreadu   appendu   failUnlessEqualu   identu   Noneu   assert_u   reu   matchu   repru   startu   verboseu   printu   joinu   is_aliveu   failIfEqualu   assertEqualu   get(   u   selfu   NUMTASKSu   semau   mutexu
   numrunningu   threadsu   iu   t(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   test_various_ops>   s.    	  #c             C   st   t  o t d ƒ n y t j d ƒ Wn0 t j k
 o! t  o t d ƒ n d  SYn X|  j ƒ  t j d ƒ d  S(   Nu   with 256kB thread stack size...i   u4   platform does not support changing thread stack sizei    (   u   verboseu   printu	   threadingu
   stack_sizeu   _threadu   erroru   test_various_ops(   u   self(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   test_various_ops_small_stack]   s    

c             C   st   t  o t d ƒ n y t j d ƒ Wn0 t j k
 o! t  o t d ƒ n d  SYn X|  j ƒ  t j d ƒ d  S(   Nu   with 1MB thread stack size...i   u4   platform does not support changing thread stack sizei    (   u   verboseu   printu	   threadingu
   stack_sizeu   _threadu   erroru   test_various_ops(   u   self(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   test_various_ops_large_stackj   s    

c             C   s‚   d „  } t  j ƒ  } | j ƒ  t j | | f ƒ } | j ƒ  |  j | t  j k ƒ |  j t t  j | t  j ƒ ƒ t  j | =d  S(   Nc             S   s.   t  j ƒ  } | j ƒ  | j ƒ  |  j ƒ  d  S(   N(   u	   threadingu   RLocku   acquireu   release(   u   mutexu   r(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   fx   s    

(	   u	   threadingu   Locku   acquireu   _threadu   start_new_threadu   assert_u   _activeu
   isinstanceu   _DummyThread(   u   selfu   fu   mutexu   tid(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   test_foreign_threadv   s    	

c                s  y d d  l  } Wn- t k
 o! t o t d ƒ n d  SYn X| j j } Gd „  d t ƒ ‰ | j ˆ ƒ } t j	 ƒ  ‰  t j	 ƒ  ‰ G‡ ‡ ‡  f d †  d t j
 ƒ } | ƒ  } d | _ | j ƒ  t o t d ƒ n t o t d ƒ n | | j d	 ƒ | ƒ } |  j | d ƒ t o t d
 ƒ n ˆ  j ƒ  t o t d ƒ n |  j | j ƒ t o t d ƒ n | | j | j ƒ | ƒ } |  j | d ƒ t o t d ƒ n ˆ j d d ƒ |  j | j ƒ t o t d ƒ n | j o | j ƒ  n d  S(   Ni    u2   test_PyThreadState_SetAsyncExc can't import ctypesc             B   s   |  Ee  Z d  S(   N(   u   __name__u
   __module__(   u
   __locals__(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   AsyncExc–   s   
u   AsyncExcc                s#   |  Ee  Z ‡ ‡ ‡  f d  †  Z d S(   c                sg   t  j ƒ  |  _ d |  _ y! x ˆ j ƒ  t j d ƒ q Wn' ˆ k
 o d |  _ ˆ  j ƒ  Yn Xd  S(   Ngš™™™™™¹?FT(	   u   _threadu	   get_identu   idu   Falseu   finishedu   setu   timeu   sleepu   True(   u   self(   u   worker_saw_exceptionu   worker_startedu   AsyncExc(    u0   /mit/python/lib/python3.0/test/test_threading.pyu   run£   s    	
	N(   u   __name__u
   __module__u   run(   u
   __locals__(   u   AsyncExcu   worker_saw_exceptionu   worker_started(    u0   /mit/python/lib/python3.0/test/test_threading.pyu   Worker¢   s   
u   Workeru       started worker threadu        trying nonsensical thread idiÿÿÿÿu,       waiting for worker thread to get startedu"       verifying worker hasn't exitedu2       attempting to raise asynch exception in workeri   u5       waiting for worker to say it caught the exceptionu   timeouti
   u       all OK -- joining workerT(   u   ctypesu   ImportErroru   verboseu   printu	   pythonapiu   PyThreadState_SetAsyncExcu	   Exceptionu	   py_objectu	   threadingu   Eventu   Threadu   Trueu   daemonu   startu   c_longu   assertEqualu   waitu   assert_u   finishedu   idu   join(   u   selfu   ctypesu   set_async_excu	   exceptionu   Workeru   tu   result(    (   u   worker_startedu   worker_saw_exceptionu   AsyncExcu0   /mit/python/lib/python3.0/test/test_threading.pyu   test_PyThreadState_SetAsyncExcŒ   sN    
"		


c             C   s{   y d d  l  } Wn- t k
 o! t o t d ƒ n d  SYn Xd d  l } | j t j d d g ƒ } |  j | d ƒ d  S(   Ni    u6   test_finalize_with_runnning_thread can't import ctypesu   -cuN  if 1:
            import ctypes, sys, time, _thread

            # This lock is used as a simple event variable.
            ready = _thread.allocate_lock()
            ready.acquire()

            # Module globals are cleared before __del__ is run
            # So we save the functions in class dict
            class C:
                ensure = ctypes.pythonapi.PyGILState_Ensure
                release = ctypes.pythonapi.PyGILState_Release
                def __del__(self):
                    state = self.ensure()
                    self.release(state)

            def waitingThread():
                x = C()
                ready.release()
                time.sleep(100)

            _thread.start_new_thread(waitingThread, ())
            ready.acquire()  # Be sure the other thread is waiting.
            sys.exit(42)
            i*   (	   u   ctypesu   ImportErroru   verboseu   printu
   subprocessu   callu   sysu
   executableu   assertEqual(   u   selfu   ctypesu
   subprocessu   rc(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   test_finalize_runnning_threadÐ   s    
c             C   sW   d d  l  } | j t j d d g ƒ } |  j | d k d ƒ |  j | d k d ƒ d  S(   Ni    u   -cuP  if 1:
            import sys, threading

            # A deadlock-killer, to prevent the
            # testsuite to hang forever
            def killer():
                import os, time
                time.sleep(2)
                print('program blocked; aborting')
                os._exit(2)
            t = threading.Thread(target=killer)
            t.daemon = True
            t.start()

            # This is the trace function
            def func(frame, event, arg):
                threading.current_thread()
                return func

            sys.settrace(func)
            i   u   interpreted was blockedu   Unexpected error(   u
   subprocessu   callu   sysu
   executableu   failIfu
   failUnless(   u   selfu
   subprocessu   rc(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   test_finalize_with_trace÷   s
    c             C   s«   t  j } t j ƒ  } z xz t d d ƒ D]i } t j | d ƒ t  j d d „  ƒ } | j ƒ  | j ƒ  | ƒ  } |  j	 | | k d | | f ƒ q( WWd  t j | ƒ Xd  S(   Ni   id   i   u   targetc               S   s   d  S(   N(   u   None(    (    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   <lambda>  s    u&   #1703448 triggered after %d trials: %s(
   u	   threadingu	   enumerateu   sysu   getcheckintervalu   rangeu   setcheckintervalu   Threadu   startu   joinu   assertFalse(   u   selfu   enumu   old_intervalu   iu   tu   l(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   test_enumerate_after_join  s    	 

	c             C   sÅ   Gd „  d t  ƒ } | d d ƒ } t j | ƒ } | j j ƒ  ~ |  j d  | ƒ  d d t j	 | ƒ  ƒ ƒ| d d ƒ } t j | ƒ } | j j ƒ  ~ |  j d  | ƒ  d d t j	 | ƒ  ƒ ƒd  S(   Nc             B   s    |  Ee  Z d  „  Z d „  Z d S(   c          	   S   sH   | |  _  t j d |  j d |  f d i |  d 6ƒ |  _ |  j j ƒ  d  S(   Nu   targetu   argsu   kwargsu   yet_another(   u   should_raiseu	   threadingu   Threadu   _runu   threadu   start(   u   selfu   should_raise(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   __init__)  s
    		c             S   s   |  j  o
 t ‚ n d  S(   N(   u   should_raiseu
   SystemExit(   u   selfu	   other_refu   yet_another(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   _run2  s    
N(   u   __name__u
   __module__u   __init__u   _run(   u
   __locals__(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   RunSelfFunction(  s   
		u   RunSelfFunctionu   should_raiseu   msgu   %d references still aroundFT(   u   objectu   Falseu   weakrefu   refu   threadu   joinu   assertEqualsu   Noneu   sysu   getrefcountu   True(   u   selfu   RunSelfFunctionu   cyclic_objectu   weak_cyclic_objectu   raising_cyclic_objectu   weak_raising_cyclic_object(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   test_no_refcycle_through_target'  s    c             C   sh   t  j ƒ  } | j ƒ  | j d ƒ | j ƒ  | j d ƒ | j ƒ  t  j ƒ  } | j	 ƒ  t  j
 ƒ  d  S(   Nu   nameT(   u	   threadingu   Threadu   isDaemonu	   setDaemonu   Trueu   getNameu   setNameu   isAliveu   Eventu   isSetu   activeCount(   u   selfu   tu   e(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   test_old_threading_apiF  s    



N(   u   __name__u
   __module__u   test_various_opsu   test_various_ops_small_stacku   test_various_ops_large_stacku   test_foreign_threadu   test_PyThreadState_SetAsyncExcu   test_finalize_runnning_threadu   test_finalize_with_traceu   test_enumerate_after_joinu   test_no_refcycle_through_targetu   test_old_threading_api(   u
   __locals__(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   ThreadTests:   s   
					D	'			u   ThreadTestsc             B   s2   |  Ee  Z d  „  Z d „  Z d „  Z d „  Z d S(   c             C   s§   d | } d d  l  } | j t j d | g d | j ƒ} | j ƒ  } | j j ƒ  j ƒ  j	 d d ƒ } |  j
 | d ƒ |  j | d k d	 ƒ |  j | d k d
 ƒ d  S(   Nu…  if 1:
            import sys, os, time, threading

            # a thread, which waits for the main program to terminate
            def joiningfunc(mainthread):
                mainthread.join()
                print('end of thread')
                # stdout is fully buffered because not a tty, we have to flush
                # before exit.
                sys.stdout.flush()
        
i    u   -cu   stdoutu   u    u   end of main
end of thread
i   u   interpreter was blockedu   Unexpected error(   u
   subprocessu   Popenu   sysu
   executableu   PIPEu   waitu   stdoutu   readu   decodeu   replaceu   assertEqualu   failIfu
   failUnless(   u   selfu   scriptu
   subprocessu   pu   rcu   data(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   _run_and_joinV  s    
$!c             C   s   d } |  j  | ƒ d  S(   Nuõ   if 1:
            import os
            t = threading.Thread(target=joiningfunc,
                                 args=(threading.current_thread(),))
            t.start()
            time.sleep(0.1)
            print('end of main')
            (   u   _run_and_join(   u   selfu   script(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   test_1_join_on_shutdownk  s    	c             C   s8   d d  l  } t | d ƒ p d  Sd } |  j | ƒ d  S(   Ni    u   forkuG  if 1:
            childpid = os.fork()
            if childpid != 0:
                os.waitpid(childpid, 0)
                sys.exit(0)

            t = threading.Thread(target=joiningfunc,
                                 args=(threading.current_thread(),))
            t.start()
            print('end of main')
            (   u   osu   hasattru   _run_and_join(   u   selfu   osu   script(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   test_2_join_in_forked_processx  s
    c             C   sd   d d  l  } t | d ƒ p d  St j d	 k o t t j ?d t j f d  Sd } |  j | ƒ d  S(
   Ni    u   forku   freebsd4u   freebsd5u   freebsd6u   os2emxuB   Skipping test_3_join_in_forked_from_thread due to known OS bugs onu:  if 1:
            main_thread = threading.current_thread()
            def worker():
                childpid = os.fork()
                if childpid != 0:
                    os.waitpid(childpid, 0)
                    sys.exit(0)

                t = threading.Thread(target=joiningfunc,
                                     args=(main_thread,))
                print('end of main')
                t.start()
                t.join() # Should not block: main_thread is already stopped

            w = threading.Thread(target=worker)
            w.start()
            (   u   freebsd4u   freebsd5u   freebsd6u   os2emx(   u   osu   hasattru   sysu   platformu   printu   stderru   _run_and_join(   u   selfu   osu   script(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu!   test_3_join_in_forked_from_threadŠ  s    
N(   u   __name__u
   __module__u   _run_and_joinu   test_1_join_on_shutdownu   test_2_join_in_forked_processu!   test_3_join_in_forked_from_thread(   u
   __locals__(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   ThreadJoinOnShutdownT  s   
			u   ThreadJoinOnShutdownc             B   sV   |  Ee  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d S(	   c             C   s-   t  j ƒ  } | j ƒ  |  j t | j ƒ d  S(   N(   u	   threadingu   Threadu   startu   assertRaisesu   RuntimeError(   u   selfu   thread(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   test_start_thread_again­  s    
c             C   s#   t  j ƒ  } |  j t | j ƒ d  S(   N(   u	   threadingu   RLocku   assertRaisesu   RuntimeErroru   release(   u   selfu   rlock(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   test_releasing_unacquired_rlock²  s    c             C   s#   t  j ƒ  } |  j t | j ƒ d  S(   N(   u	   threadingu	   Conditionu   assertRaisesu   RuntimeErroru   wait(   u   selfu   cond(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu$   test_waiting_on_unacquired_condition¶  s    c             C   s#   t  j ƒ  } |  j t | j ƒ d  S(   N(   u	   threadingu	   Conditionu   assertRaisesu   RuntimeErroru   notify(   u   selfu   cond(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu#   test_notify_on_unacquired_conditionº  s    c             C   s:   |  j  t t j d d ƒ|  j  t t j d t j ƒd  S(   Nu   valueiÿÿÿÿ(   u   assertRaisesu
   ValueErroru	   threadingu	   Semaphoreu   sysu   maxsize(   u   self(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu"   test_semaphore_with_negative_value¾  s    c             C   s#   t  j ƒ  } |  j t | j ƒ d  S(   N(   u	   threadingu   current_threadu   assertRaisesu   RuntimeErroru   join(   u   selfu   current_thread(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   test_joining_current_threadÂ  s    c             C   s#   t  j ƒ  } |  j t | j ƒ d  S(   N(   u	   threadingu   Threadu   assertRaisesu   RuntimeErroru   join(   u   selfu   thread(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   test_joining_inactive_threadÆ  s    c             C   s3   t  j ƒ  } | j ƒ  |  j t t | d d ƒ d  S(   Nu   daemonT(   u	   threadingu   Threadu   startu   assertRaisesu   RuntimeErroru   setattru   True(   u   selfu   thread(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   test_daemonize_active_threadÊ  s    
N(
   u   __name__u
   __module__u   test_start_thread_againu   test_releasing_unacquired_rlocku$   test_waiting_on_unacquired_conditionu#   test_notify_on_unacquired_conditionu"   test_semaphore_with_negative_valueu   test_joining_current_threadu   test_joining_inactive_threadu   test_daemonize_active_thread(   u
   __locals__(    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   ThreadingExceptionTestsª  s   
							u   ThreadingExceptionTestsc               C   s   t  j j t t t ƒ d  S(   N(   u   testu   supportu   run_unittestu   ThreadTestsu   ThreadJoinOnShutdownu   ThreadingExceptionTests(    (    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu	   test_mainÐ  s    u   __main__(   u   test.supportu   testu   verboseu   randomu   reu   sysu	   threadingu   _threadu   timeu   unittestu   weakrefu   objectu   Counteru   Threadu
   TestThreadu   TestCaseu   ThreadTestsu   ThreadJoinOnShutdownu   ThreadingExceptionTestsu	   test_mainu   __name__(    (    (    u0   /mit/python/lib/python3.0/test/test_threading.pyu   <module>   s$   
!ÿ V&	