o
    ¹¼tfÂ  ã                   @   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	   ú\/var/www/html/software/conda/envs/catlas/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   ZREPZ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   ZPUBZSUBÚ
setsockoptZ	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é   ©Z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ô  r-   çš™™™™™¹?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   ZskipifÚsysÚplatformÚ
startswithr9   ÚflakyrB   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   ZrlistZwlistZ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).r<   r-   gü©ñÒMbP?r   r>   N)r   r   r   r   r?   rK   )r   r   r   r@   r6   r7   ÚxrA   r	   r	   r
   rB   Â   s   zTestSelect.test_timeoutN)rC   rD   rE   r!   r   rI   rB   r	   r	   r	   r
   rJ   µ   s    
rJ   )Ú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                      rO   ©Nr   ©r   r	   ©r   r	   r
   rR   á   rS   r-   )r   r   r   r   r   r   r   r?   ÚgeventÚspawnÚjoin)r   r   r@   r6   ÚsrA   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                      rO   rP   rQ   r	   )r   r	   r
   rR   ê   rS   z0TestPollGreen.test_socket_poll.<locals>.<lambda>c                      rO   rT   rU   r	   rV   r	   r
   rR   ë   rS   r-   )r   r   r   r   r?   rW   rX   rY   )r   r@   r6   rZ   rA   r	   )r   r   r
   Útest_socket_pollæ   s   zTestPollGreen.test_socket_pollN)rC   rD   rE   Úgzmqr   r[   r\   r	   r	   r	   r
   rN   ×   s    rN   )r/   rF   r   Zpytestr   r   Z	zmq.testsr   r   r   r   r   rJ   rW   rM   r]   rN   r	   r	   r	   r
   Ú<module>   s    $û