
    Zdp)                         d dl Z d dlZd dlZd dlmZ d dlZ ej        d          Zd dlm	Z	 d dl
Z
d dlmZ d dlmZ  G d de          ZdS )	    N)	timedeltaztornado.gen)IOLoop)future)BaseZMQTestCasec                   J    e Zd Zej        Z fdZ fdZd Zd Zd Z	d Z
d Zd Zej                             eed	           d
          d             Zej                             eed           d          d             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej                            ej                            d          d          d             Z d Z!ej                            ej                            d          d          d             Z" xZ#S )TestFutureSocketc                 r    t          d          | _        t                                                       d S )NF)make_current)r   loopsupersetUpself	__class__s    5lib/python3.11/site-packages/zmq/tests/test_future.pyr   zTestFutureSocket.setUp   s*    ...	    c                     t                                                       | j        r| j                            d           d S d S )NTall_fds)r   tearDownr   closer   s    r   r   zTestFutureSocket.tearDown   sI    9 	*IOODO)))))	* 	*r   c                     | j                             t          j                  }t	          |t
          j                  sJ |                                 d S N)contextsocketzmqPUSH
isinstancer   Socketr   )r   ss     r   test_socket_classz"TestFutureSocket.test_socket_class    sB    L))!V]+++++						r   c                 .   | j                                         }t          j                                         }|                                 |                                 t	          |          t          j         u sJ t	          |          | j         u sJ d S r   )Contextinstancer   termtype)r   actxctxs      r   test_instance_subclass_firstz-TestFutureSocket.test_instance_subclass_first%   sz    |$$&&k""$$


		CyyCK''''DzzT\))))))r   c                 .   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'   s      r   test_instance_subclass_secondz.TestFutureSocket.test_instance_subclass_second-   sz    k""$$|$$&&


		CyyCK''''DzzT\))))))r   c                 F      fd} j                             |           d S )Nc                    K                        t          j        t          j                  \  } }|                                }|                                rJ |                     d           d {V  | d {V }|dgk    sJ d S )N   hi)create_bound_pairr   r   PULLrecv_multipartdonesend)abfrecvdr   s       r   testz2TestFutureSocket.test_recv_multipart.<locals>.test6   s      ))#(CH==DAq  ""Avvxx&&--GGGGGGEUG######r   r   run_syncr   r8   s   ` r   test_recv_multipartz$TestFutureSocket.test_recv_multipart5   s:    	$ 	$ 	$ 	$ 	$ 		4     r   c                 F      fd} j                             |           d S )Nc                    K                        t          j        t          j                  \  } }|                                }|                                }|                                rJ |                                rJ |                     ddg           d {V  | d {V }|                                sJ |                                dk    sJ |dk    sJ d S Nr.      there)r/   r   r   r0   recvr2   send_multipartresultr4   r5   f1f2r7   r   s        r   r8   z(TestFutureSocket.test_recv.<locals>.testA   s      ))#(CH==DAqBBwwyy   wwyy   ""E8#4555555555HHHHHHE779999;;%''''H$$$$$$r   r9   r;   s   ` r   	test_recvzTestFutureSocket.test_recv@   s:    
	% 
	% 
	% 
	% 
	% 		4     r   c                 F      fd} j                             |           d S )Nc                    K                        t          j        t          j                  \  } }|                                }|                                }|                                sJ |                                sJ |                                rJ |                     ddg           d {V  | d {V }|	                                sJ |                                sJ |ddgk    sJ d S r?   )
r/   r   r   r0   rA   r1   cancelr2   rB   	cancelledrD   s        r   r8   z/TestFutureSocket.test_recv_cancel.<locals>.testP   s      ))#(CH==DAqB!!##B99;;7799wwyy   ""E8#4555555555HHHHHHE<<>>!!!7799UH-------r   r9   r;   s   ` r   test_recv_cancelz!TestFutureSocket.test_recv_cancelO   s:    	. 	. 	. 	. 	. 		4     r   RCVTIMEOzrequires RCVTIMEO)reasonc                 F      fd} j                             |           d S )Nc                    K                        t          j        t          j                  \  } }d|_        |                                }d|_        |                                }t          j        t          j	                  5  | d {V  d d d            n# 1 swxY w Y   | 
                    ddg           d {V  | d {V }|                                sJ |ddgk    sJ d S )Nd     r.   r@   )r/   r   r   r0   rcvtimeorA   r1   pytestraisesAgainrB   r2   rD   s        r   r8   z0TestFutureSocket.test_recv_timeout.<locals>.testa   s4     ))#(CH==DAqAJBAJ!!##Bsy))                ""E8#4555555555HHHHHHE7799UH-------s   	BB!Br9   r;   s   ` r   test_recv_timeoutz"TestFutureSocket.test_recv_timeout_   s:    	. 	. 	. 	. 	. 		4     r   SNDTIMEOzrequires SNDTIMEOc                 F      fd} j                             |           d S )Nc                     K                        t          j                  } d| _        t	          j        t          j                  5  |                     d           d {V  d d d            d S # 1 swxY w Y   d S )NrQ      not going anywhere)r   r   r   sndtimeorT   rU   rV   r3   r    r   s    r   r8   z0TestFutureSocket.test_send_timeout.<locals>.testr   s      CH%%AAJsy)) 4 4ff23333333334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s   A11A58A5r9   r;   s   ` r   test_send_timeoutz"TestFutureSocket.test_send_timeoutp   s:    	4 	4 	4 	4 	4 		4     r   c                 F      fd} j                             |           d S )Nc                    K                        t          j                  } t          j        t          j                  5  |                     dt          j                   d {V  d d d            d S # 1 swxY w Y   d S Nr[   )flags)r   r   r   rT   rU   rV   r3   NOBLOCKr]   s    r   r8   z0TestFutureSocket.test_send_noblock.<locals>.test{   s      CH%%Asy)) G Gff2#+fFFFFFFFFFG G G G G G G G G G G G G G G G G Gs   (A66A:=A:r9   r;   s   ` r   test_send_noblockz"TestFutureSocket.test_send_noblockz   s?    	G 	G 	G 	G 	G
 		4     r   c                 F      fd} j                             |           d S )Nc                    K                        t          j                  } t          j        t          j                  5  |                     dgt          j                   d {V  d d d            d S # 1 swxY w Y   d S ra   )r   r   r   rT   rU   rV   rB   rc   r]   s    r   r8   z:TestFutureSocket.test_send_multipart_noblock.<locals>.test   s      CH%%Asy)) S S&&(='>ck&RRRRRRRRRS S S S S S S S S S S S S S S S S Ss   )A77A;>A;r9   r;   s   ` r   test_send_multipart_noblockz,TestFutureSocket.test_send_multipart_noblock   s?    	S 	S 	S 	S 	S
 		4     r   c                 F      fd} j                             |           d S )Nc                  t  K                        t          j        t          j                  \  } }|                                }|                                rJ d}|                     |           d {V  | d {V }|                                sJ |                                |k    sJ ||k    sJ d S )Nu   πøøπ)r/   r   r   r0   recv_stringr2   send_stringrC   )r4   r5   r6   msgr7   r   s        r   r8   z/TestFutureSocket.test_recv_string.<locals>.test   s      ))#(CH==DAqAvvxxC--$$$$$$$$$GGGGGGE6688OOO88::$$$$C<<<<<<r   r9   r;   s   ` r   test_recv_stringz!TestFutureSocket.test_recv_string   :    		  		  		  		  		  		4     r   c                 F      fd} j                             |           d S )Nc                    K                        t          j        t          j                  \  } }|                                }|                                rJ t          d          }|                     |           d {V  | d {V }|                                sJ |                                |k    sJ ||k    sJ d S N   r4   )	r/   r   r   r0   	recv_jsonr2   dict	send_jsonrC   r4   r5   r6   objr7   r   s        r   r8   z-TestFutureSocket.test_recv_json.<locals>.test   s      ))#(CH==DAqAvvxx)))C++c"""""""""GGGGGGE6688OOO88::$$$$C<<<<<<r   r9   r;   s   ` r   test_recv_jsonzTestFutureSocket.test_recv_json   rn   r   c                 F      fd} j                             |           d S )Nc                  2  K                        t          j        t          j                  \  } }|                                }|                                rJ |                                 t                              d           d {V  t          d          }| 
                    |           d {V  t          j        t          j                  5  | d {V }d d d            n# 1 swxY w Y   |                                sJ |                    d           d {V }|sJ t                              d           d {V  t                              t#          d          |                                           d {V }||k    sJ d S )Nr   rr   rs   timeout)seconds)r/   r   r   r0   rt   r2   rJ   gensleepru   rv   rT   rU   r   CancelledErrorpollwith_timeoutr   )r4   r5   r6   rx   r7   eventsr   s         r   r8   z7TestFutureSocket.test_recv_json_cancelled.<locals>.test   s     ))#(CH==DAqAvvxxHHJJJ))A,,)))C++c"""""""""v455                                 6688OOO66!6,,,,,,,,FMMM))A,,**9Q+?+?+?OOOOOOOOEC<<<<<<s   	C--C14C1r9   r;   s   ` r   test_recv_json_cancelledz)TestFutureSocket.test_recv_json_cancelled   s:    	  	  	  	  	 ( 		4     r   c                 F      fd} j                             |           d S )Nc                    K                        t          j        t          j                  \  } }|                                }|                                rJ t          d          }|                     |           d {V  | d {V }|                                sJ |                                |k    sJ ||k    sJ d S rq   )	r/   r   r   r0   
recv_pyobjr2   ru   
send_pyobjrC   rw   s        r   r8   z.TestFutureSocket.test_recv_pyobj.<locals>.test   s      ))#(CH==DAqAvvxx)))C,,s#########GGGGGGE6688OOO88::$$$$C<<<<<<r   r9   r;   s   ` r   test_recv_pyobjz TestFutureSocket.test_recv_pyobj   rn   r   c                 Z     d d  fd} j                             |           d S )Nc                     g }|                     |                     dg                      t          j        | d                                       d          }|                    |           |S )N
identitiescontentutf8)extendgetjsondumpsencodeappend)rl   framesr   s      r   	serializez9TestFutureSocket.test_custom_serialize.<locals>.serialize   s_    FMM#'',33444jY0077??GMM'"""Mr   c                 z    | d d         }t          j        | d                             d                    }||dS )Nr   )r   r   )r   loadsdecode)r   r   r   s      r   deserializez;TestFutureSocket.test_custom_serialize.<locals>.deserialize   sE    Jj!2!26!:!:;;G("  r   c                    K                        t          j        t          j                  \  } }ddddi}|                     |           d {V  |                               d {V }|d         |d         k    sJ |d         sJ |                    |           d {V  |                                d {V }|d         |d         k    sJ |d         rJ d S )Nr   rr   beer4   r5   r   )r/   r   DEALERROUTERsend_serializedrecv_serialized)r4   r5   rl   r7   r2r   r   r   s        r   r8   z4TestFutureSocket.test_custom_serialize.<locals>.test   s7     ))#*cjAADAq  C ##C333333333++K88888888E#s9~5555&&&&##E9555555555((55555555Bi=C	N2222,''''''r   r9   )r   r8   r   r   s   ` @@r   test_custom_serializez&TestFutureSocket.test_custom_serialize   sd    	 	 		 	 		( 	( 	( 	( 	( 	( 	(& 		4     r   c                 F      fd} j                             |           d S )Nc                    K                        t          j        t          j                  \  } }ddddi}t	          j        t                    5  |                     t          t          j	                   d {V  d d d            n# 1 swxY w Y   | 
                    d           d {V  t	          j        t                    5  |                    t          j                   d {V  d d d            d S # 1 swxY w Y   d S )Nr   rr   r   r   s   not json)r/   r   r   r   rT   rU   	TypeErrorr   r   r   r3   r   r   )r4   r5   rl   r   s      r   r8   z:TestFutureSocket.test_custom_serialize_error.<locals>.test   s     ))#*cjAADAq  C y)) : :''dj999999999: : : : : : : : : : : : : : : &&%%%%%%%%%y)) 4 4''
3333333334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s$   ,B		BB&C;;C?C?r9   r;   s   ` r   test_custom_serialize_errorz,TestFutureSocket.test_custom_serialize_error   s:    	4 	4 	4 	4 	4  		4     r   c                 F      fd} j                             |           d S )Nc                  x  K                        t          j        t          j                  \  } }|                    d          }|                                sJ |                                dk    sJ |                    d          }|                                rJ | d {V }|dk    sJ |                    d          }|                                rJ |                     ddg           d {V  | d {V }|t          j        k    sJ |	                                 d {V }|ddgk    sJ d S )Nr   r|      rR   r.   r@   )
r/   r   r   r0   r   r2   rC   rB   POLLINr1   )r4   r5   r6   evtr7   r   s        r   r8   z(TestFutureSocket.test_poll.<locals>.test  sW     ))#(CH==DAqq!!A6688OOO88::????q!!Avvxx''''''C!8888t$$Avvxx""E8#4555555555''''''C#*$$$$**,,,,,,,,EUH-------r   r9   r;   s   ` r   	test_pollzTestFutureSocket.test_poll  s:    	. 	. 	. 	. 	.& 		4     r   winzWindows unsupported socket typec                 F      fd} j                             |           d S )Nc                    K   t          j                    } d}|                     t           j                  }|                     t           j                  }j                            ||g           |                    |           |                    |           t          j
                    }|                    |t           j                   |                    d          }|                                rJ |                    ddg           | d {V }||t           j        fgk    sJ |                                }|ddgk    sJ |                                 |                                 |                                  d S )Nzinproc://testrR   r|   r.   r@   )r   r#   r   r   r0   socketsr   bindconnectr   Pollerregisterr   r   r2   rB   r1   r   r%   )	r(   urlr4   r5   pollerr6   r   r7   r   s	           r   r8   z4TestFutureSocket.test_poll_base_socket.<locals>.test  sS     +--C!C

38$$A

38$$ALA'''FF3KKKIIcNNN]__FOOAsz***D))AvvxxeX.///''''''CAsz?+++++$$&&EUH-----GGIIIGGIIIHHJJJJJr   r9   r;   s   ` r   test_poll_base_socketz&TestFutureSocket.test_poll_base_socket  s:    	 	 	 	 	. 		4     r   c                     |                      t          j                  fd}| j                            |           | j                            d           d | _        j        sJ d S )Nc                  4   K                                      d S r   )	_get_loop)r    s   r   attachz3TestFutureSocket.test_close_all_fds.<locals>.attach9  s      KKMMMMMr   Tr   )r   r   PUBr   r:   r   closed)r   r   r    s     @r   test_close_all_fdsz#TestFutureSocket.test_close_all_fds6  ss    KK  	 	 	 	 	 		6"""	%%%	xr   z)Windows does not support polling on filesc                 @    d }| j                             |           d S )Nc                    K   t          j                    } t          j                    \  }}t          j        |d          }t          j        |d          }|                     |t          j                   |                     |t          j                   | 	                    d           d {V }t          |          }|                                |vsJ |                                |v sJ ||                                         t          j        k    sJ |                     |           |                    d           |                                 | 	                    d           d {V }t          |          }|                                |v sJ ||                                         t          j        k    sJ |                    d          dk    sJ |                                 |                                 d S )Nrbwbr   r|      xrR   )r   r   ospipefdopenr   r   r   POLLOUTr   ru   fileno
unregisterwriteflushreadr   )prwevtss       r   r8   z,TestFutureSocket.test_poll_raw.<locals>.testF  s     A799DAq	!T""A	!T""A JJq#*%%%JJq#+&&&********D::D88::T))))88::%%%%

#s{2222 LLOOOGGDMMMGGIII--------D::D88::%%%%

#sz111166!99$$$$GGIIIGGIIIIIr   r9   r;   s     r   test_poll_rawzTestFutureSocket.test_poll_rawA  s/    
	 	 	8 		4     r   )$__name__
__module____qualname__r   r#   r   r   r!   r)   r+   r<   rG   rL   rT   markskipifhasattrr   rW   r^   rd   rg   rm   ry   r   r   r   r   r   sysplatform
startswithr   r   r   __classcell__)r   s   @r   r   r      sc       nG    * * * * *
  
* * ** * *	! 	! 	!! ! !! ! !  [GGC444=PQQ! ! RQ!  [GGC444=PQQ! ! RQ!! ! !! ! !! ! !! ! !! ! !.! ! !#! #! #!J! ! !&! ! !, [&&/P   ! ! !4	 	 	 [&&:   ! !	 ! ! ! ! !r   r   )r   r   r   datetimer   rT   importorskipr   tornado.ioloopr   r   zmq.eventloopr   	zmq.testsr   r    r   r   <module>r      s     				 



       f-(( ! ! ! ! ! ! 



             % % % % % %N! N! N! N! N! N! N! N! N! N!r   