o
    tPf                     @   s  d dl mZ d dl mZ d dl m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	Z	d dl
m
Z
 d dlZd dlm	Z d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ e jZede eedddurqdej_d dlmZ d dlmZ d dlm Z  d dlm!Z! d dlm"Z" d dl#Zej$e	j$u sJ ej%e	j%u sJ e&ddZ'			dZddZ(edG dd dej)Z)G dd de)Z*e(e*d e(e*d G dd de)Z+e(e+e	j,ej-oejd d! G d"d# d#e)Z.e(e.d$ed%d! e(e.d&ej-d%d! G d'd( d(e)Z/e(e/d) G d*d+ d+e)Z0e(e0d, G d-d. d.e)Z1e(e1d/ G d0d1 d1e)Z2e(e2d2 d d3l3m4Z4 G d4d5 d5e4Z5e6ej7d6G d7d8 d8e)Z8e89  G d9d: d:e)Z:e(e:e:j; G d;d< d<e)Z<G d=d> d>e)Z=G d?d@ d@e)Z>e(e>dAdBe!oedCdDdE e(e>dA?dFdFdDdG edG dHdI dIejj@jAZBG dJdK dKe)ZCe(eCdL G dMdN dNe)ZDe(eDdO e6ej-dPG dQdR dRe)ZEG dSdT dTe)ZFG dUdV dVe)ZGG dWdX dXe)ZHeIdYkreJ  dS dS )[    )print_function)absolute_import)divisionN)monkey)time)util)xrange)flaky)skipWithoutExternalNetworkzResolver: %spool   )RESOLVER_NOT_SYSTEM)RESOLVER_DNSPYTHON)RESOLVER_ARES)PY2)PYPY!GEVENTTEST_RUN_ALL_ETC_HOST_TESTS Tc                    s  t  fdd}|d u r& rj}n	tddt}|s&J t fdd}d| |_|| |j|  fdd	}d
| |_|| |j|  fdd}	d| |	_|| |	j|	  fdd}
d| |
_|| |
j|
  fdd}d| |_|| |j| d S )Nc                    s2    r
t  |}t| |st| || d S d S N)	greentestskipIfhasattrsetattr)knfuncskipskip_reason ^/var/www/html/humari/django-venv/lib/python3.10/site-packages/gevent/tests/test__socket_dns.py_setattr6   s
   
zadd.<locals>._setattrz[^\w]+_c                    s$    r n}| j d|dd d S )Ngetaddrinfohttprequire_equal_errors_testselfxcallhostnamer&   r   r    test_getaddrinfo_httpC   s   

z"add.<locals>.test_getaddrinfo_httpztest_%s_getaddrinfo_httpc                    s@    r n}| j d|d}t|ts| j d|d d S d S )Ngethostbynamer%   gethostbyaddr)r(   
isinstance	Exception)r*   r+   ipaddrr,   r   r    test_gethostbynameJ   s   

zadd.<locals>.test_gethostbynameztest_%s_gethostbynamec                    "    r n}| j d|d d S )Ngethostbyname_exr%   r'   r)   r,   r   r    test_gethostbyname_exT      
z"add.<locals>.test_gethostbyname_exztest_%s_gethostbyname_exc                    r6   )Nr1   r%   r'   r)   r,   r   r    test4[   r9   zadd.<locals>.test4ztest_%s_gethostbyaddrc                    s(    r n}| j d|dfdd d S )NgetnameinfoP   r   r%   r'   r)   r,   r   r    test5b   s   
zadd.<locals>.test5ztest_%s_getnameinfo)callable__name__resubrepr)klassr.   namer   r   r&   r!   r/   r5   r8   r:   r=   r   )r-   r.   r&   r   r   r    add0   s,   




rE   z/Tries to resolve and compare hostnames/addrinfoc                       sR  e Zd ZdZdZdZej oe	dddkZ
e
Zdd ZeeefZdd	 Zd
d Zdd Zdd Ze
s8dd Zndd Z fddZ fddZdd Zdd Z	d=ddZdd ZeZesgd d! Zd"d# Z nd$d# Z d%d! Zd&d' Z!d(Z"d)d* Z#d+d, Z$d-d. Z%ere%ne$Z&d/d0 Z'd1d2 Z(d3d4 Z)d5d6 Z*d7d8 Z+d9d: Z,	d=d;d<Z-  Z.S )>TestCaseN   GEVENT_DEBUGr   tracec                 O   s&   | j rtj|g|R i | d S d S r   )TRACEr   debug)r*   messageargskwargsr   r   r    rI   r   s   zTestCase.tracec              
   C   sl   z|| }t |trJ t||W S  | jy     ty5 } z| jr)t  |W  Y d }~S d }~ww r   )r2   BaseExceptionrB   REAL_ERRORSr3   rJ   	traceback	print_exc)r*   functionrM   resultexr   r   r    __run_resolverz   s   zTestCase.__run_resolverc                 G   s"   t | || | || d S r   )r   rK   _TestCase__format_call_TestCase__trace_fresult)r*   rT   runtimerS   rM   r   r   r    __trace_call   s   zTestCase.__trace_callc                 C   sb   t |}|dr|d d d }z|jdd}|j}d|||f W S  ty0   ||  Y S w )Nz,))zgevent._socketcommongeventz%s:%s%s)rB   endswith
__module__replacer?   AttributeError)r*   rS   rM   modulerD   r   r   r    __format_call   s   
zTestCase.__format_callc                 C   sn   t |trd|f }nd|f }d|d f }dt| t| }|dkr*d| }nd}t|| |  d S )	Nz  -=>  raised %rz  -=>  returned %rz %.2fms     @@r<   r    r   )r2   r3   lenr   rK   )r*   rT   secondsmsgtime_msspacer   r   r    __trace_fresult   s   


zTestCase.__trace_fresultc                 C   s   t  }| ||t  | fS r   )r   _TestCase__run_resolver)r*   rS   	func_argsnowr   r   r    run_resolver   s   zTestCase.run_resolverc                 C   sB   |  | || t }| ||}t | }| || ||fS r   )rI   rW   r   rl   rX   )r*   rS   rm   deltarT   r   r   r    ro      s   
c                    s&   t t|   | jsd t _d S d S r   )superrF   setUpverbose_dnsr]   get_hubexception_streamr*   	__class__r   r    rr      s   zTestCase.setUpc                    s8   | j szt `W n	 ty   Y nw tt|   d S r   )rs   r]   rt   ru   ra   rq   rF   tearDownrv   rw   r   r    ry      s   zTestCase.tearDownc                 C   s>   | j sdS t|trt|trt|t|uS t|t|kS )NF)rs   r2   rO   typerB   )r*   result1result2r   r   r    should_log_results   s
   zTestCase.should_log_resultsc                 O   s   t t|}td|}t | d| | j}|||||fi |}|\}}	}
}| jrR||	d krR|dkrRd|||d |	d f }||	d krGd}nd	}tjd
||dd |
S )z
        Runs the function *func_name* with *args* and compares gevent and the system.

        Keyword arguments are passed to the function itself; variable args are
        used for the socket function.

        Returns the gevent result.
        socket
_run_test_g{Gz?gQ?z(gevent:%s%s took %dms versus %dms stdlibrd   r   VERYquitez
WARNING: %s slow: %swarningcolor)getattrgevent_socketr   get_original_run_test_genericrs   r   log)r*   	func_namerM   rN   gevent_func	real_functesterrT   _real_result	time_realgevent_resulttime_geventrh   wordr   r   r    r(      s   
	zTestCase._testTc           
      C   sz   |  ||\}}|  ||\}}	tjr.| ||r.td | |||| | ||	|| | j||||d ||||	fS )Nr   r%   )ro   r   QUIETr}   r   _TestCase__trace_callassertEqualResults)
r*   r   r   r   rm   r&   real_resultr   r   r   r   r   r    r      s   

zTestCase._run_test_genericc                 C   s$   d| }t | |rt| ||S |S )N_normalize_result_)r   r   )r*   rT   r   	norm_namer   r   r    _normalize_result   s   
zTestCase._normalize_resultc                 C      |S r   r   r*   rT   r   r   r    _normalize_result_getaddrinfo      z&TestCase._normalize_result_getaddrinfoc                 C   r   r   r   r   r   r   r    "_normalize_result_gethostbyname_ex   r   z+TestCase._normalize_result_gethostbyname_exc                 C   sr   t |tr|S z|d   W n ty   Y n ty"   | Y S w |d }|ddgkr0dg}|d  g |fS )N   	127.0.0.1r   )r2   rO   sortra   
IndexErrorlower)r*   rT   ipsr   r   r    r      s   
c                 C   sP   t |tr|S t |trdd |D }| jrdd |D }t |tr&|  |S )Nc                 S   s8   g | ]}|d  t jt jfv r|d t jt jfv r|qS )r   r   )r~   SOCK_STREAM
SOCK_DGRAMIPPROTO_TCPIPPROTO_UDP).0r+   r   r   r    
<listcomp>)  s    z:TestCase._normalize_result_getaddrinfo.<locals>.<listcomp>c                 S   s$   g | ]\}}}}}|||d |fqS )r   r   )r   familykindprotor"   addrr   r   r    r   1  s    )r2   rO   list#NORMALIZE_GAI_IGNORE_CANONICAL_NAMEr   r   r   r   r    r     s   


c                 C   r   r   r   r   r   r   r    _normalize_result_getnameinfo;  r   z&TestCase._normalize_result_getnameinfoFc                 C   s.   t s|S | jrt|tr|d g |d fS |S )Nr   r   )r   NORMALIZE_GHBA_IGNORE_ALIASr2   tupler   r   r   r    _normalize_result_gethostbyaddr?  s
   z(TestCase._normalize_result_gethostbyaddrc                 C   s   t |t |kr
d S |dt |dt |f}| t|t|| t|tr'd S tr1t|tjr1d S | |j	|j	| t
|drI| |j|j d S d S )Nzsystem:zgevent:errno)rB   assertIsrz   r2   	TypeErrorr   r~   herrorassertEqualrM   r   r   )r*   r   r   r   rh   r   r   r    _compare_exceptions_strictK  s   

z#TestCase._compare_exceptions_strictc              
   C   st   z
|  ||| W d S  ty9   |dvs+t|tjtjfvs+t|tjtjtjfvr, tjd|||dd Y d S w )N)r#   r1   r0   r7   r;   z?WARNING: error type mismatch for %s: %r (gevent) != %r (stdlib)r   r   )	r   AssertionErrorrz   r~   r   gaierrorerrorr   r   r*   r   r   r   r   r   r    _compare_exceptions_lenient`  s   z$TestCase._compare_exceptions_lenientc                 C   s*   ||krdS t | d| | j}||||S )NT_compare_results_)r   _generic_compare_results)r*   r   r   r   compare_funcr   r   r    _compare_resultsx  s   
zTestCase._compare_resultsc                    sN   zt |t |krW dS W n
 ty   Y dS w t fddt||D S )NFc                 3   s"    | ]\}} || V  qd S r   )r   )r   r+   yr   r*   r   r    	<genexpr>  s    z4TestCase._generic_compare_results.<locals>.<genexpr>)rf   r   allzipr   r   r   r    r     s   z!TestCase._generic_compare_resultsc                 C   sP   t |tt |t }|dkrdS |dkrdS t|t|s!dS | |||S )Nr   Tr   F)r2   r3   set
isdisjointr   )r*   r   r   r   errorsr   r   r    _compare_results_getaddrinfo  s   z%TestCase._compare_results_getaddrinfoc                 C   s   | d}| d}|rL|rL||kr|dv rdS |d|ds.|d|dr0dS |dkrL|dkrL|dd d |dd d krLdS |ddd |ddd kS )N:)            Tr   .r   )countrstrip
startswithsplit)r*   ab
a_segments
b_segmentsr   r   r    _compare_address_strings  s   

,4 z!TestCase._compare_address_stringsc                 C   s   |  ||S r   )r   r*   r   r   
_func_namer   r   r    _compare_results_gethostbyname  s   z'TestCase._compare_results_gethostbynamec                 C   s   t |d t |d  S )Nr   )r   r   r   r   r   r    !_compare_results_gethostbyname_ex  s   z*TestCase._compare_results_gethostbyname_exc                 C   s   t tttjtjtjf}t||r t||r |r| ||| d S | 	||}| 	||}| 
|||r5d S trCt||rCt||sCd S trYtrY|dkrYt|tjrYt|tjsYd S | || d S )Nr;   )OverflowErrorr   UnicodeErrorr~   r   r   r   r2   _compare_exceptionsr   r   r   r   r   )r*   r   r   r   r&   r   r   r   r    r     sB   

zTestCase.assertEqualResults)T)/r?   r_   __qualname__maxDiff__timeout__switch_expectedr   r   osgetenvrJ   rs   rI   ra   
ValueError	NameErrorrP   rl   r   rW   rX   ro   rr   ry   r}   r(   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__r   r   rw   r    rF   i   sT    



!rF   c                   @      e Zd ZdS )TestTypeErrorNr?   r_   r   r   r   r   r    r         r      c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	TestHostnameTc                 C   s@   t strt|tr|d }|ddd }|f|dd   }|S )Nr   r   r   )r   r   r2   r   r   )r*   rT   rD   r   r   r    __normalize_name  s
   zTestHostname.__normalize_namec                 C   s   t | |}| |S r   )rF   r   _TestHostname__normalize_namer   r   r   r    r     s   
z,TestHostname._normalize_result_gethostbyaddrc                 C   s   t | |}tr| |}|S r   )rF   r   r   r   r   r   r   r    r     s   
z*TestHostname._normalize_result_getnameinfoN)r?   r_   r   r   r   r   r   r   r   r   r    r     s
    
r   zSometimes get a different result for getaddrinfo with dnspython; c-ares produces different results for localhost on Travis beginning Sept 2019r   c                       sT   e Zd Z fddZdZejrejr"er& fddZ	  Z
S   Z
S   Z
S   Z
S )TestLocalhostc                    s   t rdS tt| |S )Nr   )r   rq   r   r   r   rw   r   r    r     s   z+TestLocalhost._normalize_result_getaddrinfoTc                    s2   t t| |}t|tr|d |d dgf}|S )Nr   r   r   )rq   r   r   r2   r   r   rw   r   r    r     s   
z-TestLocalhost._normalize_result_gethostbyaddr)r?   r_   r   r   r   r   RUNNING_ON_TRAVISr   r   r   r   r   r   rw   r    r     s    r   zip6-localhostzCan return gaierror(-2)	localhostc                   @   r   )TestNonexistentNr   r   r   r   r    r   4  r   r   nonexistentxxxyyyc                   @   r   )Test1234Nr   r   r   r   r    r   :  r   r   z1.2.3.4c                   @   s   e Zd ZdZdS )
Test127001TN)r?   r_   r   r   r   r   r   r    r   @  s    r   r   c                   @   s.   e Zd ZdZereddd ZeZdS dS )TestBroadcastFz4ares raises errors for broadcasthost/255.255.255.255c                 C   s   d S r   r   rv   r   r   r    test__broadcast__gethostbyaddrS  s   z,TestBroadcast.test__broadcast__gethostbyaddrN)	r?   r_   r   r   r   unittestr   r   test__broadcast__gethostbynamer   r   r   r    r   L  s    
r   z<broadcast>)	HostsFilec                       s   e Zd Z fddZ  ZS )SanitizedHostsFilec                 #   s\    t t|  D ]#\}}tr |ds|dks|dks|dkr q|dr&q||fV  qd S )Nlocalz255.255.255.255broadcasthostr   )rq   r  iter_all_host_addr_pairsr   r^   )r*   rD   r   rw   r   r    r  ^  s   
z+SanitizedHostsFile.iter_all_host_addr_pairs)r?   r_   r   r  r   r   r   rw   r    r  ]  s    r  zYThis sometimes randomly fails on Travis with ares and on appveyor, beginning Feb 13, 2018c                   @   s(   e Zd ZeeddZedd ZdS )TestEtcHostsGEVENTTEST_MAX_ETC_HOSTS10c                 C   sl   t tjtjtd}t| }t|| j	kr#t
s#|d | j	 }|D ]\}}t| | t| | q%d S )Nzhosts_file.txt)r  r   pathjoindirname__file__sortedr  rf   	MAX_HOSTSRUN_ALL_HOST_TESTSrE   )clshfall_etc_hostshostipr   r   r    populate_testsz  s   
zTestEtcHosts.populate_testsN)	r?   r_   r   intr   r   r  classmethodr  r   r   r   r    r  p  s    r  c                       s0   e Zd ZdZdd Z fddZdd Z  ZS )TestGeventOrgwww.gevent.orgc                 C   s   |dkrd}|S )Nz104.17.33.82z104.17.32.82r   r   r   r   r    _normalize_result_gethostbyname  s   z-TestGeventOrg._normalize_result_gethostbynamec                    s0   t t| |}|d dkrd|dd   }|S )Nr   zpython-gevent.readthedocs.org)readthedocs.ior   )rq   r  r   r   rw   r   r    r     s   z0TestGeventOrg._normalize_result_gethostbyname_exc                 C   st   t jd tjddtjf}tj| }| |d d d tj| }tdd |D  | _	z| 
||d W | `	d S | `	w )Nr      r  c                 s   s    | ]}|d  V  qdS )r  Nr   )r   rr   r   r    r     s    z2TestGeventOrg.test_AI_CANONNAME.<locals>.<genexpr>r#   )r  HOSTNAMEr~   AF_INETAI_CANONNAMEr   r#   r   r   r   r   )r*   rM   r   r   r   r   r    test_AI_CANONNAME  s   

zTestGeventOrg.test_AI_CANONNAME)r?   r_   r   r  r  r   r   r   r   r   rw   r    r    s
    
r  c                   @   s8   e Zd Zdd Zdd Zdd Zeeddd	 Z	d
S )
TestFamilyc                 C      |  dtjd tj d S Nr#   )r(   r  r  r~   r  rv   r   r   r    	test_inet     zTestFamily.test_inetc                 C   r"  r#  )r(   r  r  r~   	AF_UNSPECrv   r   r   r    test_unspec  r%  zTestFamily.test_unspecc                 C   s:   |  dtjd d |  dtjd d |  dtjd d d S )Nr#      i r   r(   r  r  rv   r   r   r    test_badvalue  s   zTestFamily.test_badvaluezRaises the wrong errnoc                 C   s   |  dtjd d S )Nr#   r+   r)  rv   r   r   r    test_badtype     zTestFamily.test_badtypeN)
r?   r_   r   r$  r'  r*  r   r   r   r+  r   r   r   r    r!    s    
r!  c                   @   s|   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zeeddd Zeeddd ZdS )Test_getaddrinfoc                 G   s   | j dg|R   d S r#  r'   )r*   rM   r   r   r    _test_getaddrinfo  s   z"Test_getaddrinfo._test_getaddrinfoc                 C      |  tjd d S )Nr<   r.  r  r  rv   r   r   r    test_80     zTest_getaddrinfo.test_80c                 C   r/  )N80r0  rv   r   r   r    test_int_string  r2  z Test_getaddrinfo.test_int_stringc                 C   r/  )Nr   r0  rv   r   r   r    test_0  r2  zTest_getaddrinfo.test_0c                 C   r/  )Nr$   r0  rv   r   r   r    	test_http  r2  zTest_getaddrinfo.test_httpc                 C      |  dd d S )Nzmyhost.mytld5   r.  rv   r   r   r    test_notexistent_tld     z%Test_getaddrinfo.test_notexistent_tldc                 C   r7  )Nz"sdfsdfgu5e66098032453245wfdggd.comr<   r9  rv   r   r   r    test_notexistent_dot_com  r;  z)Test_getaddrinfo.test_notexistent_dot_comc                 C   s   |  tjdtjtjddS )N4   r   )r.  r  r  r~   r&  r   rv   r   r   r    test1  s   zTest_getaddrinfo.test1c                 C   s   |  tjdtjtjdS )Nr8     )r.  r  r  r~   r  r   rv   r   r   r    test2  r%  zTest_getaddrinfo.test2z0dnspython only returns some of the possibilitiesc                 C   s   |  ddtjS )Nz
google.comr$   )r.  r~   AF_INET6rv   r   r   r    test3  s   zTest_getaddrinfo.test3zEnums only on Python 3.4+c                 C   sJ   t ddtjtjtj}|d \}}}}}| |tj | |tj d S )Nzexample.comr<   r   )r   r#   r~   r  r   r   r   )r*   gaiafsocktype_proto
_canonname_sar   r   r    
test_enums  s   zTest_getaddrinfo.test_enumsN)r?   r_   r   r.  r1  r4  r5  r6  r:  r<  r>  r@  r   r   r   rB  r   r   rI  r   r   r   r    r-    s     

r-  c                   @   s4   e Zd Zereejeh Zerdd Z	dS dS dS )TestInternationalc                 C   s   |  d d S )Nzares fails to encode.)skipTestrv   r   r   r    test_russian_getaddrinfo_http  s   z/TestInternational.test_russian_getaddrinfo_httpN)
r?   r_   r   r   r   rF   rP   r   r   rL  r   r   r   r    rJ    s    rJ  u   президент.рфrussianz$dnspython can actually resolve theseF)r   r   r&   idnar%   c                       s2   e Zd Zej fddZdd Zdd Z  ZS )TestInterrupted_gethostbynamec                    s   t t|   d S r   )rq   rO  test_returns_none_after_timeoutrv   rw   r   r    rP  1     z=TestInterrupted_gethostbyname.test_returns_none_after_timeoutc              
   C   s^   t |d tdD ]}z	td|  W q tjy    Y qw td1 s(w   Y  d S )NFi@B zwww.x%s.comzTimeout was not raised)r]   Timeoutr   r   r0   r~   r   r   )r*   timeoutindexr   r   r    wait5  s   z"TestInterrupted_gethostbyname.waitc                 C   s2   z
t  j  W d S  ty   t  Y d S w r   )r]   rt   
threadpoolr	  r3   rQ   rR   rv   r   r   r    cleanup>  s
   z%TestInterrupted_gethostbyname.cleanup)	r?   r_   r   r   ignores_leakcheckrP  rU  rW  r   r   r   rw   r    rO  ,  s
    	rO  c                   @   r   )TestBadNameNr   r   r   r   r    rY  c  r   rY  xxxxxxxxxxxxc                   @   r   )	TestBadIPNr   r   r   r   r    r[  h  r   r[  z	1.2.3.400z$Travis began returning ip6-localhostc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
Test_getnameinfo_127001c                 C      |  ddd d S )Nr;   r   r<   r   r'   rv   r   r   r    testq  r2  zTest_getnameinfo_127001.testc                 C   s"   |  ddd |  ddtj d S )Nr;   )r   i  r   )r(   r~   NI_DGRAMrv   r   r   r    
test_DGRAMt  s   z"Test_getnameinfo_127001.test_DGRAMc                 C      |  ddtj d S Nr;   r^  )r(   r~   	NI_NOFQDNrv   r   r   r    test_NOFQDNx  r,  z#Test_getnameinfo_127001.test_NOFQDNc                 C   rb  rc  )r(   r~   NI_NAMEREQDrv   r   r   r    test_NAMEREQD|  s   z%Test_getnameinfo_127001.test_NAMEREQDN)r?   r_   r   r_  ra  re  rg  r   r   r   r    r\  n  s
    r\  c                   @   sL   e Zd Zeeddd Zeeddd Zdd Zdd	 Z	d
d Z
dS )Test_getnameinfo_geventorgz<dnspython raises an error when multiple results are returnedc                 C   s.   |  dtjdfd |  dtjdftj d S Nr;   r<   r   )r(   r  r  r~   NI_NUMERICHOSTrv   r   r   r    test_NUMERICHOST  s   z+Test_getnameinfo_geventorg.test_NUMERICHOSTc                 C   s   |  dtjdftj d S )Nr;   r<   )r(   r  r  r~   NI_NUMERICSERVrv   r   r   r    test_NUMERICSERV  s   z+Test_getnameinfo_geventorg.test_NUMERICSERVc                 C   s   |  dtjdfd d S ri  r)  rv   r   r   r    test_domain1  r%  z'Test_getnameinfo_geventorg.test_domain1c                 C   r]  )Nr;   )r  r<   r   r'   rv   r   r   r    test_domain2  r2  z'Test_getnameinfo_geventorg.test_domain2c                 C   r]  )Nr;   )r  r   r   r'   rv   r   r   r    test_port_zero  r2  z)Test_getnameinfo_geventorg.test_port_zeroN)r?   r_   r   r   r   r   rk  rm  rn  ro  rp  r   r   r   r    rh    s    

rh  c                   @   s   e Zd Zdd Zdd ZdS )Test_getnameinfo_failc                 C   r]  )Nr;   )r  r$   r   r'   rv   r   r   r    test_port_string  r2  z&Test_getnameinfo_fail.test_port_stringc                 C   r]  )Nr;   )r   r<   iOr'   rv   r   r   r    test_bad_flags  r2  z$Test_getnameinfo_fail.test_bad_flagsN)r?   r_   r   rr  rs  r   r   r   r    rq    s    rq  c                   @   sH   e Zd Ze dd Zeddd Zeddd Z	d	d
 Z
dS )TestInvalidPortc                 C   r]  )Nr;   )r  r   r   r'   rv   r   r   r    test_overflow_neg_one  s   z%TestInvalidPort.test_overflow_neg_onezErrors dont matchc                 C   r]  )Nr;   )r  Nr   r'   rv   r   r   r    test_typeerror_none  rQ  z#TestInvalidPort.test_typeerror_nonezErrors don't matchc                 C   r]  )Nr;   )r  r+   r   r'   rv   r   r   r    test_typeerror_str  rQ  z"TestInvalidPort.test_typeerror_strc                 C   r]  )Nr;   )r  i   r   r'   rv   r   r   r    test_overflow_port_too_large  r2  z,TestInvalidPort.test_overflow_port_too_largeN)r?   r_   r   r	   reraises_flaky_race_conditionru  r   skipOnLibuvOnPyPyOnWinrv  rw  rx  r   r   r   r    rt    s    


rt  __main__)NNNT)K
__future__r   r   r   r]   r   r   r@   r   r~   r   rQ   gevent.socketr   gevent.testingtestingr   r   gevent.testing.sixr   r	   gevent.testing.skippingr
   rt   resolverrK   r   r   sizegevent.testing.sysinfor   r   r   r   r   gevent.testing.timingr   r   r   r  rE   rF   r   r   gethostnamer   r   r   r   r   r   gevent.resolver._hostsfiler   r  r   RUNNING_ON_CIr  r  r  r  r!  r-  rJ  encodetimingAbstractGenericWaitTestCaserO  rY  r[  r\  rh  rq  rt  r?   mainr   r   r   r    <module>   s   

9  {



	

	
616

	
