o
    tfp)                     @   sv   d dl Z d dlZd dlZd dlmZ d dlZedZd dlm	Z	 d dl
Z
d dlmZ d dlmZ G dd deZdS )	    N)	timedeltaztornado.gen)IOLoop)future)BaseZMQTestCasec                       s.  e Zd ZejZ fddZ fddZdd Zdd Zd	d
 Z	dd Z
dd Zdd Zejjeed dddd Zejjeed dd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(d) Zd*d+ Zejjejd,d-dd.d/ Z d0d1 Z!ejjejd,d2dd3d4 Z"  Z#S )5TestFutureSocketc                    s   t dd| _t   d S )NF)Zmake_current)r   loopsupersetUpself	__class__ ^/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/zmq/tests/test_future.pyr	      s   zTestFutureSocket.setUpc                    s&   t    | jr| jjdd d S d S )NTZall_fds)r   tearDownr   closer
   r   r   r   r      s   
zTestFutureSocket.tearDownc                 C   s*   | j tj}t|tjsJ |  d S N)contextsocketzmqPUSH
isinstancer   ZSocketr   )r   sr   r   r   test_socket_class    s   z"TestFutureSocket.test_socket_classc                 C   sL   | j  }tj  }|  |  t|tj u sJ t|| j u s$J d S r   )Contextinstancer   termtype)r   actxctxr   r   r   test_instance_subclass_first%      

z-TestFutureSocket.test_instance_subclass_firstc                 C   sL   t j }| j }|  |  t|t ju sJ t|| ju s$J d S r   )r   r   r   r   r   )r   r    r   r   r   r   test_instance_subclass_second-   r"   z.TestFutureSocket.test_instance_subclass_secondc                        fdd} j | d S )Nc                     sV     tjtj\} }| }| rJ | dI d H  |I d H }|dgks)J d S )N   hi)create_bound_pairr   r   PULLrecv_multipartdonesend)abfrecvdr
   r   r   test6   s   
z2TestFutureSocket.test_recv_multipart.<locals>.testr   run_syncr   r/   r   r
   r   test_recv_multipart5   s   z$TestFutureSocket.test_recv_multipartc                    r$   )Nc                     s     tjtj\} }| }| }| rJ | rJ | ddgI d H  |I d H }| s4J | dks<J |dksBJ d S Nr%      there)r&   r   r   r'   recvr)   send_multipartresultr+   r,   f1f2r.   r
   r   r   r/   A   s   
z(TestFutureSocket.test_recv.<locals>.testr0   r2   r   r
   r   	test_recv@   s   zTestFutureSocket.test_recvc                    r$   )Nc                     s     tjtj\} }| }| }| sJ | sJ | r%J | ddgI d H  |I d H }|	 s:J | s@J |ddgksHJ d S r4   )
r&   r   r   r'   r6   r(   cancelr)   r7   	cancelledr9   r
   r   r   r/   P   s   
z/TestFutureSocket.test_recv_cancel.<locals>.testr0   r2   r   r
   r   test_recv_cancelO   s   z!TestFutureSocket.test_recv_cancelZRCVTIMEOzrequires RCVTIMEO)reasonc                    r$   )Nc                     s     tjtj\} }d|_| }d|_| }ttj	 |I d H  W d    n1 s/w   Y  | 
ddgI d H  |I d H }| sIJ |ddgksQJ d S )Nd     r%   r5   )r&   r   r   r'   Zrcvtimeor6   r(   pytestraisesAgainr7   r)   r9   r
   r   r   r/   a   s   
z0TestFutureSocket.test_recv_timeout.<locals>.testr0   r2   r   r
   r   test_recv_timeout_   s   z"TestFutureSocket.test_recv_timeoutZSNDTIMEOzrequires SNDTIMEOc                    r$   )Nc                     sV     tj} d| _ttj | dI d H  W d    d S 1 s$w   Y  d S )NrA      not going anywhere)r   r   r   ZsndtimeorC   rD   rE   r*   r   r
   r   r   r/   r   s   "z0TestFutureSocket.test_send_timeout.<locals>.testr0   r2   r   r
   r   test_send_timeoutp   s   z"TestFutureSocket.test_send_timeoutc                    r$   )Nc                     sV     tj} ttj | jdtjdI d H  W d    d S 1 s$w   Y  d S NrG   )flags)r   r   r   rC   rD   rE   r*   NOBLOCKrH   r
   r   r   r/   {   s
   "z0TestFutureSocket.test_send_noblock.<locals>.testr0   r2   r   r
   r   test_send_noblockz      z"TestFutureSocket.test_send_noblockc                    r$   )Nc                     sX     tj} ttj | jdgtjdI d H  W d    d S 1 s%w   Y  d S rJ   )r   r   r   rC   rD   rE   r7   rL   rH   r
   r   r   r/      s
   "z:TestFutureSocket.test_send_multipart_noblock.<locals>.testr0   r2   r   r
   r   test_send_multipart_noblock   rN   z,TestFutureSocket.test_send_multipart_noblockc                    r$   )Nc                     st     tjtj\} }| }| rJ d}| |I d H  |I d H }| s*J | |ks2J ||ks8J d S )Nu   πøøπ)r&   r   r   r'   Zrecv_stringr)   Zsend_stringr8   )r+   r,   r-   msgr.   r
   r   r   r/      s   
z/TestFutureSocket.test_recv_string.<locals>.testr0   r2   r   r
   r   test_recv_string      z!TestFutureSocket.test_recv_stringc                    r$   )Nc                     z     tjtj\} }| }| rJ tdd}| |I d H  |I d H }| s-J | |ks5J ||ks;J d S N   r+   )	r&   r   r   r'   	recv_jsonr)   dict	send_jsonr8   r+   r,   r-   objr.   r
   r   r   r/         

z-TestFutureSocket.test_recv_json.<locals>.testr0   r2   r   r
   r   test_recv_json   rR   zTestFutureSocket.test_recv_jsonc                    r$   )Nc                     s     tjtj\} }| }| rJ |  tdI d H  t	dd}| 
|I d H  ttj |I d H }W d    n1 sDw   Y  | sOJ |jddI d H }|s\J tdI d H  ttdd| I d H }||ksxJ d S )Nr   rU   rV   timeout)seconds)r&   r   r   r'   rW   r)   r=   gensleeprX   rY   rC   rD   r   CancelledErrorpollZwith_timeoutr   )r+   r,   r-   r[   r.   eventsr
   r   r   r/      s"   
z7TestFutureSocket.test_recv_json_cancelled.<locals>.testr0   r2   r   r
   r   test_recv_json_cancelled   s   z)TestFutureSocket.test_recv_json_cancelledc                    r$   )Nc                     rS   rT   )	r&   r   r   r'   Z
recv_pyobjr)   rX   Z
send_pyobjr8   rZ   r
   r   r   r/      r\   z.TestFutureSocket.test_recv_pyobj.<locals>.testr0   r2   r   r
   r   test_recv_pyobj   rR   z TestFutureSocket.test_recv_pyobjc                    s0   dd dd   fdd}j | d S )Nc                 S   s8   g }| | dg  t| d d}|| |S )N
identitiescontentutf8)extendgetjsondumpsencodeappend)rP   framesri   r   r   r   	serialize   s
   
z9TestFutureSocket.test_custom_serialize.<locals>.serializec                 S   s*   | d d }t | d d}||dS )Nrj   )rh   ri   )rm   loadsdecode)rq   rh   ri   r   r   r   deserialize   s
   z;TestFutureSocket.test_custom_serialize.<locals>.deserializec                     s    tjtj\} }ddddi}| |I d H  | I d H }|d |d ks-J |d s3J ||I d H  |  I d H }|d |d ksNJ |d rTJ d S )Nri   rU   beer+   r,   rh   )r&   r   DEALERROUTERsend_serializedrecv_serialized)r+   r,   rP   r.   r2rv   r   rr   r   r   r/      s   z4TestFutureSocket.test_custom_serialize.<locals>.testr0   r2   r   r~   r   test_custom_serialize   s   z&TestFutureSocket.test_custom_serializec                    r$   )Nc                     s     tjtj\} }ddddi}tt | ttj	I d H  W d    n1 s,w   Y  | 
dI d H  tt |tjI d H  W d    d S 1 sSw   Y  d S )Nri   rU   rw   rx   s   not json)r&   r   ry   rz   rC   rD   	TypeErrorr{   rm   rn   r*   r|   rt   )r+   r,   rP   r
   r   r   r/      s   "z:TestFutureSocket.test_custom_serialize_error.<locals>.testr0   r2   r   r
   r   test_custom_serialize_error   s   z,TestFutureSocket.test_custom_serialize_errorc                    r$   )Nc                     s     tjtj\} }|jdd}| sJ | dksJ |jdd}| r+J |I d H }|dks6J |jdd}| rBJ | ddgI d H  |I d H }|tjksXJ |	 I d H }|ddgksgJ d S )Nr   r^      rB   r%   r5   )
r&   r   r   r'   rd   r)   r8   r7   POLLINr(   )r+   r,   r-   evtr.   r
   r   r   r/     s    

z(TestFutureSocket.test_poll.<locals>.testr0   r2   r   r
   r   	test_poll  s   zTestFutureSocket.test_pollwinzWindows unsupported socket typec                    r$   )Nc                     s   t  } d}| t j}| t j} j||g || || t	
 }||t j |jdd}| r<J |ddg |I d H }||t jfgksRJ | }|ddgks^J |  |  |   d S )Nzinproc://testrB   r^   r%   r5   )r   r   r   r   r'   socketsrk   bindconnectr   Pollerregisterr   rd   r)   r7   r(   r   r   )r    urlr+   r,   Zpollerr-   r   r.   r
   r   r   r/     s(   


z4TestFutureSocket.test_poll_base_socket.<locals>.testr0   r2   r   r
   r   test_poll_base_socket  s   z&TestFutureSocket.test_poll_base_socketc                    sF   |  tj  fdd}| j| | jjdd d | _ js!J d S )Nc                      s       d S r   )	_get_loopr   rH   r   r   attach9  s   z3TestFutureSocket.test_close_all_fds.<locals>.attachTr   )r   r   ZPUBr   r1   r   closed)r   r   r   rH   r   test_close_all_fds6  s   z#TestFutureSocket.test_close_all_fdsz)Windows does not support polling on filesc                 C   s   dd }| j | d S )Nc                     s  t  } t \}}t|d}t|d}| |tj | |tj | j	ddI d H }t
|}| |vs:J | |v sBJ ||  tjksMJ | | |d |  | j	ddI d H }t
|}| |v spJ ||  tjks{J |ddksJ |  |  d S )Nrbwbr   r^      xrB   )r   r   ospipefdopenr   r   r   POLLOUTrd   rX   fileno
unregisterwriteflushreadr   )prwZevtsr   r   r   r/   F  s,   

z,TestFutureSocket.test_poll_raw.<locals>.testr0   r2   r   r   r   test_poll_rawA  s   zTestFutureSocket.test_poll_raw)$__name__
__module____qualname__r   r   r	   r   r   r!   r#   r3   r<   r?   rC   markZskipifhasattrr   rF   rI   rM   rO   rQ   r]   rf   rg   r   r   r   sysplatform
startswithr   r   r   __classcell__r   r   r   r   r      sB    

	%

r   )rm   r   r   datetimer   rC   Zimportorskipra   Ztornado.ioloopr   r   Zzmq.eventloopr   Z	zmq.testsr   r   r   r   r   r   <module>   s   
