o
    ¹i$  ã                   @   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 )NÚzmqtest)ÚloggingÚ	getLoggerÚsetLevelÚDEBUG)ÚselfÚlogger© r   úM/var/www/edux/Edux_v2/venv/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   twoonlyÚ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   Ú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 )Nr2   s   INFOÚdebug_messages   DEBUGÚinfo_message)r   r   r   r   r)   r4   r%   r$   r   r'   r(   r*   ÚsetRootTopicÚdebugr5   r6   r7   r8   r,   r+   r-   )r   r   r   Úsub_everythingÚsub_only_infoÚ	msg_debugr   Úmsg_debug_responseÚmsg_infoÚmsg_info_response_everythingÚ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   Ú
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)   r4   r%   r   r   r   r   r   r+   r,   r-   )r   r   r   r   r   rJ   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)srN   s   UNITTEST info messageúdebug messages   UNITTEST debug message)r   r   rO   ÚsetFormatterr)   r4   r%   r   r   r   r   r   r+   r,   r>   r-   ©r   r   r   r   Ú	formatterr   rJ   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)srN   s   info message
rS   s   UNITTEST DEBUG debug message)r   r   rO   rT   r
   r)   r4   r%   r   r   r   r   r   r+   r,   r>   r-   rU   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>.MessagerJ   c                 S   s
   || _ d S ©N©rJ   )r   rJ   r   r   r   Ú__init__µ   s   
z=TestPubLog.test_custom_message_type.<locals>.Message.__init__Úreturnc                 S   s   | j S rY   rZ   )r   r   r   r   Ú__str__¸   s   z<TestPubLog.test_custom_message_type.<locals>.Message.__str__N)Ú__name__Ú
__module__Ú__qualname__Ústrr[   r]   r   r   r   r   ÚMessage´   s    rb   rG   r!   rH   )r   r+   r,   r-   )r   rb   r   r   r   rJ   r   rL   r   r   r   Útest_custom_message_type³   s   z#TestPubLog.test_custom_message_typerY   )r^   r_   r`   r%   r   Úpropertyr   r   r0   r1   r:   rF   rM   rR   rW   rX   rc   r   r   r   r   r      s    


r   )r   r   r   Úzmq.logr   Ú	zmq.testsr   r   r   r   r   r   Ú<module>   s   