o
    JXîh6  ã                   @   s°   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
 dd„ 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rVe ¡  dS dS )é    N)Úsocket_helper)Úutils)Ú
functionalc                   C   s   t  d ¡ d S ©N)ÚasyncioZset_event_loop_policy© r   r   úG/opt/python-3.10.19/usr/lib/python3.10/test/test_asyncio/test_server.pyÚtearDownModule   s   r	   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚBaseStartServerc                 C   s   t ‚r   )ÚNotImplementedError©Úselfr   r   r   Únew_loop   s   zBaseStartServer.new_loopc              	      sX  dd d ‰ ‡ ‡fdd„‰‡fdd„}dd	„ }| j  tj|tjd
dd¡‰|  ˆ ¡ ¡ | j  |ˆƒ¡‰ˆj	d
  
¡ ‰|  tj¡( |  ‡‡fdd„¡ | j  ˆ¡ W d   ƒ n1 s]w   Y  W d   ƒ n1 slw   Y  |  ˆj	d¡ |  ˆj¡ |  ˆj¡ |  ˆ ¡ ¡ |  td¡ | j  ˆ ¡ ¡ W d   ƒ d S 1 s¥w   Y  d S )Nó   1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111é   ó   
c                    s\   t dƒD ]}t d¡ ˆ ¡ r nq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                 “   ó<   |   ¡ I d H  ˆ  ¡  | d¡ | ¡  | ¡ I d H  d S ©Nó   1©ÚreadlineÚcancelÚwriter   Zwait_closed©ÚreaderÚwriter©Ú	main_taskr   r   Úserve%   ó   €
z2BaseStartServer.test_start_server_1.<locals>.servec              	   Ó   sN   | 4 I d H š |   ¡ I d H  W d   ƒI d H  d S 1 I d H s w   Y  d S r   )Úserve_forever©r#   r   r   r   Úmain,   s   €.ÿz1BaseStartServer.test_start_server_1.<locals>.mainr   F©Ústart_servingc                    ó
   ˆ| ˆ ƒS r   r   ©r   ©r    r$   r   r   Ú<lambda>9   ó   
 z5BaseStartServer.test_start_server_1.<locals>.<lambda>r   ú	is closed)ÚloopÚrun_until_completer   Zstart_serverr   ZHOSTv4ÚassertFalser   Úcreate_taskÚsocketsÚgetsocknameÚassertRaisesÚCancelledErrorZ
tcp_clientÚassertEqualÚassertIsNoneÚ_socketsÚ_waitersÚassertRaisesRegexr   r3   )r   r1   r5   r   )r"   r    r$   r0   r#   r   Útest_start_server_1   s.   

ÿÿ€ÿ"ÿz#BaseStartServer.test_start_server_1N)Ú__name__Ú
__module__Ú__qualname__r   rK   r   r   r   r   r
      s    r
   c                   @   s"   e Zd Zdd„ Zejdd„ ƒZdS )ÚSelectorStartServerTestsc                 C   ó   t  ¡ S r   )r   ZSelectorEventLoopr   r   r   r   r   H   ó   z!SelectorStartServerTests.new_loopc              
      s~  dd d ‰ t  ¡ ‰‡ ‡fdd„‰‡fdd„}‡‡fdd	„}t ¡ “‰ˆj tj|ˆd
d¡}ˆj ||ƒ¡‰ˆ 	tj
¡( ˆ ‡‡fdd„¡ ˆj ˆ¡ W d   ƒ n1 sYw   Y  W d   ƒ n1 shw   Y  ˆ |jd¡ ˆ |j¡ ˆ |j¡ ˆ | ¡ ¡ ˆ td¡ ˆj | ¡ ¡ W d   ƒ n1 s w   Y  W d   ƒ d S W d   ƒ d S 1 s¸w   Y  d S )Nr   r   r   c                    s>   |   d¡ ˆ d¡ |  |¡ |  ˆ ¡ |  d¡ |  ¡  d S )Nr   r   r   )r   Úwaitr   r   r   r   )r   r    )r"   Ústartedr   r   r$   P   s   




zASelectorStartServerTests.test_start_unix_server_1.<locals>.clientc                 “   r%   r&   r(   r,   r/   r   r   r1   X   r2   z@SelectorStartServerTests.test_start_unix_server_1.<locals>.servec              	   “   s€   | 4 I d H š, ˆ   |  ¡ ¡ |  ¡ I d H  ˆ  |  ¡ ¡ ˆ ¡  |  ¡ I d H  W d   ƒI d H  d S 1 I d H s9w   Y  d S r   )r@   r   r7   Z
assertTrueÚsetr3   r4   )r   rS   r   r   r5   _   s   €.ûz?SelectorStartServerTests.test_start_unix_server_1.<locals>.mainFr6   c                    r8   r   r   r9   r:   r   r   r;   n   r<   zCSelectorStartServerTests.test_start_unix_server_1.<locals>.<lambda>r   r=   )Ú	threadingÚEventÚ
test_utilsZunix_socket_pathr>   r?   r   Zstart_unix_serverrA   rD   rE   Zunix_clientrF   rB   rG   rH   rI   r@   r   rJ   r   r3   )r   r1   r5   r#   r   )r"   r    r$   r0   r   rS   r   Útest_start_unix_server_1K   s4   

ÿÿ€ÿÿð"ðz1SelectorStartServerTests.test_start_unix_server_1N)rL   rM   rN   r   r   Zskip_unless_bind_unix_socketrX   r   r   r   r   rO   F   s    rO   ÚProactorEventLoopzWindows onlyc                   @   s   e Zd Zdd„ ZdS )ÚProactorStartServerTestsc                 C   rP   r   )r   rY   r   r   r   r   r   ~   rQ   z!ProactorStartServerTests.new_loopN)rL   rM   rN   r   r   r   r   r   rZ   {   s    rZ   Ú__main__)r   r   rU   ZunittestZtest.supportr   Ztest.test_asyncior   rW   r   Z
func_testsr	   ZFunctionalTestCaseMixinr
   ZTestCaserO   Z
skipUnlessÚhasattrrZ   rL   r5   r   r   r   r   Ú<module>   s    75ÿ