o
    ¹¼tf]   ã                   @   sb   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 ¡ dkr'ejej	_
G dd„ deƒZdS )é    N)Údevices)ÚPYPYÚBaseZMQTestCase)é   é   c                   @   s^   e Zd Zddd„Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚTestMonitoredQueueó    ó   inó   outc           
      C   sö   t  tjtjtj||¡| _| j tj¡}| j tj¡}| j tj¡}| 	d¡}| 	d¡}| 	d¡}	| 
tj|¡ | j d| ¡ | j d| ¡ | j d|	 ¡ | j ¡  t d¡ z| tj¡ W n
 tjyl   Y nw | j |||g¡ |||fS )Nútcp://127.0.0.1útcp://127.0.0.1:%igš™™™™™É?)r   ÚThreadMonitoredQueueÚzmqZPAIRÚPUBÚdeviceÚcontextÚsocketZSUBZbind_to_random_portÚ
setsockoptZ	SUBSCRIBEZ
connect_inZconnect_outZconnect_monÚstartÚtimeÚsleepÚrecv_multipartÚNOBLOCKÚZMQErrorÚsocketsÚextend)
ÚselfZmon_subZ	in_prefixZ
out_prefixÚaliceÚbobÚmonZaportZbportZmport© r    ú`/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/zmq/tests/test_monqueue.pyÚbuild_device   s,   ÿ




ÿ
zTestMonitoredQueue.build_devicec                 C   s   t dƒD ]}t| jdd ƒ}|d ur nt d¡ q|d ur+tj| jjjdd}| 	¡  | j
D ]}| ¡  q.|d ur?|jdd | jjdd d S )Né2   Ú_contextgš™™™™™¹?T)ÚtargetÚdaemoné   )Útimeout)ÚrangeÚgetattrr   r   r   Ú	threadingÚThreadr$   Útermr   r   ÚcloseÚjoin)r   Úir   Útr   r    r    r!   Úteardown_device-   s   

z"TestMonitoredQueue.teardown_devicec                 C   sj   |   ¡ \}}}d ¡ }| |¡ |  |¡}||ksJ ‚d ¡ }| |¡ |  |¡}||ks/J ‚|  ¡  d S )Nó	   hello bobó   hello alice©r"   ÚsplitÚsend_multipartr   r2   )r   r   r   r   ÚalicesÚbobsr    r    r!   Ú
test_replyB   s   



zTestMonitoredQueue.test_replyc                 C   sº   |   ¡ \}}}d ¡ }| |¡ d ¡ }| |¡ d ¡ }| |¡ |  |¡}||ks-J ‚|  |¡}||ks8J ‚|  |¡}||ksCJ ‚d ¡ }| |¡ |  |¡}||ksWJ ‚|  ¡  d S )Nr3   ó   hello againó   hello again and againr4   r5   )r   r   r   r   r8   Úalices2Úalices3r9   r    r    r!   Ú
test_queueN   s$   







zTestMonitoredQueue.test_queuec           	      C   s*  |   ¡ \}}}d ¡ }| |¡ d ¡ }| |¡ d ¡ }| |¡ |  |¡}||ks-J ‚|  |¡}dg| |ks;J ‚|  |¡}||ksFJ ‚|  |¡}||ksQJ ‚|  |¡}dg| |ks_J ‚d ¡ }| |¡ |  |¡}||kssJ ‚|  |¡}dg| |ksJ ‚|  |¡}dg| |ksJ ‚|  ¡  d S )Nr3   r;   r<   r	   r4   r
   r5   ©	r   r   r   r   r8   r=   r>   r9   Úmonsr    r    r!   Útest_monitorb   s4   











zTestMonitoredQueue.test_monitorc           	      C   s0  |   ddd¡\}}}d ¡ }| |¡ d ¡ }| |¡ d ¡ }| |¡ |  |¡}||ks0J ‚|  |¡}dg| |ks>J ‚|  |¡}||ksIJ ‚|  |¡}||ksTJ ‚|  |¡}dg| |ksbJ ‚d ¡ }| |¡ |  |¡}||ksvJ ‚|  |¡}dg| |ks„J ‚|  |¡}dg| |ks’J ‚|  ¡  d S )Nr   s   foos   barr3   r;   r<   r4   r5   r@   r    r    r!   Útest_prefix~   s4   











zTestMonitoredQueue.test_prefixc           	      C   sØ   |   d¡\}}}d ¡ }| |¡ d ¡ }| |¡ d ¡ }| |¡ |  |¡}||ks.J ‚|  |¡}||ks9J ‚|  |¡}||ksDJ ‚d ¡ }| |¡ |  |¡}||ksXJ ‚|  |¡}dg| |ksfJ ‚|  ¡  d S )Nr
   r3   r;   r<   r4   r5   r@   r    r    r!   Útest_monitor_subscribeš   s(   








z)TestMonitoredQueue.test_monitor_subscribec              	   C   sx  t  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| ¡ | d| ¡ | ¡  t d¡ t ¡ d	kr‰d
dg}||fD ]}| |¡ z| tj¡ W qo tjyˆ   Y qow ddg}| dg| ¡ |  |¡}	|	dg| ks£J ‚| |	¡ |  |¡}
|
dg| 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_monZbind_in_to_random_portZbind_out_to_random_portr   r   ÚDEALERÚidentityr   r   Úconnectr   r   r   Úzmq_version_infor7   Úrecvr   r   r   r2   )r   ÚdevZportaZportbÚaÚbZping_msgÚsÚmsgZbmsgZamsgr    r    r!   Útest_router_router°   sF   ÿ



ÿ


z%TestMonitoredQueue.test_router_routerc                 C   sX   t  tjtjtj¡ | _}| tjd¡ | 	tjd¡ | 
tjd¡ | ¡  |  ¡  d S )Nr   )r   r   r   rH   rM   r   r   rI   rJ   rK   rL   r   r2   )r   rR   r    r    r!   Útest_default_mq_argsØ   s   
ÿz'TestMonitoredQueue.test_default_mq_argsc                 C   s\   | j  tj¡}| j  tj¡}| j  tj¡}| j |||g¡ d}d}|  t	t
j|||¡ d S )NÚinÚout)r   r   r   rH   rM   r   r   r   ÚassertRaisesÚ	TypeErrorr   Zmonitoredqueue)r   ZinsZoutsrA   r    r    r!   Útest_mq_check_prefixã   s   z'TestMonitoredQueue.test_mq_check_prefixN)r   r	   r
   )Ú__name__Ú
__module__Ú__qualname__r"   r2   r:   r?   rB   rC   rD   rW   rX   r]   r    r    r    r!   r      s    
(r   )r+   r   r   r   Z	zmq.testsr   r   rP   ÚContextZDeviceZcontext_factoryr   r    r    r    r!   Ú<module>   s   
