
    *Vft                         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yy)    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
y	)

TestDevicec                     t         j                  t         j                  t         j                  fD ]G  }t	        j
                  |t         j                  t         j                        }|j                  |k(  sJ ~I y )N)zmqSTREAMER	FORWARDERQUEUEr   DevicePAIRdevice_type)selfdevtypedevs      ^/var/www/html/software/conda/envs/catlas/lib/python3.12/site-packages/zmq/tests/test_device.pytest_device_typeszTestDevice.test_device_types   sS    cmmSYY? 	G..#((CHH=C??g---	    c                 b   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u sJ ~y )NT)
r   r   r   r   SUBPUBin_typeout_typer   daemon)r   r   s     r   test_device_attributesz!TestDevice.test_device_attributes   sw    nnSYY9{{cgg%%%||sww&&&#))+++zzT!!!r   c                    t        j                         dv r t        dt        j                         z        t        j                  t         j
                  t         j                  d      }| j                  j                  t         j                        }|j                  d      }|j                  d|z         |j                          t        j                  d       d}|j                  |       || j!                  |      k(  sJ ~|j#                          t        j                  t         j
                  t         j                  d      }| j                  j                  t         j                        }|j                  d      }|j%                  d|z         |j                          t        j                  d       d}|j                  |       || j!                  |      k(  sJ ~|j#                          y 	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   sf   ?? 22BS__EVVWW""399cggr:ll!!#''*&&'89+d23		

4diin$$$		""399cggr:ll!!#''*&&'89,t34		

4diin$$$		r   c                    t        j                         dv r t        dt        j                         z        t        j                  t         j
                  t         j                  d      }|j                  d      }| j                  j                  t         j                        }|j                  d|z         |j                          t        j                  d       d}|j                  |       || j!                  |      k(  sJ ~|j#                          t        j                  t         j
                  t         j                  d      }|j                  d      }| j                  j                  t         j                        }|j                  d|z         |j                          t        j                  d       d}|j                  |       || j!                  |      k(  sJ ~|j#                          y 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   sf   ?? 22BS__EVVWW""399cggr:))*;<ll!!#''*(4/0		

4diin$$$		""399cggr:))*;<ll!!#''*(4/0		

4diin$$$		r   c                 6   t        j                  t        j                  t        j                  d      }d}g }d\  }}|j                  |j                  |||      |j                  |||      g       |D ]!  }||k  s||kD  s| j                  d|z         # y )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    ""388SXXr:!S**53*M++EC#+N	
  	?DczTCZ		6=>	?r   c                    t        j                  t        j                  t        j                  d      }d}	 t        d      D ]  }|j                  |dd        	 | j                  d       y # t        j                  $ r
}Y d }~y 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|    ""388SXXr:!	,2Y R**555*QR
 II*+  		s   $A. .BBc                    t        j                         dk  rt        d      t        j                  t         j
                  t         j                  t         j                        }d}|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"                  j%                  |||	g       || j'                  |      k(  sJ || j'                  |	      k(  sJ y )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   se   !F*899!!#((CHHchh?!))%0++E2++E2		

4||""388,Wt},-||""388,Wu~-.ll!!#((+Guen,-		#T4-.diio%%%diin$$$r   c           	         t        j                         dk  rt        d      t        j                  t         j
                  t         j                  t         j                        }d}g }d\  }}|j                  |j                  |||      |j                  |||      |j                  |||      g       |D ]!  }||k  s||kD  s| j                  d|z         # y )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!!#((CHHchh?!S**53*M++EC#+N++EC#+N	
  	?DczTCZ		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y)TestDeviceGreenc                    | j                   j                  t        j                        }| j                   j                  t        j                        }| j
                  j                  ||g       |j                  d      }t        j                  t        j                  j                  t        j                  ||      }|j                  d|z         |j                  d       t        j                  d      }|j!                          t        j                  |j"                        }|j%                  d      dk(  sJ |j'                          |j)                  d       y )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    ,,%%cgg.C,,%%cgg.CLLc
+**+<=DSYY--syy#sCAKK,t34HHUOnnQ'GMMO||CHH-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      sV     
  M M%([[GNN"C? C?L )_  r   