o
    ¹i†  ã                   @   sZ   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„ deƒZdS )é    N)Údevices)ÚPYPYÚBaseZMQTestCaseÚSkipTestc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestProxySteerablec                 C   sF  t  ¡ dk r
tdƒ‚t t jt jt jt j¡}d}| |¡}| 	|¡}| 
|¡}| |¡}| ¡  t d¡ d}| j t j¡}| d||f ¡ | j t j¡}	|	 d||f ¡ | j t j¡}
|
 d||f ¡ | j t j¡}| d||f ¡ | |¡ | j ||	|
|g¡ ||  |	¡ksJ ‚||  |
¡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Úctrl© r1   úY/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/zmq/tests/test_proxy_steerable.pyÚtest_proxy_steerable   s2   






z'TestProxySteerable.test_proxy_steerablec              
   C   sª   t  ¡ dk r
tdƒ‚t t jt jt jt j¡}d}g }d\}}| |j	|||d|j
|||d|j|||d|j|||dg¡ |D ]}||k sK||krR|  d| ¡ qAd 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(   r1   r1   r2   Ú-test_proxy_steerable_bind_to_random_with_args,   s$   üÿ€þz@TestProxySteerable.test_proxy_steerable_bind_to_random_with_argsc                 C   s°  t  ¡ dk r
tdƒ‚t t jt jt jt j¡}d}| |¡}| 	|¡}| 
|¡}| |¡}| ¡  t d¡ d}| j t j¡}| d||f ¡ | j t j¡}	|	 d||f ¡ | j t j¡}
|
 d||f ¡ | j t j¡}| d||f ¡ | |¡ | j ||	|
|g¡ ||  |	¡ksJ ‚||  |
¡ks˜J ‚| d¡ |  |¡}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                 S   s   g | ]
}t  d |¡d ‘qS )z=Qr   )ÚstructÚunpack)Ú.0Úxr1   r1   r2   Ú
<listcomp>Y   s    zFTestProxySteerable.test_proxy_steerable_statistics.<locals>.<listcomp>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,   r-   r.   r/   r0   ÚstatsÚ	stats_intr1   r1   r2   Útest_proxy_steerable_statistics?   s@   








z2TestProxySteerable.test_proxy_steerable_statisticsN)Ú__name__Ú
__module__Ú__qualname__r3   r:   rG   r1   r1   r1   r2   r      s    r   )r<   r   r   r   Ú	zmq.testsr   r   r   ÚContextÚDeviceÚcontext_factoryr   r1   r1   r1   r2   Ú<module>   s   
