o
    e                     @   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   ND:\Projects\ConvertPro\env\Lib\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lenZ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)Zraise_errorr   gffffff?g      @)r   r   r   r   r   DELAYr!   timejoinr"   r    Z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!   r-   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   )Zcount1Zcount2p1p2r   u1u2r   r   checkY   s   

z(Test.test_kill_fires_once.<locals>.checkg{Gz?r   r   Fr/   r   T)r0   timeout_value)r   r   r   r   r   r   r    r!   Zkilloner-   r&   objectZwith_timeoutreprr	   )r   r9   r$   XZkill_resultr   r4   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   r?   ~      
 )GreenletSubclassr   r   r   r-   )r   r5   r6   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   r@   N      ?rB   r   r   r   r   r?      rC   z?Test.test_killall_iterable_argument_non_block.<locals>.<lambda>c                   S   r@   rF   rB   r   r   r   r   r?      rC   Fr/   rG   )rD   r   setaddr   killallr   r3   )r   r5   r6   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   rB   r   r   r   r   f      zBTest.test_killall_iterable_argument_timeout_not_started.<locals>.frG   timeout)rD   r   rH   rI   r   rJ   r2   r3   r   rO   r5   r6   r$   rK   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   rM   rN   rB   r   r   r   r   rO      rP   z>Test.test_killall_iterable_argument_timeout_started.<locals>.frG   rQ   )rD   r   rH   rI   r   r   r   ZSMALLEST_RELIABLE_DELAYassertRaisesr   rJ   r"   r3   rS   r   r   r   .test_killall_iterable_argument_timeout_started   s   



z3Test.test_killall_iterable_argument_timeout_startedN)r   r   r   	greentestZLARGE_TIMEOUTZ__timeout__r%   r,   r.   r1   r>   rE   rL   rT   rV   r   r   r   r   r       s    )r   c                   @   r   )rD   Nr
   r   r   r   r   rD      r   rD   __main__)
__future__r   r   r   r'   Zgevent.testingtestingrW   r   r   r   Zgevent.timeoutr   r   r&   	Exceptionr	   r;   r   ZTestCaser   ZGreenletrD   r   mainr   r   r   r   <module>   s      