;
Íâ"Ic            
   @   s÷   d  Z  d d l Z d d l Z d d l Z d d l Z d d l Z d d l m Z m	 Z	 e j
 d d  d k o e	 d e j
   n e j   Z e j   Z d   Z d	   Z d
   Z Gd   d e j  Z d   Z e d k o e   n d S(   u6   PyUnit testing that threads honor our signal semanticsi    N(   u   run_unittestu   TestSkippedi   u   winu   os2u   Can't test signal on %sc             C   sL   t  j  t  j |   } t  j  t  j |  } t  j  t  j |  } | | | f S(   N(   u   signalu   SIGUSR1u   SIGUSR2u   SIGALRM(   u   for_usr1u   for_usr2u   for_alrmu   usr1u   usr2u   alrm(    (    u4   /mit/python/lib/python3.0/test/test_threadsignals.pyu   registerSignals   s    c             C   s,   t  |  d c d 7<t j   t  |  d <d  S(   Nu   trippedi   u
   tripped_by(   u   signal_blackboardu   threadu	   get_ident(   u   sigu   frame(    (    u4   /mit/python/lib/python3.0/test/test_threadsignals.pyu   handle_signals   s    c               C   s4   t  j t t j  t  j t t j  t j   d  S(   N(   u   osu   killu   process_pidu   signalu   SIGUSR1u   SIGUSR2u   signalled_allu   release(    (    (    u4   /mit/python/lib/python3.0/test/test_threadsignals.pyu   send_signals   s    c             B   s&   |  Ee  Z d  Z d   Z d   Z d S(   uŢ   Test signal handling semantics of threads.
       We spawn a thread, have the thread send two signals, and
       wait for it to finish. Check that we got both signals
       and that they were run by the main thread.
    c             C   sü   t  j   |  j   t  j   t t j d d k p t t j d d k o( t j d  t j   t j d  n |  j	 t t j d d  |  j	 t t j d t
 j    |  j	 t t j d d  |  j	 t t j d t
 j    t  j   d  S(   Nu   trippedi    i   u
   tripped_by(   u   signalled_allu   acquireu   spawnSignallingThreadu   signal_blackboardu   signalu   SIGUSR1u   SIGUSR2u   alarmu   pauseu   assertEqualu   threadu	   get_identu   release(   u   self(    (    u4   /mit/python/lib/python3.0/test/test_threadsignals.pyu   test_signals*   s    



c             C   s   t  j t d  d  S(   N(    (   u   threadu   start_new_threadu   send_signals(   u   self(    (    u4   /mit/python/lib/python3.0/test/test_threadsignals.pyu   spawnSignallingThreadB   s    N(   u   __name__u
   __module__u   __doc__u   test_signalsu   spawnSignallingThread(   u
   __locals__(    (    u4   /mit/python/lib/python3.0/test/test_threadsignals.pyu   ThreadSignals$   s   
	u   ThreadSignalsc           	   C   s   i i d d 6d d 6t  j 6i d d 6d d 6t  j 6i d d 6d d 6t  j 6a t t t t  }  z t t  Wd  t |    Xd  S(   Ni    u   trippedu
   tripped_by(	   u   signalu   SIGUSR1u   SIGUSR2u   SIGALRMu   signal_blackboardu   registerSignalsu   handle_signalsu   run_unittestu   ThreadSignals(   u   oldsigs(    (    u4   /mit/python/lib/python3.0/test/test_threadsignals.pyu	   test_mainF   s    u   __main__(   u   winu   os2(   u   __doc__u   unittestu   _threadu   threadu   signalu   osu   sysu   test.supportu   run_unittestu   TestSkippedu   platformu   getpidu   process_pidu   allocate_locku   signalled_allu   registerSignalsu   handle_signalsu   send_signalsu   TestCaseu   ThreadSignalsu	   test_mainu   __name__(    (    (    u4   /mit/python/lib/python3.0/test/test_threadsignals.pyu   <module>   s"   				"	