
    Ef                         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y)    N)devices)PYPYBaseZMQTestCaseSkipTestc                       e Zd Zd Zd Zd Zy)TestProxySteerablec                    t        j                         dk  rt        d      t        j                  t         j
                  t         j                  t         j                  t         j                        }d}|j                  |      }|j                  |      }|j                  |      }|j                  |      }|j                          t        j                  d       d}| j                  j!                  t         j                        }|j#                  d||fz         | j                  j!                  t         j
                        }	|	j#                  d||fz         | j                  j!                  t         j
                        }
|
j#                  d||fz         | j                  j!                  t         j                        }|j#                  d||fz         |j%                  |       | j&                  j)                  ||	|
|g       || j+                  |	      k(  sJ || j+                  |
      k(  sJ |j%                  d       |j-                          y )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               @/usr/lib/python3/dist-packages/zmq/tests/test_proxy_steerable.pytest_proxy_steerablez'TestProxySteerable.test_proxy_steerable   s   !F*DEE**388SXXsxxR!))%0++E2++E2,,U3		

4||""388,Wt},-||""388,Wu~-.ll!!#((+Guen,-||""388,Wu~-.		#T4d34diio%%%diin$$$		,
    c           
          t        j                         dk  rt        d      t        j                  t         j
                  t         j                  t         j                  t         j                        }d}g }d\  }}|j                  |j                  |||      |j                  |||      |j                  |||      |j                  |||      g       |D ]!  }||k  s||kD  s| j                  d|z         # y )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**388SXXsxxR!S**53*M++EC#+N++EC#+N,,US3,O		
  	?DczTCZ		6=>	?r6   c                    t        j                         dk  rt        d      t        j                  t         j
                  t         j                  t         j                  t         j                        }d}|j                  |      }|j                  |      }|j                  |      }|j                  |      }|j                          t        j                  d       d}| j                  j!                  t         j                        }|j#                  d||fz         | j                  j!                  t         j
                        }	|	j#                  d||fz         | j                  j!                  t         j
                        }
|
j#                  d||fz         | j                  j!                  t         j                        }|j#                  d||fz         |j%                  |       | j&                  j)                  ||	|
|g       || j+                  |	      k(  sJ || j+                  |
      k(  sJ |j%                  d       | j-                  |      }|D cg c]  }t/        j0                  d|      d	    }}d
|d	   k(  sJ t3        |      |d
   k(  sJ d
|d   k(  sJ t3        |      |d   k(  sJ |j%                  d       |j5                          y c c}w )N)r      z STATISTICS only in libzmq >= 4.3r   r   r   r   s
   STATISTICSz=Qr   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structunpacklenr'   )r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   statsx	stats_ints                  r4   test_proxy_steerable_statisticsz2TestProxySteerable.test_proxy_steerable_statistics?   sS   !F*=>>**388SXXsxxR!))%0++E2++E2,,U3		

4||""388,Wt},-||""388,Wu~-.ll!!#((+Guen,-||""388,Wu~-.		#T4d34diio%%%diin$$$		- ##D)8=>1V]]4+A.>	>IaL   3x9Q<'''IaL   3x9Q<'''		,
 ?s    KN)__name__
__module____qualname__r5   r>   rJ    r6   r4   r   r      s    6?& r6   r   )rD   r   r   r   	zmq.testsr   r   r   ContextDevicecontext_factoryr   rN   r6   r4   <module>rS      s:      
  5 5%([[GNN"O Or6   