Ë
    êmxi~  ã            	       ó,  — d dl Z d dlZd dlZd dlmZ d dlZd dlZd dlZd dlm	Z	m
Z
mZmZmZ d dlmZmZmZ d dlmZmZ d dlZ	 d dlZd dlmZ e G d„ de«      «       Ze G d	„ d
e«      «       Zd„ Ze G d„ de«      «       Z G d„ de«      Z G d„ de«      Ze G d„ de«      «       Z  G d„ de«      Z!e ejD                  ejF                  dk(  d«       G d„ dejH                  «      «       «       Z%e ejD                  edu d«       ejD                  ejF                  dk(  d«       ejD                  ejF                  dk(  d«       G d„ de«      «       «       «       «       Z& G d „ d!ejH                  «      Z' G d"„ d#ejH                  «      Z(y# e$ r dZY �ŒDw xY w)$é    N)ÚPopen)ÚBlockingResolverÚOverrideResolverÚThreadedResolverÚis_valid_ipÚbind_sockets)ÚAsyncTestCaseÚgen_testÚbind_unused_port)ÚskipIfNoNetworkÚabstract_base_test)ÚCaresResolverc                   ó    — e Zd ZdZed„ «       Zy)Ú_ResolverTestMixinNc              #   óà   K  — | j                   j                  ddt        j                  «      –—}| j	                  t        j
                  df|v xs t        j                  df|v d|› �«       y ­w)NÚ	localhostéP   )ú	127.0.0.1r   )ú::1r   zloopback address not found in )ÚresolverÚresolveÚsocketÚ	AF_UNSPECÚ
assertTrueÚAF_INETÚAF_INET6)ÚselfÚaddrinfos     úP/home/htdocs/ttos/venv/lib/python3.12/site-packages/tornado/test/netutil_test.pyÚtest_localhostz!_ResolverTestMixin.test_localhost!   sg   è ø€ àŸ™×.Ñ.¨{¸BÄ×@PÑ@PÓQÑQˆð 	�‰Ü�n‰nÐ/Ð0°HÐ<ò <Ü—‘ +Ð.°(Ð:Ø,¨X¨JÐ7õ	
ùs   ‚A,A.)Ú__name__Ú
__module__Ú__qualname__r   r
   r    © ó    r   r   r      s   „ à€Hàñ	
ó ñ	
r%   r   c                   ó    — e Zd ZdZed„ «       Zy)Ú_ResolverErrorTestMixinNc              #   óº   K  — | j                  t        «      5  | j                  j                  ddt        j
                  «      –— d d d «       y # 1 sw Y   y xY w­w)Nzan invalid domainr   )ÚassertRaisesÚIOErrorr   r   r   r   ©r   s    r   Útest_bad_hostz%_ResolverErrorTestMixin.test_bad_host4   sL   è ø€ à×ÑœwÓ'ñ 	SØ—-‘-×'Ñ'Ð(;¸RÄ×AQÑAQÓRÒR÷	S÷ 	Sñ 	Süs   ‚A˜.AÁ	AÁAÁA)r!   r"   r#   r   r
   r,   r$   r%   r   r'   r'   0   s   „ à€HàñSó ñSr%   r'   c                  óJ   — t        j                  t        j                  d«      ‚)z4Dummy implementation of getaddrinfo for use in mockszmock: lookup failed)r   ÚgaierrorÚerrnoÚEIO)Úargss    r   Ú_failing_getaddrinfor2   :   s   € ä
�/‰/œ%Ÿ)™)Ð%:Ó
;Ð;r%   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚBlockingResolverTestc                 ó@   •— t         ‰| �  «        t        «       | _        y ©N)ÚsuperÚsetUpr   r   ©r   Ú	__class__s    €r   r8   zBlockingResolverTest.setUpA   ó   ø€ Ü‰‰ŒÜ(Ó*ˆ�r%   ©r!   r"   r#   r8   Ú__classcell__©r:   s   @r   r4   r4   ?   s   ø„ ÷+ð +r%   r4   c                   ó(   ‡ — e Zd Zˆ fd„Zˆ fd„Zˆ xZS )ÚBlockingResolverErrorTestc                 óˆ   •— t         ‰| �  «        t        «       | _        t        j
                  | _        t        t        _        y r6   ©r7   r8   r   r   r   ÚgetaddrinfoÚreal_getaddrinfor2   r9   s    €r   r8   zBlockingResolverErrorTest.setUpJ   ó,   ø€ Ü‰‰ŒÜ(Ó*ˆŒÜ &× 2Ñ 2ˆÔÜ1ŒÕr%   c                 óL   •— | j                   t        _        t        ‰| �  «        y r6   ©rD   r   rC   r7   ÚtearDownr9   s    €r   rH   z"BlockingResolverErrorTest.tearDownP   ó   ø€ Ø!×2Ñ2ŒÔÜ‰ÑÕr%   ©r!   r"   r#   r8   rH   r=   r>   s   @r   r@   r@   I   ó   ø„ ô2÷ð r%   r@   c                   ó.   ‡ — e Zd Zˆ fd„Zed„ «       Zˆ xZS )ÚOverrideResolverTestc                 ó¨   •— t         ‰| �  «        ddddt        j                  fdddt        j                  fdi}t        t        «       |«      | _        y )N)ú
google.comr   ©z1.2.3.4r   rO   r   )ú 2a02:6b8:7c:40c:c51e:495f:e23a:3r   )r7   r8   r   r   r   r   r   r   )r   Úmappingr:   s     €r   r8   zOverrideResolverTest.setUpV   sO   ø€ Ü‰‰Œà Ø˜2œvŸ~™~Ð.°Ø˜2œvŸ™Ð/ð 2ð
ˆô )Ô)9Ó);¸WÓEˆ�r%   c              #   óH  K  — | j                   j                  ddt        j                  «      –—}| j	                  t        j                  df|«       | j                   j                  ddt        j
                  «      –—}| j	                  t        j
                  df|«       y ­w)NrO   r   rP   )rQ   r   r   r   )r   r   r   r   ÚassertInr   )r   Úresults     r   Útest_resolve_multiaddrz+OverrideResolverTest.test_resolve_multiaddrb   sv   è ø€ à—}‘}×,Ñ,¨\¸2¼v¿~¹~ÓNÑNˆØ�‰”v—~‘~ Ð7¸Ô@à—}‘}×,Ñ,¨\¸2¼v¿¹ÓOÑOˆØ�‰Ü�_‰_ÐLÐMÈvõ	
ùs   ‚B B")r!   r"   r#   r8   r
   rV   r=   r>   s   @r   rM   rM   U   s   ø„ ô
Fð ñ
ó ô
r%   rM   c                   ó(   ‡ — e Zd Zˆ fd„Zˆ fd„Zˆ xZS )ÚThreadedResolverTestc                 ó@   •— t         ‰| �  «        t        «       | _        y r6   )r7   r8   r   r   r9   s    €r   r8   zThreadedResolverTest.setUpo   r;   r%   c                 óV   •— | j                   j                  «        t        ‰| �  «        y r6   )r   Úcloser7   rH   r9   s    €r   rH   zThreadedResolverTest.tearDowns   s   ø€ Ø�‰×ÑÔÜ‰ÑÕr%   rJ   r>   s   @r   rX   rX   m   s   ø„ ô+÷ð r%   rX   c                   ó(   ‡ — e Zd Zˆ fd„Zˆ fd„Zˆ xZS )ÚThreadedResolverErrorTestc                 óˆ   •— t         ‰| �  «        t        «       | _        t        j
                  | _        t        t        _        y r6   rB   r9   s    €r   r8   zThreadedResolverErrorTest.setUpy   rE   r%   c                 óL   •— | j                   t        _        t        ‰| �  «        y r6   rG   r9   s    €r   rH   z"ThreadedResolverErrorTest.tearDown   rI   r%   rJ   r>   s   @r   r]   r]   x   rK   r%   r]   Úwin32z!preexec_fn not available on win32c                   ó   — e Zd Zd„ Zy)ÚThreadedResolverImportTestc                 óx  ‡— dŠt         j                  ddg}t        j                  «       }t        |ˆfd„¬«      }t        j                  «       |z
  ‰k  rU|j	                  «       }|�| j                  d|«       y t        j                  d«       t        j                  «       |z
  ‰k  rŒU| j                  d«       y )	Né   z-cz'import tornado.test.resolve_test_helperc                  ó.   •— t        j                  ‰ «      S r6   )ÚsignalÚalarm)ÚTIMEOUTs   €r   ú<lambda>z8ThreadedResolverImportTest.test_import.<locals>.<lambda>�   s   ø€ ´&·,±,¸wÓ2G€ r%   )Ú
preexec_fnr   gš™™™™™©?zimport timed out)ÚsysÚ
executableÚtimer   ÚpollÚassertEqualÚsleepÚfail)r   ÚcommandÚstartÚpopenÚreturn_coderh   s        @r   Útest_importz&ThreadedResolverImportTest.test_import‡   sš   ø€ Øˆô
 —>‘> 4Ð)RÐSˆä—	‘	“ˆÜ�gÓ*GÔHˆÜ�i‰i‹k˜EÑ! GÒ+ØŸ*™*›,ˆKØÐ&Ø× Ñ   KÔ0ØÜ�J‰J�tÔô �i‰i‹k˜EÑ! GÓ+ð 	�	‰	Ð$Õ%r%   N)r!   r"   r#   rv   r$   r%   r   rb   rb   „   s   „ ó&r%   rb   zpycares module not presentz*pycares doesn't return loopback on windowsÚdarwinz*pycares doesn't return 127.0.0.1 on darwinc                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚCaresResolverTestc                 ó@   •— t         ‰| �  «        t        «       | _        y r6   )r7   r8   r   r   r9   s    €r   r8   zCaresResolverTest.setUp¦   s   ø€ Ü‰‰ŒÜ%›ˆ�r%   r<   r>   s   @r   ry   ry   ¡   s   ø„ ÷
(ð (r%   ry   c                   ó   — e Zd Zd„ Zy)ÚIsValidIPTestc                 ó¨  — | j                  t        d«      «       | j                  t        d«      «       | j                  t        d«      «       | j                  t        d«      «       | j                  t        d«      «       | j                  t        d«      «       | j                  t        d«      «       | j                  t        d«      «       | j                  t        d	«      «       | j                  t        d
«      «       | j                  t        d«      «       | j                  t        d«      «       | j                  t        d«      «       y )Nr   z4.4.4.4r   z2620:0:1cfe:face:b00c::3zwww.google.comr   z4.4.4.4<z
 127.0.0.1Ú ú ú
ú Údaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)r   r   ÚassertFalser+   s    r   Útest_is_valid_ipzIsValidIPTest.test_is_valid_ip¬   sò   € Ø�‰œ KÓ0Ô1Ø�‰œ IÓ.Ô/Ø�‰œ EÓ*Ô+Ø�‰œÐ$>Ó?Ô@Ø×ÑœÐ%5Ó6Ô7Ø×Ñœ [Ó1Ô2Ø×Ñœ ZÓ0Ô1Ø×Ñœ \Ó2Ô3Ø×Ñœ R›Ô)Ø×Ñœ SÓ)Ô*Ø×Ñœ TÓ*Ô+Ø×Ñœ VÓ,Ô-Ø×Ñœ YÓ/Õ0r%   N)r!   r"   r#   r„   r$   r%   r   r|   r|   «   s   „ ó1r%   r|   c                   óT   — e Zd Zd„ Z ej
                   eed«       d«      d„ «       Zy)ÚTestPortAllocationc                 óþ   ‡— t        dd«      }	 |d   j                  «       d   Š| j                  t        ˆfd„|dd  D «       «      «       |D ]  }|j	                  «        Œ y # |D ]  }|j	                  «        Œ w xY w)Nr   r   é   c              3   óJ   •K  — | ]  }|j                  «       d    ‰k(  –— Œ y­w©rˆ   N©Úgetsockname©Ú.0ÚsÚports     €r   ú	<genexpr>z?TestPortAllocation.test_same_port_allocation.<locals>.<genexpr>Á   s!   øè ø€ ÒP¸q §¡£°Ñ 2°dÕ :ÑPùó   ƒ #)r   rŒ   r   Úallr[   ©r   ÚsocketsÚsockr�   s      @r   Útest_same_port_allocationz,TestPortAllocation.test_same_port_allocation½   sy   ø€ Ü˜q +Ó.ˆð	Ø˜1‘:×)Ñ)Ó+¨AÑ.ˆDØ�O‰OœCÓPÀGÈAÈBÀKÔPÓPÔQàò �Ø—
‘
•ñø˜ò �Ø—
‘
•ñús   �<A# Á#A<ÚSO_REUSEPORTzSO_REUSEPORT is not supportedc                 ó2  ‡— g }t        d¬«      \  }Š	 t        ‰dd¬«      }| j                  t        ˆfd„|D «       «      «       |j	                  «        |D ]  }|j	                  «        Œ y # |j	                  «        |D ]  }|j	                  «        Œ w xY w)NT)Ú
reuse_portr   c              3   óJ   •K  — | ]  }|j                  «       d    ‰k(  –— Œ y­wrŠ   r‹   r�   s     €r   r‘   z5TestPortAllocation.test_reuse_port.<locals>.<genexpr>Î   s!   øè ø€ ÒL¸q §¡£°Ñ 2°dÕ :ÑLùr’   )r   r   r   r“   r[   r”   s      @r   Útest_reuse_portz"TestPortAllocation.test_reuse_portÆ   sˆ   ø€ ð /1ˆÜ%°Ô6‰
ˆˆdð	Ü" 4¨ÀÔFˆGØ�O‰OœCÓLÀGÔLÓLÔMà�J‰JŒLØò �Ø—
‘
•ñøð �J‰JŒLØò �Ø—
‘
•ñús   ”1A- Á-)BN)	r!   r"   r#   r—   ÚunittestÚskipIfÚhasattrr   rœ   r$   r%   r   r†   r†   ¼   s6   „ òð €X‡_�_Ù�F˜NÓ+Ð+Ð-Lóñ	óñ	r%   r†   ))r/   rf   r   Ú
subprocessr   rk   rm   r�   Útornado.netutilr   r   r   r   r   Útornado.testingr	   r
   r   Útornado.test.utilr   r   ÚtypingÚpycaresÚtornado.platform.caresresolverr   ÚImportErrorr   r'   r2   r4   r@   rM   rX   r]   rž   ÚplatformÚTestCaserb   ry   r|   r†   r$   r%   r   ú<module>rª      sÐ  ðÛ Û Û Ý Û 
Û Û ÷õ ÷ FÑ Eß Aã ð=Ûõ =ð ô
˜ó 
ó ð
ð$ ôS˜mó Só ðSò<ð
 ô+Ð-ó +ó ð+ô	Ð 7ô 	ô
Ð-ô 
ð0 ôÐ-ó ó ðô	Ð 7ô 	ð Ø€‡��—‘ Ñ(Ð*MÓNô& ×!2Ñ!2ó &ó Oó ð&ð6 Ø€‡��˜D�Ð">Ó?Ø€‡��—‘ Ñ(Ð*VÓWØ€‡��—‘ Ñ)Ð+WÓXô(Ð*ó (ó Yó Xó @ó ð(ô1�H×%Ñ%ô 1ô"˜×*Ñ*õ øðK ò ØƒGðús   ÁF ÆFÆF