ó
ŒwÛjc           @   sE  d  d l  Z  d  d l Z d  d l Z d  d l m Z e j d ƒ Z d  d l Z d  d l Z d  d l	 Z	 d  d l m
 Z
 d Z d Z e j ƒ  Z d „  Z d e j f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ d d d „  ƒ  YZ d e f d „  ƒ  YZ d e
 j f d „  ƒ  YZ d e j f d „  ƒ  YZ d „  Z e d k rAe ƒ  n  d S(   iÿÿÿÿN(   t   supportt   thread(   t
   lock_testsi
   i   c         C   s"   t  j r t �
 |  GHWd QXn  d S(   s2   Helper function for printing out debugging output.N(   R    t   verboset   _print_mutex(   t   arg(    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyt   verbose_print   s    	t   BasicThreadTestc           B   s   e  Z d  „  Z RS(   c         C   sx   t  j ƒ  |  _ |  j j ƒ  t  j ƒ  |  _ t  j ƒ  |  _ d |  _ d |  _ d |  _ t	 j
 ƒ  } |  j t	 j | Œ d  S(   Ni    (   R   t   allocate_lockt
   done_mutext   acquiret   running_mutext   random_mutext   createdt   runningt
   next_identR    t   threading_setupt
   addCleanupt   threading_cleanup(   t   selft   key(    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyt   setUp   s    			(   t   __name__t
   __module__R   (    (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyR      s   t   ThreadRunningTestsc           B   sb   e  Z d  „  Z d „  Z d „  Z d „  Z e j e j	 d k d ƒ d „  ƒ Z
 d	 „  Z d
 „  Z RS(   c         C   sk   |  j  �\ |  j d 7_ t d |  j ƒ t j |  j |  j f ƒ |  j d 7_ |  j d 7_ Wd  QXd  S(   Ni   s   creating task %s(   R   R   R   R   t   start_new_threadt   taskR   R   (   R   (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyt   newtask+   s    
c         C   sª   |  j  � t j ƒ  d } Wd  QXt d | t | d ƒ f ƒ t j | ƒ t d | ƒ |  j �B |  j d 8_ |  j t	 k r  |  j d k r  |  j
 j ƒ  n  Wd  QXd  S(   Ng     ˆÃ@s   task %s will run for %susg    €„.As   task %s donei   i    (   R   t   randomR   t   roundt   timet   sleepR   R   R   t   NUMTASKSR	   t   release(   R   t   identt   delay(    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyR   3   s    

c         C   sY   t  j ƒ  �G x t t ƒ D] } |  j ƒ  q Wt d ƒ |  j j ƒ  t d ƒ Wd  QXd  S(   Ns    waiting for tasks to complete...s   all tasks done(   R    t   wait_threads_exitt   rangeR    R   R   R	   R
   (   R   t   i(    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyt   test_starting_threads>   s    
c         C   sC   |  j  t j ƒ  d d ƒ t j d ƒ |  j  t j ƒ  d d ƒ d  S(   Ni    s   initial stack size is not 0s   stack_size not reset to default(   t   assertEqualR   t
   stack_size(   R   (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyt   test_stack_sizeG   s    t   ntt   os2t   posixs!   test meant for nt, os2, and posixc         C   s5  y t  j d ƒ Wn; t k
 r. t d ƒ n! t  j k
 rN |  j d ƒ n Xd } xF d D]> } t  j | ƒ |  j t  j ƒ  | | | ƒ t d | ƒ q\ Wxƒ d D]{ } t d	 | ƒ d |  _ d |  _ t	 j
 ƒ  �G x t t ƒ D] } |  j ƒ  qå Wt d
 ƒ |  j j ƒ  t d ƒ Wd  QXq¥ Wt  j d ƒ d  S(   Ni   s3   caught expected ValueError setting stack_size(4096)s4   platform does not support changing thread stack sizes&   stack_size(%d) failed - should succeedi   i   i    s   successfully set stack_size(%d)s   trying stack_size = (%d)s!   waiting for all tasks to completes   all tasks done(   i   i   i    (   i   i   (   R   R)   t
   ValueErrorR   t   errort   skipTestR(   R   R   R    R$   R%   R    R   R	   R
   (   R   t   fail_msgt   tssR&   (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyt   test_nt_and_posix_stack_sizeN   s,    		
c            só   t  j ƒ  } t  j ƒ  ‰ ˆ j ƒ  g  ‰ ‡ ‡ f d †  } t j ƒ  �§ t  j | d ƒ x ˆ sp t j d ƒ qZ W|  j	 t  j ƒ  | d ƒ ˆ j
 ƒ  g  ‰  t j | ‡  f d †  ƒ } ~ x ˆ  sÒ t j d ƒ q¼ W|  j	 t  j ƒ  | ƒ Wd  QXd  S(   Nc              s%   ˆ j  d  ƒ ˆ  j ƒ  ˆ  j ƒ  d  S(   N(   t   appendt   NoneR
   R!   (    (   t   mutt   started(    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyR   t   s    
g{®Gáz„?i   c            s   ˆ  j  d  ƒ S(   N(   R4   R5   (   t   _(   t   done(    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyt   <lambda>„   t    (    (   R   t   _countR   R
   R    R$   R   R   R   R(   R!   t   weakreft   ref(   R   t   origR   t   wr(    (   R9   R6   R7   s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyt   test__countm   s"    
	
	c            s±   ‡ f d †  } ‡  f d †  } t  j ƒ  } t  j ƒ  ‰ t j d ƒ �P } | j ‰  | | _ ˆ j ƒ  t j ƒ  � t  j | d ƒ ˆ j ƒ  Wd  QXWd  QX|  j	 d | j
 ƒ  ƒ d  S(   Nc              s   ˆ  j  ƒ  t ‚ d  S(   N(   R!   t   SyntaxError(    (   R7   (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyR   Œ   s    
c            s/   y
 t  ‚ Wn t  k
 r n Xˆ  |  | Œ d  S(   N(   R.   (   R   t   args(   t
   real_write(    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyt   mywrite�   s
    
t   stderrt	   Traceback(    (   R   R<   R   R    t   captured_outputt   writeR
   R$   R   t   assertInt   getvalue(   R   R   RE   t   cRF   (    (   RD   R7   s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyt"   test_save_exception_state_on_errorŠ   s    		
(   R+   R,   R-   (   R   R   R   R   R'   R*   t   unittestt   skipIft   ost   nameR3   RA   RM   (    (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyR   )   s   					$	t   Barrierc           B   s   e  Z d  „  Z d „  Z RS(   c         C   sA   | |  _  d |  _ t j ƒ  |  _ t j ƒ  |  _ |  j j ƒ  d  S(   Ni    (   t   num_threadst   waitingR   R   t   checkin_mutext   checkout_mutexR
   (   R   RS   (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyt   __init__¢   s
    		c         C   s«   |  j  j ƒ  |  j d |  _ |  j |  j k rP |  j d |  _ |  j j ƒ  d  S|  j  j ƒ  |  j j ƒ  |  j d |  _ |  j d k rš |  j  j ƒ  d  S|  j j ƒ  d  S(   Ni   i    (   RU   R
   RT   RS   RV   R!   (   R   (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyt   enter©   s    (   R   R   RW   RX   (    (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyRR   ¡   s   	t   BarrierTestc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s}   t  j ƒ  �k t t ƒ |  _ t |  _ x* t t ƒ D] } t j |  j	 | f ƒ q2 Wt
 d ƒ |  j j ƒ  t
 d ƒ Wd  QXd  S(   Ns   waiting for tasks to ends
   tasks done(   R    R$   RR   R    t   barR   R%   R   R   t   task2R   R	   R
   (   R   R&   (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyt   test_barrier¼   s    	
c         C   sî   x£ t  t ƒ D]• } | d k r( d } n  |  j � t j ƒ  d } Wd  QXt d | t | d ƒ f ƒ t j | ƒ t d | | f ƒ |  j j	 ƒ  t d | ƒ q W|  j
 �# |  j d 8_ |  j d k } Wd  QX| rê |  j j ƒ  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   RZ   RX   R   R   R	   R!   (   R   R"   R&   R#   t   finished(    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyR[   Æ   s     	

(   R   R   R\   R[   (    (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyRY   º   s   	
t	   LockTestsc           B   s   e  Z e j Z RS(    (   R   R   R   R   t   locktype(    (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyR_   à   s   t   TestForkInThreadc           B   sJ   e  Z d  „  Z e j e j j d ƒ d ƒ e j	 d „  ƒ ƒ Z
 d „  Z RS(   c         C   s   t  j ƒ  \ |  _ |  _ d  S(   N(   RP   t   pipet   read_fdt   write_fd(   R   (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyR   å   s    t   wins5   This test is only appropriate for POSIX-like systems.c            s|   i d  d 6‰  ‡  ‡ f d †  } t j ƒ  �7 t j | d ƒ ˆ j t j ˆ j d ƒ d d ƒ Wd  QXˆ j ˆ  d d ƒ d  S(   Nt   statusc             s¦   y t  j ƒ  }  Wn t k
 r0 t j d ƒ n X|  d k rp t  j ˆ j ƒ t  j ˆ j d ƒ t  j	 d ƒ n2 t  j ˆ j ƒ t  j
 |  d ƒ \ }  } | ˆ  d <d  S(   Ni    t   OKRf   (   RP   t   forkt   RuntimeErrort   syst   exitt   closeRc   RI   Rd   t   _exitt   waitpid(   t   pidRf   (   t	   non_localR   (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyt   thread1í   s    i   Rg   s   Unable to fork() in threadi    (    (	   R5   R    R$   R   R   R(   RP   t   readRc   (   R   Rq   (    (   Rp   R   s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyt   test_forkinthreadè   s    c         C   sT   y t  j |  j ƒ Wn t k
 r' n Xy t  j |  j ƒ Wn t k
 rO n Xd  S(   N(   RP   Rl   Rc   t   OSErrorRd   (   R   (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyt   tearDown  s    (   R   R   R   RN   RO   Rj   t   platformt
   startswithR    t   reap_threadsRs   Ru   (    (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyRa   ä   s
   	c           C   s   t  j t t t t ƒ d  S(   N(   R    t   run_unittestR   RY   R_   Ra   (    (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyt	   test_main  s    t   __main__(    (   RP   RN   R   t   testR    t   import_moduleR   R   Rj   R=   R   R    R]   R   R   R   t   TestCaseR   R   RR   RY   R_   Ra   Rz   R   (    (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_thread.pyt   <module>   s*   	x&/	