Ë
    êmxi@  ã                   óR  — 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j6                  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jJ                  «      Z& G d„ de«      Z'y)é    )Ú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|«      }| j                  |«       |d   j                  «       d   | _        y )Nr   Ú	localhostr   )	ÚsuperÚ__init__Ústreamsr   Úqueuer   Úadd_socketsÚgetsocknameÚport)ÚselfÚfamilyÚsocketsÚ	__class__s      €úR/home/htdocs/ttos/venv/lib/python3.12/site-packages/tornado/test/tcpclient_test.pyr   zTestTCPServer.__init__)   sS   ø€ Ü‰ÑÔØˆŒÜ“WˆŒ
Ü˜q +¨vÓ6ˆØ×Ñ˜Ô!Ø˜A‘J×*Ñ*Ó,¨QÑ/ˆ�	ó    c                 óp   — | j                   j                  |«       | j                  j                  |«       y ©N)r   Úappendr   Úput)r#   ÚstreamÚaddresss      r'   Úhandle_streamzTestTCPServer.handle_stream1   s$   € Ø�‰×Ñ˜FÔ#Ø�
‰
�‰�vÕr(   c                 ód   •— t         ‰| �  «        | j                  D ]  }|j                  «        Œ y r*   )r   Ústopr   Úclose©r#   r-   r&   s     €r'   r1   zTestTCPServer.stop5   s(   ø€ Ü‰‰ŒØ—l‘lò 	ˆFØ�L‰L�Nñ	r(   )Ú__name__Ú
__module__Ú__qualname__r   r/   r1   Ú__classcell__©r&   s   @r'   r   r   (   s   ø„ ô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                 óN   •— t         ‰| �  «        d | _        t        «       | _        y r*   )r   ÚsetUpÚserverr	   Úclient©r#   r&   s    €r'   r<   zTCPClientTest.setUp<   s   ø€ Ü‰‰ŒØˆŒÜ“kˆ�r(   c                 óN   — t        |«      | _        | j                  j                  S r*   )r   r=   r"   )r#   r$   s     r'   Ústart_serverzTCPClientTest.start_serverA   s   € Ü# FÓ+ˆŒØ�{‰{×ÑÐr(   c                 ó`   — | j                   �"| j                   j                  «        d | _         y y r*   )r=   r1   ©r#   s    r'   Ústop_serverzTCPClientTest.stop_serverE   s(   € Ø�;‰;Ð"Ø�K‰K×ÑÔØˆD�Kð #r(   c                 óv   •— | j                   j                  «        | j                  «        t        ‰| �  «        y r*   )r>   r2   rD   r   ÚtearDownr?   s    €r'   rF   zTCPClientTest.tearDownJ   s*   ø€ Ø�‰×ÑÔØ×ÑÔÜ‰ÑÕr(   c                 ó²   — | j                   j                  d„ «      }|D �ch c]  }|d   ’Œ	 }}t        j                  |vr| j	                  d«       y y c c}w )Nc                  ó6   — t        «       j                  dd«      S )Nr   éP   )r   Úresolve© r(   r'   ú<lambda>z1TCPClientTest.skipIfLocalhostV4.<locals>.<lambda>R   s   € ´³×1CÑ1CÀKÐQSÓ1T€ r(   r   z"localhost does not resolve to ipv6)Úio_loopÚrun_syncÚsocketÚAF_INET6ÚskipTest)r#   ÚaddrinfoÚaddrÚfamiliess       r'   ÚskipIfLocalhostV4zTCPClientTest.skipIfLocalhostV4O   sS   € ð —<‘<×(Ñ(Ñ)TÓUˆØ(0Ö1 �D˜“GÐ1ˆÐ1Ü�?‰? (Ñ*Ø�M‰MÐ>Õ?ð +ùò 2s   ¡Ac              #   ó†  K  — | j                  |«      }| j                  j                  |||||¬«      –—}| j                  €J ‚| j                  j                  j                  «       –—}t        |«      5  |j                  d«       |j                  d«      –—}| j                  |d«       d d d «       y # 1 sw Y   y xY w­w)N)Ú	source_ipÚsource_portÚafs   helloé   )
rA   r>   Úconnectr=   r   Úgetr   ÚwriteÚ
read_bytesÚassertEqual)	r#   r$   ÚhostrW   rX   r"   r-   Úserver_streamÚdatas	            r'   Údo_test_connectzTCPClientTest.do_test_connectW   sº   è ø€ à× Ñ  Ó(ˆØ—{‘{×*Ñ*ØØØØ#Øð +ó 
ñ 
ˆð �{‰{Ð&Ð&Ð&Ø"Ÿk™k×/Ñ/×3Ñ3Ó5Ñ5ˆÜ�V‹_ñ 	-Ø�L‰L˜Ô"Ø&×1Ñ1°!Ó4Ñ4ˆDØ×Ñ˜T 8Ô,÷	-÷ 	-ñ 	-üs   ‚A3CÁ57B5Â,	CÂ5B>Â:Cc                 óD   — | j                  t        j                  d«       y ©Nú	127.0.0.1©rc   rO   ÚAF_INETrC   s    r'   Útest_connect_ipv4_ipv4z$TCPClientTest.test_connect_ipv4_ipv4h   ó   € Ø×ÑœVŸ^™^¨[Õ9r(   c                 óD   — | j                  t        j                  d«       y ©Nr   rg   rC   s    r'   Útest_connect_ipv4_dualz$TCPClientTest.test_connect_ipv4_dualk   rj   r(   c                 ód   — | j                  «        | j                  t        j                  d«       y ©Nz::1©rU   rc   rO   rP   rC   s    r'   Útest_connect_ipv6_ipv6z$TCPClientTest.test_connect_ipv6_ipv6n   s"   € à×ÑÔ Ø×ÑœVŸ_™_¨eÕ4r(   c                 ód   — | j                  «        | j                  t        j                  d«       y rl   rp   rC   s    r'   Útest_connect_ipv6_dualz$TCPClientTest.test_connect_ipv6_duals   s"   € à×ÑÔ Ø×ÑœVŸ_™_¨kÕ:r(   c                 óD   — | j                  t        j                  d«       y re   ©rc   rO   Ú	AF_UNSPECrC   s    r'   Útest_connect_unspec_ipv4z&TCPClientTest.test_connect_unspec_ipv4x   ó   € Ø×ÑœV×-Ñ-¨{Õ;r(   c                 ód   — | j                  «        | j                  t        j                  d«       y ro   )rU   rc   rO   rv   rC   s    r'   Útest_connect_unspec_ipv6z&TCPClientTest.test_connect_unspec_ipv6{   s$   € à×ÑÔ Ø×ÑœV×-Ñ-¨uÕ5r(   c                 óD   — | j                  t        j                  d«       y rl   ru   rC   s    r'   Útest_connect_unspec_dualz&TCPClientTest.test_connect_unspec_dual€   rx   r(   c              #   óØ   K  — t        «       \  }}| j                  |«       | j                  t        «      5  | j                  j                  d|«      –— d d d «       y # 1 sw Y   y xY w­wre   )r   Ú
addCleanupÚassertRaisesÚIOErrorr>   r[   )r#   Úcleanup_funcr"   s      r'   Útest_refused_ipv4zTCPClientTest.test_refused_ipv4ƒ   sW   è ø€ ä*›_Ñˆ�dØ�‰˜Ô%Ø×ÑœwÓ'ñ 	9Ø—+‘+×%Ñ% k°4Ó8Ò8÷	9÷ 	9ñ 	9üs   ‚4A*¶AÁ	A*ÁA'Á#A*c                 ó|   — | j                  t        j                  | j                  t        j                  dd¬«       y)z8Fail when trying to use the source IP Address '8.8.8.8'.rf   z8.8.8.8©rW   N)r   rO   Úerrorrc   rh   rC   s    r'   Útest_source_ip_failz!TCPClientTest.test_source_ip_failŠ   s2   € à×ÑÜ�L‰LØ× Ñ Ü�N‰NØØð 	õ 	
r(   c                 óH   — | j                  t        j                  dd¬«       y)z=Success when trying to use the source IP Address '127.0.0.1'.rf   r„   Nrg   rC   s    r'   Útest_source_ip_successz$TCPClientTest.test_source_ip_success”   s   € à×ÑœVŸ^™^¨[ÀKÐÕPr(   c                 óÌ   — t        j                  «       dk(  r| j                  d«       | j                  t        j
                  | j                  t        j                  dd¬«       y)z&Fail when trying to use source port 1.Úrootzrunning as rootrf   r   )rX   N)ÚgetpassÚgetuserrQ   r   rO   r…   rc   rh   rC   s    r'   Útest_source_port_failz#TCPClientTest.test_source_port_fail˜   sR   € ô �?‰?Ó Ò&ð �M‰MÐ+Ô,Ø×ÑÜ�L‰LØ× Ñ Ü�N‰NØØð 	õ 	
r(   c              #   óÌ   K  — d} G d„ dt         «      }| j                  t        «      5  t         |«       ¬«      j	                  dd|¬«      –— d d d «       y # 1 sw Y   y xY w­w)Ngš™™™™™©?c                   ó   — e Zd Zd„ Zy)ú;TCPClientTest.test_connect_timeout.<locals>.TimeoutResolverc                 ó   — t        «       S r*   r   )r#   ÚargsÚkwargss      r'   rJ   zCTCPClientTest.test_connect_timeout.<locals>.TimeoutResolver.resolve¬   s	   € Ü“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§   sc   è ø€ àˆô	 œhô 	 ð ×Ñœ|Ó,ñ 	Ü¡_Ó%6Ô7×?Ñ?Ø˜5¨'ð @ó ò ÷	÷ 	ñ 	üs   ‚'A$©&AÁ	A$ÁA!ÁA$)NN)r4   r5   r6   r<   rA   rD   rF   rU   r   rc   ri   rm   r   rq   rs   rw   rz   r|   r‚   r†   rˆ   r   r�   r—   r7   r8   s   @r'   r:   r:   ;   sÈ   ø„ ô"ò
 òô
ò
@ð ò-ó ð-ò :ò:ð ñ5ó ð5ð ñ;ó ð;ò<ð ñ6ó ð6ò<ð ñ9ó ð9ò
òQð ñ
ó ð
ð ñ
ó ô
r(   r:   c                   ó   — e Zd Zd„ Zd„ Zy)ÚTestConnectorSplitc                 ó´   — t        j                  t        dft        dfg«      \  }}| j                  |t        dft        dfg«       | j                  |g «       y )NÚaÚb)r
   ÚsplitÚAF1r_   ©r#   ÚprimaryÚ	secondarys      r'   Útest_one_familyz"TestConnectorSplit.test_one_family¶   sQ   € ä'×-Ñ-´°S¨z¼CÀ¸:Ð.FÓGÑˆ�Ø×Ñ˜¤C¨ :´°S¨zÐ":Ô;Ø×Ñ˜ BÕ'r(   c                 óì   — t        j                  t        dft        dft        dft        dfg«      \  }}| j	                  |t        dft        dfg«       | j	                  |t        dft        dfg«       y ©Nr›   rœ   ÚcÚd)r
   r�   rž   ÚAF2r_   rŸ   s      r'   Ú
test_mixedzTestConnectorSplit.test_mixed¼   so   € Ü'×-Ñ-Ü�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™   µ   s   „ ò(ó>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y)úConnectorTest.FakeStreamc                 ó   — d| _         y )NF©ÚclosedrC   s    r'   r   z!ConnectorTest.FakeStream.__init__Æ   s	   € ØˆD�Kr(   c                 ó   — d| _         y )NTr®   rC   s    r'   r2   zConnectorTest.FakeStream.closeÉ   s	   € ØˆD�Kr(   N)r4   r5   r6   r   r2   rK   r(   r'   Ú
FakeStreamr¬   Å   s   „ ò	 ó	r(   r±   c                 ó„   •— t         ‰| �  «        i | _        i | _        t        dft        dft
        dft
        dfg| _        y r¤   )r   r<   Úconnect_futuresr   rž   r§   rR   r?   s    €r'   r<   zConnectorTest.setUpÌ   s@   ø€ Ü‰‰Œàð 	Ôð ˆŒÜ˜s˜¤c¨3 Z´#°s°¼cÀ3¸ZÐHˆ�r(   c                 ó–   •— | j                   j                  «       D ]  }| j                  |j                  «       Œ t        ‰| �  «        y r*   )r   ÚvaluesÚassertFalser¯   r   rF   r3   s     €r'   rF   zConnectorTest.tearDownÔ   s>   ø€ ð —l‘l×)Ñ)Ó+ò 	,ˆFØ×Ñ˜VŸ]™]Õ+ð	,ä‰ÑÕr(   c                 ó†   — t         j                  «       }|| j                  |<   t        «       }|| j                  ||f<   ||fS r*   )rª   r±   r   r   r³   )r#   rY   rS   r-   Úfutures        r'   Úcreate_streamzConnectorTest.create_streamÛ   sC   € Ü×)Ñ)Ó+ˆØ#ˆ�‰�TÑÜ“ˆØ+1ˆ×Ñ˜b $˜ZÑ(Ø�vˆ~Ðr(   c                 ó|   — | j                  t        | j                  j                  «       «      t        |«      «       y r*   )r_   Úsortedr³   Úkeys)r#   r¼   s     r'   Úassert_pendingzConnectorTest.assert_pendingâ   s*   € Ø×Ñœ × 4Ñ 4× 9Ñ 9Ó ;Ó<¼fÀT»lÕKr(   c                 óR  — | j                   j                  ||f«      }|r|j                  | j                  |   «       n4| j                  j                  |«       |j	                  t        «       «       | j                  j                  | j                  «       | j                  «        y r*   )
r³   ÚpopÚ
set_resultr   Úset_exceptionr€   rM   Úadd_callbackr1   Úwait)r#   rY   rS   Úsuccessr¸   s        r'   Úresolve_connectzConnectorTest.resolve_connectå   sw   € Ø×%Ñ%×)Ñ)¨2¨t¨*Ó5ˆÙØ×Ñ˜dŸl™l¨4Ñ0Õ1à�L‰L×Ñ˜TÔ"Ø× Ñ ¤£Ô+à�‰×!Ñ! $§)¡)Ô,Ø�	‰	�r(   c                 ó\   — |j                   D ]  }| j                  |j                  «       Œ y r*   )r   Ú
assertTruer¯   )r#   Úconnr-   s      r'   Úassert_connector_streams_closedz-ConnectorTest.assert_connector_streams_closedð   s%   € Ø—l‘lò 	+ˆFØ�O‰O˜FŸM™MÕ*ñ	+r(   c                 ó’   — t        || j                  «      }|j                  d| j                  j	                  «       dz   ¬«      }||fS )Ni  )Úconnect_timeout)r
   r¹   ÚstartrM   Útime)r#   rR   rÈ   r¸   s       r'   Ústart_connectzConnectorTest.start_connectô   sB   € Ü˜( D×$6Ñ$6Ó7ˆà—‘˜D°$·,±,×2CÑ2CÓ2EÈÑ2L�ÓMˆØ�Vˆ|Ðr(   c                 óJ  — | j                  | j                  «      \  }}| j                  t        | j                  j                  «       «      t        dfg«       | j                  t        dd«       | j                  |j                  «       t        d| j                  d   f«       y )Nr›   T)
rÎ   rR   r_   Úlistr³   r¼   rž   rÅ   Úresultr   ©r#   rÈ   r¸   s      r'   Útest_immediate_successz$ConnectorTest.test_immediate_successú   s|   € Ø×)Ñ)¨$¯-©-Ó8‰ˆˆfØ×Ñœ˜d×2Ñ2×7Ñ7Ó9Ó:¼cÀ3¸Z¸LÔIØ×ÑœS # tÔ,Ø×Ñ˜Ÿ™›¬3°°T·\±\À#Ñ5FÐ*GÕHr(   c                 óÖ   — | j                  t        dfg«      \  }}| j                  t        df«       | j                  t        dd«       | j	                  t
        |j                  «       y )Nr›   F©rÎ   rž   r½   rÅ   r   r€   rÑ   rÒ   s      r'   Útest_immediate_failurez$ConnectorTest.test_immediate_failure   sT   € à×)Ñ)¬C°¨:¨,Ó7‰ˆˆfØ×ÑœS #˜JÔ'Ø×ÑœS # uÔ-Ø×Ñœ' 6§=¡=Õ1r(   c                 óh  — | j                  t        dft        dfg«      \  }}| j                  t        df«       | j                  t        dd«       | j                  t        df«       | j                  t        dd«       | j	                  |j                  «       t        d| j                  d   f«       y ©Nr›   rœ   FT)rÎ   rž   r½   rÅ   r_   rÑ   r   rÒ   s      r'   Útest_one_family_second_tryz(ConnectorTest.test_one_family_second_try  s‘   € Ø×)Ñ)¬C°¨:¼¸S°zÐ*BÓC‰ˆˆfØ×ÑœS #˜JÔ'Ø×ÑœS # uÔ-Ø×ÑœS #˜JÔ'Ø×ÑœS # tÔ,Ø×Ñ˜Ÿ™›¬3°°T·\±\À#Ñ5FÐ*GÕHr(   c                 ó@  — | j                  t        dft        dfg«      \  }}| j                  t        df«       | j                  t        dd«       | j                  t        df«       | j                  t        dd«       | j	                  t
        |j                  «       y )Nr›   rœ   FrÕ   rÒ   s      r'   Ú"test_one_family_second_try_failurez0ConnectorTest.test_one_family_second_try_failure  s   € Ø×)Ñ)¬C°¨:¼¸S°zÐ*BÓC‰ˆˆfØ×ÑœS #˜JÔ'Ø×ÑœS # uÔ-Ø×ÑœS #˜JÔ'Ø×ÑœS # uÔ-Ø×Ñœ' 6§=¡=Õ1r(   c                 ó¶  — | j                  t        dft        dfg«      \  }}| j                  t        df«       |j                  «        | j                  t        df«       | j	                  t        dd«       | j                  t        df«       | j	                  t        dd«       | j                  |j                  «       t        d| j                  d   f«       y rØ   )rÎ   rž   r½   Ú
on_timeoutrÅ   r_   rÑ   r   rÒ   s      r'   Ú"test_one_family_second_try_timeoutz0ConnectorTest.test_one_family_second_try_timeout  s¯   € Ø×)Ñ)¬C°¨:¼¸S°zÐ*BÓC‰ˆˆfØ×ÑœS #˜JÔ'ð 	�‰ÔØ×ÑœS #˜JÔ'Ø×ÑœS # uÔ-Ø×ÑœS #˜JÔ'Ø×ÑœS # tÔ,Ø×Ñ˜Ÿ™›¬3°°T·\±\À#Ñ5FÐ*GÕHr(   c                 óœ  — | j                  | j                  «      \  }}| j                  t        df«       | j	                  t        dd«       | j                  t        dft
        df«       | j	                  t        dd«       | j	                  t
        dd«       | j                  |j                  «       t
        d| j                  d   f«       y )Nr›   Frœ   r¥   T)	rÎ   rR   r½   rž   rÅ   r§   r_   rÑ   r   rÒ   s      r'   Ú#test_two_families_immediate_failurez1ConnectorTest.test_two_families_immediate_failure#  s    € Ø×)Ñ)¨$¯-©-Ó8‰ˆˆfØ×ÑœS #˜JÔ'Ø×ÑœS # uÔ-Ø×ÑœS #˜J¬¨c¨
Ô3Ø×ÑœS # uÔ-Ø×ÑœS # tÔ,Ø×Ñ˜Ÿ™›¬3°°T·\±\À#Ñ5FÐ*GÕHr(   c                 ó®  — | j                  | j                  «      \  }}| j                  t        df«       |j	                  «        | j                  t        dft
        df«       | j                  t
        dd«       | j                  |j                  «       t
        d| j                  d   f«       | j                  t        dd«       | j                  «        y )Nr›   r¥   TF)
rÎ   rR   r½   rž   rÝ   r§   rÅ   r_   rÑ   r   rÒ   s      r'   Útest_two_families_timeoutz'ConnectorTest.test_two_families_timeout,  s¤   € Ø×)Ñ)¨$¯-©-Ó8‰ˆˆfØ×ÑœS #˜JÔ'Ø�‰ÔØ×ÑœS #˜J¬¨c¨
Ô3Ø×ÑœS # tÔ,Ø×Ñ˜Ÿ™›¬3°°T·\±\À#Ñ5FÐ*GÔHà×ÑœS # uÔ-Ø×ÑÕr(   c                 óö  — | j                  | j                  «      \  }}| j                  t        df«       |j	                  «        | j                  t        dft
        df«       | j                  t        dd«       | j                  |j                  «       t        d| j                  d   f«       | j                  t
        dd«       | j                  | j                  j                  d«      j                  «       y )Nr›   r¥   T)rÎ   rR   r½   rž   rÝ   r§   rÅ   r_   rÑ   r   rÇ   r¿   r¯   rÒ   s      r'   Útest_success_after_timeoutz(ConnectorTest.test_success_after_timeout7  s¹   € Ø×)Ñ)¨$¯-©-Ó8‰ˆˆfØ×ÑœS #˜JÔ'Ø�‰ÔØ×ÑœS #˜J¬¨c¨
Ô3Ø×ÑœS # tÔ,Ø×Ñ˜Ÿ™›¬3°°T·\±\À#Ñ5FÐ*GÔHà×ÑœS # tÔ,Ø�‰˜Ÿ™×(Ñ(¨Ó-×4Ñ4Õ5r(   c                 ó˜  — | j                  | j                  «      \  }}| j                  t        df«       |j	                  «        | j                  t        dft
        df«       | j                  t
        dd«       | j                  t        dft
        df«       | j                  t
        dd«       | j                  t        df«       | j                  t        dd«       | j                  t        df«       | j                  |j                  «       «       | j                  t        dd«       | j                  t        |j                  «       y )Nr›   r¥   Fr¦   rœ   )rÎ   rR   r½   rž   rÝ   r§   rÅ   r¶   Údoner   r€   rÑ   rÒ   s      r'   Útest_all_failzConnectorTest.test_all_failB  sú   € Ø×)Ñ)¨$¯-©-Ó8‰ˆˆfØ×ÑœS #˜JÔ'Ø�‰ÔØ×ÑœS #˜J¬¨c¨
Ô3Ø×ÑœS # uÔ-Ø×ÑœS #˜J¬¨c¨
Ô3Ø×ÑœS # uÔ-à×ÑœS #˜JÔ'Ø×ÑœS # uÔ-Ø×ÑœS #˜JÔ'Ø×Ñ˜Ÿ™›Ô'Ø×ÑœS # uÔ-Ø×Ñœ' 6§=¡=Õ1r(   c                 ó,  — | j                  t        dft        dfg«      \  }}| j                  t        df«       |j                  «        | j                  j                  t        df«       | j                  | j                  j                  d«      j                  «       |j                  «        | j                  «        | j                  t        |j                  «      d«       | j                  |«       | j                  t        |j                  «       y )Nr›   rœ   r   )rÎ   rž   r½   Úon_connect_timeoutr³   r¿   rÇ   r   r¯   rÝ   r_   Ú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‰ˆˆfØ×ÑœS #˜JÔ'Ø×ÑÔ!ð 	×Ñ× Ñ ¤# s Ô,Ø�‰˜Ÿ™×(Ñ(¨Ó-×4Ñ4Ô5Ø�‰Ôð 	×ÑÔØ×Ñœ˜TŸ\™\Ó*¨AÔ.Ø×,Ñ,¨TÔ2Ø×Ñœ,¨¯©Õ6r(   c                 ó  — | j                  t        dft        dfg«      \  }}| j                  t        df«       | j                  t        dd«       |j	                  «        | j                  «        | j                  | j                  d   j                  «       | j                  t        |j                  «      d«       | j                  |«       | j                  |j                  «       t        d| j                  d   f«       y )Nr›   rœ   Tr   )rÎ   rž   r½   rÅ   ré   r¶   r   r¯   r_   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‰ˆˆfØ×ÑœS #˜JÔ'Ø×ÑœS # tÔ,Ø×ÑÔ!Ø×ÑÔØ×Ñ˜Ÿ™ cÑ*×1Ñ1Ô2à×Ñœ˜TŸ\™\Ó*¨AÔ.à×,Ñ,¨TÔ2Ø×Ñ˜Ÿ™›¬3°°T·\±\À#Ñ5FÐ*GÕHr(   c                 óh  — | j                  t        dft        dfg«      \  }}| j                  t        df«       | j                  t        dd«       | j                  t        df«       |j	                  «        | j
                  j                  t        df«       | j                  | j                  j                  d«      j                  «       | j                  «        | j                  t        |j                  «      d«       | j                  |«       | j                  t        |j                  «       y ©Nr›   rœ   Fr   )rÎ   rž   r½   rÅ   ré   r³   r¿   rÇ   r   r¯   r_   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‰ˆˆfØ×ÑœS #˜JÔ'Ø×ÑœS # uÔ-Ø×ÑœS #˜JÔ'Ø×ÑÔ!Ø×Ñ× Ñ ¤# s Ô,Ø�‰˜Ÿ™×(Ñ(¨Ó-×4Ñ4Ô5Ø×ÑÔØ×Ñœ˜TŸ\™\Ó*¨AÔ.Ø×,Ñ,¨TÔ2Ø×Ñœ,¨¯©Õ6r(   c                 óì  — | j                  t        dft        dfg«      \  }}| j                  t        df«       | j                  t        dd«       | j                  t        df«       | j                  t        dd«       |j	                  «        | j                  «        | j                  t        |j                  «      d«       | j                  |«       | j                  t        |j                  «       y rï   )rÎ   rž   r½   rÅ   ré   r_   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‰ˆˆfØ×ÑœS #˜JÔ'Ø×ÑœS # uÔ-Ø×ÑœS #˜JÔ'Ø×ÑœS # uÔ-Ø×ÑÔ!Ø×ÑÔØ×Ñœ˜TŸ\™\Ó*¨AÔ.Ø×,Ñ,¨TÔ2Ø×Ñœ' 6§=¡=Õ1r(   c                 ó
  — | j                  | j                  «      \  }}| j                  t        df«       |j	                  «        | j                  t        dft
        df«       |j                  «        | j                  j                  t        df«       | j                  | j                  j                  d«      j                  «       | j                  j                  t
        df«       | j                  | j                  j                  d«      j                  «       | j                  «        | j                  t        |j                  «      d«       | j                  |«       | j                  t         |j"                  «       y )Nr›   r¥   r   )rÎ   rR   r½   rž   rÝ   r§   ré   r³   r¿   rÇ   r   r¯   r_   rê   rÉ   r   r   rÑ   rÒ   s      r'   Ú.test_two_family_timeout_before_connect_timeoutz<ConnectorTest.test_two_family_timeout_before_connect_timeoutˆ  s  € Ø×)Ñ)¨$¯-©-Ó8‰ˆˆfØ×ÑœS #˜JÔ'Ø�‰ÔØ×ÑœS #˜J¬¨c¨
Ô3Ø×ÑÔ!Ø×Ñ× Ñ ¤# s Ô,Ø�‰˜Ÿ™×(Ñ(¨Ó-×4Ñ4Ô5Ø×Ñ× Ñ ¤# s Ô,Ø�‰˜Ÿ™×(Ñ(¨Ó-×4Ñ4Ô5Ø×ÑÔØ×Ñœ˜TŸ\™\Ó*¨AÔ.Ø×,Ñ,¨TÔ2Ø×Ñœ,¨¯©Õ6r(   c                 ó–  — | j                  | j                  «      \  }}| j                  t        df«       |j	                  «        | j                  t        dft
        df«       | j                  t        dd«       | j                  j                  t
        df«       | j                  | j                  j                  d«      j                  «       | j                  «        | j                  t        |j                  «      d«       | j                  |«       | j                  |j                  «       t        d| j                  d   f«       y )Nr›   r¥   Tr   )rÎ   rR   r½   rž   rÝ   r§   rÅ   r³   r¿   rÇ   r   r¯   r_   rê   rÉ   rÑ   rÒ   s      r'   Ú%test_two_family_success_after_timeoutz3ConnectorTest.test_two_family_success_after_timeout—  sò   € Ø×)Ñ)¨$¯-©-Ó8‰ˆˆfØ×ÑœS #˜JÔ'Ø�‰ÔØ×ÑœS #˜J¬¨c¨
Ô3Ø×ÑœS # tÔ,à×Ñ× Ñ ¤# s Ô,Ø�‰˜Ÿ™×(Ñ(¨Ó-×4Ñ4Ô5Ø×ÑÔØ×Ñœ˜TŸ\™\Ó*¨AÔ.Ø×,Ñ,¨TÔ2Ø×Ñ˜Ÿ™›¬3°°T·\±\À#Ñ5FÐ*GÕHr(   c                 óD  — | j                  | j                  «      \  }}| j                  t        df«       |j	                  «        | j
                  j                  t        df«       | j                  | j                  j                  d«      j                  «       | j                  «        |j                  «        | j                  «        | j                  t        |j                  «      d«       | j                  |«       | j                  t        |j                   «       y )Nr›   r   )rÎ   rR   r½   rž   ré   r³   r¿   rÇ   r   r¯   rÝ   r_   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‰ˆˆfØ×ÑœS #˜JÔ'Ø×ÑÔ!Ø×Ñ× Ñ ¤# s Ô,Ø�‰˜Ÿ™×(Ñ(¨Ó-×4Ñ4Ô5Ø×ÑÔØ�‰Ôð 	×ÑÔØ×Ñœ˜TŸ\™\Ó*¨AÔ.Ø×,Ñ,¨TÔ2Ø×Ñœ,¨¯©Õ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ôòòLò	ò+òòIò2òIò2ò
IòIò	ò	6ò2ò 7ò Iò7ò
2ò7òIö7r(   rª   )(Ú
contextlibr   r‹   rO   Ú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Ý  ß 3Ý 'ß 3ß HÑ HÝ $ã à	×ÒÝ)ß(Ñ(ð �€€Sô�Iô ô&w�Mô wôt>˜×*Ñ*ô >ôn7�Mõ n7r(   