
    i                        d dl mZmZmZ d dlZd dlmZ d dlmZ d dl	Z	d dl	m
Z
 d dlmZ ej        Z G d de          Z G d d	e          Z G d
 dej                  Z G d de	j                  Zedk    r ej                     dS dS )    )print_functiondivisionabsolute_importN)timing)pool)Timeoutc                       e Zd ZdS )SpecialErrorN__name__
__module____qualname__     I/usr/local/lib/python3.11/dist-packages/gevent/tests/test__greenletset.pyr
   r
              Dr   r
   c                       e Zd Zd Zd ZdS )Undeadc                     d| _         d S )Nr   )
shot_countselfs    r   __init__zUndead.__init__   s    r   c                 x    	 	 t          j        d           n## t          $ r Y d S  | xj        dz  c_        Y nxY w:)NT   )geventsleepr
   r   r   s    r   __call__zUndead.__call__   sV    	%%Q   %1$	%s    
88N)r   r   r   r   r   r   r   r   r   r      s2          % % % % %r   r   c                   R    e Zd Zej        Zd Zd Zd Zd Z	d Z
d Zd Zd Zd	 Zd
S )Testc                    t          j                    }|                    t          j        t
          j                   |                     t          |          d|           |                    t          j        t
          j        dz             |                     t          |          d|           t          j                     t          j        t
          j        dz  t
          j	        z              |                     t          |          d|           t          j        t
          j        dz  t
          j	        z              | 
                    |           d S )Nr         )r   Groupspawnr   r   r   
LARGE_TICKassertEquallenLARGE_TICK_MIN_ADJassertFalser   ss     r   
test_basiczTest.test_basic$   s   JLL	f/000QA&&&	f/!3444QA&&&V&*V-FFGGGQA&&&V&*V-FFGGGr   c                 <   t          j                    }|                    t          j        t
                     |                    t          j        t
          dz             t          |          dk    s
J |            t          j                    }|                    d           t          j                    |z
  }| 	                    |           | 
                    t          |          d           |                     |t
          dz  t
          dz             d S )Nr#   T)raise_errorr   gffffff?g      @)r   r$   r%   r   r   DELAYr(   timejoinr*   r'   assertTimeWithinRanger   r,   startdeltas       r   test_waitallzTest.test_waitall0   s    JLL	e$$$	eai(((1vv{{{A{{{		4   	e#Q###""5%#+us{CCCCCr   c                    t          j                    }|                    t          j        t
                     |                    t          j        t
          dz             t          |          dk    s
J |            t          j                    }|                                 | 	                    |           | 
                    t          |          d           t          j                    |z
  }|t
          dz  k     s
J |            d S )Nr#   r   g?)r   r$   r%   r   r   r0   r(   r1   killr*   r'   r4   s       r   test_kill_blockzTest.test_kill_block<   s    JLL	e$$$	eai(((1vv{{{A{{{		Q###	e#us{"""E"""""r   c                    t          j                    }|                    t          j        t
                     |                    t          j        t
          dz             t          |          dk    s
J |            |                    d           t          |          dk    s
J |            t          j        d           |                     |           | 	                    t          |          d           d S )Nr#   Fblockg-C6?r   )
r   r$   r%   r   r   r0   r(   r9   r*   r'   r+   s     r   test_kill_noblockzTest.test_kill_noblockH   s    JLL	e$$$	eai(((1vv{{{A{{{	U1vv{{{A{{{VQ#####r   c                     t                      t                      t          j                  t          j                   fd}t          j        d           t	          j        g          }                     t          |          d|            |dd           |                    d            |dd           t          j        d            |dd           |                                |dd           |                                |dd           |	                    d           |	                    d           |	                    d            |dd           t          j        t                      |dd           t                      }t          j        t          |j	        d|	          }||u sJ t          |                      t          |          dk    s
J |             |dd           	                    t                     	                    t                     d S )
Nc                 4                                                                                       j                                       j                                       j        |                                j        |           d S )N)
assertTruer*   deadr'   r   )count1count2p1p2r   u1u2s     r   checkz(Test.test_kill_fires_once.<locals>.checkY   s    OOBOOBRWb)))RWb)))R]F333R]F33333r   g{Gz?r#   r   Fr<   r   T)r=   timeout_value)r   r   r%   r   r   r$   r'   r(   killoner9   r0   objectwith_timeoutreprr
   )	r   rI   r,   Xkill_resultrE   rF   rG   rH   s	   `    @@@@r   test_kill_fires_oncezTest.test_kill_fires_onceS   s5   XXXX\"\"	4 	4 	4 	4 	4 	4 	4 	4 	4 	TJBx  QA&&&a			"E	"""aQa			"a			"a	U	U	UaUaHH)%tSTUUUak!2!21vv{{{A{{{a

r   c                     t                               d           }t                               d           }t          j        ||g          }|                                 d S )Nc                      ddz  S )Nr   r   r   r   r   r   <lambda>z,Test.test_killall_subclass.<locals>.<lambda>}   s
    AE r   c                  *    t          j        d          S )N
   r   r   r   r   r   rT   z,Test.test_killall_subclass.<locals>.<lambda>~   s    FL,<,< r   )GreenletSubclassr%   r   r$   r9   )r   rE   rF   r,   s       r   test_killall_subclasszTest.test_killall_subclass|   sR    ##MM22##$<$<==JBx  	r   c                 R   t                               d           }t                               d           }t                      }|                    |           |                    |           t	          j        |d           t	          j        d           |D ]}|j        sJ d S )Nc                  *    t          j        d          S N      ?rW   r   r   r   rT   z?Test.test_killall_iterable_argument_non_block.<locals>.<lambda>       FL,=,= r   c                  *    t          j        d          S r\   rW   r   r   r   rT   z?Test.test_killall_iterable_argument_non_block.<locals>.<lambda>   r^   r   Fr<   r]   )rX   r%   setaddr   killallr   rB   )r   rE   rF   r,   gs        r   (test_killall_iterable_argument_non_blockz-Test.test_killall_iterable_argument_non_block   s    ##$=$=>>##$=$=>>EE	b				b			q&&&&S 	 	A6MMMM	 	r   c                 P   d }t                               |          }t                               |          }t                      }|                    |           |                    |           t	          j        |d           |D ]}|                     |j        |           d S )Nc                  h    	 t          j        d           d S #  t          j        d           Y d S xY wNg      ?r   rW   r   r   r   fzBTest.test_killall_iterable_argument_timeout_not_started.<locals>.f   9     S!!!!! Q    1r]   timeout)rX   r%   r`   ra   r   rb   rA   rB   r   rh   rE   rF   r,   rc   s         r   2test_killall_iterable_argument_timeout_not_startedz7Test.test_killall_iterable_argument_timeout_not_started   s    	  	  	 
 ##A&&##A&&EE	b				b			q#&&&& 	' 	'AOOAFA&&&&	' 	'r   c                    d }t                               |          }t                               |          }t                      }|                    |           |                    |           t	          j        t          j                   |                     t                    5  t	          j
        |d           d d d            n# 1 swxY w Y   |D ]}|                     |j        |           d S )Nc                  h    	 t          j        d           d S #  t          j        d           Y d S xY wrg   rW   r   r   r   rh   z>Test.test_killall_iterable_argument_timeout_started.<locals>.f   ri   rj   r]   rk   )rX   r%   r`   ra   r   r   r   SMALLEST_RELIABLE_DELAYassertRaisesr   rb   r*   rB   rm   s         r   .test_killall_iterable_argument_timeout_startedz3Test.test_killall_iterable_argument_timeout_started   s'   	  	  	 
 ##A&&##A&&EE	b				b			V3444w'' 	+ 	+N1c****	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+  	( 	(AQVQ''''	( 	(s   (CCCN)r   r   r   	greentestLARGE_TIMEOUT__timeout__r-   r7   r:   r>   rQ   rY   rd   rn   rs   r   r   r   r    r        s        )K
 
 

D 
D 
D
* 
* 
*	$ 	$ 	$' ' 'R  	 	 	' ' ' ( ( ( ( (r   r    c                       e Zd ZdS )rX   Nr   r   r   r   rX   rX      r   r   rX   __main__)
__future__r   r   r   r1   gevent.testingtestingrt   r   r   r   gevent.timeoutr   r&   r0   	Exceptionr
   rL   r   TestCaser    GreenletrX   r   mainr   r   r   <module>r      sf   @ @ @ @ @ @ @ @ @ @  " " " " " " ! ! ! ! ! !        " " " " " "	 	 	 	 	9 	 	 	% % % % %V % % %O( O( O( O( O(9 O( O( O(d	 	 	 	 	v 	 	 	 zIN r   