o
    ÑtPf³  ã                   @   sÒ   d dl Z d dlmZ d dlZd dlZd dlZd dlmZ d dlm	Z	 d dlm
Z
 d dlmZ d dlmZ G dd„ deƒZG d	d
„ d
eƒZG dd„ deƒZG dd„ deƒZG dd„ dejƒZedkrge ¡  dS dS )é    N)Úsleep)ÚTimeout)Úget_hub)Ú
SMALL_TICK)Úflakyc                   @   s   e Zd ZdS )ÚErrorN)Ú__name__Ú
__module__Ú__qualname__© r   r   ú_/var/www/html/humari/django-venv/lib/python3.10/site-packages/gevent/tests/test__api_timeout.pyr   %   s    r   c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	Ú_UpdateNowProxyr   c                 C   ó
   || _ d S ©N©Úloop©Úselfr   r   r   r   Ú__init__-   ó   
z_UpdateNowProxy.__init__c                 C   s   t | j|ƒS r   )Úgetattrr   )r   Únamer   r   r   Ú__getattr__0   s   z_UpdateNowProxy.__getattr__c                 C   s   |  j d7  _ | j ¡  d S )Né   )Úupdate_now_callsr   Ú
update_now©r   r   r   r   r   3   s   z_UpdateNowProxy.update_nowN)r   r	   r
   r   r   r   r   r   r   r   r   r   )   s
    r   c                   @   s   e Zd Zdd„ ZdS )Ú_UpdateNowWithTimerProxyc                 O   s   t | ƒS r   )Ú_Timer)r   Ú_argsÚ_kwargsr   r   r   Útimer9   s   z_UpdateNowWithTimerProxy.timerN)r   r	   r
   r!   r   r   r   r   r   7   s    r   c                   @   s4   e Zd ZdZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )r   Fc                 C   r   r   r   r   r   r   r   r   A   r   z_Timer.__init__c                 O   s$   |  d¡r
| j ¡  d | _| _d S )NÚupdateT)Úgetr   r   ÚpendingÚactive)r   r   Úkwargsr   r   r   ÚstartD   s   

z_Timer.startc                 C   s   d | _ | _d S )NF)r%   r$   r   r   r   r   ÚstopI   s   z_Timer.stopc                 C   s   dS )zDoes nothingNr   r   r   r   r   ÚcloseL   s    z_Timer.closeN)	r   r	   r
   r$   r%   r   r'   r(   r)   r   r   r   r   r   <   s    r   c                   @   s^   e Zd Zdd„ Zdd„ Ze d¡e d¡e e	e
f¡dd„ ƒƒƒZdd	„ Ze ¡ d
d„ ƒZdS )ÚTestc                 C   sx   t ƒ }|j}t|ƒ}||_z!ttd ƒ}|  |j¡ W d   ƒ n1 s%w   Y  W ||_n||_w |  d|j¡ d S )Né   r   )	r   r   r   r   ÚDELAYÚ
assertTruer$   ÚassertEqualr   )r   Úhubr   ÚproxyÚtr   r   r   Útest_timeout_calls_update_nowR   s   ÿ€z"Test.test_timeout_calls_update_nowc                 C   sH   t ƒ }|j}t|ƒ}||_z	tdƒ W ||_n||_w |  d|j¡ d S )Ng{®Gáz„?r   )r   r   r   r   r.   r   )r   r/   r   r0   r   r   r   Útest_sleep_calls_update_now`   s   
z Test.test_sleep_calls_update_nowz/Timing is flaky, especially under Py 3.4/64-bitc                 C   s  t td ƒ}|  |j|¡ | |  |j|¡ ttƒ W d   ƒ n1 s%w   Y  |  |j|¡ ttd ƒ |  t ¡"}t tƒ}ttd ƒ W d   ƒ n1 sRw   Y  W d   ƒ n1 saw   Y  |  |j|¡ |  t	¡% t tt	dƒƒ ttd ƒ W d   ƒ n1 s‹w   Y  W d   ƒ n1 sšw   Y  |  t
¡# t tt
ƒ ttd ƒ W d   ƒ n1 s»w   Y  W d   ƒ n1 sÊw   Y  z	dd  W tdƒ‚ ty   |  t¡! t tt ¡ d ƒ ttd ƒ tdƒ‚1 sýw   Y  tdƒ‚1 s
w   Y  Y nw t tƒ}| ¡  ttd ƒ W d   ƒ n	1 s,w   Y  d}t ¡ }t |dƒ t|d ƒ W d   ƒ n	1 sNw   Y  t ¡ | }|  |d|d ¡ t d ƒ ttƒ W d   ƒ n	1 svw   Y  ttƒ d S )	Nr+   é
   zOperation takes way too longr   r   úshould not get theregš™™™™™¹?F)r   r,   ÚassertFalser$   r-   r   ÚassertRaisesÚassertIsÚ	exceptionÚIOErrorÚ
ValueErrorÚZeroDivisionErrorÚsysÚexc_infoÚAssertionErrorÚcancelÚtimeÚassertTimeWithinRange)r   r1   Úexcr!   ÚXDELAYr'   Údeltar   r   r   Útest_apim   sl   
þ
ÿ€ÿÿ€ÿÿ€ÿ
ùþüÿ

þÿ

ÿzTest.test_apic                 C   sb   t ƒ }t |¡}ttd |ƒ ttƒ W d   ƒ n1 sw   Y  ~t ¡  |  |ƒ |¡ d S )Nr+   )	r   ÚweakrefÚrefr   r,   r   ÚgcÚcollectr6   )r   ÚerrÚerr_refr   r   r   Útest_refª   s   

ÿzTest.test_refc              
   C   sì  t tdƒ' t td dƒ ttd d ƒ W d   ƒ tdƒ‚1 s#w   Y  tdƒ‚1 s/w   Y  t tƒT}t td ƒ8}|  t ¡}ttd ƒ W d   ƒ n1 sVw   Y  |  |j|¡ |  |j|¡ |  	|j|¡ W d   ƒ n1 szw   Y  |  |j¡ W d   ƒ n1 sw   Y  t td ƒL}t tƒ8}|  t ¡}ttd ƒ W d   ƒ n1 s¶w   Y  |  |j|¡ |  	|j|¡ |  |j|¡ W d   ƒ n1 sÚw   Y  W d   ƒ n1 séw   Y  |  |j¡ d S )NFr4   é   é   r5   é   )
r   r,   r   r?   r7   r8   r9   r6   r$   r-   )r   Út1Út2rC   r   r   r   Útest_nested_timeout³   s>   
ÿþý
ÿú÷
ÿú€ÿ	zTest.test_nested_timeoutN)r   r	   r
   r2   r3   Ú	greentestÚskipOnAppVeyorÚskipOnPyPy3OnCIÚreraises_flaky_timeoutr   r?   rF   rM   r   Úreraises_flaky_race_conditionrS   r   r   r   r   r*   P   s    :	r*   Ú__main__)r=   Úgevent.testingÚtestingrT   rG   rA   rI   Úgeventr   r   r   Úgevent.testing.timingr   r,   r   Ú	Exceptionr   Úobjectr   r   r   ÚTestCaser*   r   Úmainr   r   r   r   Ú<module>   s&    ÿ