
    *Vfp)                         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y)	    N)	timedeltaztornado.gen)IOLoop)future)BaseZMQTestCasec                   <    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                  j                   eed	       d
      d        Zej                  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                  j                  ej<                  j?                  d      d      d        Z d Z!ej                  j                  ej<                  j?                  d      d      d        Z" xZ#S )TestFutureSocketc                 D    t        d      | _        t        |           y )NF)make_current)r   loopsupersetUpself	__class__s    ^/var/www/html/software/conda/envs/catlas/lib/python3.12/site-packages/zmq/tests/test_future.pyr   zTestFutureSocket.setUp   s    .	    c                 t    t         |           | j                  r| j                  j                  d       y y )NTall_fds)r   tearDownr   closer   s    r   r   zTestFutureSocket.tearDown   s,    99IIOODO) r   c                     | j                   j                  t        j                        }t	        |t
        j                        sJ |j                          y N)contextsocketzmqPUSH
isinstancer   Socketr   )r   ss     r   test_socket_classz"TestFutureSocket.test_socket_class    s7    LL)!V]]+++		r   c                     | j                   j                         }t        j                   j                         }|j                          |j                          t	        |      t        j                   u sJ t	        |      | j                   u sJ y r   )Contextinstancer   termtype)r   actxctxs      r   test_instance_subclass_firstz-TestFutureSocket.test_instance_subclass_first%   sd    ||$$&kk""$
		CyCKK'''DzT\\)))r   c                     t         j                  j                         }| j                  j                         }|j                          |j                          t	        |      t         j                  u sJ t	        |      | j                  u sJ y r   )r   r#   r$   r%   r&   )r   r(   r'   s      r   test_instance_subclass_secondz.TestFutureSocket.test_instance_subclass_second-   sd    kk""$||$$&
		CyCKK'''DzT\\)))r   c                 F      fd} j                   j                  |       y )Nc                    K   j                  t        j                  t        j                        \  } }|j	                         }|j                         rJ | j                  d       d {    | d {   }|dgk(  sJ y 7 7 w)N   hi)create_bound_pairr   r   PULLrecv_multipartdonesend)abfrecvdr   s       r   testz2TestFutureSocket.test_recv_multipart.<locals>.test6   sr     ))#((CHH=DAq  "Avvx<&&-GEUG###  s$   A(B+B,	B5B6BBr   run_syncr   r8   s   ` r   test_recv_multipartz$TestFutureSocket.test_recv_multipart5   s    	$ 			4 r   c                 F      fd} j                   j                  |       y )Nc                    K   j                  t        j                  t        j                        \  } }|j	                         }|j	                         }|j                         rJ |j                         rJ | j                  ddg       d {    | d {   }|j                         sJ |j                         dk(  sJ |dk(  sJ y 7 =7 5w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     ))#((CHH=DAqBBwwy =wwy =""E8#4555HE779999;%'''H$$$	 6s$   BCC	CC4CCr9   r;   s   ` r   	test_recvzTestFutureSocket.test_recv@   s    
	% 			4 r   c                 F      fd} j                   j                  |       y )Nc                    K   j                  t        j                  t        j                        \  } }|j	                         }|j                         }|j                         sJ |j                         sJ |j                         rJ | j                  ddg       d {    | d {   }|j                         sJ |j                         sJ |ddgk(  sJ y 7 <7 4wr?   )
r/   r   r   r0   rA   r1   cancelr2   rB   	cancelledrD   s        r   r8   z/TestFutureSocket.test_recv_cancel.<locals>.testP   s     ))#((CHH=DAqB!!#B99;;7799wwy =""E8#4555HE<<>!>7799UH----	 6s$   BC"!C"	C"+C ,3C" C"r9   r;   s   ` r   test_recv_cancelz!TestFutureSocket.test_recv_cancelO   s    	. 			4 r   RCVTIMEOzrequires RCVTIMEO)reasonc                 F      fd} j                   j                  |       y )Nc                    K   j                  t        j                  t        j                        \  } }d|_        |j                         }d|_        |j                         }t        j                  t        j                        5  | d {    d d d        | j                  ddg       d {    | d {   }|j                         sJ |ddgk(  sJ y 7 M# 1 sw Y   LxY w7 87 0w)Nd     r.   r@   )r/   r   r   r0   rcvtimeorA   r1   pytestraisesAgainrB   r2   rD   s        r   r8   z0TestFutureSocket.test_recv_timeout.<locals>.testa   s     ))#((CHH=DAqAJBAJ!!#Bsyy) ""E8#4555HE7799UH----	  5sN   BC,CCCC,/C(0	C,9C*: C,CC%!C,*C,r9   r;   s   ` r   test_recv_timeoutz"TestFutureSocket.test_recv_timeout_   s    	. 			4 r   SNDTIMEOzrequires SNDTIMEOc                 F      fd} j                   j                  |       y )Nc                     K   j                  t        j                        } d| _        t	        j
                  t        j                        5  | j                  d       d {    d d d        y 7 # 1 sw Y   y xY ww)NrQ      not going anywhere)r   r   r   sndtimeorT   rU   rV   r3   r    r   s    r   r8   z0TestFutureSocket.test_send_timeout.<locals>.testr   s`     CHH%AAJsyy) 4ff23334 434 4s0   A
A>A2"A0#A2'	A>0A22A;7A>r9   r;   s   ` r   test_send_timeoutz"TestFutureSocket.test_send_timeoutp   s    	4 			4 r   c                 F      fd} j                   j                  |       y )Nc                    K   j                  t        j                        } t        j                  t        j
                        5  | j                  dt        j                         d {    d d d        y 7 # 1 sw Y   y xY wwNr[   )flags)r   r   r   rT   rU   rV   r3   NOBLOCKr]   s    r   r8   z0TestFutureSocket.test_send_noblock.<locals>.test{   sf     CHH%Asyy) Gff2#++fFFFG GFG Gs0   AB%A;+A9,A;0	B9A;;B Br9   r;   s   ` r   test_send_noblockz"TestFutureSocket.test_send_noblockz   s    	G
 			4 r   c                 F      fd} j                   j                  |       y )Nc                    K   j                  t        j                        } t        j                  t        j
                        5  | j                  dgt        j                         d {    d d d        y 7 # 1 sw Y   y xY wwra   )r   r   r   rT   rU   rV   rB   rc   r]   s    r   r8   z:TestFutureSocket.test_send_multipart_noblock.<locals>.test   sl     CHH%Asyy) S&&(='>ckk&RRRS SRS Ss0   AB&A<,A:-A<1	B:A<<BBr9   r;   s   ` r   test_send_multipart_noblockz,TestFutureSocket.test_send_multipart_noblock   s    	S
 			4 r   c                 F      fd} j                   j                  |       y )Nc                  b  K   j                  t        j                  t        j                        \  } }|j	                         }|j                         rJ d}| j                  |       d {    | d {   }|j                         sJ |j                         |k(  sJ ||k(  sJ y 7 =7 5w)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     ))#((CHH=DAqAvvx<C--$$$GE668O888:$$$C<<	 %s$   A*B/-B+.	B/7B-84B/-B/r9   r;   s   ` r   test_recv_stringz!TestFutureSocket.test_recv_string       		  			4 r   c                 F      fd} j                   j                  |       y )Nc                  v  K   j                  t        j                  t        j                        \  } }|j	                         }|j                         rJ t        d      }| j                  |       d {    | d {   }|j                         sJ |j                         |k(  sJ ||k(  sJ y 7 =7 5w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     ))#((CHH=DAqAvvx<)C++c"""GE668O888:$$$C<<	 #$   A4B97B58	B9B74B97B9r9   r;   s   ` r   test_recv_jsonzTestFutureSocket.test_recv_json   rn   r   c                 F      fd} j                   j                  |       y )Nc                    K   j                  t        j                  t        j                        \  } }|j	                         }|j                         rJ |j                          t        j                  d       d {    t        d      }| j                  |       d {    t        j                  t        j                        5  | d {   }d d d        |j                         sJ |j                  d       d {   }|sJ t        j                  d       d {    t        j!                  t#        d      |j	                                d {   }||k(  sJ y 7 7 7 # 1 sw Y   xY w7 u7 V7 "w)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     ))#((CHH=DAqAvvx<HHJ))A,)C++c"""v445   668O866!6,,FM6))A,**9Q+?OOEC<< "    -Os~   A<F?E* $F$E,%'FE0E.E0/FE< F'E>(5FF F,F.E00E95F>F Fr9   r;   s   ` r   test_recv_json_cancelledz)TestFutureSocket.test_recv_json_cancelled   s    	 ( 			4 r   c                 F      fd} j                   j                  |       y )Nc                  v  K   j                  t        j                  t        j                        \  } }|j	                         }|j                         rJ t        d      }| j                  |       d {    | d {   }|j                         sJ |j                         |k(  sJ ||k(  sJ y 7 =7 5wrq   )	r/   r   r   r0   
recv_pyobjr2   ru   
send_pyobjrC   rw   s        r   r8   z.TestFutureSocket.test_recv_pyobj.<locals>.test   s     ))#((CHH=DAqAvvx<)C,,s###GE668O888:$$$C<<	 $ry   r9   r;   s   ` r   test_recv_pyobjz TestFutureSocket.test_recv_pyobj   rn   r   c                 Z     d d  fd} j                   j                  |       y )Nc                     g }|j                  | j                  dg              t        j                  | d         j	                  d      }|j                  |       |S )N
identitiescontentutf8)extendgetjsondumpsencodeappend)rl   framesr   s      r   	serializez9TestFutureSocket.test_custom_serialize.<locals>.serialize   sL    FMM#'',34jjY077?GMM'"Mr   c                 d    | d d }t        j                  | d   j                  d            }||dS )Nr   )r   r   )r   loadsdecode)r   r   r   s      r   deserializez;TestFutureSocket.test_custom_serialize.<locals>.deserialize   s:    Jjj!2!26!:;G(" r   c                    K   j                  t        j                  t        j                        \  } }ddddi}| j	                  |       d {    |j                         d {   }|d   |d   k(  sJ |d   sJ |j	                  |       d {    | j                         d {   }|d   |d   k(  sJ |d   rJ y 7 y7 b7 67 w)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   s     ))#**cjjADAq C ##C333++K88E#s9~555&&&##E9555((55Bi=C	N222,'''' 48 65sH   ACCC*C+-CCC1C2CCCCr9   )r   r8   r   r   s   ` @@r   test_custom_serializez&TestFutureSocket.test_custom_serialize   s&    			(& 			4 r   c                 F      fd} j                   j                  |       y )Nc                    K   j                  t        j                  t        j                        \  } }ddddi}t	        j
                  t              5  | j                  t        t        j                         d {    d d d        | j                  d       d {    t	        j
                  t              5  |j                  t        j                         d {    d d d        y 7 o# 1 sw Y   nxY w7 \7 # 1 sw Y   y xY ww)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     ))#**cjjADAq C y) :''djj999: &&%%%y) 4''

3334 4 :: : &34 4sf   AD(C/=C->C/DC;D<#C?C= C?$	D-C//C84D=C??DDr9   r;   s   ` r   test_custom_serialize_errorz,TestFutureSocket.test_custom_serialize_error   s    	4  			4 r   c                 F      fd} j                   j                  |       y )Nc                  Z  K   j                  t        j                  t        j                        \  } }|j	                  d      }|j                         sJ |j                         dk(  sJ |j	                  d      }|j                         rJ | d {   }|dk(  sJ |j	                  d      }|j                         rJ | j                  ddg       d {    | d {   }|t        j                  k(  sJ |j                          d {   }|ddgk(  sJ y 7 7 G7 ?7 w)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  s    ))#((CHH=DAqq!A668O888:?"?q!Avvx<'C!8O8t$Avvx<""E8#4555'C#**$$$**,,EUH---- 
 6,sI   BD+D#AD+D%	D+'D'(,D+D)D+%D+'D+)D+r9   r;   s   ` r   	test_pollzTestFutureSocket.test_poll  s    	.& 			4 r   winzWindows unsupported socket typec                 F      fd} j                   j                  |       y )Nc                    K   t        j                         } d}| j                  t         j                        }| j                  t         j                        }j
                  j                  ||g       |j                  |       |j                  |       t        j                         }|j                  |t         j                         |j                  d      }|j                         rJ |j                  ddg       | d {   }||t         j                  fgk(  sJ |j!                         }|ddgk(  sJ |j#                          |j#                          | j%                          y 7 fw)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  s    ++-C!C

388$A

388$ALLA'FF3KIIcN]]_FOOAszz*D)Avvx<eX./'CAszz?++++$$&EUH----GGIGGIHHJ s   DE0E.A'E0r9   r;   s   ` r   test_poll_base_socketz&TestFutureSocket.test_poll_base_socket  s    	. 			4 r   c                     | j                  t        j                        fd}| j                  j	                  |       | j                  j                  d       d | _        j                  sJ y )Nc                  .   K    j                          y wr   )	_get_loop)r    s   r   attachz3TestFutureSocket.test_close_all_fds.<locals>.attach9  s     KKMs   Tr   )r   r   PUBr   r:   r   closed)r   r   r    s     @r   test_close_all_fdsz#TestFutureSocket.test_close_all_fds6  sR    KK 	 			6"		%	xxxr   z)Windows does not support polling on filesc                 @    d }| j                   j                  |       y )Nc                    K   t        j                         } t        j                         \  }}t        j                  |d      }t        j                  |d      }| j                  |t        j                         | j                  |t        j                         | j                  d       d {   }t        |      }|j                         |vsJ |j                         |v sJ ||j                            t        j                  k(  sJ | j                  |       |j                  d       |j                          | j                  d       d {   }t        |      }|j                         |v sJ ||j                            t        j                  k(  sJ |j                  d      dk(  sJ |j!                          |j!                          y 7 &7 w)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  sh    A779DAq		!T"A		!T"A JJq#**%JJq#++&**D:D88:T)))88:%%%
#s{{222 LLOGGDMGGI--D:D88:%%%
#szz11166!9$$$GGIGGI! + .s&   B-G/G0B$GGBGG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   rz   r   r   r   r   r   sysplatform
startswithr   r   r   __classcell__)r   s   @r   r   r      sI   nnG*

**	!!!  [[GC44=PQ! R!  [[GC44=PQ! R!!!!!!.!#!J!&!, [[&/P  !!4	 [[&:  !	!r   r   )r   r   r   datetimer   rT   importorskipr   tornado.ioloopr   r   zmq.eventloopr   	zmq.testsr   r    r   r   <module>r      sB     	 
  f-( ! 
   %N! N!r   