
    <|hI                        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.                         j0                  Z ej2                  de        eedd      dej6                  _        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jH                  e	jH                  u sJ ejJ                  e	jJ                  u sJ  ejL                  dd      Z'	 	 	 dXdZ( ed       G d dejR                               Z) G d de)      Z* e(e*d        e(e*d        G d de)      Z+ e(e+e	jX                  ejZ                  xr ej<                  d        G d  d!e)      Z. e(e.d"ed#        e(e.d$ejZ                  d#        G d% d&e)      Z/ e(e/d'        G d( d)e)      Z0 e(e0d*        G d+ d,e)      Z1 e(e1d-        G d. d/e)      Z2 e(e2d0       d d1l3m4Z4  G d2 d3e4      Z5 ejl                  ejn                  d4       G d5 d6e)             Z8e8js                           G d7 d8e)      Z: e(e:e:jv                          G d9 d:e)      Z< G d; d<e)      Z= G d= d>e)      Z> e(e>d?d@e!xr edAdBC        e(e>d?j                  dD      dDdBE        ed       G dF dGej                  j                  j                               ZB G dH dIe)      ZC e(eCdJ        G dK dLe)      ZD e(eDdM        ejl                  ejZ                  dN       G dO dPe)             ZE G dQ dRe)      ZF G dS dTe)      ZG G dU dVe)      ZHeIdWk(  r ej                          yy)Y    )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 c                 (   t              fd}|Arj                  }n t        j                  ddt	                    }|sJ t	                     fd}d|z  |_         || |j                  |       fd}d|z  |_         || |j                  |       fd}	d	|z  |	_         || |	j                  |	       fd
}
d|z  |
_         || |
j                  |
       fd}d|z  |_         || |j                  |       y )Nc                 v    r t        j                        |      }t        | |      st        | ||       y y N)	greentestskipIfhasattrsetattr)knfuncskipskip_reasons      \/var/www/html/test/engine/venv/lib/python3.12/site-packages/gevent/tests/test__socket_dns.py_setattrzadd.<locals>._setattr6   s9    79##D+7=Dq!}Aq$     z[^\w]+_c                 F    r        n}| j                  d|d       y )Ngetaddrinfohttprequire_equal_errors_testselfxcallhostnamer)   s     r!   test_getaddrinfo_httpz"add.<locals>.test_getaddrinfo_httpC   s(    HJH

=!V(< 	 	>r#   ztest_%s_getaddrinfo_httpc                     r        n}| j                  d|      }t        |t              s| j                  d|       y y )Ngethostbynamer(   gethostbyaddr)r+   
isinstance	Exception)r-   r.   ipaddrr/   r0   r)   s      r!   test_gethostbynamezadd.<locals>.test_gethostbynameJ   sQ    HJHOQ1E  G&),JJ,@  B -r#   ztest_%s_gethostbynamec                 D    r        n}| j                  d|       y )Ngethostbyname_exr(   r*   r,   s     r!   test_gethostbyname_exz"add.<locals>.test_gethostbyname_exT   s'    HJH

%q(< 	 	>r#   ztest_%s_gethostbyname_exc                 D    r        n}| j                  d|       y )Nr4   r(   r*   r,   s     r!   test4zadd.<locals>.test4[   s&    HJH

?A(< 	 	>r#   ztest_%s_gethostbyaddrc                 J    r        n}| j                  d|dfd       y )NgetnameinfoP   r   r(   r*   r,   s     r!   test5zadd.<locals>.test5b   s,    HJH

=1b'1(< 	 	>r#   ztest_%s_getnameinfo)callable__name__resubrepr)klassr0   namer   r    r)   r"   r1   r8   r;   r=   rA   r/   s    ` ```      @r!   addrI   0   s    HD  |$$D66)S$x.9D#T(^#t> &@$%F"U)224IJB #:D"@U&//1CD> &@$%F"U)224IJ> -t3ENUENNE*> +T1ENUENNE*r#   z/Tries to resolve and compare hostnames/addrinfoc                   P    e Zd ZdZdZdZej                   xr  ej                  dd      dk(  Z
e
Zd ZeeefZd Zd Zd	 Zd
 Ze
sd Znd Z fdZ fdZd Zd Z	 d#dZd ZeZesd Zd Z nd Z d Zd Z!dZ"d Z#d Z$d Z%ere%ne$Z&d Z'd Z(d Z)d Z*d  Z+d! Z,	 d#d"Z- xZ.S )$TestCaseN   GEVENT_DEBUGr   tracec                 P    | j                   rt        j                  |g|i | y y r   )TRACEr   debug)r-   messageargskwargss       r!   rN   zTestCase.tracer   s$    ::JJw000 r#   c                     	  || }t        |t              rJ t        |             |S # | j                  $ r  t        $ r,}| j
                  rt        j                          |cY d }~S d }~ww xY wr   )r5   BaseExceptionrF   REAL_ERRORSr6   rP   	traceback	print_exc)r-   functionrS   resultexs        r!   __run_resolverzTestCase.__run_resolverz   sg    		t_F!&-8F$v,F8M 	 	zz##%I	s   &) A-!A("A-(A-c                 r    t        j                  | j                  ||             | j                  ||       y r   )r   rQ   _TestCase__format_call_TestCase__trace_fresult)r-   r[   runtimerZ   rS   s        r!   __trace_callzTestCase.__trace_call   s+    

4%%h56VW-r#   c                     t        |      }|j                  d      r|d d dz   }	 |j                  j                  dd      }|j                  }|d||S # t
        $ r ||z   cY S w xY w)Nz,))zgevent._socketcommongevent:)rF   endswith
__module__replacerC   AttributeError)r-   rZ   rS   modulerH   s        r!   __format_callzTestCase.__format_call   su    Dz==9s?D	#((001GRF$$D &d33 	#d?"	#s   0A A('A(c                     t        |t              rd|}nd|}d|dz  fz  }dt        |      z
  t        |      z
  }|dkD  rd|z  }nd}t        j                  ||z   |z          y )	Nz  -=>  raised z  -=>  returned z %.2fms     @@r@   r    r   )r5   r6   lenr   rQ   )r-   r[   secondsmsgtime_msspaces         r!   __trace_fresultzTestCase.__trace_fresult   su    fi((.1C ) +13Cw/22SXG,19%KEE

3;()r#   c                 T    t               }| j                  ||      t               |z
  fS r   )r   _TestCase__run_resolver)r-   rZ   	func_argsnows       r!   run_resolverzTestCase.run_resolver   s'    &C&&x;TVc\IIr#   c                     | j                  | j                  ||             t               }| j                  ||      }t               |z
  }| j	                  ||       ||fS r   )rN   r_   r   rx   r`   )r-   rZ   ry   deltar[   s        r!   r{   zTestCase.run_resolver   sY    JJt))(I>?FE((9=FFUNE  /5= r#   c                 v    t         t        |           | j                  sd t	        j
                         _        y y r   )superrK   setUpverbose_dnsrf   get_hubexception_streamr-   	__class__s    r!   r   zTestCase.setUp   s/    h#% 15FNN-  r#   c                     | j                   s	 t        j                         `t
        t        |           y # t        $ r Y w xY wr   )r   rf   r   r   rk   r   rK   tearDownr   s    r!   r   zTestCase.tearDown   sA    NN$5 	h&( " s   6 	AAc                     | j                   syt        |t              r&t        |t              rt        |      t        |      uS t	        |      t	        |      k7  S )NF)r   r5   rV   typerF   )r-   result1result2s      r!   should_log_resultszTestCase.should_log_results   sG    g}-*Wm2T=W55G}W--r#   c                 H   t        t        |      }t        j                  d|      }t        | d|z   | j                        } |||||fi |}|\  }}	}
}| j
                  rB||	dz   kD  r:|dkD  r5d|||dz  |	dz  fz  }||	dz   kD  rd}nd	}t        j                  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 stdlibro   r   VERYquitez
WARNING: %s slow: %swarningcolor)getattrgevent_socketr   get_original_run_test_genericr   r   log)r-   	func_namerS   rT   gevent_func	real_functesterr[   _real_result	time_realgevent_resulttime_geventrs   words                 r!   r+   zTestCase._test   s     mY7'')<	|i79O9OP	9k4J6J>D;ii$.> >;QUCU<4v!5y67I@K KC Y]*HH-tS	Jr#   c                 J   | j                  ||      \  }}| j                  ||      \  }}	t        j                  rO| j                  ||      r=t        j                  d       | j                  ||||       | j                  ||	||       | j                  ||||       ||||	fS )Nr   r(   )r{   r   QUIETr   r   _TestCase__trace_callassertEqualResults)
r-   r   r   r   ry   r)   real_resultr   r   r   s
             r!   r   zTestCase._run_test_generic   s    !%!2!29i!HY%)%6%6{I%N"{::$11+}MHHRLk9iKm[+yQ]I5I 	  	KI}kAAr#   c                 L    d|z   }t        | |      r t        | |      |      S |S )N_normalize_result_)r   r   )r-   r[   r   	norm_names       r!   _normalize_resultzTestCase._normalize_result   s/    (94	4#+74+F33r#   c                     |S r    r-   r[   s     r!   _normalize_result_getaddrinfoz&TestCase._normalize_result_getaddrinfo       Mr#   c                     |S r   r   r   s     r!   "_normalize_result_gethostbyname_exz+TestCase._normalize_result_gethostbyname_ex   r   r#   c                     t        |t              r|S 	 |d   j                          |d   }|ddgk(  rdg}|d   j                         g |fS # t        $ r Y 0t        $ r |cY S w xY w)N   	127.0.0.1r   )r5   rV   sortrk   
IndexErrorlower)r-   r[   ipss      r!   r   z+TestCase._normalize_result_gethostbyname_ex   s~    
 &-0q	  )C{K00"m1IOO%r3// "  s   A 	A$
A$#A$c                    t        |t              r|S t        |t              rY|D cg c]N  }|d   t        j                  t        j
                  fv r'|d   t        j                  t        j                  fv r|P }}| j                  r"|D cg c]  \  }}}}}|||d|f }}}}}}t        |t              r|j                          |S c c}w c c}}}}}w )Nr   r   r   )
r5   rV   listr   SOCK_STREAM
SOCK_DGRAMIPPROTO_TCPIPPROTO_UDP#NORMALIZE_GAI_IGNORE_CANONICAL_NAMEr   )r-   r[   r.   familykindprotor$   addrs           r!   r   z&TestCase._normalize_result_getaddrinfo  s    
 &-0 &$' $t 2 2F4E4EFF!!3!3V5G5G HH   77  4eQ T5"d3  &$'M!s   ACCc                     |S r   r   r   s     r!   _normalize_result_getnameinfoz&TestCase._normalize_result_getnameinfo;  s    r#   Fc                 d    t         s|S | j                  rt        |t              r|d   g |d   fS |S )Nr   r   )r   NORMALIZE_GHBA_IGNORE_ALIASr5   tupler   s     r!   _normalize_result_gethostbyaddrz(TestCase._normalize_result_gethostbyaddr?  s8    "M++
650I
 1Ir6!9--r#   c                    t        |      t        |      k(  ry |dt        |      dt        |      f}| j                  t        |      t        |      |       t        |t              ry t
        rt        |t        j                        ry | j                  |j                  |j                  |       t        |d      r'| j                  |j                  |j                         y y )Nzsystem:zgevent:errno)rF   assertIsr   r5   	TypeErrorr   r   herrorassertEqualrS   r   r   )r-   r   r   r   rs   s        r!   _compare_exceptions_strictz#TestCase._compare_exceptions_strictK  s    ] 33)T+%6	4CVWd=)4+<cBk9-J{FMM: ))=+=+=sC;([..0C0CD )r#   c                 R   	 | j                  |||       y # t        $ r |dvset        |      t        j                  t        j
                  fvs:t        |      t        j                  t        j
                  t        j                  fvr t        j                  d|||d       Y y w xY w)N)r&   r4   r3   r:   r?   z?WARNING: error type mismatch for %s: %r (gevent) != %r (stdlib)r   r   )	r   AssertionErrorr   r   r   gaierrorerrorr   r   r-   r   r   r   s       r!   _compare_exceptions_lenientz$TestCase._compare_exceptions_lenient`  s    	&++K	R 	&  &  K(0PPM*6==&//SYS_S_2``HHV"K$&	&s    BB&%B&c                 V    ||k(  ryt        | d|z   | j                        } ||||      S )NT_compare_results_)r   _generic_compare_results)r-   r   r   r   compare_funcs        r!   _compare_resultszTestCase._compare_resultsx  s9    -'t%89%D#<<>K	BBr#   c                      	 t        |      t        |      k7  ry	 t         fdt        ||      D              S # t        $ r Y yw xY w)NFc              3   J   K   | ]  \  }}j                  ||        y wr   )r   ).0r.   yr   r-   s      r!   	<genexpr>z4TestCase._generic_compare_results.<locals>.<genexpr>  s,      71 ((Ay9 7s    #)rq   r   allzipr   s   `  `r!   r   z!TestCase._generic_compare_results  sY    	;3}#55 6
  7+}57 7 	7  		s   < 	AAc                     t        |t              t        |t              z   }|dk(  ry|dk(  ryt        |      j                  t        |            sy| j	                  |||      S )Nr   Tr   F)r5   r6   set
isdisjointr   )r-   r   r   r   errorss        r!   _compare_results_getaddrinfoz%TestCase._compare_results_getaddrinfo  sa    
 K3jPY6ZZQ;Q;;**3}+=>,,[-SSr#   c                    |j                  d      }|j                  d      }|r|r||k(  r|dv ry|j                  d      j                  |j                  d            s/|j                  d      j                  |j                  d            ry|dk\  r/|dk\  r*|j                  d      d d |j                  d      d d k(  ry|j                  dd      d   |j                  dd      d   k(  S )Nrg   )            Tr   .r   )countrstrip
startswithsplit)r-   ab
a_segments
b_segmentss        r!   _compare_address_stringsz!TestCase._compare_address_strings  s    WWS\
WWS\
*Z'J,,Fxx}''6!((3-:R:RSTS[S[\_S`:aQ:?qwws|BQ7G177SV<XZYZK[7[wwsAr"aggc1ob&999r#   c                 &    | j                  ||      S r   )r   r-   r   r   
_func_names       r!   _compare_results_gethostbynamez'TestCase._compare_results_gethostbyname  s    ,,[-HHr#   c                 V    t        |d         j                  t        |d                S )Nr   )r   r   r   s       r!   !_compare_results_gethostbyname_exz*TestCase._compare_results_gethostbyname_ex  s+     {1~&11#mA6F2GHHHr#   c                 :   t         t        t        t        j                  t        j
                  t        j                  f}t        ||      r"t        ||      r|r| j                  |||       y | j                  ||      }| j                  ||      }| j                  |||      ry t        rt        ||      rt        ||      sy t        r@t        r:|dk(  r5t        |t        j                        rt        |t        j                        sy | j                  ||       y )Nr?   )OverflowErrorr   UnicodeErrorr   r   r   r   r5   _compare_exceptionsr   r   r   r   r   )r-   r   r   r   r)   r   s         r!   r   zTestCase.assertEqualResults  s     LLOOMM
 k6*z-/P#((mYO,,[)D..}iH  mYG
 ${F3"=&9 $.}fll;";= 	m4r#   )T)/rC   ri   __qualname__maxDiff__timeout__switch_expectedr   r   osgetenvrP   r   rN   rk   
ValueError	NameErrorrW   rx   r   r_   r`   r{   r   r   r   r+   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   __classcell__r   s   @r!   rK   rK   i   s   GKO

NGyryy<GEK1 ":y9K
.	#* 	J	!5).< 04B +8'			0:	B #(
E*&, :M5RlC	7T:II 15.5r#   rK   c                       e Zd Zy)TestTypeErrorNrC   ri   r  r   r#   r!   r  r        r#   r     c                   "    e Zd ZdZd Zd Zd Zy)TestHostnameTc                     t         st        r3t        |t              r#|d   }|j	                  dd      d   }|f|dd  z   }|S )Nr   r   r   )r   r   r5   r   r   )r-   r[   rH   s      r!   __normalize_namezTestHostname.__normalize_name  sH    /Z5N !9D::c1%a(DWvabz)Fr#   c                 P    t         j                  | |      }| j                  |      S r   )rK   r   _TestHostname__normalize_namer   s     r!   r   z,TestHostname._normalize_result_gethostbyaddr  s%    99$G$$V,,r#   c                 `    t         j                  | |      }t        r| j                  |      }|S r   )rK   r   r   r  r   s     r!   r   z*TestHostname._normalize_result_getnameinfo  s,    77fE**62Fr#   N)rC   ri   r  r   r  r   r   r   r#   r!   r  r    s    "&-r#   r  zSometimes get a different result for getaddrinfo with dnspython; c-ares produces different results for localhost on Travis beginning Sept 2019)r   r    c                   x     e Zd Z fdZdZej                  rej                  rer	 fdZ	 xZ
S  xZ
S  xZ
S  xZ
S )TestLocalhostc                 8    t         ryt        t        |   |      S )Nr   )r   r   r  r   r-   r[   r   s     r!   r   z+TestLocalhost._normalize_result_getaddrinfo  s     ]DGOOr#   Tc                 f    t         t        |   |      }t        |t              r|d   |d   dgf}|S )Nr   r   r   )r   r  r   r5   r   r  s     r!   r   z-TestLocalhost._normalize_result_gethostbyaddr  s<     =$OPVWF&%( )VAY>Mr#   )rC   ri   r  r   r   r   RUNNING_ON_TRAVISr   r   r   r  r  s   @r!   r  r    s8    P #'""y}}9L	 	 :M}"r#   r  zip6-localhostzCan return gaierror(-2)	localhostc                       e Zd Zy)TestNonexistentNr  r   r#   r!   r!  r!  4  r  r#   r!  nonexistentxxxyyyc                       e Zd Zy)Test1234Nr  r   r#   r!   r$  r$  :  r  r#   r$  z1.2.3.4c                       e Zd ZdZy)
Test127001TN)rC   ri   r  r   r   r#   r!   r&  r&  @  s    "&r#   r&  r   c                   J    e Zd ZdZer ej                  d      d        ZeZyy)TestBroadcastFz4ares raises errors for broadcasthost/255.255.255.255c                      y r   r   r-   s    r!   test__broadcast__gethostbyaddrz,TestBroadcast.test__broadcast__gethostbyaddrS  s    r#   N)	rC   ri   r  r  r   unittestr   r+  test__broadcast__gethostbynamer   r#   r!   r(  r(  L  s9    O 
M	N	 
O	 *H& r#   r(  z<broadcast>)	HostsFilec                        e Zd Z fdZ xZS )SanitizedHostsFilec              #      K   t         t        |          D ]D  \  }}t        r!|j	                  d      s|dk(  s
|dk(  s|dk(  r-|j	                  d      r?||f F y w)Nlocalz255.255.255.255broadcasthostr  )r   r0  iter_all_host_addr_pairsr   rh   )r-   rH   r   r   s      r!   r4  z+SanitizedHostsFile.iter_all_host_addr_pairs^  sm      2DRT 	JD$#w/ $55 O3 !K/}}W% *	s   AA)rC   ri   r  r4  r  r  s   @r!   r0  r0  ]  s     r#   r0  zYThis sometimes randomly fails on Travis with ares and on appveyor, beginning Feb 13, 2018c                   N    e Zd Z e ej
                  dd            Zed        Zy)TestEtcHostsGEVENTTEST_MAX_ETC_HOSTS10c                 h   t        t        j                  j                  t        j                  j	                  t
              d            }t        |j                               }t        |      | j                  kD  rt        s|d | j                   }|D ]  \  }}t        | |       t        | |        y )Nzhosts_file.txt)r0  r  pathjoindirname__file__sortedr4  rq   	MAX_HOSTSRUN_ALL_HOST_TESTSrI   )clshfall_etc_hostshostips        r!   populate_testszTestEtcHosts.populate_testsz  s    RWW__X-F-=!? @r::<=}-6H).3==9M% 	HD"TNRL	r#   N)	rC   ri   r  intr  r  r?  classmethodrF  r   r#   r!   r6  r6  p  s.     IBII8$?@I	 	r#   r6  c                   .     e Zd ZdZd Z fdZd Z xZS )TestGeventOrgwww.gevent.orgc                 "    |dk(  rd}|dk(  rd}|S )Nz104.17.33.82z104.17.32.82z104.16.254.120z104.16.253.120r   r   s     r!   _normalize_result_gethostbynamez-TestGeventOrg._normalize_result_gethostbyname  s"    ^##F%%%Fr#   c                 N    t         t        |   |      }|d   dk(  rd|dd  z   }|S )Nr   zpython-gevent.readthedocs.org)readthedocs.ior   )r   rJ  r   r  s     r!   r   z0TestGeventOrg._normalize_result_gethostbyname_ex  s6    }dNvV!977)F12J6Fr#   c                 J   t         j                  d t        j                  ddt        j                  f}t        j                  | }| j                  |d   d   d       t        j                  | }t        d |D               | _	        	 | j                  ||d       | `	y # | `	w xY w)Nr      rO  c              3   &   K   | ]	  }|d      yw)rQ  Nr   )r   rs     r!   r   z2TestGeventOrg.test_AI_CANONNAME.<locals>.<genexpr>  s     :UA1Q4:Us   r&   )rJ  HOSTNAMEr   AF_INETAI_CANONNAMEr   r&   r   r   r   r   )r-   rS   r   r   s       r!   test_AI_CANONNAMEzTestGeventOrg.test_AI_CANONNAME  s     ""NN
 &1148q)!,.>?(($/7::U:U7U3U0	9##KN88s   B B")rC   ri   r  rT  rM  r   rW  r  r  s   @r!   rJ  rJ    s      H9r#   rJ  c                   P    e Zd Zd Zd Zd Z ej                  ed      d        Z	y)
TestFamilyc                 d    | j                  dt        j                  d t        j                         y Nr&   )r+   rJ  rT  r   rU  r*  s    r!   	test_inetzTestFamily.test_inet  s    

=-"8"8$Or#   c                 d    | j                  dt        j                  d t        j                         y r[  )r+   rJ  rT  r   	AF_UNSPECr*  s    r!   test_unspeczTestFamily.test_unspec  s     

=-"8"8$@P@PQr#   c                     | j                  dt        j                  d d       | j                  dt        j                  d d       | j                  dt        j                  d d       y )Nr&      i r   r+   rJ  rT  r*  s    r!   test_badvaluezTestFamily.test_badvalue  sJ    

=-"8"8$D

=-"8"8$G

=-"8"8$Cr#   zRaises the wrong errnoc                 F    | j                  dt        j                  d       y )Nr&   r.   rb  r*  s    r!   test_badtypezTestFamily.test_badtype  s    

=-"8"8#>r#   N)
rC   ri   r  r\  r_  rc  r,  r   r   re  r   r#   r!   rY  rY    s8    PRD
 X__')AB? C?r#   rY  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Z ej                  ed
      d        Z ej                  ed      d        Zy)Test_getaddrinfoc                 *     | j                   dg|  y r[  r*   )r-   rS   s     r!   _test_getaddrinfoz"Test_getaddrinfo._test_getaddrinfo  s    

=(4(r#   c                 D    | j                  t        j                  d       y )Nr@   ri  rJ  rT  r*  s    r!   test_80zTest_getaddrinfo.test_80  s    }55r:r#   c                 D    | j                  t        j                  d       y )N80rk  r*  s    r!   test_int_stringz Test_getaddrinfo.test_int_string  s    }55t<r#   c                 D    | j                  t        j                  d       y )Nr   rk  r*  s    r!   test_0zTest_getaddrinfo.test_0  s    }55q9r#   c                 D    | j                  t        j                  d       y )Nr'   rk  r*  s    r!   	test_httpzTest_getaddrinfo.test_http  s    }55v>r#   c                 (    | j                  dd       y )Nzmyhost.mytld5   ri  r*  s    r!   test_notexistent_tldz%Test_getaddrinfo.test_notexistent_tld  s    ~r2r#   c                 (    | j                  dd       y )Nz"sdfsdfgu5e66098032453245wfdggd.comr@   rv  r*  s    r!   test_notexistent_dot_comz)Test_getaddrinfo.test_notexistent_dot_com  s    CRHr#   c                     | j                  t        j                  dt        j                  t        j
                  dd      S )N4   r   )ri  rJ  rT  r   r^  r   r*  s    r!   test1zTest_getaddrinfo.test1  s2    %%m&<&<b&BRBRTZTfTfhiklmmr#   c                     | j                  t        j                  dt        j                  t        j
                  d      S )Nru     )ri  rJ  rT  r   rU  r   r*  s    r!   test2zTest_getaddrinfo.test2  s-    %%m&<&<b&..RXRcRceghhr#   z0dnspython only returns some of the possibilitiesc                 D    | j                  ddt        j                        S )Nz
google.comr'   )ri  r   AF_INET6r*  s    r!   test3zTest_getaddrinfo.test3  s     %%lFFOOLLr#   zEnums only on Python 3.4+c                     t        j                  ddt        j                  t        j                  t        j
                        }|d   \  }}}}}| j                  |t        j                         | j                  |t        j                         y )Nzexample.comr@   r   )r   r&   r   rU  r   r   r   )r-   gaiafsocktype_proto
_canonname_sas          r!   
test_enumszTest_getaddrinfo.test_enums  sm     ''r(.(.(:(:F<N<NP 14A-Hfj#h 2 23b&..)r#   N)rC   ri   r  ri  rl  ro  rq  rs  rw  ry  r|  r  r,  r   r   r  r   r   r  r   r#   r!   rg  rg    s    );=:?3Ini X__'GIMIM Yc67* 8*r#   rg  c                   J    e Zd Zer eej                        ehz
  Zerd Z	yyy)TestInternationalc                 &    | j                  d       y )Nzares fails to encode.)skipTestr*  s    r!   test_russian_getaddrinfo_httpz/TestInternational.test_russian_getaddrinfo_http  s    
 56r#   N)
rC   ri   r  r   r   rK   rW   r	  r   r  r   r#   r!   r  r  	  s0    
 (../:-?7  r#   r  u   президент.рфrussianz$dnspython can actually resolve theseF)r   r    r)   idnar(   c                   H     e Zd Zej                   fd       Zd Zd Z xZS )TestInterrupted_gethostbynamec                 *    t         t        |           y r   )r   r  test_returns_none_after_timeoutr   s    r!   r  z=TestInterrupted_gethostbyname.test_returns_none_after_timeout3  s    +TRTr#   c                     t        j                  |d      5  t        d      D ]  }	 t        j                  d|z          t        d      # t
        j                  $ r Y >w xY w# 1 sw Y   y xY w)NFi@B zwww.x%s.comzTimeout was not raised)rf   Timeoutr	   r   r3   r   r   r   )r-   timeoutindexs      r!   waitz"TestInterrupted_gethostbyname.wait7  sq    ^^GU+ 	; !//0EF
 !!9:: || 		; 	;s-   A%AA%A"A%!A""A%%A.c                     	 t        j                         j                  j                          y # t        $ r t        j                          Y y w xY wr   )rf   r   
threadpoolr;  r6   rX   rY   r*  s    r!   cleanupz%TestInterrupted_gethostbyname.cleanup@  s;    (	"NN'',,. 	"!	"s   ,/ AA)	rC   ri   r  r   ignores_leakcheckr  r  r  r  r  s   @r!   r  r  .  s)    
   U !U;"r#   r  c                       e Zd Zy)TestBadNameNr  r   r#   r!   r  r  e  r  r#   r  xxxxxxxxxxxxc                       e Zd Zy)	TestBadIPNr  r   r#   r!   r  r  j  r  r#   r  z	1.2.3.400z$Travis began returning ip6-localhostc                   $    e Zd Zd Zd Zd Zd Zy)Test_getnameinfo_127001c                 *    | j                  ddd       y )Nr?   r   r@   r   r*   r*  s    r!   testzTest_getnameinfo_127001.tests  s    

="3Q7r#   c                 l    | j                  ddd       | j                  ddt        j                         y )Nr?   )r   i  r   )r+   r   NI_DGRAMr*  s    r!   
test_DGRAMz"Test_getnameinfo_127001.test_DGRAMv  s(    

="4a8

="4fooFr#   c                 F    | j                  ddt        j                         y Nr?   r  )r+   r   	NI_NOFQDNr*  s    r!   test_NOFQDNz#Test_getnameinfo_127001.test_NOFQDNz  s    

="3V5E5EFr#   c                 F    | j                  ddt        j                         y r  )r+   r   NI_NAMEREQDr*  s    r!   test_NAMEREQDz%Test_getnameinfo_127001.test_NAMEREQD~  s    

="3V5G5GHr#   N)rC   ri   r  r  r  r  r  r   r#   r!   r  r  p  s    8GGIr#   r  c                       e Zd Z ej                  ed      d        Z ej                  ed      d        Zd Zd Z	d Z
y)Test_getnameinfo_geventorgz<dnspython raises an error when multiple results are returnedc                     | j                  dt        j                  dfd       | j                  dt        j                  dft        j                         y Nr?   r@   r   )r+   rJ  rT  r   NI_NUMERICHOSTr*  s    r!   test_NUMERICHOSTz+Test_getnameinfo_geventorg.test_NUMERICHOST  s@     	

==#9#92">B

==#9#92">@U@UVr#   c                 f    | j                  dt        j                  dft        j                         y )Nr?   r@   )r+   rJ  rT  r   NI_NUMERICSERVr*  s    r!   test_NUMERICSERVz+Test_getnameinfo_geventorg.test_NUMERICSERV  s%     	

==#9#92">@U@UVr#   c                 J    | j                  dt        j                  dfd       y r  rb  r*  s    r!   test_domain1z'Test_getnameinfo_geventorg.test_domain1  s    

==#9#92">Br#   c                 *    | j                  ddd       y )Nr?   )rK  r@   r   r*   r*  s    r!   test_domain2z'Test_getnameinfo_geventorg.test_domain2  s    

="8!<r#   c                 *    | j                  ddd       y )Nr?   )rK  r   r   r*   r*  s    r!   test_port_zeroz)Test_getnameinfo_geventorg.test_port_zero  s    

="7;r#   N)rC   ri   r  r,  r   r   r  r  r  r  r  r   r#   r!   r  r    sb    X__'SUWUW X__'SUWUWC=<r#   r  c                       e Zd Zd Zd Zy)Test_getnameinfo_failc                 *    | j                  ddd       y )Nr?   )rK  r'   r   r*   r*  s    r!   test_port_stringz&Test_getnameinfo_fail.test_port_string  s    

="<a@r#   c                 *    | j                  ddd       y )Nr?   )r  r@   iOr*   r*  s    r!   test_bad_flagsz$Test_getnameinfo_fail.test_bad_flags  s    

="3X>r#   N)rC   ri   r  r  r  r   r#   r!   r  r    s    A?r#   r  c                       e Zd Z ej                         d        Z ej                  d      d        Z ej                  d      d        Z	d Z
y)TestInvalidPortc                 *    | j                  ddd       y )Nr?   )rK  r   r   r*   r*  s    r!   test_overflow_neg_onez%TestInvalidPort.test_overflow_neg_one  s     	

="8!<r#   zErrors dont matchc                 *    | j                  ddd       y )Nr?   )rK  Nr   r*   r*  s    r!   test_typeerror_nonez#TestInvalidPort.test_typeerror_none  s    

=":A>r#   zErrors don't matchc                 *    | j                  ddd       y )Nr?   )rK  r.   r   r*   r*  s    r!   test_typeerror_strz"TestInvalidPort.test_typeerror_str  s    

="91=r#   c                 *    | j                  ddd       y )Nr?   )rK  i   r   r*   r*  s    r!   test_overflow_port_too_largez,TestInvalidPort.test_overflow_port_too_large  s    

=";Q?r#   N)rC   ri   r  r
   reraises_flaky_race_conditionr  r   skipOnLibuvOnPyPyOnWinr  r  r  r   r#   r!   r  r    si    (U((*= += &Y%%&9:? ;? &Y%%&:;> <>@r#   r  __main__)NNNT)K
__future__r   r   r   rf   r   r  rD   r,  r   r   rX   gevent.socketr   gevent.testingtestingr   r   gevent.testing.sixr	   r
   gevent.testing.skippingr   r   resolverrQ   r   r   sizegevent.testing.sysinfor   r   r   r   r   gevent.testing.timingr   r   r  r@  rI   rK   r  r  gethostnamer  r  r!  r$  r&  r(  gevent.resolver._hostsfiler.  r0  r   RUNNING_ON_CIr6  rF  rJ  rT  rY  rg  r  encodetimingAbstractGenericWaitTestCaser  r  r  r  r  r  r  rC   mainr   r#   r!   <module>r     s   & &    	 	     % "  %   > 6>>$$ 


>8 $
8VT".HMM 6 5 0 & '  0 00fll* ** RYYBBG  ##!7+r MNv5y!! v5 Ov5r	H 	 M4  M2 8 0 
		$	$	F)F)F;	H 4 ?	)
 ;		$	$)	h 	 O( )	x 	 Hi ' ' HH H M= ! 1 & )))mo8 o$    69H 69p M=)) *? ?"/*x /*b7 7< 19

$$6  188@&  MN("FNN$9$9$U$U (" O("l	( 	 K  	 	 I{  )--/UVIh I WI"< <.?H ?@h @: zINN r#   