o
    ¹iÂ  ã                   @   sš   d dl Z d dlZd dlZd dlmZ d dlZd dlmZmZm	Z	 dd„ Z
G dd„ deƒZG dd	„ d	eƒZe	rKd dlZd d
lmZ G dd„ deeƒZdS dS )é    N)Úmark)Ú	GreenTestÚPollZMQTestCaseÚhave_geventc                   C   s   t  d¡ d S )Nç      Ð?)ÚtimeÚsleep© r	   r	   úN/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/zmq/tests/test_poll.pyÚwait   s   r   c                   @   sd   e Zd ZejZdd„ Zdd„ Zdd„ Zdd„ Ze	j
ej d	¡d
ddd„ ƒZe	jdddd„ ƒZdS )ÚTestPollc                 C   s(  |   tjtj¡\}}tƒ  |  ¡ }| |tjtjB ¡ | |tjtjB ¡ t| 	¡ ƒ}|| tjks4J ‚|| tjks=J ‚| 
d¡ | 
d¡ tƒ  t| 	¡ ƒ}|| tjtjB ks\J ‚|| tjtjB kshJ ‚| ¡  | ¡  t| 	¡ ƒ}|| tjksJ ‚|| tjksˆJ ‚| |¡ | |¡ d S )Nó   msg1ó   msg2)Úcreate_bound_pairÚzmqÚPAIRr   ÚPollerÚregisterÚPOLLINÚPOLLOUTÚdictÚpollÚsendÚrecvÚ
unregister©ÚselfÚs1Ús2ÚpollerÚsocksr	   r	   r
   Ú	test_pair   s*   


zTestPoll.test_pairc                 C   sl  |   tjtj¡\}}tƒ  |  ¡ }| |tjtjB ¡ | |tjtjB ¡ t	| 
¡ ƒ}||vs1J ‚|| tjks:J ‚| d¡ t	| 
¡ ƒ}||vsKJ ‚t d¡ t	| 
¡ ƒ}|| tjks_J ‚| ¡  t	| 
¡ ƒ}|| tjksrJ ‚| d¡ t	| 
¡ ƒ}||vsƒJ ‚t d¡ t	| 
¡ ƒ}|| tjks—J ‚| ¡  t	| 
¡ ƒ}|| tjksªJ ‚| |¡ | |¡ d S )Nr   ç      à?r   )r   r   ÚREPÚREQr   r   r   r   r   r   r   r   r   r   r   r   r   r	   r	   r
   Útest_reqrep4   s8   




zTestPoll.test_reqrepc                 C   sp   |   tjtj¡\}}|  ¡ }| |tjtjB ¡ | |d¡ ||v s$J ‚||vs*J ‚| |d¡ ||vs6J ‚d S )Nr   )r   r   r   r   r   r   r   )r   r   r   r   r	   r	   r
   Útest_no_eventsd   s   zTestPoll.test_no_eventsc                 C   s   |   tjtj¡\}}| tjd¡ tƒ  |  ¡ }| |tj	tj
B ¡ | |tj	¡ t| ¡ ƒ}|| tj
ks8J ‚||vs>J ‚| d¡ t| ¡ ƒ}|| tj
ksRJ ‚tƒ  t| ¡ ƒ}|| tj	ksdJ ‚| ¡  t| ¡ ƒ}||vstJ ‚| |¡ | |¡ d S )Nó    r   )r   r   ÚPUBÚSUBÚ
setsockoptÚ	SUBSCRIBEr   r   r   r   r   r   r   r   r   r   r   r	   r	   r
   Útest_pubsubn   s(   

zTestPoll.test_pubsubÚwinÚWindows)Úreasonc                 C   sž   t  ¡ \}}t  |d¡}t  |d¡}|  ¡ }| |tj¡ t| d¡ƒ}|i ks*J ‚| 	d¡ | 
¡  t| d¡ƒ}|| ¡ tjiksEJ ‚| ¡  | ¡  d S )NÚrbÚwbé   ó   x)ÚosÚpipeÚfdopenr   r   r   r   r   r   ÚwriteÚflushÚfilenoÚclose)r   ÚrÚwÚpr    r	   r	   r
   Útest_raw   s   
zTestPoll.test_rawé   ©Úrerunsc                 C   sÈ   |   tjtj¡\}}|  ¡ }| |tj¡ t ¡ }| d¡ t ¡ }|| dk  t ¡ }| d¡ t ¡ }|| dk s=J ‚|| dksEJ ‚t ¡ }| d¡ t ¡ }|| dk sZJ ‚|| dksbJ ‚dS )	zAmake sure Poller.poll timeout has the right units (milliseconds).ç{®Gázt?r"   é2   g{®Gáz„?iô  r2   çš™™™™™¹?N)	r   r   r   r   r   r   r   Úperf_counterr   )r   r   r   r   ÚticÚtocr	   r	   r
   Útest_timeoutŸ   s"   


zTestPoll.test_timeoutN)Ú__name__Ú
__module__Ú__qualname__r   r   r!   r%   r&   r,   r   ÚskipifÚsysÚplatformÚ
startswithr>   ÚflakyrH   r	   r	   r	   r
   r      s    0
!

r   c                   @   s(   e Zd Zdd„ Zejdddd„ ƒZdS )Ú
TestSelectc                 C   sn   |   tjtj¡\}}tƒ  t ||g||g||g¡\}}}||v s#J ‚||v s)J ‚||vs/J ‚||vs5J ‚d S )N)r   r   r   r   Úselect)r   r   r   ÚrlistÚwlistÚxlistr	   r	   r
   r!   ¶   s    zTestSelect.test_pairr?   r@   c                 C   s¬   |   tjtj¡\}}t ¡ }t ||gg g d¡\}}}t ¡ }|| dk s'J ‚|| dks/J ‚t ¡ }t ||gg g d¡\}}}t ¡ }|| dk sLJ ‚|| dksTJ ‚dS )z7make sure select timeout has the right units (seconds).rB   r2   gü©ñÒMbP?r   rD   N)r   r   r   r   rE   rR   )r   r   r   rF   r;   r<   ÚxrG   r	   r	   r
   rH   Â   s   zTestSelect.test_timeoutN)rI   rJ   rK   r!   r   rP   rH   r	   r	   r	   r
   rQ   µ   s    
rQ   )Úgreenc                   @   s"   e Zd ZejZdd„ Zdd„ ZdS )ÚTestPollGreenc                    sz   |   tjtj¡\‰}|  ¡ ‰ ˆ  |tj¡ t ¡ }t 	‡ fdd„¡}t 	‡fdd„¡}| 
¡  t ¡ }|| dk s;J ‚d S )Nc                      ó
   ˆ   d¡S ©Ni'  ©r   r	   )r   r	   r
   Ú<lambda>à   ó   
 z+TestPollGreen.test_wakeup.<locals>.<lambda>c                      rY   ©Nr   ©r   r	   ©r   r	   r
   r\   á   r]   r2   )r   r   r   r   r   r   r   rE   ÚgeventÚspawnÚjoin)r   r   rF   r;   ÚsrG   r	   )r   r   r
   Útest_wakeupÚ   s   zTestPollGreen.test_wakeupc                    sd   |   tjtj¡\‰ ‰t ¡ }t ‡fdd„¡}t ‡ fdd„¡}| ¡  t ¡ }|| dk s0J ‚d S )Nc                      rY   rZ   r[   r	   )r   r	   r
   r\   ê   r]   z0TestPollGreen.test_socket_poll.<locals>.<lambda>c                      rY   r^   r_   r	   r`   r	   r
   r\   ë   r]   r2   )r   r   r   r   rE   ra   rb   rc   )r   rF   r;   rd   rG   r	   )r   r   r
   Útest_socket_pollæ   s   zTestPollGreen.test_socket_pollN)rI   rJ   rK   Úgzmqr   re   rf   r	   r	   r	   r
   rX   ×   s    rX   )r4   rM   r   Úpytestr   r   Ú	zmq.testsr   r   r   r   r   rQ   ra   rW   rg   rX   r	   r	   r	   r
   Ú<module>   s    $û