o
    ÑtPfÍ  ã                   @   sh   d dl 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ejƒZ	e
dkr2e ¡  dS dS )	é    N)Úsocket)Ú	selectorsc                   @   s.   e Zd Zed
dd„ƒZdZdd„ Zdd„ Zd	S )ÚSelectorTestMixiné   c                 C   s6   | j |d}|D ]\}}| | |j|¡ t ¡  qd S )N©Útimeout)ÚselectÚdataÚfileobjÚgeventÚsleep)Úselr   ÚeventsÚkeyÚmask© r   ú]/var/www/html/humari/django-venv/lib/python3.10/site-packages/gevent/tests/test__selectors.pyÚrun_selector_once   s
   
þz#SelectorTestMixin.run_selector_onceTc                 C   s8   |  d¡}|r| |¡ | jr| |¡ | ¡  d S d S )Néd   )ÚrecvÚsendÚunregister_after_sendÚ
unregisterÚclose)ÚselfÚselectorÚconnÚ_eventsr	   r   r   r   Ú read_from_ready_socket_and_reply   s   


þz2SelectorTestMixin.read_from_ready_socket_and_replyc              	   C   sÌ   t  ¡ \}}d }z9| |tj| j¡ t | j|¡}d}| 	|¡ | 
d¡}|  ||¡ W | ¡  | ¡  | ¡  |d urA| d¡ n| ¡  | ¡  | ¡  |d urX| d¡ w w |  |d uob| ¡ ¡ d S )Ns   abcdefé2   é
   )r   Ú
socketpairÚregisterr   Ú
EVENT_READr   r   Úspawnr   r   r   ÚassertEqualr   ÚjoinÚ
assertTrueÚready)r   r   ÚserverÚclientÚgletÚDATAr	   r   r   r   Ú_check_selector!   s,   


€üÿz!SelectorTestMixin._check_selectorN)r   )Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr   r   r   r-   r   r   r   r   r   
   s    
r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚGeventSelectorTestc                 C   s8   t  ¡ }|  |¡ W d   ƒ d S 1 sw   Y  d S )N)r   ÚGeventSelectorr-   )r   r   r   r   r   Útest_select_using_socketpair7   s   
"ÿz/GeventSelectorTest.test_select_using_socketpairc              
   C   s€  zt j}W n ty   d }Y nw dd„ tdƒD ƒ}zŽt ¡ }t ¡ }t|ƒD ]%\}}|\}}| |tj| j	¡ | |tj|¡ t
|ƒ d¡}	| |	¡ q't ¡  | j||d d j|kr_dndd d}
|jddD ]\}}t
|jƒ d¡}|j d	¡}	|  |	|¡ |
d
7 }
qk|  |
t|ƒ¡ W | ¡  | ¡  |D ]}|D ]}| ¡  qŸq›d S | ¡  | ¡  |D ]}|D ]}| ¡  q·q³w )Nc                 S   s   g | ]}t  ¡ ‘qS r   )r   r!   )Ú.0Ú_r   r   r   Ú
<listcomp>B   s    z?GeventSelectorTest.test_select_many_sockets.<locals>.<listcomp>r    Úasciir   éÿÿÿÿr   r   r   é   )r   ÚAF_UNIXÚAttributeErrorÚranger   r3   Ú	enumerater"   r#   r   ÚstrÚencoder   r   Úidler   Úfamilyr   r	   r
   r   r%   Úlenr   )r   r;   ÚpairsÚ
server_selÚ
client_selÚiÚpairr)   r*   r	   Úfoundr   r6   ÚexpectedÚsr   r   r   Útest_select_many_sockets<   sV   
ÿ
ÿþ

ÿÿþ
ÿÿz+GeventSelectorTest.test_select_many_socketsN)r.   r/   r0   r4   rL   r   r   r   r   r2   4   s    r2   Ú__main__)r   r   r   Úgevent.testingÚtestingÚ	greentestÚobjectr   ÚTestCaser2   r.   Úmainr   r   r   r   Ú<module>   s   *ÿ:ÿ