
    i
                     :   d Z ddlmZ  ej                     ddlZej                                        
J d            ddlZddlmZ	 ddl
Z
d Z G d de	j                  Z G d d	e	j                  Z G d
 de          Zedk    r e	j                     dS dS )z=
Tests specifically for the monkey-patched threading module.
    )monkeyNz&monkey.patch_all() should not init hubc                  T    t          j                     t          j        d           d S )Ng?)	threadingcurrent_threadgeventsleep     G/usr/local/lib/python3.11/dist-packages/gevent/tests/test__threading.pyhelperr      s'    
Lr
   c                   L    e Zd Zd Zd Z ej        d          d             ZdS )TestCleanupc                    t          t          j                  } |t                    }t	          j        d           |                     t          t          j                  |dz              	 |                                 n2# t          $ r% |j	        st	          j                     |j	        ~Y nw xY w|                     t          t          j                  |           d S )Ng?   )
lenr   _activer   r   r   assertEqualjoinAttributeErrordead)selfspawnbeforegs       r   _do_testzTestCleanup._do_test   s    Y&''E&MMSY.//!<<<	FFHHHH 	 	 	f  f 
 	 	Y.//88888s   /B ,B32B3c                 D    |                      t          j                   d S N)r   r   r   r   s    r   test_cleanup_geventzTestCleanup.test_cleanup_gevent.   s    fl#####r
   z-weakref is not cleaned up in a timely fashionc                 D    |                      t          j                   d S r   )r   r   	spawn_rawr   s    r   test_cleanup_rawzTestCleanup.test_cleanup_raw1   s    f&'''''r
   N)__name__
__module____qualname__r   r   	greentest
skipOnPyPyr"   r	   r
   r   r   r      s]        9 9 92$ $ $ YIJJ( ( KJ( ( (r
   r   c                       e Zd Zd Zd ZdS )TestLockThreadc                 X    t          j        |          }|                                 |S )Ntarget)r   Threadstart)r   functs      r   _spawnzTestLockThread._spawn8   s'    D)))				r
   c                 b   t          j                                                     g fd}t          j        |          }|                                 |                     dg           |                    d                                            |                                 d S )Nc                                           d                                d          s	                      d          d S d S )NTF)appendacquire)lockspawneds   r   
backgroundz:TestLockThread.test_spin_lock_switches.<locals>.backgroundD   sV    NN4   ll5))  ll5))     r
   r+   Tr   )r   Lockr5   r-   r.   r   r   release)r   r8   threadr6   r7   s      @@r   test_spin_lock_switchesz&TestLockThread.test_spin_lock_switches=   s     ~	 	 	 	 	 	
 !444 	4&)))Ar
   N)r#   r$   r%   r1   r<   r	   r
   r   r)   r)   6   s2          
    r
   r)   c                       e Zd Zd ZdS )TestLockGreenletc                 *    t          j        |          S r   )r   r   )r   r/   s     r   r1   zTestLockGreenlet._spawnX   s    |D!!!r
   N)r#   r$   r%   r1   r	   r
   r   r>   r>   V   s#        " " " " "r
   r>   __main__)__doc__r   r   	patch_all
gevent.hubhub_get_hubgevent.testingtestingr&   r   r   TestCaser   r)   r>   r#   mainr	   r
   r   <module>rJ      sL         +6+---     z$$&N$$$  " " " " " "       (  (  (  (  ()$  (  (  (F    Y'   @" " " " "~ " " "
 zIN r
   