B
    18™\(  ã               @   s¬   d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ	 d dlm
Z G dd„ dejƒZG dd„ deejƒZe ee d	ƒd
¡G dd„ deejƒƒZedkr¨e ¡  dS )é    N)Úsupport)Úutils)Ú
functionalc               @   s   e Zd Zdd„ Zdd„ ZdS )ÚBaseStartServerc             C   s   t ‚d S )N)ÚNotImplementedError)Úself© r   úa/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/test/test_asyncio/test_server.pyÚnew_loop   s    zBaseStartServer.new_loopc          
      s  dd d ‰ ‡ ‡fdd„‰‡fdd„}dd	„ }| j  tj|tjd
| j dd¡‰|  ˆ ¡ ¡ | j  |ˆƒ¡‰ˆj	d
  
¡ ‰|  tj¡2 |  ‡‡fdd„¡ | j  ˆ¡ W d Q R X W d Q R X |  ˆj	g ¡ |  ˆj¡ |  ˆj¡ |  ˆ ¡ ¡ |  td¡ | j  ˆ ¡ ¡ W d Q R X d S )Ns   1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111é   ó   
c                s^   x(t dƒD ]}t d¡ ˆ ¡ r
P q
W t‚|  d¡ |  |¡ |  ˆ ¡ |  d¡ |  	¡  d S )Né
   gš™™™™™É?é   é   )
ÚrangeÚtimeÚsleepÚ
is_servingÚRuntimeErrorÚ
settimeoutÚconnectÚsendÚrecv_allÚclose)ÚsockÚaddrÚi)Ú	HELLO_MSGÚsrvr   r	   Úclient   s    




z3BaseStartServer.test_start_server_1.<locals>.clientc             “   s:   |   ¡ I d H  ˆ  ¡  | d¡ | ¡  | ¡ I d H  d S )Nó   1)ÚreadlineÚcancelÚwriter   Úwait_closed)ÚreaderÚwriter)Ú	main_taskr   r	   Úserve"   s
    
z2BaseStartServer.test_start_server_1.<locals>.servec          
   Ó   s0   | 4 I d H š |   ¡ I d H  W d Q I d H R X d S )N)Úserve_forever)r   r   r   r	   Úmain)   s    z1BaseStartServer.test_start_server_1.<locals>.mainr   F)ÚloopÚstart_servingc                s
   ˆ| ˆ ƒS )Nr   )r   )r   r   r   r	   Ú<lambda>6   ó    z5BaseStartServer.test_start_server_1.<locals>.<lambda>z	is closed)r+   Úrun_until_completeÚasyncioÚstart_serverr   ÚHOSTv4ÚassertFalser   Úcreate_taskÚsocketsÚgetsocknameÚassertRaisesÚCancelledErrorÚ
tcp_clientÚassertEqualÚassertIsNoneÚ_socketsÚ_waitersÚassertRaisesRegexr   r)   )r   r(   r*   r   )r   r   r   r'   r   r	   Útest_start_server_1   s$    
 z#BaseStartServer.test_start_server_1N)Ú__name__Ú
__module__Ú__qualname__r
   r?   r   r   r   r	   r      s   r   c               @   s.   e Zd Zdd„ Ze eedƒd¡dd„ ƒZdS )ÚSelectorStartServerTestsc             C   s   t  ¡ S )N)r0   ÚSelectorEventLoop)r   r   r   r	   r
   E   s    z!SelectorStartServerTests.new_loopÚAF_UNIXzno Unix socketsc                s   dd d ‰ t  ¡ ‰‡ ‡fdd„‰‡fdd„}‡‡fdd	„}t ¡ Ò‰ˆj tj|ˆˆjd
d¡}ˆj ||ƒ¡‰ˆ 	tj
¡2 ˆ ‡‡fdd„¡ ˆj ˆ¡ W d Q R X W d Q R X ˆ |jg ¡ ˆ |j¡ ˆ |j¡ ˆ | ¡ ¡ ˆ td¡ ˆj | ¡ ¡ W d Q R X W d Q R X d S )Ns   1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111r   r   c                s>   |   d¡ ˆ d¡ |  |¡ |  ˆ ¡ |  d¡ |  ¡  d S )Nr   r   r   )r   Úwaitr   r   r   r   )r   r   )r   Ústartedr   r	   r   M   s    




zASelectorStartServerTests.test_start_unix_server_1.<locals>.clientc             “   s:   |   ¡ I d H  ˆ  ¡  | d¡ | ¡  | ¡ I d H  d S )Nr    )r!   r"   r#   r   r$   )r%   r&   )r'   r   r	   r(   U   s
    
z@SelectorStartServerTests.test_start_unix_server_1.<locals>.servec          
   “   sb   | 4 I d H šF ˆ   |  ¡ ¡ |  ¡ I d H  ˆ  |  ¡ ¡ ˆ ¡  |  ¡ I d H  W d Q I d H R X d S )N)r3   r   r,   Ú
assertTrueÚsetr)   )r   )r   rG   r   r	   r*   \   s    z?SelectorStartServerTests.test_start_unix_server_1.<locals>.mainF)r+   r,   c                s
   ˆ| ˆ ƒS )Nr   )r   )r   r   r   r	   r-   k   r.   zCSelectorStartServerTests.test_start_unix_server_1.<locals>.<lambda>z	is closed)Ú	threadingÚEventÚ
test_utilsÚunix_socket_pathr+   r/   r0   Ústart_unix_serverr4   r7   r8   Úunix_clientr:   r5   r;   r<   r=   r3   r   r>   r   r)   )r   r(   r*   r   r   )r   r   r   r'   r   rG   r	   Útest_start_unix_server_1H   s$    

 z1SelectorStartServerTests.test_start_unix_server_1N)	r@   rA   rB   r
   ÚunittestÚ
skipUnlessÚhasattrÚsocketrP   r   r   r   r	   rC   C   s   rC   ÚProactorEventLoopzWindows onlyc               @   s   e Zd Zdd„ ZdS )ÚProactorStartServerTestsc             C   s   t  ¡ S )N)r0   rU   )r   r   r   r	   r
   {   s    z!ProactorStartServerTests.new_loopN)r@   rA   rB   r
   r   r   r   r	   rV   x   s   rV   Ú__main__)r0   rT   r   rJ   rQ   Útestr   Ztest.test_asyncior   rL   r   Ú
func_testsÚFunctionalTestCaseMixinr   ÚTestCaserC   rR   rS   rV   r@   r*   r   r   r   r	   Ú<module>   s   75