
    <|h                        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j0                          yy)    )print_functiondivisionabsolute_importN)timing)pool)Timeoutc                       e Zd Zy)SpecialErrorN__name__
__module____qualname__     ]/var/www/html/test/engine/venv/lib/python3.12/site-packages/gevent/tests/test__greenletset.pyr
   r
          r   r
   c                       e Zd Zd Zd Zy)Undeadc                     d| _         y )Nr   )
shot_countselfs    r   __init__zUndead.__init__   s	    r   c                 ~    	 	 t        j                  d       # t        $ r Y y  | xj                  dz  c_        Y $xY w)N   )geventsleepr
   r   r   s    r   __call__zUndead.__call__   s<    %Q    %1$s    	<<N)r   r   r   r   r   r   r   r   r   r      s    %r   r   c                   Z    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y
)Testc                    t        j                         }|j                  t        j                  t
        j                         | j                  t        |      d|       |j                  t        j                  t
        j                  dz         | j                  t        |      d|       t        j                          t        j                  t
        j                  dz  t
        j                  z          | j                  t        |      d|       t        j                  t
        j                  dz  t
        j                  z          | j                  |       y )Nr         )r   Groupspawnr   r   r   
LARGE_TICKassertEquallenLARGE_TICK_MIN_ADJassertFalser   ss     r   
test_basiczTest.test_basic$   s    JJL	f//0QA&	f//!34QA&V&&*V-F-FFGQA&V&&*V-F-FFGr   c                     t        j                         }|j                  t        j                  t
               |j                  t        j                  t
        dz         t        |      dk(  sJ |       t        j                         }|j                  d       t        j                         |z
  }| j                  |       | j                  t        |      d       | j                  |t
        dz  t
        dz         y )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    JJL	e$	eai(1v{A{			4 		e#Q#""5%#+us{Cr   c                    t        j                         }|j                  t        j                  t
               |j                  t        j                  t
        dz         t        |      dk(  sJ |       t        j                         }|j                          | j                  |       | j                  t        |      d       t        j                         |z
  }|t
        dz  k  sJ |       y )Nr#   r   g?)r   r$   r%   r   r   r0   r(   r1   killr*   r'   r4   s       r   test_kill_blockzTest.test_kill_block<   s    JJL	e$	eai(1v{A{			Q#		e#us{")E)"r   c                    t        j                         }|j                  t        j                  t
               |j                  t        j                  t
        dz         t        |      dk(  sJ |       |j                  d       t        |      dk(  sJ |       t        j                  d       | j                  |       | j                  t        |      d       y )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    JJL	e$	eai(1v{A{	U1v{A{VQ#r   c                     t               t               t        j                        t        j                         fd}t        j                  d       t	        j
                  g      } j                  t        |      d|        |dd       |j                  d        |dd       t        j                  d        |dd       |j                          |dd       |j                          |dd       |j                  d       |j                  d       |j                  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       j                  t               j                  t               y )
Nc                 *   j                         j                         j                  j                         j                  j                         j                  j                  |        j                  j                  |       y )N)
assertTruer*   deadr'   r   )count1count2p1p2r   u1u2s     r   checkz(Test.test_kill_fires_once.<locals>.checkY   sk    OOBOOBRWWb)RWWb)R]]F3R]]F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   s   XX\\"\\"	4 	4 	TJJBx QA&a			"E	"aQa			"a			"a	U	U	UaUaH))%tSTUa2k!221v{A{a

r   c                     t         j                  d       }t         j                  d       }t        j                  ||g      }|j	                          y )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    FLL,< r   )GreenletSubclassr%   r   r$   r9   )r   rE   rF   r,   s       r   test_killall_subclasszTest.test_killall_subclass|   s>    ##M2##$<=JJBx 	r   c                 6   t         j                  d       }t         j                  d       }t               }|j                  |       |j                  |       t	        j
                  |d       t	        j                  d       |D ]  }|j                  rJ  y )Nc                  ,    t        j                  d      S N      ?rW   r   r   r   rT   z?Test.test_killall_iterable_argument_non_block.<locals>.<lambda>       FLL,= 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   su    ##$=>##$=>E	b		b	q&S 	A66M6	r   c                 *   d }t         j                  |      }t         j                  |      }t               }|j                  |       |j                  |       t	        j
                  |d       |D ]  }| j                  |j                  |         y )Nc                  h    	 t        j                  d       y #  t        j                  d       Y y xY wNg      ?r   rW   r   r   r   fzBTest.test_killall_iterable_argument_timeout_not_started.<locals>.f   %     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   su    	 
 ##A&##A&E	b		b	q#& 	'AOOAFFA&	'r   c                    d }t         j                  |      }t         j                  |      }t               }|j                  |       |j                  |       t	        j
                  t        j                         | j                  t              5  t	        j                  |d       d d d        |D ]  }| j                  |j                  |         y # 1 sw Y   -xY w)Nc                  h    	 t        j                  d       y #  t        j                  d       Y y 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&E	b		b	V334w' 	+NN1c*	+  	(AQVVQ'	(	+ 	+s   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
*	$'R	' (r   r    c                       e Zd Zy)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      s    @ @  " !   "	9 	%V %O(9 O(d	v 	 zINN r   