
    Zd]                          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dS )    N)devices)PYPYBaseZMQTestCase)      c                   L    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dS )TestMonitoredQueue       in   outc                    t          j        t          j        t          j        t          j        ||          | _        | j                            t          j                  }| j                            t          j                  }| j                            t          j                  }|	                    d          }|	                    d          }|	                    d          }	|
                    t          j        |           | j                            d|z             | j                            d|z             | j                            d|	z             | j                                         t!          j        d           	 |                    t          j                   n# t          j        $ r Y nw xY w| j                            |||g           |||fS )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
             7lib/python3.11/site-packages/zmq/tests/test_monqueue.pybuild_devicezTestMonitoredQueue.build_device   s   2HchJ
 
 ##CH--l!!#(++l!!#'**))*;<<''(9::''(9::s}g...3e;<<< 4u <=== 4u <===
3	 s{++++| 	 	 	D	UC-...c3s   F, ,F>=F>c                    t          d          D ]0}t          | j        dd           }| nt          j        d           1|9t          j        | j        j        j        d          }|	                                 | j
        D ]}|                                 ||                    d           | j                            d           d S )N2   _contextg?T)targetdaemon   )timeout)rangegetattrr   r   r    	threadingThreadr4   termr   r$   closejoin)r&   ir   tr   s        r0   teardown_devicez"TestMonitoredQueue.teardown_device-   s    r 	 	Adk:t<<G"JsOOOO (<(A$OOOAGGIIIl 	 	FLLNNNNFF1F#####r
   c                 v   |                                  \  }}}d                                }|                    |           |                     |          }||k    sJ d                                }|                    |           |                     |          }||k    sJ |                                  d S )N	   hello bob   hello alicer1   splitsend_multipartr!   rB   )r&   r*   r+   r,   alicesbobss         r0   
test_replyzTestMonitoredQueue.test_replyB   s    ++--sC##%%V$$$""3''~~~~##%%4   $$U++~~~~r
   c                    |                                  \  }}}d                                }|                    |           d                                }|                    |           d                                }|                    |           |                     |          }||k    sJ |                     |          }||k    sJ |                     |          }||k    sJ d                                }|                    |           |                     |          }||k    sJ |                                  d S )NrD      hello again   hello again and againrE   rF   )r&   r*   r+   r,   rI   alices2alices3rJ   s           r0   
test_queuezTestMonitoredQueue.test_queueN   sE   ++--sC##%%V$$$ &&((W%%%*0022W%%%""3''~~~~""3''$""3''$##%%4   $$U++~~~~r
   c                    |                                  \  }}}d                                }|                    |           d                                }|                    |           d                                }|                    |           |                     |          }||k    sJ |                     |          }dg|z   |k    sJ |                     |          }||k    sJ |                     |          }||k    sJ |                     |          }dg|z   |k    sJ d                                }|                    |           |                     |          }||k    sJ |                     |          }dg|z   |k    sJ |                     |          }dg|z   |k    sJ |                                  d S )NrD   rM   rN   r   rE   r   rF   	r&   r*   r+   r,   rI   rO   rP   rJ   monss	            r0   test_monitorzTestMonitoredQueue.test_monitorb   s   ++--sC##%%V$$$ &&((W%%%*0022W%%%""3''~~~~""3''w~%%%%""3''$""3''$""3''w D((((##%%4   $$U++~~~~""3''w D((((""3''x$$&&&&r
   c                    |                      ddd          \  }}}d                                }|                    |           d                                }|                    |           d                                }|                    |           |                     |          }||k    sJ |                     |          }dg|z   |k    sJ |                     |          }||k    sJ |                     |          }||k    sJ |                     |          }dg|z   |k    sJ d                                }|                    |           |                     |          }||k    sJ |                     |          }dg|z   |k    sJ |                     |          }dg|z   |k    sJ |                                  d S )Nr
   s   foos   barrD   rM   rN   rE   rF   rS   s	            r0   test_prefixzTestMonitoredQueue.test_prefix~   s   ++C@@sC##%%V$$$ &&((W%%%*0022W%%%""3''~~~~""3''x$$&&&&""3''$""3''$""3''x'!T))))##%%4   $$U++~~~~""3''x'!T))))""3''x$$&&&&r
   c                    |                      d          \  }}}d                                }|                    |           d                                }|                    |           d                                }|                    |           |                     |          }||k    sJ |                     |          }||k    sJ |                     |          }||k    sJ d                                }|                    |           |                     |          }||k    sJ |                     |          }dg|z   |k    sJ |                                  d S )Nr   rD   rM   rN   rE   rF   rS   s	            r0   test_monitor_subscribez)TestMonitoredQueue.test_monitor_subscribe   sq   ++F33sC##%%V$$$ &&((W%%%*0022W%%%""3''~~~~""3''$""3''$##%%4   $$U++~~~~""3''x$$&&&&r
   c                    t          j        t          j        t          j        t          j        dd          }|| _        |                    t          j        d           |                    t          j        d           |	                    t          j        d           |
                    d          }|                    d          }| j                            t          j                  }d|_        | j                            t          j                  }d|_        | j                            ||g           |                    d|z             |                    d|z             |                                 t)          j        d           t          j                    d	k    rUd
dg}||fD ]L}|                    |           	 |                    t          j                   8# t          j        $ r Y Iw xY wddg}|                    dg|z              |                     |          }	|	dg|z   k    sJ |                    |	           |                     |          }
|
dg|z   k    sJ |                                  dS )ztest router-router MQ devicesr   r   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_inforH   recvr"   r#   r!   rB   )r&   devportaportbabping_msgsmsgbmsgamsgs              r0   test_router_routerz%TestMonitoredQueue.test_router_router   se   *J
CGUF
 
 #*a(((3:q)))3:q)))**+<==++,=>>L
++
L
++
QF###			&.///			&.///		
1!!Y..)HV    ***FF3;''''|   D"	$#&&&""1%%v|####	""1%%v|####s   	G))G;:G;c                    t          j        t          j        t          j        t          j                  x| _        }|                    t          j        d           |	                    t          j        d           |
                    t          j        d           |                                 |                                  d S )Nr   )r   r   r   r^   re   r   r   r_   r`   ra   rb   r   rB   )r&   rj   s     r0   test_default_mq_argsz'TestMonitoredQueue.test_default_mq_args   s    #8J
CG
 
 	
c 	#*a(((3:q)))3:q)))		r
   c                 p   | j                             t          j                  }| j                             t          j                  }| j                             t          j                  }| j                            |||g           d}d}|                     t          t          j        |||           d S )Ninout)r   r   r   r^   re   r   r$   r%   assertRaises	TypeErrorr   monitoredqueue)r&   insoutsrT   s       r0   test_mq_check_prefixz'TestMonitoredQueue.test_mq_check_prefix   s    l!!#*--|""3:..|""37++S$-...)W%;S$MMMMMr
   N)r
   r   r   )__name__
__module____qualname__r1   rB   rK   rQ   rU   rW   rY   rt   rv   r    r
   r0   r	   r	      s           6$ $ $*
 
 
  (  8  8  ,& & &P	 	 	N N N N Nr
   r	   )r;   r   r   r   	zmq.testsr   r   rh   ContextDevicecontext_factoryr	   r   r
   r0   <module>r      s         



       + + + + + + + + 13!!V++ &)[GN"ZN ZN ZN ZN ZN ZN ZN ZN ZN ZNr
   