o
    tfc                     @   s   d dl Z d dlZd dlZd dlZd dlZd dlZzd dlZd dlmZ W n e	y/   dZY nw ej
dZejdd Zejdd Zej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 )    N)	zmqstreamZio_loopc                    sB   t | tj}t | tj}|d}|d|  ||fS )Ntcp://127.0.0.1ztcp://127.0.0.1:%i)r   	ZMQStreamzmqPUSHPULLbind_to_random_portconnect)socketpushpullport r   a/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/zmq/tests/test_zmqstream.py	push_pull   s   
r   c                 C   s   | \}}|S Nr   r   r   r   r   r   r   r   "      r   c                 C   s   | \}}|S r   r   r   r   r   r   r   (   r   r   c                    s   |  dd  | dd  tt | d W d   n1 s$w   Y  tt |  d W d   n1 s>w   Y  tt | t W d   dS 1 sYw   Y  dS )zEnsure callable check works.c                  W      d S r   r   argsr   r   r   <lambda>1       z%test_callable_check.<locals>.<lambda>c                  W   r   r   r   r   r   r   r   r   2   r      N)Zon_sendon_recvpytestZraisesAssertionErrorr   )r   r   r   r   test_callable_check.   s   "r   c                    sT   dg}|  | t   fdd}|| tj ddI d H }||ks(J d S )Ns   basicc                    s     |  d S r   
set_resultmsgfr   r   callback@   s   z$test_on_recv_basic.<locals>.callback   timeout)send_multipartasyncioFuturer   wait_forr   r   sentr$   recvdr   r"   r   test_on_recv_basic;   s   

r/   c                    sZ   dg}t  }||j t dI d H  | | t j|ddI d H }||ks+J d S )N   wake      ?r%   r&   )r)   r*   r   r   sleepr(   r+   )r   r   r-   r#   r.   r   r   r   test_on_recv_wakeH   s   
r3   c                    sv   t jdk r
t  dg}t   fdd}|| tdI d H  | | tj	 ddI d H }||ks9J d S )N)r%   r0   c                    s    t dI d H   |  d S )N皙?)r)   r2   r   r    r"   r   r   r$   Z   s   z$test_on_recv_async.<locals>.callbackr1   r%   r&   )
tornadoversion_infor   skipr)   r*   r   r2   r(   r+   r,   r   r"   r   test_on_recv_asyncS   s   


r8   c                    s   dg}t    fdd}|| t dI d H  |jtjtjj	d% | 
| t j ddI d H }||ks;J t dI d H  W d    n1 sMw   Y  d	d
 |dD }dd|v seJ d S )Nr0   c                    s     |  dd  d S )Nr   r   r   r    r"   r   r   r$   j   s   
z*test_on_recv_async_error.<locals>.callbackr4   )loggerr%   r&   r1   c                 S   s    g | ]}|j tjj kr|jqS r   )namer   gen_logmessage).0xr   r   r   
<listcomp>w   s
    z,test_on_recv_async_error.<locals>.<listcomp>callz(Uncaught exception in ZMQStream callback
)r)   r*   r   r2   Zat_levelloggingERRORr   r;   r:   r(   r+   Zget_recordsjoin)r   r   caplogr-   r$   r.   messagesr   r"   r   test_on_recv_async_errore   s    

rG   c              	      s   | j tjtjjd:}tt t	|}W d    n1 s!w   Y  t
|j tju s0J |j j|jks9J |  W d    d S 1 sHw   Y  d S )N)Zsocket_class)r
   r   r   r)   Socketr   ZwarnsRuntimeWarningr   r   typeZ
underlyingclose)contextr
   streamr   r   r   test_shadow_socket   s   
"rN   c           
   	      s:  |  tjW}|  tjA}d |_|_|d}|d|  tj|}t	
|}tdD ]	}|t| q1|  |t |  W d    n1 sRw   Y  W d    n1 saw   Y  tjdd}tdI d H  W d    n1 sw   Y  dd	d
 |D }	d|	v sJ d|jv sJ d S )Nr   r   ztcp://127.0.0.1:
   T)recordg?rA   c                 s   s    | ]}t |jV  qd S r   )strr<   )r=   rr   r   r   	<genexpr>   s    z+test_shadow_socket_close.<locals>.<genexpr>zafter closing socketzclosed socket)r
   r   r   r   Zlingerr   r	   rH   Zshadowr   r   rangeZsend_stringrQ   recvr   printrK   warningscatch_warningsr)   r2   rD   text)
rL   rE   r   r   r   Zshadow_pullrM   irecordsZwarning_textr   r   r   test_shadow_socket_close   s*   



 r\   )r)   rB   rW   r   r   Zzmq.asyncior5   Zzmq.eventloopr   ImportErrormarkZusefixturesZ
pytestmarkZfixturer   r   r   r   r/   r3   r8   rG   rN   r\   r   r   r   r   <module>   s4   


	