o
    tPf                     @   s   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 deZG dd	 d	eZG d
d dejZG dd de	jZedkrYe  dS dS )    )print_functiondivisionabsolute_importN)timing)pool)Timeoutc                   @      e Zd ZdS )SpecialErrorN__name__
__module____qualname__ r   r   _/var/www/html/humari/django-venv/lib/python3.10/site-packages/gevent/tests/test__greenletset.pyr	          r	   c                   @   s   e Zd Zdd Zdd ZdS )Undeadc                 C   s
   d| _ d S )Nr   )
shot_countselfr   r   r   __init__   s   
zUndead.__init__c                 C   s<   	 zt d W n ty   Y d S    |  jd7  _Y q)NT   )geventsleepr	   r   r   r   r   r   __call__   s   zUndead.__call__N)r   r   r   r   r   r   r   r   r   r      s    r   c                   @   sZ   e Zd ZejZdd Zdd Zdd Zdd Z	d	d
 Z
dd Zdd Zdd Zdd ZdS )Testc                 C   s   t  }|tjtj | t|d| |tjtjd  | t|d| t  ttjd tj	  | t|d| ttjd tj	  | 
| d S )Nr         )r   Groupspawnr   r   r   
LARGE_TICKassertEquallenLARGE_TICK_MIN_ADJassertFalser   sr   r   r   
test_basic$   s   zTest.test_basicc                 C   s   t  }|tjt |tjtd  t|dksJ |t }|jdd t | }| 	| | 
t|d | |td td  d S )Nr   T)raise_errorr   gffffff?g      @)r   r   r   r   r   DELAYr!   timejoinr#   r    assertTimeWithinRanger   r%   startdeltar   r   r   test_waitall0   s   
zTest.test_waitallc                 C   s   t  }|tjt |tjtd  t|dksJ |t }|  | 	| | 
t|d t | }|td k sCJ |d S )Nr   r   g?)r   r   r   r   r   r(   r!   r)   killr#   r    r,   r   r   r   test_kill_block<   s   
zTest.test_kill_blockc                 C   s   t  }|tjt |tjtd  t|dksJ ||jdd t|dks.J |td | | | 	t|d d S )Nr   Fblockg-C6?r   )
r   r   r   r   r   r(   r!   r0   r#   r    r$   r   r   r   test_kill_noblockH   s   

zTest.test_kill_noblockc                    sb  t  t  t t fdd}td t g}t|d| |dd |j dd |dd td |dd |  |dd |  |dd |j	dd |j	dd |j	dd |dd tt
 |dd t }tjt
|j	d	|d
}||u sJ t|t|dksJ ||dd  	t 	t d S )Nc                    sP         j  j j|  j| d S )N)
assertTruer#   deadr    r   )count1count2p1p2r   u1u2r   r   checkY   s   

z(Test.test_kill_fires_once.<locals>.checkg{Gz?r   r   Fr2   r   T)r3   timeout_value)r   r   r   r   r   r   r    r!   killoner0   r(   objectwith_timeoutreprr	   )r   r>   r%   Xkill_resultr   r9   r   test_kill_fires_onceS   s<   















zTest.test_kill_fires_oncec                 C   s6   t dd }t dd }t||g}|  d S )Nc                   S   s   dd S )Nr   r   r   r   r   r   r   <lambda>}   s    z,Test.test_killall_subclass.<locals>.<lambda>c                   S   
   t dS )N
   r   r   r   r   r   r   rG   ~      
 )GreenletSubclassr   r   r   r0   )r   r:   r;   r%   r   r   r   test_killall_subclass|   s   zTest.test_killall_subclassc                 C   sf   t dd }t dd }t }|| || tj|dd td |D ]}|js0J q)d S )Nc                   S   rH   N      ?rJ   r   r   r   r   rG      rK   z?Test.test_killall_iterable_argument_non_block.<locals>.<lambda>c                   S   rH   rN   rJ   r   r   r   r   rG      rK   Fr2   rO   )rL   r   setaddr   killallr   r6   )r   r:   r;   r%   gr   r   r   (test_killall_iterable_argument_non_block   s   


z-Test.test_killall_iterable_argument_non_blockc                 C   s`   dd }t |}t |}t }|| || tj|dd |D ]	}| |j| q$d S )Nc                   S   (   zt d W d S    t d Y d S Ng      ?r   rJ   r   r   r   r   f      zBTest.test_killall_iterable_argument_timeout_not_started.<locals>.frO   timeout)rL   r   rP   rQ   r   rR   r5   r6   r   rW   r:   r;   r%   rS   r   r   r   2test_killall_iterable_argument_timeout_not_started   s   



z7Test.test_killall_iterable_argument_timeout_not_startedc                 C   s   dd }t |}t |}t }|| || ttj | t	 tj
|dd W d    n1 s8w   Y  |D ]	}| |j| q?d S )Nc                   S   rU   rV   rJ   r   r   r   r   rW      rX   z>Test.test_killall_iterable_argument_timeout_started.<locals>.frO   rY   )rL   r   rP   rQ   r   r   r   SMALLEST_RELIABLE_DELAYassertRaisesr   rR   r#   r6   r[   r   r   r   .test_killall_iterable_argument_timeout_started   s   



z3Test.test_killall_iterable_argument_timeout_startedN)r   r   r   	greentestLARGE_TIMEOUT__timeout__r&   r/   r1   r4   rF   rM   rT   r\   r_   r   r   r   r   r       s    )r   c                   @   r   )rL   Nr
   r   r   r   r   rL      r   rL   __main__)
__future__r   r   r   r)   gevent.testingtestingr`   r   r   r   gevent.timeoutr   r   r(   	Exceptionr	   rA   r   TestCaser   GreenletrL   r   mainr   r   r   r   <module>   s      