U
    /e                     @   sh   d Z ddlZddlmZ ddlmZ ddlZddlZddlm	Z	 dd Z
dd	 Zed
d Zdd ZdS )zTests for heartbeat thread    N)no_type_check)patch)	Heartbeatc               
   C   s`   t d } t| dB}tdd|_ttj |   W 5 Q R X |j	dksRt
W 5 Q R X d S )N_try_bind_socketizfails for unknown error types   )r   r   objectzmqZMQErrorside_effectpytestraises_bind_socket
call_countAssertionErrorZheartZmock_try_bind r   B/tmp/pip-unpacked-wheel-g43y689f/ipykernel/tests/test_heartbeat.pytest_port_bind_failure_raises   s    r   c               	   C   s:   t d } t| d}|   |jdks,tW 5 Q R X d S )Nr   r   )r   r   r   r   r   r   r   r   r   r   test_port_bind_success   s    r   c               	   C   s   z
t j W n tk
r$   dt _Y nX zTtd } t| d6}tt jdtt jdgdgd  |_	| 
  W 5 Q R X W 5 t jdkrt `X d S )Ni90  r   zfails for non-bind unixzfails for non-bind windowsr   d   )errnoZWSAEADDRINUSEAttributeErrorr   r   r   r   r	   
EADDRINUSEr
   r   r   r   r   r   test_port_bind_failure_recovery    s    

r   c               
   C   sb   t d } t| dD}ttjd|_t	tj | 
  W 5 Q R X |jdksTtW 5 Q R X d S )Nr   zfails for non-bindr   )r   r   r   r   r	   r   r   r
   r   r   r   r   r   r   r   r   r   'test_port_bind_failure_gives_up_retries7   s    r   )__doc__r   typingr   Zunittest.mockr   r   r   Zipykernel.heartbeatr   r   r   r   r   r   r   r   r   <module>   s   	
