§
    ‹Ÿj@  ã                   óX  — d dl mZ d dlZd dlZd dlZd dlmZ d dlmZm	Z	 d dl
mZ d dlmZmZ d dlmZ d dlmZmZ d d	lmZmZmZ d d
lmZ d dlZej        rd dlmZ d dlmZmZm Z  d\  Z!Z" G d„ de¦  «        Z# G d„ de¦  «        Z$ G d„ dej%        ¦  «        Z& G d„ de¦  «        Z'dS )é    )ÚclosingN©ÚFuture)Úbind_socketsÚResolver)ÚQueue)Ú	TCPClientÚ
_Connector)Ú	TCPServer)ÚAsyncTestCaseÚgen_test)ÚskipIfNoIPv6Úrefusing_portÚskipIfNonUnix)ÚTimeoutError)ÚIOStream)ÚListÚDictÚTuple)é   é   c                   ó.   ‡ — e Zd Zˆ fd„Zd„ Zˆ fd„Zˆ xZS )ÚTestTCPServerc                 ó  •— t          ¦   «                              ¦   «          g | _        t          ¦   «         | _        t          dd|¦  «        }|                      |¦  «         |d                              ¦   «         d         | _        d S )Nr   Ú	localhostr   )	ÚsuperÚ__init__Ústreamsr   Úqueuer   Úadd_socketsÚgetsocknameÚport)ÚselfÚfamilyÚsocketsÚ	__class__s      €úh/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/tornado/test/tcpclient_test.pyr   zTestTCPServer.__init__)   sp   ø€ Ý‰Œ×ÒÑÔÐØˆŒÝ‘W”WˆŒ
Ý˜q +¨vÑ6Ô6ˆØ×Ò˜Ñ!Ô!Ð!Ø˜A”J×*Ò*Ñ,Ô,¨QÔ/ˆŒ	ˆ	ˆ	ó    c                 ón   — | j                              |¦  «         | j                             |¦  «         d S ©N)r   Úappendr   Úput)r#   ÚstreamÚaddresss      r'   Úhandle_streamzTestTCPServer.handle_stream1   s2   € ØŒ×Ò˜FÑ#Ô#Ð#ØŒ
�Š�vÑÔÐÐÐr(   c                 ó„   •— t          ¦   «                              ¦   «          | j        D ]}|                     ¦   «          Œd S r*   )r   Ústopr   Úclose©r#   r-   r&   s     €r'   r1   zTestTCPServer.stop5   s>   ø€ Ý‰Œ�Š‰ŒˆØ”lð 	ð 	ˆFØ�LŠL‰NŒNˆNˆNð	ð 	r(   )Ú__name__Ú
__module__Ú__qualname__r   r/   r1   Ú__classcell__©r&   s   @r'   r   r   (   s`   ø€ € € € € ð0ð 0ð 0ð 0ð 0ðð ð ðð ð ð ð ð ð ð ð r(   r   c                   óú   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zˆ fd„Zd„ Zedd„¦   «         Z	d„ Z
d	„ Zed
„ ¦   «         Zed„ ¦   «         Zd„ Zed„ ¦   «         Zd„ Zed„ ¦   «         Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Zˆ xZS )ÚTCPClientTestc                 ó|   •— t          ¦   «                              ¦   «          d | _        t          ¦   «         | _        d S r*   )r   ÚsetUpÚserverr	   Úclient©r#   r&   s    €r'   r<   zTCPClientTest.setUp<   s*   ø€ Ý‰Œ�Š‰ŒˆØˆŒÝ‘k”kˆŒˆˆr(   c                 óB   — t          |¦  «        | _        | j        j        S r*   )r   r=   r"   )r#   r$   s     r'   Ústart_serverzTCPClientTest.start_serverA   s   € Ý# FÑ+Ô+ˆŒØŒ{ÔÐr(   c                 óX   — | j         �"| j                              ¦   «          d | _         d S d S r*   )r=   r1   ©r#   s    r'   Ústop_serverzTCPClientTest.stop_serverE   s1   € ØŒ;Ð"ØŒK×ÒÑÔÐØˆDŒKˆKˆKð #Ð"r(   c                 ó¢   •— | j                              ¦   «          |                      ¦   «          t          ¦   «                              ¦   «          d S r*   )r>   r2   rD   r   ÚtearDownr?   s    €r'   rF   zTCPClientTest.tearDownJ   sE   ø€ ØŒ×ÒÑÔÐØ×ÒÑÔÐÝ‰Œ×ÒÑÔÐÐÐr(   c                 óž   — | j                              d„ ¦  «        }d„ |D ¦   «         }t          j        |vr|                      d¦  «         d S d S )Nc                  óF   — t          ¦   «                              dd¦  «        S )Nr   éP   )r   Úresolve© r(   r'   ú<lambda>z1TCPClientTest.skipIfLocalhostV4.<locals>.<lambda>R   s   € µ±´×1CÒ1CÀKÐQSÑ1TÔ1T€ r(   c                 ó   — h | ]
}|d          ’ŒS )r   rK   )Ú.0Úaddrs     r'   ú	<setcomp>z2TCPClientTest.skipIfLocalhostV4.<locals>.<setcomp>S   s   € Ð1Ð1Ð1 �D˜”GÐ1Ð1Ð1r(   z"localhost does not resolve to ipv6)Úio_loopÚrun_syncÚsocketÚAF_INET6ÚskipTest)r#   ÚaddrinfoÚfamiliess      r'   ÚskipIfLocalhostV4zTCPClientTest.skipIfLocalhostV4O   s^   € ð ”<×(Ò(Ð)TÐ)TÑUÔUˆØ1Ð1¨Ð1Ñ1Ô1ˆÝŒ? (Ð*Ð*Ø�MŠMÐ>Ñ?Ô?Ð?Ð?Ð?ð +Ð*r(   Nc              #   óœ  K  — |                       |¦  «        }| j                             |||||¬¦  «        V —}| j        €J ‚| j        j                             ¦   «         V —}t          |¦  «        5  |                     d¦  «         |                     d¦  «        V —}|  	                    |d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N)Ú	source_ipÚsource_portÚafs   helloé   )
rA   r>   Úconnectr=   r   Úgetr   ÚwriteÚ
read_bytesÚassertEqual)	r#   r$   ÚhostrZ   r[   r"   r-   Úserver_streamÚdatas	            r'   Údo_test_connectzTCPClientTest.do_test_connectW   s+  è è € à× Ò  Ñ(Ô(ˆØ”{×*Ò*ØØØØ#Øð +ñ 
ô 
ð 
ð 
ˆð Œ{Ð&Ð&Ð&Ø"œkÔ/×3Ò3Ñ5Ô5Ð5Ð5ˆÝ�V‰_Œ_ð 	-ð 	-Ø�LŠL˜Ñ"Ô"Ð"Ø&×1Ò1°!Ñ4Ô4Ð4Ð4ˆDØ×Ò˜T 8Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð 	-ð 	-s   Á1ACÃCÃCc                 óF   — |                       t          j        d¦  «         d S ©Nú	127.0.0.1©rf   rS   ÚAF_INETrC   s    r'   Útest_connect_ipv4_ipv4z$TCPClientTest.test_connect_ipv4_ipv4h   ó    € Ø×Ò�Vœ^¨[Ñ9Ô9Ð9Ð9Ð9r(   c                 óF   — |                       t          j        d¦  «         d S ©Nr   rj   rC   s    r'   Útest_connect_ipv4_dualz$TCPClientTest.test_connect_ipv4_dualk   rm   r(   c                 ón   — |                       ¦   «          |                      t          j        d¦  «         d S ©Nz::1©rX   rf   rS   rT   rC   s    r'   Útest_connect_ipv6_ipv6z$TCPClientTest.test_connect_ipv6_ipv6n   s2   € à×ÒÑ Ô Ð Ø×Ò�Vœ_¨eÑ4Ô4Ð4Ð4Ð4r(   c                 ón   — |                       ¦   «          |                      t          j        d¦  «         d S ro   rs   rC   s    r'   Útest_connect_ipv6_dualz$TCPClientTest.test_connect_ipv6_duals   s2   € à×ÒÑ Ô Ð Ø×Ò�Vœ_¨kÑ:Ô:Ð:Ð:Ð:r(   c                 óF   — |                       t          j        d¦  «         d S rh   ©rf   rS   Ú	AF_UNSPECrC   s    r'   Útest_connect_unspec_ipv4z&TCPClientTest.test_connect_unspec_ipv4x   ó!   € Ø×Ò�VÔ-¨{Ñ;Ô;Ð;Ð;Ð;r(   c                 ón   — |                       ¦   «          |                      t          j        d¦  «         d S rr   )rX   rf   rS   ry   rC   s    r'   Útest_connect_unspec_ipv6z&TCPClientTest.test_connect_unspec_ipv6{   s3   € à×ÒÑ Ô Ð Ø×Ò�VÔ-¨uÑ5Ô5Ð5Ð5Ð5r(   c                 óF   — |                       t          j        d¦  «         d S ro   rx   rC   s    r'   Útest_connect_unspec_dualz&TCPClientTest.test_connect_unspec_dual€   r{   r(   c              #   óö   K  — t          ¦   «         \  }}|                      |¦  «         |                      t          ¦  «        5  | j                             d|¦  «        V — d d d ¦  «         d S # 1 swxY w Y   d S rh   )r   Ú
addCleanupÚassertRaisesÚIOErrorr>   r^   )r#   Úcleanup_funcr"   s      r'   Útest_refused_ipv4zTCPClientTest.test_refused_ipv4ƒ   s¼   è è € å*™_œ_Ñˆ�dØ�Š˜Ñ%Ô%Ð%Ø×Ò�wÑ'Ô'ð 	9ð 	9Ø”+×%Ò% k°4Ñ8Ô8Ð8Ð8Ð8ð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð 	9ð 	9s   ÁA.Á.A2Á5A2c                 ól   — |                       t          j        | j        t          j        dd¬¦  «         dS )z8Fail when trying to use the source IP Address '8.8.8.8'.ri   z8.8.8.8©rZ   N)r‚   rS   Úerrorrf   rk   rC   s    r'   Útest_source_ip_failz!TCPClientTest.test_source_ip_failŠ   s?   € à×ÒÝŒLØÔ ÝŒNØØð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r(   c                 óJ   — |                       t          j        dd¬¦  «         dS )z=Success when trying to use the source IP Address '127.0.0.1'.ri   r‡   Nrj   rC   s    r'   Útest_source_ip_successz$TCPClientTest.test_source_ip_success”   s%   € à×Ò�Vœ^¨[ÀKÐÑPÔPÐPÐPÐPr(   c                 óÄ   — t          j        ¦   «         dk    r|                      d¦  «         |                      t          j        | j        t          j        dd¬¦  «         dS )z&Fail when trying to use source port 1.Úrootzrunning as rootri   r   )r[   N)ÚgetpassÚgetuserrU   r‚   rS   rˆ   rf   rk   rC   s    r'   Útest_source_port_failz#TCPClientTest.test_source_port_fail˜   si   € õ Œ?ÑÔ Ò&Ð&ð �MŠMÐ+Ñ,Ô,Ð,Ø×ÒÝŒLØÔ ÝŒNØØð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r(   c              #   óú   K  — d} G d„ dt           ¦  «        }|                      t          ¦  «        5  t           |¦   «         ¬¦  «                             dd|¬¦  «        V — d d d ¦  «         d S # 1 swxY w Y   d S )Ngš™™™™™©?c                   ó   — e Zd Zd„ ZdS )ú;TCPClientTest.test_connect_timeout.<locals>.TimeoutResolverc                 ó   — t          ¦   «         S r*   r   )r#   ÚargsÚkwargss      r'   rJ   zCTCPClientTest.test_connect_timeout.<locals>.TimeoutResolver.resolve¬   s   € Ý‘x”x�r(   N)r4   r5   r6   rJ   rK   r(   r'   ÚTimeoutResolverr“   «   s#   € € € € € ð ð  ð  ð  ð  r(   r—   )Úresolverz1.2.3.4i90  )Útimeout)r   r‚   r   r	   r^   )r#   r™   r—   s      r'   Útest_connect_timeoutz"TCPClientTest.test_connect_timeout§   sñ   è è € àˆð	 ð 	 ð 	 ð 	 ð 	 �hñ 	 ô 	 ð 	 ð ×Ò�|Ñ,Ô,ð 	ð 	Ý _ _Ñ%6Ô%6Ð7Ñ7Ô7×?Ò?Ø˜5¨'ð @ñ ô ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ²1A0Á0A4Á7A4)NN)r4   r5   r6   r<   rA   rD   rF   rX   r   rf   rl   rp   r   rt   rv   rz   r}   r   r…   r‰   r‹   r   r�   rš   r7   r8   s   @r'   r:   r:   ;   s   ø€ € € € € ð"ð "ð "ð "ð "ð
 ð  ð  ðð ð ð
ð ð ð ð ð
@ð @ð @ð ð-ð -ð -ñ „Xð-ð :ð :ð :ð:ð :ð :ð ð5ð 5ñ „\ð5ð ð;ð ;ñ „\ð;ð<ð <ð <ð ð6ð 6ñ „\ð6ð<ð <ð <ð ð9ð 9ñ „Xð9ð
ð 
ð 
ðQð Qð Qð ð
ð 
ñ „]ð
ð ð
ð 
ñ „Xð
ð 
ð 
ð 
ð 
r(   r:   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚTestConnectorSplitc                 óÌ   — t          j        t          dft          dfg¦  «        \  }}|                      |t          dft          dfg¦  «         |                      |g ¦  «         d S )NÚaÚb)r
   ÚsplitÚAF1rb   ©r#   ÚprimaryÚ	secondarys      r'   Útest_one_familyz"TestConnectorSplit.test_one_family¶   sc   € å'Ô-µ°S¨z½CÀ¸:Ð.FÑGÔGÑˆ�Ø×Ò˜¥C¨ :µ°S¨zÐ":Ñ;Ô;Ð;Ø×Ò˜ BÑ'Ô'Ð'Ð'Ð'r(   c                 ó  — t          j        t          dft          dft          dft          dfg¦  «        \  }}|                      |t          dft          dfg¦  «         |                      |t          dft          dfg¦  «         d S ©Nrž   rŸ   ÚcÚd)r
   r    r¡   ÚAF2rb   r¢   s      r'   Ú
test_mixedzTestConnectorSplit.test_mixed¼   sƒ   € Ý'Ô-Ý�3ˆZ�#˜s˜¥c¨3 Zµ#°s°Ð<ñ
ô 
Ñˆ�ð 	×Ò˜¥C¨ :µ°S¨zÐ":Ñ;Ô;Ð;Ø×Ò˜¥c¨3 Zµ#°s°Ð$<Ñ=Ô=Ð=Ð=Ð=r(   N)r4   r5   r6   r¥   r«   rK   r(   r'   rœ   rœ   µ   s2   € € € € € ð(ð (ð (ð>ð >ð >ð >ð >r(   rœ   c                   óÀ   ‡ — e Zd Z G d„ d¦  «        Zˆ fd„Zˆ fd„Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚConnectorTestc                   ó   — e Zd Zd„ Zd„ ZdS )úConnectorTest.FakeStreamc                 ó   — d| _         d S )NF©ÚclosedrC   s    r'   r   z!ConnectorTest.FakeStream.__init__Æ   s   € ØˆDŒKˆKˆKr(   c                 ó   — d| _         d S )NTr±   rC   s    r'   r2   zConnectorTest.FakeStream.closeÉ   s   € ØˆDŒKˆKˆKr(   N)r4   r5   r6   r   r2   rK   r(   r'   Ú
FakeStreamr¯   Å   s2   € € € € € ð	 ð 	 ð 	 ð	ð 	ð 	ð 	ð 	r(   r´   c                 ó²   •— t          ¦   «                              ¦   «          i | _        i | _        t          dft          dft
          dft
          dfg| _        d S r§   )r   r<   Úconnect_futuresr   r¡   rª   rV   r?   s    €r'   r<   zConnectorTest.setUpÌ   sL   ø€ Ý‰Œ�Š‰Œˆàð 	Ôð ˆŒÝ˜s˜¥c¨3 Zµ#°s°½cÀ3¸ZÐHˆŒˆˆr(   c                 ó´   •— | j                              ¦   «         D ]}|                      |j        ¦  «         Œt	          ¦   «                              ¦   «          d S r*   )r   ÚvaluesÚassertFalser²   r   rF   r3   s     €r'   rF   zConnectorTest.tearDownÔ   sW   ø€ ð ”l×)Ò)Ñ+Ô+ð 	,ð 	,ˆFØ×Ò˜Vœ]Ñ+Ô+Ð+Ð+Ý‰Œ×ÒÑÔÐÐÐr(   c                 ó„   — t                                ¦   «         }|| j        |<   t          ¦   «         }|| j        ||f<   ||fS r*   )r­   r´   r   r   r¶   )r#   r\   rO   r-   Úfutures        r'   Úcreate_streamzConnectorTest.create_streamÛ   sC   € Ý×)Ò)Ñ+Ô+ˆØ#ˆŒ�TÑÝ‘”ˆØ+1ˆÔ˜b $˜ZÑ(Ø�vˆ~Ðr(   c                 ó”   — |                       t          | j                             ¦   «         ¦  «        t          |¦  «        ¦  «         d S r*   )rb   Úsortedr¶   Úkeys)r#   r¿   s     r'   Úassert_pendingzConnectorTest.assert_pendingâ   s;   € Ø×Ò� Ô 4× 9Ò 9Ñ ;Ô ;Ñ<Ô<½fÀT¹l¼lÑKÔKÐKÐKÐKr(   c                 ó`  — | j                              ||f¦  «        }|r!|                     | j        |         ¦  «         n;| j                             |¦  «         |                     t          ¦   «         ¦  «         | j                             | j        ¦  «         |  	                    ¦   «          d S r*   )
r¶   ÚpopÚ
set_resultr   Úset_exceptionrƒ   rQ   Úadd_callbackr1   Úwait)r#   r\   rO   Úsuccessr»   s        r'   Úresolve_connectzConnectorTest.resolve_connectå   s™   € ØÔ%×)Ò)¨2¨t¨*Ñ5Ô5ˆØð 	,Ø×Ò˜dœl¨4Ô0Ñ1Ô1Ð1Ð1àŒL×Ò˜TÑ"Ô"Ð"Ø× Ò ¥¡¤Ñ+Ô+Ð+àŒ×!Ò! $¤)Ñ,Ô,Ð,Ø�	Š	‰Œˆˆˆr(   c                 óN   — |j         D ]}|                      |j        ¦  «         Œd S r*   )r   Ú
assertTruer²   )r#   Úconnr-   s      r'   Úassert_connector_streams_closedz-ConnectorTest.assert_connector_streams_closedð   s4   € Ø”lð 	+ð 	+ˆFØ�OŠO˜FœMÑ*Ô*Ð*Ð*ð	+ð 	+r(   c                 ó–   — t          || j        ¦  «        }|                     d| j                             ¦   «         dz   ¬¦  «        }||fS )Ni  )Úconnect_timeout)r
   r¼   ÚstartrQ   Útime)r#   rV   rË   r»   s       r'   Ústart_connectzConnectorTest.start_connectô   sF   € Ý˜( DÔ$6Ñ7Ô7ˆà—’˜D°$´,×2CÒ2CÑ2EÔ2EÈÑ2L�ÑMÔMˆØ�Vˆ|Ðr(   c                 ór  — |                       | j        ¦  «        \  }}|                      t          | j                             ¦   «         ¦  «        t          dfg¦  «         |                      t          dd¦  «         |                      |                     ¦   «         t          d| j	        d         f¦  «         d S )Nrž   T)
rÑ   rV   rb   Úlistr¶   r¿   r¡   rÈ   Úresultr   ©r#   rË   r»   s      r'   Útest_immediate_successz$ConnectorTest.test_immediate_successú   s˜   € Ø×)Ò)¨$¬-Ñ8Ô8‰ˆˆfØ×Ò�˜dÔ2×7Ò7Ñ9Ô9Ñ:Ô:½cÀ3¸Z¸LÑIÔIÐIØ×Ò�S # tÑ,Ô,Ð,Ø×Ò˜Ÿš™œ­3°°T´\À#Ô5FÐ*GÑHÔHÐHÐHÐHr(   c                 óö   — |                       t          dfg¦  «        \  }}|                      t          df¦  «         |                      t          dd¦  «         |                      t
          |j        ¦  «         d S )Nrž   F©rÑ   r¡   rÀ   rÈ   r‚   rƒ   rÔ   rÕ   s      r'   Útest_immediate_failurez$ConnectorTest.test_immediate_failure   sm   € à×)Ò)­C°¨:¨,Ñ7Ô7‰ˆˆfØ×Ò�S #˜JÑ'Ô'Ð'Ø×Ò�S # uÑ-Ô-Ð-Ø×Ò�' 6¤=Ñ1Ô1Ð1Ð1Ð1r(   c                 ó¬  — |                       t          dft          dfg¦  «        \  }}|                      t          df¦  «         |                      t          dd¦  «         |                      t          df¦  «         |                      t          dd¦  «         |                      |                     ¦   «         t          d| j        d         f¦  «         d S ©Nrž   rŸ   FT)rÑ   r¡   rÀ   rÈ   rb   rÔ   r   rÕ   s      r'   Útest_one_family_second_tryz(ConnectorTest.test_one_family_second_try  s¸   € Ø×)Ò)­C°¨:½¸S°zÐ*BÑCÔC‰ˆˆfØ×Ò�S #˜JÑ'Ô'Ð'Ø×Ò�S # uÑ-Ô-Ð-Ø×Ò�S #˜JÑ'Ô'Ð'Ø×Ò�S # tÑ,Ô,Ð,Ø×Ò˜Ÿš™œ­3°°T´\À#Ô5FÐ*GÑHÔHÐHÐHÐHr(   c                 óv  — |                       t          dft          dfg¦  «        \  }}|                      t          df¦  «         |                      t          dd¦  «         |                      t          df¦  «         |                      t          dd¦  «         |                      t
          |j        ¦  «         d S )Nrž   rŸ   FrØ   rÕ   s      r'   Ú"test_one_family_second_try_failurez0ConnectorTest.test_one_family_second_try_failure  s¤   € Ø×)Ò)­C°¨:½¸S°zÐ*BÑCÔC‰ˆˆfØ×Ò�S #˜JÑ'Ô'Ð'Ø×Ò�S # uÑ-Ô-Ð-Ø×Ò�S #˜JÑ'Ô'Ð'Ø×Ò�S # uÑ-Ô-Ð-Ø×Ò�' 6¤=Ñ1Ô1Ð1Ð1Ð1r(   c                 ó  — |                       t          dft          dfg¦  «        \  }}|                      t          df¦  «         |                     ¦   «          |                      t          df¦  «         |                      t          dd¦  «         |                      t          df¦  «         |                      t          dd¦  «         |                      |                     ¦   «         t          d| j        d         f¦  «         d S rÛ   )rÑ   r¡   rÀ   Ú
on_timeoutrÈ   rb   rÔ   r   rÕ   s      r'   Ú"test_one_family_second_try_timeoutz0ConnectorTest.test_one_family_second_try_timeout  sâ   € Ø×)Ò)­C°¨:½¸S°zÐ*BÑCÔC‰ˆˆfØ×Ò�S #˜JÑ'Ô'Ð'ð 	�ŠÑÔÐØ×Ò�S #˜JÑ'Ô'Ð'Ø×Ò�S # uÑ-Ô-Ð-Ø×Ò�S #˜JÑ'Ô'Ð'Ø×Ò�S # tÑ,Ô,Ð,Ø×Ò˜Ÿš™œ­3°°T´\À#Ô5FÐ*GÑHÔHÐHÐHÐHr(   c                 óÞ  — |                       | j        ¦  «        \  }}|                      t          df¦  «         |                      t          dd¦  «         |                      t          dft
          df¦  «         |                      t          dd¦  «         |                      t
          dd¦  «         |                      |                     ¦   «         t
          d| j        d         f¦  «         d S )Nrž   FrŸ   r¨   T)	rÑ   rV   rÀ   r¡   rÈ   rª   rb   rÔ   r   rÕ   s      r'   Ú#test_two_families_immediate_failurez1ConnectorTest.test_two_families_immediate_failure#  sË   € Ø×)Ò)¨$¬-Ñ8Ô8‰ˆˆfØ×Ò�S #˜JÑ'Ô'Ð'Ø×Ò�S # uÑ-Ô-Ð-Ø×Ò�S #˜J­¨c¨
Ñ3Ô3Ð3Ø×Ò�S # uÑ-Ô-Ð-Ø×Ò�S # tÑ,Ô,Ð,Ø×Ò˜Ÿš™œ­3°°T´\À#Ô5FÐ*GÑHÔHÐHÐHÐHr(   c                 óö  — |                       | j        ¦  «        \  }}|                      t          df¦  «         |                     ¦   «          |                      t          dft
          df¦  «         |                      t
          dd¦  «         |                      |                     ¦   «         t
          d| j	        d         f¦  «         |                      t          dd¦  «         |                      ¦   «          d S )Nrž   r¨   TF)
rÑ   rV   rÀ   r¡   rà   rª   rÈ   rb   rÔ   r   rÕ   s      r'   Útest_two_families_timeoutz'ConnectorTest.test_two_families_timeout,  sÕ   € Ø×)Ò)¨$¬-Ñ8Ô8‰ˆˆfØ×Ò�S #˜JÑ'Ô'Ð'Ø�ŠÑÔÐØ×Ò�S #˜J­¨c¨
Ñ3Ô3Ð3Ø×Ò�S # tÑ,Ô,Ð,Ø×Ò˜Ÿš™œ­3°°T´\À#Ô5FÐ*GÑHÔHÐHà×Ò�S # uÑ-Ô-Ð-Ø×ÒÑÔÐÐÐr(   c                 ó2  — |                       | j        ¦  «        \  }}|                      t          df¦  «         |                     ¦   «          |                      t          dft
          df¦  «         |                      t          dd¦  «         |                      |                     ¦   «         t          d| j	        d         f¦  «         |                      t
          dd¦  «         |  
                    | j	                             d¦  «        j        ¦  «         d S )Nrž   r¨   T)rÑ   rV   rÀ   r¡   rà   rª   rÈ   rb   rÔ   r   rÊ   rÂ   r²   rÕ   s      r'   Útest_success_after_timeoutz(ConnectorTest.test_success_after_timeout7  sè   € Ø×)Ò)¨$¬-Ñ8Ô8‰ˆˆfØ×Ò�S #˜JÑ'Ô'Ð'Ø�ŠÑÔÐØ×Ò�S #˜J­¨c¨
Ñ3Ô3Ð3Ø×Ò�S # tÑ,Ô,Ð,Ø×Ò˜Ÿš™œ­3°°T´\À#Ô5FÐ*GÑHÔHÐHà×Ò�S # tÑ,Ô,Ð,Ø�Š˜œ×(Ò(¨Ñ-Ô-Ô4Ñ5Ô5Ð5Ð5Ð5r(   c                 ó  — |                       | j        ¦  «        \  }}|                      t          df¦  «         |                     ¦   «          |                      t          dft
          df¦  «         |                      t
          dd¦  «         |                      t          dft
          df¦  «         |                      t
          dd¦  «         |                      t          df¦  «         |                      t          dd¦  «         |                      t          df¦  «         |                      |                     ¦   «         ¦  «         |                      t          dd¦  «         |  	                    t          |j        ¦  «         d S )Nrž   r¨   Fr©   rŸ   )rÑ   rV   rÀ   r¡   rà   rª   rÈ   r¹   Údoner‚   rƒ   rÔ   rÕ   s      r'   Útest_all_failzConnectorTest.test_all_failB  sI  € Ø×)Ò)¨$¬-Ñ8Ô8‰ˆˆfØ×Ò�S #˜JÑ'Ô'Ð'Ø�ŠÑÔÐØ×Ò�S #˜J­¨c¨
Ñ3Ô3Ð3Ø×Ò�S # uÑ-Ô-Ð-Ø×Ò�S #˜J­¨c¨
Ñ3Ô3Ð3Ø×Ò�S # uÑ-Ô-Ð-à×Ò�S #˜JÑ'Ô'Ð'Ø×Ò�S # uÑ-Ô-Ð-Ø×Ò�S #˜JÑ'Ô'Ð'Ø×Ò˜Ÿš™œÑ'Ô'Ð'Ø×Ò�S # uÑ-Ô-Ð-Ø×Ò�' 6¤=Ñ1Ô1Ð1Ð1Ð1r(   c                 óf  — |                       t          dft          dfg¦  «        \  }}|                      t          df¦  «         |                     ¦   «          | j                             t          df¦  «         |                      | j                             d¦  «        j        ¦  «         | 	                    ¦   «          |                      ¦   «          |  
                    t          |j        ¦  «        d¦  «         |                      |¦  «         |                      t          |j        ¦  «         d S )Nrž   rŸ   r   )rÑ   r¡   rÀ   Úon_connect_timeoutr¶   rÂ   rÊ   r   r²   rà   rb   ÚlenrÌ   r‚   r   rÔ   rÕ   s      r'   Ú-test_one_family_timeout_after_connect_timeoutz;ConnectorTest.test_one_family_timeout_after_connect_timeoutR  s  € Ø×)Ò)­C°¨:½¸S°zÐ*BÑCÔC‰ˆˆfØ×Ò�S #˜JÑ'Ô'Ð'Ø×ÒÑ!Ô!Ð!ð 	Ô× Ò ¥# s Ñ,Ô,Ð,Ø�Š˜œ×(Ò(¨Ñ-Ô-Ô4Ñ5Ô5Ð5Ø�ŠÑÔÐð 	×ÒÑÔÐØ×Ò�˜Tœ\Ñ*Ô*¨AÑ.Ô.Ð.Ø×,Ò,¨TÑ2Ô2Ð2Ø×Ò�,¨¬Ñ6Ô6Ð6Ð6Ð6r(   c                 óP  — |                       t          dft          dfg¦  «        \  }}|                      t          df¦  «         |                      t          dd¦  «         |                     ¦   «          |                      ¦   «          |                      | j        d         j        ¦  «         |                      t          |j        ¦  «        d¦  «         |  
                    |¦  «         |                      |                     ¦   «         t          d| j        d         f¦  «         d S )Nrž   rŸ   Tr   )rÑ   r¡   rÀ   rÈ   rì   r¹   r   r²   rb   rí   rÌ   rÔ   rÕ   s      r'   Ú.test_one_family_success_before_connect_timeoutz<ConnectorTest.test_one_family_success_before_connect_timeoutb  sþ   € Ø×)Ò)­C°¨:½¸S°zÐ*BÑCÔC‰ˆˆfØ×Ò�S #˜JÑ'Ô'Ð'Ø×Ò�S # tÑ,Ô,Ð,Ø×ÒÑ!Ô!Ð!Ø×ÒÑÔÐØ×Ò˜œ cÔ*Ô1Ñ2Ô2Ð2à×Ò�˜Tœ\Ñ*Ô*¨AÑ.Ô.Ð.à×,Ò,¨TÑ2Ô2Ð2Ø×Ò˜Ÿš™œ­3°°T´\À#Ô5FÐ*GÑHÔHÐHÐHÐHr(   c                 ó®  — |                       t          dft          dfg¦  «        \  }}|                      t          df¦  «         |                      t          dd¦  «         |                      t          df¦  «         |                     ¦   «          | j                             t          df¦  «         |                      | j                             d¦  «        j	        ¦  «         |                      ¦   «          |  
                    t          |j        ¦  «        d¦  «         |                      |¦  «         |                      t          |j        ¦  «         d S ©Nrž   rŸ   Fr   )rÑ   r¡   rÀ   rÈ   rì   r¶   rÂ   rÊ   r   r²   rb   rí   rÌ   r‚   r   rÔ   rÕ   s      r'   Ú0test_one_family_second_try_after_connect_timeoutz>ConnectorTest.test_one_family_second_try_after_connect_timeouto  s$  € Ø×)Ò)­C°¨:½¸S°zÐ*BÑCÔC‰ˆˆfØ×Ò�S #˜JÑ'Ô'Ð'Ø×Ò�S # uÑ-Ô-Ð-Ø×Ò�S #˜JÑ'Ô'Ð'Ø×ÒÑ!Ô!Ð!ØÔ× Ò ¥# s Ñ,Ô,Ð,Ø�Š˜œ×(Ò(¨Ñ-Ô-Ô4Ñ5Ô5Ð5Ø×ÒÑÔÐØ×Ò�˜Tœ\Ñ*Ô*¨AÑ.Ô.Ð.Ø×,Ò,¨TÑ2Ô2Ð2Ø×Ò�,¨¬Ñ6Ô6Ð6Ð6Ð6r(   c                 ó@  — |                       t          dft          dfg¦  «        \  }}|                      t          df¦  «         |                      t          dd¦  «         |                      t          df¦  «         |                      t          dd¦  «         |                     ¦   «          |                      ¦   «          |                      t          |j        ¦  «        d¦  «         |                      |¦  «         |  	                    t          |j        ¦  «         d S rò   )rÑ   r¡   rÀ   rÈ   rì   rb   rí   r   rÌ   r‚   rƒ   rÔ   rÕ   s      r'   Ú9test_one_family_second_try_failure_before_connect_timeoutzGConnectorTest.test_one_family_second_try_failure_before_connect_timeout|  sü   € Ø×)Ò)­C°¨:½¸S°zÐ*BÑCÔC‰ˆˆfØ×Ò�S #˜JÑ'Ô'Ð'Ø×Ò�S # uÑ-Ô-Ð-Ø×Ò�S #˜JÑ'Ô'Ð'Ø×Ò�S # uÑ-Ô-Ð-Ø×ÒÑ!Ô!Ð!Ø×ÒÑÔÐØ×Ò�˜Tœ\Ñ*Ô*¨AÑ.Ô.Ð.Ø×,Ò,¨TÑ2Ô2Ð2Ø×Ò�' 6¤=Ñ1Ô1Ð1Ð1Ð1r(   c                 ó>  — |                       | j        ¦  «        \  }}|                      t          df¦  «         |                     ¦   «          |                      t          dft
          df¦  «         |                     ¦   «          | j                             t          df¦  «         |  	                    | j
                             d¦  «        j        ¦  «         | j                             t
          df¦  «         |  	                    | j
                             d¦  «        j        ¦  «         |                      ¦   «          |                      t          |j
        ¦  «        d¦  «         |                      |¦  «         |                      t           |j        ¦  «         d S )Nrž   r¨   r   )rÑ   rV   rÀ   r¡   rà   rª   rì   r¶   rÂ   rÊ   r   r²   rb   rí   rÌ   r‚   r   rÔ   rÕ   s      r'   Ú.test_two_family_timeout_before_connect_timeoutz<ConnectorTest.test_two_family_timeout_before_connect_timeoutˆ  sW  € Ø×)Ò)¨$¬-Ñ8Ô8‰ˆˆfØ×Ò�S #˜JÑ'Ô'Ð'Ø�ŠÑÔÐØ×Ò�S #˜J­¨c¨
Ñ3Ô3Ð3Ø×ÒÑ!Ô!Ð!ØÔ× Ò ¥# s Ñ,Ô,Ð,Ø�Š˜œ×(Ò(¨Ñ-Ô-Ô4Ñ5Ô5Ð5ØÔ× Ò ¥# s Ñ,Ô,Ð,Ø�Š˜œ×(Ò(¨Ñ-Ô-Ô4Ñ5Ô5Ð5Ø×ÒÑÔÐØ×Ò�˜Tœ\Ñ*Ô*¨AÑ.Ô.Ð.Ø×,Ò,¨TÑ2Ô2Ð2Ø×Ò�,¨¬Ñ6Ô6Ð6Ð6Ð6r(   c                 óÞ  — |                       | j        ¦  «        \  }}|                      t          df¦  «         |                     ¦   «          |                      t          dft
          df¦  «         |                      t          dd¦  «         | j                             t
          df¦  «         |  	                    | j
                             d¦  «        j        ¦  «         |                      ¦   «          |                      t          |j
        ¦  «        d¦  «         |                      |¦  «         |                      |                     ¦   «         t          d| j
        d         f¦  «         d S )Nrž   r¨   Tr   )rÑ   rV   rÀ   r¡   rà   rª   rÈ   r¶   rÂ   rÊ   r   r²   rb   rí   rÌ   rÔ   rÕ   s      r'   Ú%test_two_family_success_after_timeoutz3ConnectorTest.test_two_family_success_after_timeout—  s1  € Ø×)Ò)¨$¬-Ñ8Ô8‰ˆˆfØ×Ò�S #˜JÑ'Ô'Ð'Ø�ŠÑÔÐØ×Ò�S #˜J­¨c¨
Ñ3Ô3Ð3Ø×Ò�S # tÑ,Ô,Ð,àÔ× Ò ¥# s Ñ,Ô,Ð,Ø�Š˜œ×(Ò(¨Ñ-Ô-Ô4Ñ5Ô5Ð5Ø×ÒÑÔÐØ×Ò�˜Tœ\Ñ*Ô*¨AÑ.Ô.Ð.Ø×,Ò,¨TÑ2Ô2Ð2Ø×Ò˜Ÿš™œ­3°°T´\À#Ô5FÐ*GÑHÔHÐHÐHÐHr(   c                 óx  — |                       | j        ¦  «        \  }}|                      t          df¦  «         |                     ¦   «          | j                             t          df¦  «         |                      | j                             d¦  «        j	        ¦  «         |                      ¦   «          | 
                    ¦   «          |                      ¦   «          |                      t          |j        ¦  «        d¦  «         |                      |¦  «         |                      t          |j        ¦  «         d S )Nrž   r   )rÑ   rV   rÀ   r¡   rì   r¶   rÂ   rÊ   r   r²   rà   rb   rí   rÌ   r‚   r   rÔ   rÕ   s      r'   Ú-test_two_family_timeout_after_connect_timeoutz;ConnectorTest.test_two_family_timeout_after_connect_timeout¥  s  € Ø×)Ò)¨$¬-Ñ8Ô8‰ˆˆfØ×Ò�S #˜JÑ'Ô'Ð'Ø×ÒÑ!Ô!Ð!ØÔ× Ò ¥# s Ñ,Ô,Ð,Ø�Š˜œ×(Ò(¨Ñ-Ô-Ô4Ñ5Ô5Ð5Ø×ÒÑÔÐØ�ŠÑÔÐð 	×ÒÑÔÐØ×Ò�˜Tœ\Ñ*Ô*¨AÑ.Ô.Ð.Ø×,Ò,¨TÑ2Ô2Ð2Ø×Ò�,¨¬Ñ6Ô6Ð6Ð6Ð6r(   )r4   r5   r6   r´   r<   rF   r¼   rÀ   rÈ   rÌ   rÑ   rÖ   rÙ   rÜ   rÞ   rá   rã   rå   rç   rê   rî   rð   ró   rõ   r÷   rù   rû   r7   r8   s   @r'   r­   r­   Ä   sÎ  ø€ € € € € ðð ð ð ð ñ ô ð ðIð Ið Ið Ið Iðð ð ð ð ðð ð ðLð Lð Lð	ð 	ð 	ð+ð +ð +ðð ð ðIð Ið Ið2ð 2ð 2ðIð Ið Ið2ð 2ð 2ð
Ið 
Ið 
IðIð Ið Ið	ð 	ð 	ð	6ð 	6ð 	6ð2ð 2ð 2ð 7ð 7ð 7ð Ið Ið Ið7ð 7ð 7ð
2ð 
2ð 
2ð7ð 7ð 7ðIð Ið Ið7ð 7ð 7ð 7ð 7ð 7ð 7r(   r­   )(Ú
contextlibr   rŽ   rS   ÚunittestÚtornado.concurrentr   Útornado.netutilr   r   Útornado.queuesr   Útornado.tcpclientr	   r
   Útornado.tcpserverr   Útornado.testingr   r   Útornado.test.utilr   r   r   Útornado.genr   ÚtypingÚTYPE_CHECKINGÚtornado.iostreamr   r   r   r   r¡   rª   r   r:   ÚTestCaserœ   r­   rK   r(   r'   ú<module>r
     sù  ðð Ð Ð Ð Ð Ð Ø €€€Ø €€€Ø €€€à %Ð %Ð %Ð %Ð %Ð %Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø  Ð  Ð  Ð  Ð  Ð  Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ $Ð $Ð $Ð $Ð $Ð $à €€€à	Ôð )Ø)Ð)Ð)Ð)Ð)Ð)Ø(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ð �€€Sðð ð ð ð �Iñ ô ð ð&wð wð wð wð w�Mñ wô wð wðt>ð >ð >ð >ð >˜Ô*ñ >ô >ð >ðn7ð n7ð n7ð n7ð n7�Mñ n7ô n7ð n7ð n7ð n7r(   