
    ye                         d dl Z d dlZd dlZd dlmZ d dlmZmZmZ erej        ej	        _
         G d de          ZdS )    N)devices)PYPYBaseZMQTestCaseSkipTestc                        e Zd Zd Zd Zd ZdS )TestProxySteerablec                    t          j                    dk     rt          d          t          j        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                            t           j                  }|                    d||fz             |                    |           | j                            ||	|
|g           ||                     |	          k    sJ ||                     |
          k    sJ |                    d           |                                 d S )N      'Steerable Proxies only in libzmq >= 4.1tcp://127.0.0.1      ?   hello%s:%i	   TERMINATE)zmqzmq_version_infor   r   ThreadProxySteerablePULLPUSHPAIRbind_in_to_random_portbind_out_to_random_portbind_mon_to_random_portbind_ctrl_to_random_portstarttimesleepcontextsocketconnectsendsocketsextendrecvjoin)selfdevifaceportport2port3port4msgpushpullmonctrls               >lib/python3.11/site-packages/zmq/tests/test_proxy_steerable.pytest_proxy_steerablez'TestProxySteerable.test_proxy_steerable   s   !!F**DEEE*38SXsxRR!))%00++E22++E22,,U33		
4|""38,,Wt},---|""38,,Wu~-...l!!#(++Guen,---|""38,,Wu~-...		#T4d3444diioo%%%%diinn$$$$		,




    c           
         t          j                    dk     rt          d          t          j        t           j        t           j        t           j        t           j                  }d}g }d\  }}|                    |	                    |||          |
                    |||          |                    |||          |                    |||          g           |D ]&}||k     s||k    r|                     d|z             'd S )Nr
   r   r   )i  i  )min_portmax_portzUnexpected port number: %i)r   r   r   r   r   r   r   r   r%   r   r   r   r   fail)r(   r)   r*   portsminmaxr+   s          r4   -test_proxy_steerable_bind_to_random_with_argsz@TestProxySteerable.test_proxy_steerable_bind_to_random_with_args,   s   !!F**DEEE*38SXsxRR!S**53*MM++EC#+NN++EC#+NN,,US3,OO		
 	
 	
  	? 	?DczzTCZZ		6=>>>	? 	?r6   c                    t          j                    dk     rt          d          t          j        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                            t           j                  }|                    d||fz             |                    |           | j                            ||	|
|g           ||                     |	          k    sJ ||                     |
          k    sJ |                    d           |                     |          }d |D             }d	|d
         k    sJ t/          |          |d	         k    sJ d	|d         k    sJ t/          |          |d         k    sJ |                    d           |                                 d S )N)r      z STATISTICS only in libzmq >= 4.3r   r   r   r   s
   STATISTICSc                 D    g | ]}t          j        d |          d         S )z=Qr   )structunpack).0xs     r4   
<listcomp>zFTestProxySteerable.test_proxy_steerable_statistics.<locals>.<listcomp>Y   s)    >>>1V]4++A.>>>r6   r   r         r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   recv_multipartlenr'   )r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   stats	stats_ints                 r4   test_proxy_steerable_statisticsz2TestProxySteerable.test_proxy_steerable_statistics?   s   !!F**=>>>*38SXsxRR!))%00++E22++E22,,U33		
4|""38,,Wt},---|""38,,Wu~-...l!!#(++Guen,---|""38,,Wu~-...		#T4d3444diioo%%%%diinn$$$$		-   ##D))>>>>>	IaL    3xx9Q<''''IaL    3xx9Q<''''		,




r6   N)__name__
__module____qualname__r5   r>   rM    r6   r4   r   r      sA          6? ? ?&         r6   r   )rB   r   r   r   	zmq.testsr   r   r   ContextDevicecontext_factoryr   rQ   r6   r4   <module>rV      s      



       5 5 5 5 5 5 5 5 5 5 1%([GN"O O O O O O O O O Or6   