o
    e                     @   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)PYPYZ!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 MD:\Projects\ConvertPro\env\Lib\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                    r5   )Nr0   r$   r&   r(   r+   r   r   test4[   r8   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.   r4   r7   r9   r<   r   )r,   r-   r%   r   r   r   add0   s,   




rD   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   Z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   rG   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   )r1   BaseExceptionrA   REAL_ERRORSr2   rH   	traceback	print_exc)r)   functionrK   resultexr   r   r   Z__run_resolverz   s   zTestCase.__run_resolverc                 G   s"   t | || | || d S r   )r   rI   _TestCase__format_call_TestCase__trace_fresult)r)   rR   ZruntimerQ   rK   r   r   r   Z__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)rA   endswith
__module__replacer>   AttributeError)r)   rQ   rK   modulerC   r   r   r   Z__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   )r1   r2   lenr   rI   )r)   rR   secondsmsgZtime_msspacer   r   r   Z__trace_fresult   s   


zTestCase.__trace_fresultc                 C   s   t  }| ||t  | fS r   )r   _TestCase__run_resolver)r)   rQ   	func_argsnowr   r   r   run_resolver   s   zTestCase.run_resolverc                 C   sB   |  | || t }| ||}t | }| || ||fS r   )rG   rT   r   rd   rU   )r)   rQ   re   deltarR   r   r   r   rg      s   
c                    s&   t t|   | jsd t _d S d S r   )superrE   setUpverbose_dnsrX   get_hubexception_streamr)   	__class__r   r   rj      s   zTestCase.setUpc                    s8   | j szt `W n	 ty   Y nw tt|   d S r   )rk   rX   rl   rm   r\   ri   rE   tearDownrn   ro   r   r   rq      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)rk   r1   rM   typerA   )r)   Zresult1Z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.
        socketZ
_run_test_g{Gz?gQ?z(gevent:%s%s took %dms versus %dms stdlibr^   r   ZVERYZquitez
WARNING: %s slow: %swarningcolor)getattrgevent_socketr   Zget_original_run_test_genericrk   r   log)r)   	func_namerK   rL   gevent_func	real_funcZtesterrR   Z_real_result	time_realgevent_resulttime_geventrb   wordr   r   r   r'      s   
	zTestCase._testTc           
      C   sz   |  ||\}}|  ||\}}	tjr.| ||r.td | |||| | ||	|| | j||||d ||||	fS )Nr   r$   )rg   r   QUIETrs   r{   _TestCase__trace_callassertEqualResults)
r)   r|   r~   r}   re   r%   real_resultr   r   r   r   r   r   rz      s   

zTestCase._run_test_genericc                 C   s$   d| }t | |rt| ||S |S )NZ_normalize_result_)r   rx   )r)   rR   r|   Z	norm_namer   r   r   _normalize_result   s   
zTestCase._normalize_resultc                 C      |S r   r   r)   rR   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   )r1   rM   sortr\   
IndexErrorlower)r)   rR   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   )rt   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    )r1   rM   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_ALIASr1   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)rA   assertIsrr   r1   	TypeErrorr   rt   herrorassertEqualrK   r   r   )r)   r   r   r|   rb   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"   r0   r/   r6   r:   z?WARNING: error type mismatch for %s: %r (gevent) != %r (stdlib)ru   rv   )	r   AssertionErrorrr   rt   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 )NTZ_compare_results_)rx   _generic_compare_results)r)   r   r   r|   Z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>)r`   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)r1   r2   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bZ
a_segmentsZ
b_segmentsr   r   r   _compare_address_strings  s   

,4 z!TestCase._compare_address_stringsc                 C   s   |  ||S r   )r   r)   r   r   Z
_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   UnicodeErrorrt   r   r   r   r1   _compare_exceptionsr   r   r   r   r   )r)   r   r   r|   r%   r   r   r   r   r     sB   

zTestCase.assertEqualResults)T)/r>   rZ   __qualname__ZmaxDiffZ__timeout__switch_expectedr   r   osgetenvrH   rk   rG   r\   
ValueError	NameErrorrN   rd   r   rT   rU   rg   rj   rq   rs   r'   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__r   r   ro   r   rE   i   sT    



!rE   c                   @      e Zd ZdS )TestTypeErrorNr>   rZ   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   r1   r   r   )r)   rR   rC   r   r   r   Z__normalize_name  s
   zTestHostname.__normalize_namec                 C   s   t | |}| |S r   )rE   r   _TestHostname__normalize_namer   r   r   r   r     s   
z,TestHostname._normalize_result_gethostbyaddrc                 C   s   t | |}tr| |}|S r   )rE   r   r   r   r   r   r   r   r     s   
z*TestHostname._normalize_result_getnameinfoN)r>   rZ   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   ri   r   r   r   ro   r   r   r     s   z+TestLocalhost._normalize_result_getaddrinfoTc                    s2   t t| |}t|tr|d |d dgf}|S )Nr   r   r   )ri   r   r   r1   r   r   ro   r   r   r     s   
z-TestLocalhost._normalize_result_gethostbyaddr)r>   rZ   r   r   r   r   RUNNING_ON_TRAVISr   r   r   r   r   r   ro   r   r     s    r   zip6-localhostzCan return gaierror(-2)	localhostc                   @   r   )TestNonexistentNr   r   r   r   r   r   4  r   r   Z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>   rZ   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   rn   r   r   r   test__broadcast__gethostbyaddrS  s   z,TestBroadcast.test__broadcast__gethostbyaddrN)	r>   rZ   r   r   r   unittestr   r   Z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.255Zbroadcasthostr   )ri   r   iter_all_host_addr_pairsr   rY   )r)   rC   r   ro   r   r   r   ^  s   
z+SanitizedHostsFile.iter_all_host_addr_pairs)r>   rZ   r   r   r   r   r   ro   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 )TestEtcHostsZ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   r`   	MAX_HOSTSRUN_ALL_HOST_TESTSrD   )clsZhfZall_etc_hostshostipr   r   r   populate_testsz  s   
zTestEtcHosts.populate_testsN)	r>   rZ   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   )ri   r   r   r   ro   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   HOSTNAMErt   AF_INETAI_CANONNAMEry   r"   r   r   r   r   )r)   rK   r   r   r   r   r   test_AI_CANONNAME  s   

zTestGeventOrg.test_AI_CANONNAME)r>   rZ   r   r   r   r   r   r   r   r   ro   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   rt   r   rn   r   r   r   	test_inet     zTestFamily.test_inetc                 C   r  r  )r'   r   r   rt   	AF_UNSPECrn   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   rn   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	  rn   r   r   r   test_badtype     zTestFamily.test_badtypeN)
r>   rZ   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)   rK   r   r   r   _test_getaddrinfo  s   z"Test_getaddrinfo._test_getaddrinfoc                 C      |  tjd d S )Nr;   r  r   r   rn   r   r   r   test_80     zTest_getaddrinfo.test_80c                 C   r  )N80r  rn   r   r   r   test_int_string  r  z Test_getaddrinfo.test_int_stringc                 C   r  )Nr   r  rn   r   r   r   test_0  r  zTest_getaddrinfo.test_0c                 C   r  )Nr#   r  rn   r   r   r   	test_http  r  zTest_getaddrinfo.test_httpc                 C      |  dd d S )Nzmyhost.mytld5   r  rn   r   r   r   test_notexistent_tld     z%Test_getaddrinfo.test_notexistent_tldc                 C   r  )Nz"sdfsdfgu5e66098032453245wfdggd.comr;   r  rn   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   rt   r  r   rn   r   r   r   test1  s   zTest_getaddrinfo.test1c                 C   s   |  tjdtjtjdS )Nr     )r  r   r   rt   r   r   rn   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  rt   AF_INET6rn   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   )ry   r"   rt   r   r   r   r   )r)   Zgaiafsocktype_protoZ
_canonnameZ_sar   r   r   
test_enums  s   zTest_getaddrinfo.test_enumsN)r>   rZ   r   r  r  r  r  r  r  r  r  r   r   r   r   r"  r   r   r&  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.)ZskipTestrn   r   r   r   test_russian_getaddrinfo_http  s   z/TestInternational.test_russian_getaddrinfo_httpN)
r>   rZ   r   r   r   rE   rN   r   r   r(  r   r   r   r   r'    s    r'  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   )ri   r+  test_returns_none_after_timeoutrn   ro   r   r   r,  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)rX   Timeoutr   ry   r/   rt   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   )rX   rl   Z
threadpoolr   r2   rO   rP   rn   r   r   r   cleanup>  s
   z%TestInterrupted_gethostbyname.cleanup)	r>   rZ   r   r   Zignores_leakcheckr,  r1  r2  r   r   r   ro   r   r+  ,  s
    	r+  c                   @   r   )TestBadNameNr   r   r   r   r   r3  c  r   r3  Zxxxxxxxxxxxxc                   @   r   )	TestBadIPNr   r   r   r   r   r4  h  r   r4  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&   rn   r   r   r   testq  r  zTest_getnameinfo_127001.testc                 C   s"   |  ddd |  ddtj d S )Nr:   )r   i  r   )r'   rt   NI_DGRAMrn   r   r   r   
test_DGRAMt  s   z"Test_getnameinfo_127001.test_DGRAMc                 C      |  ddtj d S Nr:   r7  )r'   rt   	NI_NOFQDNrn   r   r   r   test_NOFQDNx  r  z#Test_getnameinfo_127001.test_NOFQDNc                 C   r;  r<  )r'   rt   NI_NAMEREQDrn   r   r   r   test_NAMEREQD|  s   z%Test_getnameinfo_127001.test_NAMEREQDN)r>   rZ   r   r8  r:  r>  r@  r   r   r   r   r5  n  s
    r5  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   rt   NI_NUMERICHOSTrn   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   rt   NI_NUMERICSERVrn   r   r   r   test_NUMERICSERV  s   z+Test_getnameinfo_geventorg.test_NUMERICSERVc                 C   s   |  dtjdfd d S rB  r	  rn   r   r   r   test_domain1  r  z'Test_getnameinfo_geventorg.test_domain1c                 C   r6  )Nr:   )r   r;   r   r&   rn   r   r   r   test_domain2  r  z'Test_getnameinfo_geventorg.test_domain2c                 C   r6  )Nr:   )r   r   r   r&   rn   r   r   r   test_port_zero  r  z)Test_getnameinfo_geventorg.test_port_zeroN)r>   rZ   r   r   r   r   rD  rF  rG  rH  rI  r   r   r   r   rA    s    

rA  c                   @   s   e Zd Zdd Zdd ZdS )Test_getnameinfo_failc                 C   r6  )Nr:   )r   r#   r   r&   rn   r   r   r   test_port_string  r  z&Test_getnameinfo_fail.test_port_stringc                 C   r6  )Nr:   )r   r;   iOr&   rn   r   r   r   test_bad_flags  r  z$Test_getnameinfo_fail.test_bad_flagsN)r>   rZ   r   rK  rL  r   r   r   r   rJ    s    rJ  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   r6  )Nr:   )r   r   r   r&   rn   r   r   r   test_overflow_neg_one  s   z%TestInvalidPort.test_overflow_neg_onezErrors dont matchc                 C   r6  )Nr:   )r   Nr   r&   rn   r   r   r   test_typeerror_none  r-  z#TestInvalidPort.test_typeerror_nonezErrors don't matchc                 C   r6  )Nr:   )r   r*   r   r&   rn   r   r   r   test_typeerror_str  r-  z"TestInvalidPort.test_typeerror_strc                 C   r6  )Nr:   )r   i   r   r&   rn   r   r   r   test_overflow_port_too_large  r  z,TestInvalidPort.test_overflow_port_too_largeN)r>   rZ   r   r	   Zreraises_flaky_race_conditionrN  r   ZskipOnLibuvOnPyPyOnWinrO  rP  rQ  r   r   r   r   rM    s    


rM  __main__)NNNT)K
__future__r   r   r   rX   r   r   r?   r   rt   r   rO   Zgevent.socketry   Zgevent.testingtestingr   r   Zgevent.testing.sixr   r	   Zgevent.testing.skippingr
   rl   resolverrI   rx   r   sizeZgevent.testing.sysinfor   r   r   r   r   Zgevent.testing.timingr   r   r   r   rD   rE   r   r   gethostnamer   r   r   r   r   r   Zgevent.resolver._hostsfiler   r   r   ZRUNNING_ON_CIr   r   r   r   r  r  r'  encodeZtimingZAbstractGenericWaitTestCaser+  r3  r4  r5  rA  rJ  rM  r>   mainr   r   r   r   <module>   s   

9  {



	

	
616

	
