
    ytf]                          d dl Z d dlZd dlZd dlmZ d dlmZmZ es ej                         dk\  rej                  ej                  _
         G d de      Zy)    N)devices)PYPYBaseZMQTestCase)      c                   J    e Zd ZddZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)TestMonitoredQueuec                    t        j                  t        j                  t        j                  t        j                  ||      | _        | j                  j                  t        j                        }| j                  j                  t        j                        }| j                  j                  t        j                        }|j                  d      }|j                  d      }|j                  d      }	|j                  t        j                  |       | j
                  j                  d|z         | j
                  j                  d|z         | j
                  j                  d|	z         | j
                  j                          t!        j"                  d       	 |j%                  t        j&                         | j*                  j-                  |||g       |||fS # t        j(                  $ r Y 8w xY w)Ntcp://127.0.0.1tcp://127.0.0.1:%ig?)r   ThreadMonitoredQueuezmqPAIRPUBdevicecontextsocketSUBbind_to_random_port
setsockopt	SUBSCRIBE
connect_inconnect_outconnect_monstarttimesleeprecv_multipartNOBLOCKZMQErrorsocketsextend)
selfmon_sub	in_prefix
out_prefixalicebobmonaportbportmports
             a/var/www/html/software/conda/envs/higlass/lib/python3.12/site-packages/zmq/tests/test_monqueue.pybuild_devicezTestMonitoredQueue.build_device   su   22HHchhJ
 ##CHH-ll!!#((+ll!!#''*))*;<''(9:''(9:s}}g.3e;< 4u <= 4u <=

3	 s{{+ 	UC-.c3 || 		s   !G# #G98G9c                    t        d      D ]2  }t        | j                  dd       }| nt        j                  d       4 Et        j                  | j                  j                  j                  d      }|j                          | j                  D ]  }|j                           |j                  d       | j                  j                  d       y )N2   _contextg?T)targetdaemon   )timeout)rangegetattrr   r   r   	threadingThreadr1   termr   r!   closejoin)r#   ir   tr   s        r-   teardown_devicez"TestMonitoredQueue.teardown_device-   s    r 	Adkk:t<G"JJsO	   (<(<(A(A$OAGGIll 	FLLN	 FF1F#    c                 0   | j                         \  }}}dj                         }|j                  |       | j                  |      }||k(  sJ dj                         }|j                  |       | j                  |      }||k(  sJ | j	                          y )N	   hello bob   hello alicer.   splitsend_multipartr   r?   )r#   r'   r(   r)   alicesbobss         r-   
test_replyzTestMonitoredQueue.test_replyB   s    ++-sC##%V$""3'~~##%4 $$U+~~r@   c                    | j                         \  }}}dj                         }|j                  |       dj                         }|j                  |       dj                         }|j                  |       | j                  |      }||k(  sJ | j                  |      }||k(  sJ | j                  |      }||k(  sJ dj                         }|j                  |       | j                  |      }||k(  sJ | j	                          y )NrB      hello again   hello again and againrC   rD   )r#   r'   r(   r)   rG   alices2alices3rH   s           r-   
test_queuezTestMonitoredQueue.test_queueN   s   ++-sC##%V$ &&(W%*002W%""3'~~""3'$""3'$##%4 $$U+~~r@   c                    | j                         \  }}}dj                         }|j                  |       dj                         }|j                  |       dj                         }|j                  |       | j                  |      }||k(  sJ | j                  |      }dg|z   |k(  sJ | j                  |      }||k(  sJ | j                  |      }||k(  sJ | j                  |      }dg|z   |k(  sJ dj                         }|j                  |       | j                  |      }||k(  sJ | j                  |      }dg|z   |k(  sJ | j                  |      }dg|z   |k(  sJ | j	                          y )NrB   rK   rL      inrC      outrD   	r#   r'   r(   r)   rG   rM   rN   rH   monss	            r-   test_monitorzTestMonitoredQueue.test_monitorb   s   ++-sC##%V$ &&(W%*002W%""3'~~""3'w~%%%""3'$""3'$""3'w D(((##%4 $$U+~~""3'w D(((""3'x$$&&&r@   c                    | j                  ddd      \  }}}dj                         }|j                  |       dj                         }|j                  |       dj                         }|j                  |       | j                  |      }||k(  sJ | j                  |      }dg|z   |k(  sJ | j                  |      }||k(  sJ | j                  |      }||k(  sJ | j                  |      }dg|z   |k(  sJ dj                         }|j                  |       | j                  |      }||k(  sJ | j                  |      }dg|z   |k(  sJ | j                  |      }dg|z   |k(  sJ | j	                          y )Nr@   s   foos   barrB   rK   rL   rC   rD   rS   s	            r-   test_prefixzTestMonitoredQueue.test_prefix~   s   ++C@sC##%V$ &&(W%*002W%""3'~~""3'x$$&&&""3'$""3'$""3'x'!T)))##%4 $$U+~~""3'x'!T)))""3'x$$&&&r@   c                 N   | j                  d      \  }}}dj                         }|j                  |       dj                         }|j                  |       dj                         }|j                  |       | j                  |      }||k(  sJ | j                  |      }||k(  sJ | j                  |      }||k(  sJ dj                         }|j                  |       | j                  |      }||k(  sJ | j                  |      }dg|z   |k(  sJ | j	                          y )NrR   rB   rK   rL   rC   rD   rS   s	            r-   test_monitor_subscribez)TestMonitoredQueue.test_monitor_subscribe   s(   ++F3sC##%V$ &&(W%*002W%""3'~~""3'$""3'$##%4 $$U+~~""3'x$$&&&r@   c                    t        j                  t        j                  t        j                  t        j                  dd      }|| _        |j                  t        j                  d       |j                  t        j                  d       |j                  t        j                  d       |j                  d      }|j                  d      }| j                  j                  t        j                        }d|_        | j                  j                  t        j                        }d|_        | j                   j#                  ||g       |j%                  d|z         |j%                  d|z         |j'                          t)        j*                  d       t        j,                         d	k\  r>d
dg}||fD ]3  }|j/                  |       	 |j1                  t        j2                         5 ddg}|j/                  dg|z          | j7                  |      }	|	dg|z   k(  sJ |j/                  |	       | j7                  |      }
|
dg|z   k(  sJ | j9                          y# t        j4                  $ r Y w xY w)ztest router-router MQ devicesrQ   rR   r   r      a   br   r   )   r   r   s   pings   pongs   hellos   thereN)r   r   r   ROUTERr   r   setsockopt_inLINGERsetsockopt_outsetsockopt_monbind_in_to_random_portbind_out_to_random_portr   r   DEALERidentityr!   r"   connectr   r   r   zmq_version_inforF   recvr   r    r   r?   )r#   devportaportbabping_msgsmsgbmsgamsgs              r-   test_router_routerz%TestMonitoredQueue.test_router_router   s   **JJ

CGGUF
 #**a(3::q)3::q)**+<=++,=>LL

+
LL

+
QF#			&./			&./		

1!Y.)HV   *FF3;;' "	$#&""1%v|###	""1%v|### || s   II54I5c                    t        j                  t        j                  t        j                  t        j
                        x| _        }|j                  t        j                  d       |j                  t        j                  d       |j                  t        j                  d       |j                          | j                          y )Nr   )r   r   r   r^   re   r   r   r_   r`   ra   rb   r   r?   )r#   rj   s     r-   test_default_mq_argsz'TestMonitoredQueue.test_default_mq_args   s    #88JJ

CGG
 	
c 	#**a(3::q)3::q)		r@   c                    | j                   j                  t        j                        }| j                   j                  t        j                        }| j                   j                  t        j
                        }| j                  j                  |||g       d}d}| j                  t        t        j                  |||       y )Ninout)r   r   r   r^   re   r   r!   r"   assertRaises	TypeErrorr   monitoredqueue)r#   insoutsrT   s       r-   test_mq_check_prefixz'TestMonitoredQueue.test_mq_check_prefix   s    ll!!#**-||""3::.||""377+S$-.)W%;%;S$Mr@   N)r@   rQ   rR   )__name__
__module____qualname__r.   r?   rI   rO   rU   rW   rY   rt   rv   r    r@   r-   r	   r	      s6    6$*
(88,&P	Nr@   r	   )r8   r   r   r   	zmq.testsr   r   rh   ContextDevicecontext_factoryr	   r   r@   r-   <module>r      sN      
  +3!V+ &)[[GNN"ZN ZNr@   