
    Mh~              	       f   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 n# e$ r dZY nw xY w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j"        ej#        dk    d           G d dej$                                          Z%e ej"        edu d           ej"        ej#        dk    d           ej"        ej#        dk    d           G d de                                                          Z& G d  d!ej$                  Z' G d" d#ej$                  Z(dS )$    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dS )_ResolverTestMixinNc              #      K   | j                             ddt          j                  V }|                     t          j        df|v pt          j        df|v d|            d S )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     Y/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/tornado/test/netutil_test.pytest_localhostz!_ResolverTestMixin.test_localhost!   sy      ..{B@PQQQQ 	n/0H< <+.(:7X77	
 	
 	
 	
 	
    )__name__
__module____qualname__r   r
   r     r!   r   r   r      s2        H	
 	
 X	
 	
 	
r!   r   c                   (    e Zd ZdZed             ZdS )_ResolverErrorTestMixinNc              #      K   |                      t                    5  | j                            ddt          j                  V  d d d            d S # 1 swxY w Y   d S )Nzan invalid domainr   )assertRaisesIOErrorr   r   r   r   r   s    r   test_bad_hostz%_ResolverErrorTestMixin.test_bad_host4   s      w'' 	S 	S-''(;RAQRRRRR	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	Ss   )AAA)r"   r#   r$   r   r
   r,   r%   r!   r   r'   r'   0   s7        HS S XS S Sr!   r'   c                  @    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                 n    t                                                       t                      | _        d S N)supersetUpr   r   r   	__class__s    r   r8   zBlockingResolverTest.setUpA   %    (**r!   r"   r#   r$   r8   __classcell__r:   s   @r   r4   r4   ?   s8        + + + + + + + + +r!   r4   c                   (     e Zd Z fdZ fdZ xZS )BlockingResolverErrorTestc                     t                                                       t                      | _        t          j        | _        t          t          _        d S r6   r7   r8   r   r   r   getaddrinforeal_getaddrinfor2   r9   s    r   r8   zBlockingResolverErrorTest.setUpJ   :    (** & 21r!   c                 j    | j         t          _        t                                                       d S r6   rD   r   rC   r7   tearDownr9   s    r   rH   z"BlockingResolverErrorTest.tearDownP   *    !2r!   r"   r#   r$   r8   rH   r=   r>   s   @r   r@   r@   I   Q        2 2 2 2 2        r!   r@   c                   4     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                      |          | _        d S )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   s]    2v~.2v/ 2
 ))9););WEEr!   c              #   2  K   | j                             ddt          j                  V }|                     t          j        df|           | j                             ddt          j                  V }|                     t          j        df|           d S )NrO   r   rP   )rQ   r   r   r   )r   r   r   r   assertInr   )r   results     r   test_resolve_multiaddrz+OverrideResolverTest.test_resolve_multiaddrb   s      },,\2v~NNNNv~7@@@},,\2vOOOO_LMv	
 	
 	
 	
 	
r!   )r"   r#   r$   r8   r
   rV   r=   r>   s   @r   rM   rM   U   sX        
F 
F 
F 
F 
F 
 
 X
 
 
 
 
r!   rM   c                   (     e Zd Z fdZ fdZ xZS )ThreadedResolverTestc                 n    t                                                       t                      | _        d S r6   )r7   r8   r   r   r9   s    r   r8   zThreadedResolverTest.setUpo   r;   r!   c                 z    | j                                          t                                                       d S r6   )r   closer7   rH   r9   s    r   rH   zThreadedResolverTest.tearDowns   s3    r!   rJ   r>   s   @r   rX   rX   m   sQ        + + + + +        r!   rX   c                   (     e Zd Z fdZ fdZ xZS )ThreadedResolverErrorTestc                     t                                                       t                      | _        t          j        | _        t          t          _        d S r6   rB   r9   s    r   r8   zThreadedResolverErrorTest.setUpy   rE   r!   c                 j    | j         t          _        t                                                       d S 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dS )ThreadedResolverImportTestc                    dt           j        ddg}t          j                    }t          |fd          }t          j                    |z
  k     r\|                                }||                     d|           d S t          j        d           t          j                    |z
  k     \|                     d           d S )	N   z-cz'import tornado.test.resolve_test_helperc                  ,    t          j                   S r6   )signalalarm)TIMEOUTs   r   <lambda>z8ThreadedResolverImportTest.test_import.<locals>.<lambda>   s    &,w2G2G 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*G*G*GHHHikkE!G++**,,K&  K000Jt ikkE!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                 n    t                                                       t                      | _        d S r6   )r7   r8   r   r   r9   s    r   r8   zCaresResolverTest.setUp   s#    %r!   r<   r>   s   @r   ry   ry      s8        
( ( ( ( ( ( ( ( (r!   ry   c                       e Zd Zd ZdS )IsValidIPTestc                 z   |                      t          d                     |                      t          d                     |                      t          d                     |                      t          d                     |                     t          d                     |                     t          d                     |                     t          d                     |                     t          d                     |                     t          d	                     |                     t          d
                     |                     t          d                     |                     t          d                     |                     t          d                     d S )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   sl   K00111I..///E**+++$>??@@@%566777[11222Z00111\22333R)))S))***T**+++V,,---Y//00000r!   N)r"   r#   r$   r   r%   r!   r   r|   r|      s#        1 1 1 1 1r!   r|   c                   ^    e Zd Zd Z ej         eed           d          d             ZdS )TestPortAllocationc                 D   t          dd          }	 |d                                         d         |                     t          fd|dd          D                                  |D ]}|                                 d S # |D ]}|                                 w xY w)Nr   r      c              3   T   K   | ]"}|                                 d          k    V  #dS r   Ngetsockname.0sports     r   	<genexpr>z?TestPortAllocation.test_same_port_allocation.<locals>.<genexpr>   s5      PPq 2d :PPPPPPr!   )r   r   r   allr[   r   socketssockr   s      @r   test_same_port_allocationz,TestPortAllocation.test_same_port_allocation   s    q+..	1:))++A.DOOCPPPPGABBKPPPPPQQQ  

   

s   AB BSO_REUSEPORTzSO_REUSEPORT is not supportedc                 r   g }t          d          \  }	 t          dd          }|                     t          fd|D                                  |                                 |D ]}|                                 d S # |                                 |D ]}|                                 w xY w)NT)
reuse_portr   c              3   T   K   | ]"}|                                 d          k    V  #dS r   r   r   s     r   r   z5TestPortAllocation.test_reuse_port.<locals>.<genexpr>   s5      LLq 2d :LLLLLLr!   )r   r   r   r   r[   r   s      @r   test_reuse_portz"TestPortAllocation.test_reuse_port   s     /1%666
d	"4FFFGOOCLLLLGLLLLLMMMJJLLL  

  JJLLL  

s   A B /B6N)	r"   r#   r$   r   unittestskipIfhasattrr   r   r%   r!   r   r   r      sd           X_GFN+++-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 E E E E E E E E A A A A A A A A =NNN =<<<<<<    GGG 
 
 
 
 
 
 
 
$ S S S S Sm S S S< < <
 + + + + +- + + +	 	 	 	 	 7 	 	 	
 
 
 
 
- 
 
 
0     -   	 	 	 	 	 7 	 	 	 (*MNN& & & & &!2 & & ON &6 D">??(*VWW)+WXX( ( ( ( (* ( ( YX XW @? (1 1 1 1 1H% 1 1 1"    *     s   A AA