o
    ip)                     @   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)make_current)r   loopsupersetUpself	__class__ P/var/www/edux/Edux_v2/venv/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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   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   r2   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f2r1   r   r   r   r2   A   s   
z(TestFutureSocket.test_recv.<locals>.testr3   r5   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 r7   )
r)   r   r   r*   r9   r+   cancelr,   r:   	cancelledr<   r   r   r   r2   P   s   
z/TestFutureSocket.test_recv_cancel.<locals>.testr3   r5   r   r   r   test_recv_cancelO   s   z!TestFutureSocket.test_recv_cancel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(   r8   )r)   r   r   r*   rcvtimeor9   r+   pytestraisesAgainr:   r,   r<   r   r   r   r2   a   s   
z0TestFutureSocket.test_recv_timeout.<locals>.testr3   r5   r   r   r   test_recv_timeout_   s   z"TestFutureSocket.test_recv_timeout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 )NrE      not going anywhere)r   r   r   sndtimeorH   rI   rJ   r-   r   r   r   r   r2   r   s   "z0TestFutureSocket.test_send_timeout.<locals>.testr3   r5   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 NrM   )flags)r   r   r   rH   rI   rJ   r-   NOBLOCKrO   r   r   r   r2   {   s
   "z0TestFutureSocket.test_send_noblock.<locals>.testr3   r5   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 rQ   )r   r   r   rH   rI   rJ   r:   rS   rO   r   r   r   r2      s
   "z:TestFutureSocket.test_send_multipart_noblock.<locals>.testr3   r5   r   r   r   test_send_multipart_noblock   rU   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*   recv_stringr,   send_stringr;   )r.   r/   r0   msgr1   r   r   r   r2      s   
z/TestFutureSocket.test_recv_string.<locals>.testr3   r5   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_jsonr;   r.   r/   r0   objr1   r   r   r   r2         

z-TestFutureSocket.test_recv_json.<locals>.testr3   r5   r   r   r   test_recv_json   r[   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   r^   r_   timeout)seconds)r)   r   r   r*   r`   r,   r@   gensleepra   rb   rH   rI   r   CancelledErrorpollwith_timeoutr   )r.   r/   r0   rd   r1   eventsr   r   r   r2      s"   
z7TestFutureSocket.test_recv_json_cancelled.<locals>.testr3   r5   r   r   r   test_recv_json_cancelled   s   z)TestFutureSocket.test_recv_json_cancelledc                    r'   )Nc                     r\   r]   )	r)   r   r   r*   
recv_pyobjr,   ra   
send_pyobjr;   rc   r   r   r   r2      re   z.TestFutureSocket.test_recv_pyobj.<locals>.testr3   r5   r   r   r   test_recv_pyobj   r[   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)rY   framesru   r   r   r   	serialize   s
   
z9TestFutureSocket.test_custom_serialize.<locals>.serializec                 S   s*   | d d }t | d d}||dS )Nrv   )rt   ru   )ry   loadsdecode)r}   rt   ru   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 )Nru   r^   beer.   r/   rt   )r)   r   DEALERROUTERsend_serializedrecv_serialized)r.   r/   rY   r1   r2r   r   r~   r   r   r2      s   z4TestFutureSocket.test_custom_serialize.<locals>.testr3   r5   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 )Nru   r^   r   r   s   not json)r)   r   r   r   rH   rI   	TypeErrorr   ry   rz   r-   r   r   )r.   r/   rY   r   r   r   r2      s   "z:TestFutureSocket.test_custom_serialize_error.<locals>.testr3   r5   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   rg      rF   r(   r8   )
r)   r   r   r*   rm   r,   r;   r:   POLLINr+   )r.   r/   r0   evtr1   r   r   r   r2     s    

z(TestFutureSocket.test_poll.<locals>.testr3   r5   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://testrF   rg   r(   r8   )r   r   r   r   r*   socketsrw   bindconnectr   Pollerregisterr   rm   r,   r:   r+   r   r    )r#   urlr.   r/   pollerr0   r   r1   r   r   r   r2     s(   


z4TestFutureSocket.test_poll_base_socket.<locals>.testr3   r5   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   rO   r   r   attach9  s   z3TestFutureSocket.test_close_all_fds.<locals>.attachTr   )r   r   PUBr   r4   r   closed)r   r   r   rO   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   rg      xrF   )r   r   ospipefdopenr   r   r   POLLOUTrm   ra   fileno
unregisterwriteflushreadr   )prwevtsr   r   r   r2   F  s,   

z,TestFutureSocket.test_poll_raw.<locals>.testr3   r5   r   r   r   test_poll_rawA  s   zTestFutureSocket.test_poll_raw)$__name__
__module____qualname__r   r   r
   r   r   r$   r&   r6   r?   rB   rH   markskipifhasattrr   rK   rP   rT   rV   rZ   rf   rp   rs   r   r   r   sysplatform
startswithr   r   r   __classcell__r   r   r   r   r      sB    

	%

r   )ry   r   r   datetimer   rH   importorskiprj   tornado.ioloopr   r   zmq.eventloopr   	zmq.testsr   r   r   r   r   r   <module>   s   
