
    ^h~              	       .   S SK r S SKrS SKrS SKJr  S SKrS SKrS SKrS SKJ	r	J
r
JrJrJr  S SKJrJrJr  S SKJrJr  S SKr S SKrS SKJr  \ " S S\5      5       r\ " S	 S
\5      5       rS r\ " S S\5      5       r " S S\5      r " S S\5      r\ " S S\5      5       r  " S S\5      r!\\RD                  " \RF                  S:H  S5       " S S\RH                  5      5       5       r%\\RD                  " \SL S5      \RD                  " \RF                  S:H  S5      \RD                  " \RF                  S:H  S5       " S S\5      5       5       5       5       r& " S  S!\RH                  5      r' " S" S#\RH                  5      r(g! \ a    Sr GNEf = f)$    N)Popen)BlockingResolverOverrideResolverThreadedResolveris_valid_ipbind_sockets)AsyncTestCasegen_testbind_unused_port)skipIfNoNetworkabstract_base_test)CaresResolverc                   (    \ rS rSrSr\S 5       rSrg)_ResolverTestMixin   Nc              #      #    U R                   R                  SS[        R                  5      v nU R	                  [        R
                  S4U;   =(       d    [        R                  S4U;   SU 35        g 7f)N	localhostP   )	127.0.0.1r   )::1r   zloopback address not found in )resolverresolvesocket	AF_UNSPEC
assertTrueAF_INETAF_INET6)selfaddrinfos     S/home/james-whalen/.local/lib/python3.13/site-packages/tornado/test/netutil_test.pytest_localhost!_ResolverTestMixin.test_localhost!   sf     ..{B@P@PQQ 	nn/0H< <+.(:,XJ7	
s   A3A5 )__name__
__module____qualname____firstlineno__r   r
   r!   __static_attributes__r#       r    r   r      s    H	
 	
r)   r   c                   (    \ rS rSrSr\S 5       rSrg)_ResolverErrorTestMixin0   Nc              #      #    U R                  [        5         U R                  R                  SS[        R
                  5      v   S S S 5        g ! , (       d  f       g = f7f)Nzan invalid domainr   )assertRaisesIOErrorr   r   r   r   r   s    r    test_bad_host%_ResolverErrorTestMixin.test_bad_host4   s>     w'--''(;RAQAQRR (''s   A .A	A 
AA r#   )r$   r%   r&   r'   r   r
   r1   r(   r#   r)   r    r+   r+   0   s    HS Sr)   r+   c                  L    [         R                  " [        R                  S5      e)z4Dummy implementation of getaddrinfo for use in mockszmock: lookup failed)r   gaierrorerrnoEIO)argss    r    _failing_getaddrinfor8   :   s    
//%))%:
;;r)   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )BlockingResolverTest?   c                 @   > [         TU ]  5         [        5       U l        g N)supersetUpr   r   r   	__class__s    r    r?   BlockingResolverTest.setUpA       (*r)   r   r$   r%   r&   r'   r?   r(   __classcell__rA   s   @r    r:   r:   ?   s    + +r)   r:   c                   4   ^  \ rS rSrU 4S jrU 4S jrSrU =r$ )BlockingResolverErrorTestI   c                    > [         TU ]  5         [        5       U l        [        R
                  U l        [        [        l        g r=   r>   r?   r   r   r   getaddrinforeal_getaddrinfor8   r@   s    r    r?   BlockingResolverErrorTest.setUpJ   ,    (* & 2 21r)   c                 L   > U R                   [        l        [        TU ]  5         g r=   rN   r   rM   r>   tearDownr@   s    r    rS   "BlockingResolverErrorTest.tearDownP       !22r)   rN   r   r$   r%   r&   r'   r?   rS   r(   rF   rG   s   @r    rI   rI   I       2 r)   rI   c                   8   ^  \ rS rSrU 4S jr\S 5       rSrU =r$ )OverrideResolverTestU   c                    > [         TU ]  5         SSSS[        R                  4SSS[        R                  4S0n[        [        5       U5      U l        g )N)
google.comr   z1.2.3.4r   r]   r   ) 2a02:6b8:7c:40c:c51e:495f:e23a:3r   )r>   r?   r   r   r   r   r   r   )r   mappingrA   s     r    r?   OverrideResolverTest.setUpV   sO    2v~~.2v/ 2
 ))9);WEr)   c              #   H  #    U R                   R                  SS[        R                  5      v nU R	                  [        R                  S4U5        U R                   R                  SS[        R
                  5      v nU R	                  [        R
                  S4U5        g 7f)Nr]   r   r^   )r_   r   r   r   )r   r   r   r   assertInr   )r   results     r    test_resolve_multiaddr+OverrideResolverTest.test_resolve_multiaddrb   su     }},,\2v~~NNv~~7@}},,\2vOO__LMv	
s   B B"rD   )	r$   r%   r&   r'   r?   r
   re   r(   rF   rG   s   @r    rZ   rZ   U   s    
F 
 
r)   rZ   c                   4   ^  \ rS rSrU 4S jrU 4S jrSrU =r$ )ThreadedResolverTestm   c                 @   > [         TU ]  5         [        5       U l        g r=   )r>   r?   r   r   r@   s    r    r?   ThreadedResolverTest.setUpo   rC   r)   c                 V   > U R                   R                  5         [        TU ]  5         g r=   )r   closer>   rS   r@   s    r    rS   ThreadedResolverTest.tearDowns   s    r)   rD   rW   rG   s   @r    rh   rh   m   s    + r)   rh   c                   4   ^  \ rS rSrU 4S jrU 4S jrSrU =r$ )ThreadedResolverErrorTestx   c                    > [         TU ]  5         [        5       U l        [        R
                  U l        [        [        l        g r=   rL   r@   s    r    r?   ThreadedResolverErrorTest.setUpy   rP   r)   c                 L   > U R                   [        l        [        TU ]  5         g r=   rR   r@   s    r    rS   "ThreadedResolverErrorTest.tearDown   rU   r)   rV   rW   rG   s   @r    rp   rp   x   rX   r)   rp   win32z!preexec_fn not available on win32c                       \ rS rSrS rSrg)ThreadedResolverImportTest   c                   ^ Sm[         R                  SS/n[        R                  " 5       n[        UU4S jS9n[        R                  " 5       U-
  T:  aZ  UR	                  5       nUb  U R                  SU5        g [        R                  " S5        [        R                  " 5       U-
  T:  a  MZ  U R                  S5        g )	N   z-cz'import tornado.test.resolve_test_helperc                  0   > [         R                  " T 5      $ r=   )signalalarm)TIMEOUTs   r    <lambda>8ThreadedResolverImportTest.test_import.<locals>.<lambda>   s    &,,w2Gr)   )
preexec_fnr   g?zimport timed out)sys
executabletimer   pollassertEqualsleepfail)r   commandstartpopenreturn_coder   s        @r    test_import&ThreadedResolverImportTest.test_import   s    
 >>4)RS		g*GHiikE!G+**,K&  K0JJt iikE!G+ 			$%r)   r#   N)r$   r%   r&   r'   r   r(   r#   r)   r    rx   rx      s    &r)   rx   zpycares module not presentz*pycares doesn't return loopback on windowsdarwinz*pycares doesn't return 127.0.0.1 on darwinc                   (   ^  \ rS rSrU 4S jrSrU =r$ )CaresResolverTest   c                 @   > [         TU ]  5         [        5       U l        g r=   )r>   r?   r   r   r@   s    r    r?   CaresResolverTest.setUp   s    %r)   rD   rE   rG   s   @r    r   r      s    
( (r)   r   c                       \ rS rSrS rSrg)IsValidIPTest   c                    U R                  [        S5      5        U R                  [        S5      5        U R                  [        S5      5        U R                  [        S5      5        U R                  [        S5      5        U R                  [        S5      5        U R                  [        S5      5        U R                  [        S5      5        U R                  [        S	5      5        U R                  [        S
5      5        U R                  [        S5      5        U R                  [        S5      5        U R                  [        S5      5        g )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   assertFalser0   s    r    test_is_valid_ip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)   r#   N)r$   r%   r&   r'   r   r(   r#   r)   r    r   r      s    1r)   r   c                   d    \ rS rSrS r\R                  " \" \S5      (       + S5      S 5       r	Sr
g)TestPortAllocation   c                   ^ [        SS5      n US   R                  5       S   mU R                  [        U4S jUSS   5       5      5        U H  nUR	                  5         M     g ! U H  nUR	                  5         M     f = f)Nr   r      c              3   N   >#    U  H  oR                  5       S    T:H  v   M     g7fr   Ngetsockname.0sports     r    	<genexpr>?TestPortAllocation.test_same_port_allocation.<locals>.<genexpr>   s     PKq 2d :K   "%)r   r   r   allrm   r   socketssockr   s      @r    test_same_port_allocation,TestPortAllocation.test_same_port_allocation   so    q+.	1:))+A.DOOCPGABKPPQ

  

  s   =A& &BSO_REUSEPORTzSO_REUSEPORT is not supportedc                 0  ^ / n[        SS9u  nm [        TSSS9nU R                  [        U4S jU 5       5      5        UR	                  5         U H  nUR	                  5         M     g ! UR	                  5         U H  nUR	                  5         M     f = f)NT)
reuse_portr   c              3   N   >#    U  H  oR                  5       S    T:H  v   M     g7fr   r   r   s     r    r   5TestPortAllocation.test_reuse_port.<locals>.<genexpr>   s     LGq 2d :Gr   )r   r   r   r   rm   r   s      @r    test_reuse_port"TestPortAllocation.test_reuse_port   s~     /1%6
d	"4FGOOCLGLLMJJL

   JJL

  s   /A* *+Br#   N)r$   r%   r&   r'   r   unittestskipIfhasattrr   r   r(   r#   r)   r    r   r      s4     __FN++-L		r)   r   ))r5   r}   r   
subprocessr   r   r   r   tornado.netutilr   r   r   r   r   tornado.testingr	   r
   r   tornado.test.utilr   r   typingpycarestornado.platform.caresresolverr   ImportErrorr   r+   r8   r:   rI   rZ   rh   rp   r   platformTestCaserx   r   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 @ (1H%% 1"** K  Gs   F FF