o
    ¹i]   ã                   @   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Ú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Úmport© r-   úR/var/www/edux/Edux_v2/venv/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ÚThreadr1   Ú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   r?   )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 )Nr@   ó   hello againó   hello again and againrA   rB   )r#   r'   r(   r)   rE   Úalices2Úalices3rF   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 )Nr@   rH   rI   r	   rA   r
   rB   ©	r#   r'   r(   r)   rE   rJ   rK   rF   Ú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   barr@   rH   rI   rA   rB   rM   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
   r@   rH   rI   rA   rB   rM   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_monÚbind_in_to_random_portÚbind_out_to_random_portr   r   ÚDEALERÚidentityr!   r"   Úconnectr   r   r   Úzmq_version_inforD   Úrecvr   r    r   r?   )r#   ÚdevÚportaÚportbÚaÚbÚping_msgÚsÚmsgÚbmsgÚ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   rU   r\   r   r   rV   rW   rX   rY   r   r?   )r#   ra   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   rU   r\   r   r!   r"   ÚassertRaisesÚ	TypeErrorr   Úmonitoredqueue)r#   ÚinsÚoutsrN   r-   r-   r.   Útest_mq_check_prefixã   s   z'TestMonitoredQueue.test_mq_check_prefixN)r   r	   r
   )Ú__name__Ú
__module__Ú__qualname__r/   r?   rG   rL   rO   rP   rQ   rk   rl   rt   r-   r-   r-   r.   r      s    
(r   )r8   r   r   r   Ú	zmq.testsr   r   r_   ÚContextÚDeviceÚcontext_factoryr   r-   r-   r-   r.   Ú<module>   s   
