U
    luf$  ã                   @   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   ú6/tmp/pip-unpacked-wheel-h6ekxre8/zmq/tests/test_log.pyr      s    
zTestPubLog.loggerNc                 C   sx   |d k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|k	s&t‚| j |j	¡ t | j| j¡}| j |j	¡ |j|ks`t‚| 
tj¡ | j|_| |¡ | 	tj¡}| j |¡ | tj| j ¡ ¡ | | j¡ dd l}| d¡ d}| |¡ | ¡ \}}|dksît‚||d  d¡kst‚| |¡ d S )Nr   g      Ð?Úmessageó   zmq.INFOÚ
Úutf8)r   Úcontextr   r   ÚifaceÚctxÚAssertionErrorÚ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|ksPt‚|j|jks`t‚|j| jkspt‚| tj| j
 ¡ ¡ dd l}| d¡ d}| |¡ | ¡ \}}|dks¼t‚||d  d¡ksÒt‚| |¡ 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   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st‚||d  ¡ ks¤t‚| |¡ 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   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s¢t‚d}| |¡ | ¡ \}}	|dksÈt‚| ¡ \}}
|dksàt‚|	|
ksìt‚| |¡ d S )Nr2   s   INFOZdebug_messages   DEBUGZinfo_message)r   r   r   r   r)   r3   r$   r#   r   r'   r(   r*   ZsetRootTopicÚdebugr4   r5   r6   r7   r,   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sNt‚qN| |¡ 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   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sdt‚| |¡ d S )Nz%(message)s UNITTEST
úinfo messages   info message UNITTEST
)r   r   Ú	FormatterÚ
formattersÚINFOr)   r3   r$   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sft‚| d¡ | ¡ \}}|dksˆt‚| |¡ d S )NzUNITTEST %(message)srA   s   UNITTEST info messageúdebug messages   UNITTEST debug message)r   r   rB   ÚsetFormatterr)   r3   r$   r   r   r   r   r   r+   r,   r&   r9   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sjt‚| d¡ | ¡ \}}|dksŒt‚| |¡ d S )NzUNITTEST DEBUG %(message)srA   s   info message
rF   s   UNITTEST DEBUG debug message)r   r   rB   rG   r	   r)   r3   r$   r   r   r   r   r   r+   r,   r&   r9   r-   rH   r   r   r   Útest_custom_debug_formatter¥   s    


z&TestPubLog.test_custom_debug_formatterc                 C   s`   G dd„ dƒ}|   ¡ \}}}d}| ||ƒ¡ | ¡ \}}|dksFt‚|dksRt‚| |¡ d S )Nc                   @   s(   e Zd Zedœdd„Zedœdd„ZdS )z4TestPubLog.test_custom_message_type.<locals>.Message©r=   c                 S   s
   || _ d S ©NrL   )r
   r=   r   r   r   Ú__init__µ   s    z=TestPubLog.test_custom_message_type.<locals>.Message.__init__)Úreturnc                 S   s   | j S rM   rL   )r
   r   r   r   Ú__str__¸   s    z<TestPubLog.test_custom_message_type.<locals>.Message.__str__N)Ú__name__Ú
__module__Ú__qualname__ÚstrrN   rP   r   r   r   r   ÚMessage´   s   rU   r;   r    r<   )r   r+   r,   r&   r-   )r
   rU   r   r   r   r=   r   r?   r   r   r   Útest_custom_message_type³   s    z#TestPubLog.test_custom_message_type)N)rQ   rR   rS   r$   r   Úpropertyr   r   r0   r1   r8   r:   r@   rE   rJ   rK   rV   r   r   r   r   r      s   


r   )r   r   r   Zzmq.logr   Z	zmq.testsr   r   r   r   r   r   Ú<module>   s
   