o
    Eh~                     @   s  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zd dlZW n eyS   dZY nw d dlmZ eG dd deZeG d	d
 d
eZdd ZeG dd deZG dd deZG dd deZeG dd deZ G dd deZ!ee"ej#dkdG dd dej$Z%ee"edu de"ej#dkde"ej#dkdG dd  d eZ&G d!d" d"ej$Z'G d#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d ZdS )_ResolverTestMixinNc                 c   sD    | 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addrinfo r   Z/var/www/html/Persson_Maskin/env/lib/python3.10/site-packages/tornado/test/netutil_test.pytest_localhost!   s   z!_ResolverTestMixin.test_localhost)__name__
__module____qualname__r   r	   r   r   r   r   r   r          r   c                   @   r   )_ResolverErrorTestMixinNc                 c   sF    |  t | jddtjV  W d    d S 1 sw   Y  d S )Nzan invalid domainr   )assertRaisesIOErrorr   r   r   r   r   r   r   r   test_bad_host4   s   "z%_ResolverErrorTestMixin.test_bad_host)r    r!   r"   r   r	   r(   r   r   r   r   r$   0   r#   r$   c                  G   s   t tjd)z4Dummy implementation of getaddrinfo for use in mockszmock: lookup failed)r   gaierrorerrnoEIO)argsr   r   r   _failing_getaddrinfo:   s   r-   c                          e Zd Z fddZ  ZS )BlockingResolverTestc                       t    t | _d S N)supersetUpr   r   r'   	__class__r   r   r3   A      
zBlockingResolverTest.setUpr    r!   r"   r3   __classcell__r   r   r4   r   r/   ?   s    r/   c                       (   e Zd Z fddZ fddZ  ZS )BlockingResolverErrorTestc                    $   t    t | _tj| _tt_d S r1   r2   r3   r   r   r   getaddrinforeal_getaddrinfor-   r'   r4   r   r   r3   J      

zBlockingResolverErrorTest.setUpc                       | j t_t   d S r1   r>   r   r=   r2   tearDownr'   r4   r   r   rB   P      z"BlockingResolverErrorTest.tearDownr    r!   r"   r3   rB   r8   r   r   r4   r   r:   I       r:   c                       s(   e Zd Z fddZedd Z  ZS )OverrideResolverTestc                    s<   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   rG   r   ) 2a02:6b8:7c:40c:c51e:495f:e23a:3r   )r2   r3   r   r   r   r   r   r   )r   mappingr4   r   r   r3   V   s   
zOverrideResolverTest.setUpc                 c   sR    | j ddtjV }| tjdf| | j ddtjV }| tjdf| d S )NrG   r   rH   )rI   r   r   r   )r   r   r   r   assertInr   )r   resultr   r   r   test_resolve_multiaddrb   s   
z+OverrideResolverTest.test_resolve_multiaddr)r    r!   r"   r3   r	   rM   r8   r   r   r4   r   rF   U   s    rF   c                       r9   )ThreadedResolverTestc                    r0   r1   )r2   r3   r   r   r'   r4   r   r   r3   o   r6   zThreadedResolverTest.setUpc                    s   | j   t   d S r1   )r   closer2   rB   r'   r4   r   r   rB   s   s   
zThreadedResolverTest.tearDownrD   r   r   r4   r   rN   m   s    rN   c                       r9   )ThreadedResolverErrorTestc                    r;   r1   r<   r'   r4   r   r   r3   y   r?   zThreadedResolverErrorTest.setUpc                    r@   r1   rA   r'   r4   r   r   rB      rC   z"ThreadedResolverErrorTest.tearDownrD   r   r   r4   r   rP   x   rE   rP   win32z!preexec_fn not available on win32c                   @      e Zd Zdd ZdS )ThreadedResolverImportTestc                    s   d t jddg}t }t| fddd}t |  k r;| }|d ur.| d| d S td t |  k s| d	 d S )
N   z-cz'import tornado.test.resolve_test_helperc                      s
   t  S r1   )signalalarmr   TIMEOUTr   r   <lambda>   s   
 z8ThreadedResolverImportTest.test_import.<locals>.<lambda>)
preexec_fnr   g?zimport timed out)sys
executabletimer   pollassertEqualsleepfail)r   commandstartpopenreturn_coder   rW   r   test_import   s   
z&ThreadedResolverImportTest.test_importN)r    r!   r"   rf   r   r   r   r   rS      s    rS   zpycares module not presentz*pycares doesn't return loopback on windowsdarwinz*pycares doesn't return 127.0.0.1 on darwinc                       r.   )CaresResolverTestc                    r0   r1   )r2   r3   r   r   r'   r4   r   r   r3      r6   zCaresResolverTest.setUpr7   r   r   r4   r   rh      s    rh   c                   @   rR   )IsValidIPTestc                 C   s   |  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'   r   r   r   test_is_valid_ip   s   zIsValidIPTest.test_is_valid_ipN)r    r!   r"   rp   r   r   r   r   ri      s    ri   c                   @   s0   e Zd Zdd Zeeed ddd ZdS )TestPortAllocationc              	      sl   t dd}z&|d  d  | t fdd|dd  D  W |D ]}|  q#d S |D ]}|  q.w )Nr   r      c                 3        | ]}|  d   kV  qdS rr   Ngetsockname.0sportr   r   	<genexpr>       z?TestPortAllocation.test_same_port_allocation.<locals>.<genexpr>)r   rv   r   allrO   r   socketssockr   rz   r   test_same_port_allocation   s   
&

z,TestPortAllocation.test_same_port_allocationSO_REUSEPORTzSO_REUSEPORT is not supportedc              	      sz   g }t dd\} z%t ddd}| t fdd|D  W |  |D ]}|  q&d S |  |D ]}|  q5w )NT)
reuse_portr   c                 3   rs   rt   ru   rw   rz   r   r   r|      r}   z5TestPortAllocation.test_reuse_port.<locals>.<genexpr>)r
   r   r   r~   rO   r   r   rz   r   test_reuse_port   s   

z"TestPortAllocation.test_reuse_portN)	r    r!   r"   r   unittestskipIfhasattrr   r   r   r   r   r   rq      s    	rq   ))r*   rU   r   
subprocessr   r[   r]   r   tornado.netutilr   r   r   r   r   tornado.testingr   r	   r
   tornado.test.utilr   r   typingpycaresImportErrortornado.platform.caresresolverr   r   r$   r-   r/   r:   rF   rN   rP   r   platformTestCaserS   rh   ri   rq   r   r   r   r   <module>   sN    		
