
    ZdH%                     *   d Z ddlZddlZddlZddlZddlmZ ddlmZ ddl	Z	ddl	m
Z
 ddlZddlmZ e	j        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!d Z"d Z#e	j
                            ej$        %                    d          d          d              Z&d! Z'd" Z( G d# d$e          Z)d% Z*dS )&zTest asyncio support    N)CancelledError)Process)markc                     t           j        S N)zaioContext)
event_loops    6lib/python3.11/site-packages/zmq/tests/test_asyncio.pyr	   r	      s
    <    c                     |                      t          j                  5 }t          |t          j                  sJ 	 d d d            d S # 1 swxY w Y   d S r   )socketzmqPUSH
isinstancer   Socket)contextss     r   test_socket_classr      s    		!	! *Q!T[))))))* * * * * * * * * * * * * * * * * *s   AAAc                 V   t           j        j                                        }t           j                                        }|                                 |                                 t          |          t           j        u sJ t          |          t           j        j        u sJ d S r   )r   asyncior	   instancetermtype)r   actxctxs      r   test_instance_subclass_firstr      s    ;''))D
+


 
 CHHJJJIIKKK99####::,,,,,,,r   c                 j   t           j                                        5 }t          |          t           j        u sJ t           j        j                                        5 }t          |          t           j        j        u sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S r   )r   r	   r   r   r   )r   r   r   s      r   test_instance_subclass_secondr   &   s   					 53CyyCK''''[ ))++ 	5t::!444444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	55 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s6   AB( #BB(B	B(B	B((B,/B,c                    K    |t           j        t           j                  \  }}|                                }|                                rJ |                    d           d {V  | d {V }|dgk    sJ d S )N   hi)r   r   PULLrecv_multipartdonesend)r   create_bound_pairabfrecvds         r   test_recv_multipartr+   -   s      SXsx00DAq	Avvxx
&&--GGGGGGEUGr   c                   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"   recvr$   send_multipartresult)r&   r'   r(   f1f2r*   s         r   	test_recvr4   6   s      SXsx00DAq	
B	
Bwwyywwyy


E8,
-
--------HHHHHHE779999;;%Hr   RCVTIMEOzrequires RCVTIMEO)reasonc                   K   | \  }}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.   )	rcvtimeor/   r#   pytestraisesr   Againr0   r$   	push_pullr'   r(   r2   r3   r*   s         r   test_recv_timeoutr@   C   s     DAqAJ	
BAJ	
				B	sy	!	!                


E8,
-
--------HHHHHHE7799UH%%%%%%%s   	A11A58A5SNDTIMEOzrequires SNDTIMEOc                    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 )Nr8   s   not going anywhere)r   r   sndtimeor;   r<   r=   r%   )r   r   s     r   test_send_timeoutrD   R   s      sxAAJ	sy	!	! , ,ff*+++++++++, , , , , , , , , , , , , , , , , ,s   A&&A*-A*c                 "  K   | \  }}|                                 }|                                rJ d}|                    |           d {V  | d {V }|                                sJ |                                |k    sJ ||k    sJ d S )Nu   πøøπ)recv_stringr$   send_stringr1   )r?   r'   r(   r)   msgr*   s         r   test_recv_stringrI   Z   s      DAq	Avvxx
C
--

GGGGGGE6688OOO88::C<<<<<<r   c                 >  K   | \  }}|                                 }|                                rJ t          d          }|                    |           d {V  | d {V }|                                sJ |                                |k    sJ ||k    sJ d S N   r'   )	recv_jsonr$   dict	send_jsonr1   r?   r'   r(   r)   objr*   s         r   test_recv_jsonrS   f   s      DAq	Avvxx
)))C
++c

GGGGGGE6688OOO88::C<<<<<<r   c                 D  K   | \  }}|                                 }|                                rJ |                                 t          j        d           d {V  t          d          }|                    |           d {V  t          j        dk     r:t          j
        t                    5  | d {V }d d d            n# 1 swxY w Y   nCt          j
        t          j        j                  5  | d {V }d d d            n# 1 swxY w Y   |                                sJ |                    d           d {V }|sJ t          j        d           d {V  |                                 }t          j        |d           d {V }||k    sJ d S )Nr   rL   rM   )      timeout)rN   r$   cancelr   sleeprO   rP   sysversion_infor;   r<   r   
exceptionspollwait_for)r?   r'   r(   r)   rR   r*   eventss          r   test_recv_json_cancelledra   r   s9     DAq	AvvxxHHJJJ
-


)))C
++c


&  ]>** 	 	GGGGGGE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]7-<== 	 	GGGGGGE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	6688OOO66!6$$$$$$$$FMMM
-

	A"1a000000000EC<<<<<<s$   4	C		CC8	DDDc                 >  K   | \  }}|                                 }|                                rJ t          d          }|                    |           d {V  | d {V }|                                sJ |                                |k    sJ ||k    sJ d S rK   )
recv_pyobjr$   rO   
send_pyobjr1   rQ   s         r   test_recv_pyobjre      s      DAq	Avvxx
)))C
,,s

GGGGGGE6688OOO88::C<<<<<<r   c                   K   d }d } | 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 )Nc                     g }|                     |                     dg                      t          j        | d                                       d          }|                    |           |S )N
identitiescontentutf8)extendgetjsondumpsencodeappend)rH   framesri   s      r   	serializez(test_custom_serialize.<locals>.serialize   s_    cgglB//000*S^,,33F;;gr   c                 z    | d d         }t          j        | d                             d                    }||dS )Nrj   )rh   ri   )rm   loadsdecode)rq   rh   ri   s      r   deserializez*test_custom_serialize.<locals>.deserialize   sE    CRC[
*VBZ..v6677$
 
 	
r   ri   rL   beer'   r(   rh   )r   DEALERROUTERsend_serializedrecv_serialized)r&   rr   rw   r'   r(   rH   r*   r2s           r   test_custom_serializer      sS       
 
 
 SZ44DAq 	
 
C 

C
+
++++++++##K00000000Es9~----


E9
-
--------  --	-	-	-	-	-	-Bi=C	N****,r   c                   K   | \  }}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 )Nri   rL   rx   ry   s   not json)	r;   r<   	TypeErrorr|   rm   rn   r%   r}   ru   )dealer_routerr'   r(   rH   s       r   test_custom_serialize_errorr      s~     DAq 	
 
C 
y	!	! 2 2dj1111111112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 &&

	y	!	! , ,
+++++++++, , , , , , , , , , , , , , , , , ,s#   ,A  A$'A$&CCCc                   K   | \  }}|                     t          j                  }t          j        t          j                  5  | d {V  d d d            n# 1 swxY w Y   |                    d           d {V  |                                 d {V  |                     t          j                  }|                                sJ | d {V }|dk    sJ d S )Ns   ping)	r/   r   DONTWAITr;   r<   r=   r%   r^   r$   )r?   pushpullr)   rH   s        r   test_recv_dontwaitr      s$     JD$		#,A	sy	!	!                
))G


))++		#,A6688OOO''''''C'>>>>>>s   	AA!Ac                   K   | \  }}|                                 }|                                }|                                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#   rY   r$   r0   	cancelledr>   s         r   test_recv_cancelr      s      DAq	
B	
				B99;;7799wwyy


E8,
-
--------HHHHHHE<<>>7799UH%%%%%%%r   c                 .  K   | \  }}|                     d          }t          j        d           d {V  |                                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   rW      r9   r!   r.   )	r^   r   rZ   r1   r$   r0   r   POLLINr#   )r?   r'   r(   r)   evtr*   s         r   	test_pollr      sS     DAq	qA
-

88::????	qAvvxx''''''C!8888	tAvvxx


E8,
-
--------''''''C#*""$$$$$$$$EUH%%%%%%%r   c                   K   t          j                    }d}|                    t           j                  }|                    t           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://testr9   rW   r!   r.   )r   r	   r   r   r"   rk   bindconnectr   Pollerregisterr   r^   r$   r0   r#   )	socketsr   urlr'   r(   pollerr)   r   r*   s	            r   test_poll_base_socketr      s)     
+--C
C

38A

38ANNAq6FF3KKKIIcNNN[]]F
OOAsz"""D!!AvvxxeX&'''''''''CAsz?#####EUH%%%%%%%r   c                   K   | \  }}|                     d          }|                                 t          d          D ]2}t          j        d           d {V  |                                r n3|                                sJ d S )Nr   rW   rL   r   )r^   closeranger   rZ   r   )r?   r'   r(   r)   _s        r   test_poll_on_closed_socketr     s      DAq	qAGGIII 1XX  mA;;== 	E	;;==r   winz)Windows does not support polling on filesc                    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   rW      xr9   )r   r   ospipefdopenr   r   r   POLLOUTr^   rO   fileno
unregisterwriteflushreadr   )prwevtss       r   test_poll_rawr   !  s     
 	A799DAq
	!TA
	!TA JJq#*JJq#+""""""""D::D88::T!!!!88::

s{**** LLOOOGGDMMMGGIII%%%%%%%%D::D88::

sz))))66!99GGIIIGGIIIIIr   c                     | \  fd}t          d          D ]Z}t          j                    }|                    t          j         |            d                     |                                 [d S )Nc                     K                        d           d {V                                   d {V } | dk    sJ d S )Ns   buf)r%   r/   )rH   r'   r(   s    r   testz!test_multiple_loops.<locals>.testE  sS      ffVnnFFHHnnnnnnf}}}}}}r   rU   
   rW   )r   r   new_event_looprun_until_completer_   r   )r?   r   iloopr'   r(   s       @@r   test_multiple_loopsr   B  s    DAq     
 1XX  %'' 0 D D DEEE

 r   c                  F   t          j                    5 } |                     t           j                  }t	          j        |          }t          |t          j                  sJ |j        |j        k    sJ |j        |j        k    sJ 	 d d d            d S # 1 swxY w Y   d S r   )	r   r	   r   r"   r   r   r   
underlyingr   )r   r   async_ss      r   test_shadowr   P  s    	 &#JJsx  +a..'4;/////!Q\1111|qv%%%%%& & & & & & & & & & & & & & & & & &s   A4BBBc                       e Zd Zd ZdS )ProcessForTeardownTestc                    t           j                                        }|                    t          j                  }|                    d           d }t          j                    }t          j	         ||          d          }	 |
                    |           J d            # t          j        $ r Y nw xY w	 |                                 dS # |                                 w xY w)z;Leave context, socket and event loop upon implicit disposalztcp://127.0.0.1c                 >   K   |                                   d {V  d S r   )r/   )r   s    r   never_ending_taskz5ProcessForTeardownTest.run.<locals>.never_ending_taska  s,      ++--r   r   rW   Fz,never_ending_task was completed unexpectedlyN)r   r	   r   r   r   PAIRbind_to_random_portr   r   r_   r   TimeoutErrorr   )selfr   r   r   r   coros         r   runzProcessForTeardownTest.runZ  s     |$$&&SX&&""#4555	  	  	  %'' 1 1& 9 91EEE	##D))) IHHHH # 	 	 	D	 JJLLLLLDJJLLLLs*   	B( 
C (B:7C 9B::C C*N)__name__
__module____qualname__r    r   r   r   r   Y  s#            r   r   c                    t                      }|                                 |                     |j                   |                    d           |j        
J d            |j        dk    sJ d|j                     d S )Nr   zprocess teardown hangsr   zPython process died with code )r   startaddfinalizer	terminatejoinexitcode)requestprocs     r   test_process_teardownr   p  s    !##DJJLLL(((IIbMMM=$$&>$$$=AOOOr   )+__doc__r   rm   r   r[   concurrent.futuresr   multiprocessingr   r;   r   r   zmq.asyncior   fixturer	   r   r   r   r+   r4   skipifhasattrr@   rD   rI   rS   ra   re   r   r   r   r   r   r   r   platform
startswithr   r   r   r   r   r   r   r   <module>r      s       				 



 - - - - - - # # # # # #        



         * * *
- - -5 5 5  
 
 
 j)))2EFFF& & GF& j)))2EFFF, , GF,	 	 		 	 	  6	 	 	        F, , ,"
 
 
& & && & &*& & &*   LE""6    	 :  & & &    W   .P P P P Pr   