
    Zdt                         d dl Z d dlZd dlmZ d dlmZmZmZmZmZ erej	        ej
        _         G d de          Zerd dlZd dlZ G d dee          ZdS dS )    N)devices)PYPYBaseZMQTestCase	GreenTestSkipTesthave_geventc                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )

TestDevicec                     t           j        t           j        t           j        fD ]:}t	          j        |t           j        t           j                  }|j        |k    sJ ~;d S )N)zmqSTREAMER	FORWARDERQUEUEr   DevicePAIRdevice_type)selfdevtypedevs      5lib/python3.11/site-packages/zmq/tests/test_device.pytest_device_typeszTestDevice.test_device_types   sW    cmSY? 	 	G.#(CH==C?g----	 	    c                    t          j        t          j        t          j        t          j                  }|j        t          j        k    sJ |j        t          j        k    sJ |j        t          j        k    sJ |j	        dk    sJ ~d S )NT)
r   r   r   r   SUBPUBin_typeout_typer   daemon)r   r   s     r   test_device_attributesz!TestDevice.test_device_attributes   st    nSY99{cg%%%%|sw&&&&#)++++zT!!!!CCr   c                    t          j                    dv r#t          dt          j                    z            t          j        t           j        t           j        d          }| j                            t           j	                  }|
                    d          }|                    d|z             |                                 t          j        d           d}|                    |           ||                     |          k    sJ ~|                                 t          j        t           j        t           j        d          }| j                            t           j	                  }|
                    d          }|                    d|z             |                                 t          j        d           d}|                    |           ||                     |          k    sJ ~|                                 d S 	N)z4.1.1z4.0.6z%libzmq-%s broke single-socket devicestcp://127.0.0.1tcp://127.0.0.1:%i      ?   hellos   hello again)r   zmq_versionr   r   ThreadDevicer   REPcontextsocketREQbind_to_random_port
connect_instarttimesleepsendrecvcloseconnect_out)r   r   reqportmsgs        r   $test_single_socket_forwarder_connectz/TestDevice.test_single_socket_forwarder_connect   s   ? 222BS_EVEVVWWW"39cgr::l!!#'**&&'899+d2333		
4diinn$$$$		"39cgr::l!!#'**&&'899,t3444		
4diinn$$$$		r   c                    t          j                    dv r#t          dt          j                    z            t          j        t           j        t           j        d          }|                    d          }| j        	                    t           j
                  }|                    d|z             |                                 t          j        d           d}|                    |           ||                     |          k    sJ ~|                                 t          j        t           j        t           j        d          }|                    d          }| j        	                    t           j
                  }|                    d|z             |                                 t          j        d           d}|                    |           ||                     |          k    sJ ~|                                 d S r!   )r   r'   r   r   r(   r   r)   bind_in_to_random_portr*   r+   r,   connectr/   r0   r1   r2   r3   r4   )r   r   r7   r6   r8   s        r   !test_single_socket_forwarder_bindz,TestDevice.test_single_socket_forwarder_bind8   s   ? 222BS_EVEVVWWW"39cgr::))*;<<l!!#'**(4/000		
4diinn$$$$		"39cgr::))*;<<l!!#'**(4/000		
4diinn$$$$		r   c                 D   t          j        t          j        t          j        d          }d}g }d\  }}|                    |                    |||          |                    |||          g           |D ]&}||k     s||k    r|                     d|z             'd S )Nr"   r#   i  i  min_portmax_portUnexpected port number: %i)	r   r(   r   PULLPUSHextendr;   bind_out_to_random_portfailr   r   ifaceportsminmaxr7   s          r   $test_device_bind_to_random_with_argsz/TestDevice.test_device_bind_to_random_with_argsR   s    "38SXr::!S**53*MM++EC#+NN	
 	
 	
  	? 	?DczzTCZZ		6=>>>	? 	?r   c                    t          j        t          j        t          j        d          }d}	 t          d          D ]}|                    |dd           	 |                     d           d S # t          j        $ r}Y d }~d S d }~ww xY w)Nr"   r#      i'  i'  r@   zShould have failed)	r   r(   r   rD   rE   ranger;   rH   ZMQBindError)r   r   rJ   ies        r   $test_device_bind_to_random_binderrorz/TestDevice.test_device_bind_to_random_binderrora   s    "38SXr::!	,2YY R R**555*QQQQR
 II*+++++  	 	 	FFFFF	s   *A0 0B
B
c                    t          j                    dk     rt          d          t          j        t           j        t           j        t           j                  }d}|                    |          }|                    |          }|	                    |          }|
                                 t          j        d           d}| j                            t           j                  }|                    d||fz             | j                            t           j                  }|                    d||fz             | j                            t           j                  }	|	                    d||fz             |                    |           | j                            |||	g           ||                     |          k    sJ ||                     |	          k    sJ d S )N      Proxies only in libzmq >= 3r#   r%   r&   z%s:%i)r   zmq_version_infor   r   ThreadProxyrD   rE   r;   rG   bind_mon_to_random_portr/   r0   r1   r*   r+   r<   r2   socketsrF   r3   )
r   r   rJ   r7   port2port3r8   pushpullmons
             r   
test_proxyzTestDevice.test_proxyl   s   !!F**8999!#(CHch??!))%00++E22++E22		
4|""38,,Wt},---|""38,,Wu~-...l!!#(++Guen,---		#T4-...diioo%%%%diinn$$$$$$r   c           	         t          j                    dk     rt          d          t          j        t           j        t           j        t           j                  }d}g }d\  }}|                    |                    |||          |	                    |||          |
                    |||          g           |D ]&}||k     s||k    r|                     d|z             'd S )NrW   rZ   r#   r?   r@   rC   )r   r[   r   r   r\   rD   rE   rF   r;   rG   r]   rH   rI   s          r   #test_proxy_bind_to_random_with_argsz.TestDevice.test_proxy_bind_to_random_with_args   s    !!F**8999!#(CHch??!S**53*MM++EC#+NN++EC#+NN	
 	
 	
  	? 	?DczzTCZZ		6=>>>	? 	?r   N)__name__
__module____qualname__r   r   r9   r=   rN   rU   rd   rf    r   r   r
   r
      s              4  4? ? ?	, 	, 	,% % %,? ? ? ? ?r   r
   c                       e Zd Zd ZdS )TestDeviceGreenc                    | j                             t          j                  }| j                             t          j                  }| j                            ||g           |                    d          }t          j	        t          j
        j        t          j        ||          }|                    d|z             |                    d           t          j        d          }|                                 t          j	        |j                  }|                    d          dk    sJ |                                 |                    d           d S )Nr#   r$   s   hirX   rY   T)block)r*   r+   r   r)   r,   r^   rF   r-   geventspawngreendevicer   r<   r2   Timeoutr/   r3   getcancelkill)r   repr6   r7   gtimeoutreceivers          r   test_green_devicez!TestDeviceGreen.test_green_device   s   ,%%cg..C,%%cg..CLc
+++**+<==DSY-sy#sCCAKK,t3444HHUOOOnQ''GMMOOO|CH--H<<??e++++NNFFFr   N)rg   rh   ri   r{   rj   r   r   rl   rl      s#        	 	 	 	 	r   rl   )r0   r   r   	zmq.testsr   r   r   r   r   Contextr   context_factoryr
   ro   	zmq.greenrl   rj   r   r   <module>r      s     



       M M M M M M M M M M M M M M 1%([GN"C? C? C? C? C? C? C? C?L  MMM    )_      r   