o
    ¹¼tf$  ã                   @   sD   d dl Z d dlZd dlZd dlmZ d dlmZ G dd„ deƒZdS )é    N)Úhandlers)ÚBaseZMQTestCasec                   @   sr   e Zd ZdZdZed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 )Ú
TestPubLogzinproc://zmqlogÚzmqc                 C   s   t  d¡}| t j¡ |S )NZzmqtest)ÚloggingÚ	getLoggerÚsetLevelÚDEBUG)ÚselfÚlogger© r   ú[/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/zmq/tests/test_log.pyr      s   
zTestPubLog.loggerNc                 C   sx   |d u r| j n|}| j}|  tjtj¡\}}t |¡}| t	j
¡ ||_| |¡ | tj| ¡ ¡ t d¡ |||fS )Nçš™™™™™¹?)Útopicr   Úcreate_bound_pairr   ÚPUBÚSUBr   Ú
PUBHandlerr   r   r	   Ú
root_topicÚ
addHandlerÚ
setsockoptÚ	SUBSCRIBEÚencodeÚtimeÚsleep)r
   r   r   ÚpubÚsubÚhandlerr   r   r   Úconnect_handler   s   



zTestPubLog.connect_handlerc           	      C   s  | j }| j}t | j¡}|j|usJ ‚| j |j¡ t | j| j¡}| j |j¡ |j|u s0J ‚| 	t
j¡ | j|_| |¡ | tj¡}| j |¡ | tj| j ¡ ¡ | | j¡ dd l}| d¡ d}| |¡ | ¡ \}}|dkswJ ‚||d  d¡ks‚J ‚| |¡ d S )Nr   g      Ð?Úmessageó   zmq.INFOÚ
Úutf8)r   Úcontextr   r   ÚifaceÚctxÚsocketsÚappendÚsocketr   r   r	   r   r   r   r   r   r   r   r   Úconnectr   r   ÚinfoÚrecv_multipartÚremoveHandler)	r
   r   r%   r   r   r   Úmsg1r   Úmsg2r   r   r   Útest_init_iface$   s.   


zTestPubLog.test_init_ifacec           	      C   sà   |   tjtj¡\}}| j}t |¡}| tj	¡ | j
|_| |¡ |j|u s(J ‚|j|ju s0J ‚|j| ju s8J ‚| tj| j
 ¡ ¡ dd l}| d¡ d}| |¡ | ¡ \}}|dks^J ‚||d  d¡ksiJ ‚| |¡ d S )Nr   r   r   r    r!   r"   )r   r   r   r   r   r   r   r   r   r	   r   r   r   r(   r%   r#   r   r   r   r   r   r*   r+   r,   )	r
   r   r   r   r   r   r-   r   r.   r   r   r   Útest_init_socket@   s$   



zTestPubLog.test_init_socketc                 C   s²   |   ¡ \}}}|j | j¡ |j tj¡}| j |¡ | 	| j¡ | 
tjd¡ d|_d}| |¡ |  tj|jtj¡ | ¡ \}}|dksHJ ‚||d  ¡ ksRJ ‚| |¡ d S )Nó    s   twoonlyZignoreds   twoonly.INFOr!   )r   r(   Úbindr$   r#   r   r   r&   r'   r)   r   r   r   r*   ÚassertRaisesErrnoÚEAGAINÚrecvÚNOBLOCKr+   r   r,   )r
   r   r   r   Zsub2r-   r   r.   r   r   r   Útest_root_topicW   s   
zTestPubLog.test_root_topicc                 C   sú   |   ¡ \}}}| tjd¡ |j | j¡ |j tj¡}| j	 
|¡ | | j¡ | tjd¡ | d¡ d}| |¡ |  tj|jtj¡ | ¡ \}}|dksQJ ‚d}| |¡ | ¡ \}}	|dksdJ ‚| ¡ \}}
|dkspJ ‚|	|
ksvJ ‚| |¡ d S )Nr1   s   INFOZdebug_messages   DEBUGZinfo_message)r   r   r   r   r(   r2   r$   r#   r   r&   r'   r)   ZsetRootTopicÚdebugr3   r4   r5   r6   r+   r*   r,   )r
   r   r   Zsub_everythingZsub_only_infoZ	msg_debugr   Zmsg_debug_responseZmsg_infoZmsg_info_response_everythingZmsg_info_response_onlyinfor   r   r   Útest_blank_root_topich   s*   


z TestPubLog.test_blank_root_topicc                 C   s„   |   ¡ \}}}| jd  ¡ }d|dgfd|d ¡ gfd|d ¡  d ¡ gffD ]\}}| |¡ | ¡ }||ks:J ‚q'| |¡ d S )Nz.INFOÚhelloó   hello
u   hÃ©llou   hÃ©llo
u   tÃ¸pic::hÃ©llou   .tÃ¸pic)r   r   r   r*   r+   r,   )r
   r   r   r   Z
base_topicÚmsgÚexpectedÚreceivedr   r   r   Útest_unicode_message€   s   
ý
zTestPubLog.test_unicode_messagec                 C   sr   |   ¡ \}}}t d¡|jtj< |j | j¡ | t	j
|j ¡ ¡ | d¡ | ¡ \}}|dks2J ‚| |¡ d S )Nz%(message)s UNITTEST
úinfo messages   info message UNITTEST
)r   r   Ú	FormatterÚ
formattersÚINFOr(   r2   r$   r   r   r   r   r   r*   r+   r,   )r
   r   r   r   r   r<   r   r   r   Ú$test_set_info_formatter_via_property   s   
z/TestPubLog.test_set_info_formatter_via_propertyc                 C   s–   |   ¡ \}}}t d¡}| |¡ |j | j¡ | tj	|j
 ¡ ¡ | d¡ | ¡ \}}|dks3J ‚| d¡ | ¡ \}}|dksDJ ‚| |¡ d S )NzUNITTEST %(message)sr@   s   UNITTEST info messageúdebug messages   UNITTEST debug message)r   r   rA   ÚsetFormatterr(   r2   r$   r   r   r   r   r   r*   r+   r8   r,   ©r
   r   r   r   Ú	formatterr   r<   r   r   r   Útest_custom_global_formatter—   s   



z'TestPubLog.test_custom_global_formatterc                 C   sš   |   ¡ \}}}t d¡}| |tj¡ |j | j¡ | t	j
|j ¡ ¡ | d¡ | ¡ \}}|dks5J ‚| d¡ | ¡ \}}|dksFJ ‚| |¡ d S )NzUNITTEST DEBUG %(message)sr@   s   info message
rE   s   UNITTEST DEBUG debug message)r   r   rA   rF   r	   r(   r2   r$   r   r   r   r   r   r*   r+   r8   r,   rG   r   r   r   Útest_custom_debug_formatter¥   s   


z&TestPubLog.test_custom_debug_formatterc                 C   s`   G dd„ dƒ}|   ¡ \}}}d}| ||ƒ¡ | ¡ \}}|dks#J ‚|dks)J ‚| |¡ d S )Nc                   @   s(   e Zd Zdefdd„Zdefdd„ZdS )z4TestPubLog.test_custom_message_type.<locals>.Messager<   c                 S   s
   || _ d S ©N©r<   )r
   r<   r   r   r   Ú__init__µ   s   
z=TestPubLog.test_custom_message_type.<locals>.Message.__init__Úreturnc                 S   s   | j S rK   rL   )r
   r   r   r   Ú__str__¸   s   z<TestPubLog.test_custom_message_type.<locals>.Message.__str__N)Ú__name__Ú
__module__Ú__qualname__ÚstrrM   rO   r   r   r   r   ÚMessage´   s    rT   r:   r    r;   )r   r*   r+   r,   )r
   rT   r   r   r   r<   r   r>   r   r   r   Útest_custom_message_type³   s   z#TestPubLog.test_custom_message_typerK   )rP   rQ   rR   r$   r   Úpropertyr   r   r/   r0   r7   r9   r?   rD   rI   rJ   rU   r   r   r   r   r      s    


r   )r   r   r   Zzmq.logr   Z	zmq.testsr   r   r   r   r   r   Ú<module>   s   