
    iI                     F   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                    j        Z ej        de            eedd          d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 sJ ej%        e	j%        u sJ  ej&        dd          Z'	 	 	 dYdZ( ed           G d dej)                              Z) G d de)          Z* e(e*d            e(e*d            G d de)          Z+ e(e+e	j,        ej-        oej        d             G d! d"e)          Z. e(e.d#ed$             e(e.d%ej-        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/ d0e)          Z2 e(e2d1           d d2l3m4Z4  G d3 d4e4          Z5 ej6        ej7        d5           G d6 d7e)                      Z8e89                                  G d8 d9e)          Z: e(e:e:j;                    G d: d;e)          Z< G d< d=e)          Z= G d> d?e)          Z> e(e>d@dAe!oedBdCD            e(e>d@?                    dE          dEdCF            ed           G dG dHej        j@        jA                              ZB G dI dJe)          ZC e(eCdK            G dL dMe)          ZD e(eDdN            ej6        ej-        dO           G dP dQe)                      ZE G dR dSe)          ZF G dT dUe)          ZG G dV dWe)          ZHeIdXk    r ejJ                     dS dS )Z    )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                 (   t                    fd}|F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        |           d S )Nc                     r t          j                  |          }t          | |          st          | ||           d S d S N)	greentestskipIfhasattrsetattr)knfuncskipskip_reasons      H/usr/local/lib/python3.11/dist-packages/gevent/tests/test__socket_dns.py_setattrzadd.<locals>._setattr6   sY     	>79#D+77==Dq!}} 	 Aq$	  	     z[^\w]+_c                 V    r
             n}|                      d|d           d S )Ngetaddrinfohttprequire_equal_errors_testselfxcallhostnamer)   s     r!   test_getaddrinfo_httpz"add.<locals>.test_getaddrinfo_httpC   sE    ,HHJJJH

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

%q(< 	 	> 	> 	> 	> 	>r#   ztest_%s_gethostbyname_exc                 T    r
             n}|                      d|           d S )Nr4   r(   r*   r,   s     r!   test4zadd.<locals>.test4[   sC    ,HHJJJH

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

=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            | 	:$DD6)S$x..99D##T(^^###> > > > > > > &@$%F"HU)24IJJJB B B B B B B #:D"@HU&/1CDDD> > > > > > > &@$%F"HU)24IJJJ> > > > > > > -t3ENHUENE***> > > > > > > +T1ENHUENE*****r#   z/Tries to resolve and compare hostnames/addrinfoc                   @    e Zd ZdZdZdZej         o 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                 B    | j         rt          j        |g|R i | d S d S r   )TRACEr   debug)r-   messageargskwargss       r!   rN   zTestCase.tracer   s<    : 	1Jw000000000	1 	1r#   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   s    		Xt_F!&-88FF$v,,FFFM 	 	 	 	 	 	z &#%%%IIIIII	s   25 A/	A*$A/*A/c                     t          j        |                     ||                     |                     ||           d S r   )r   rQ   _TestCase__format_call_TestCase__trace_fresult)r-   r[   runtimerZ   rS   s        r!   __trace_callzTestCase.__trace_call   s>    
4%%h55666VW-----r#   c                     t          |          }|                    d          r|d d         dz   }	 |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   s    Dzz== 	#9s?D	#(001GRRF$D &dd33 	# 	# 	#d?"""	#s   *A A0/A0c                     t          |t                    rd|}nd|}d|dz  fz  }dt          |          z
  t          |          z
  }|dk    rd|z  }nd}t          j        ||z   |z              d S )	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   s    fi(( 	4 	4(.1CC	4 +1&3Cw/22SXXG,199%KEEE
3;()))))r#   c                 l    t                      }|                     ||          t                      |z
  fS r   )r   _TestCase__run_resolver)r-   rZ   	func_argsnows       r!   run_resolverzTestCase.run_resolver   s.    &&C&&x;;TVVc\IIr#   c                     |                      |                     ||                     t                      }|                     ||          }t                      |z
  }|                     ||           ||fS r   )rN   r_   r   rx   r`   )r-   rZ   ry   deltar[   s        r!   r{   zTestCase.run_resolver   so    JJt))(I>>???FFE((9==FFFUNE  ///5= r#   c                     t          t          |                                            | j        sd t	          j                    _        d S d S r   )superrK   setUpverbose_dnsrf   get_hubexception_streamr-   	__class__s    r!   r   zTestCase.setUp   sL    h##%%% 	5 15FN---	5 	5r#   c                     | j         s%	 t          j                    `n# t          $ r Y nw xY wt          t          |                                            d S r   )r   rf   r   r   rk   r   rK   tearDownr   s    r!   r   zTestCase.tearDown   sf     	N$$55!   h&&(((((s    
++c                     | j         sdS t          |t                    r3t          |t                    rt          |          t          |          uS t	          |          t	          |          k    S )NF)r   r5   rV   typerF   )r-   result1result2s      r!   should_log_resultszTestCase.should_log_results   sc     	5g}-- 	6*Wm2T2T 	6==W55G}}W--r#   c                 H   t          t          |          }t          j        d|          }t          | d|z   | j                  } |||||fi |}|\  }}	}
}| j        rD||	dz   k    r;|dk    r5d|||dz  |	dz  fz  }||	dz   k    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7')<<	|i79OPP	9k4JJ6JJ>D;i 		Ki$.> > >;QUCUCU<4v!5y67I@K KC Y]**H-tS	JJJJr#   Tc                 p   |                      ||          \  }}|                      ||          \  }}	t          j        rZ|                     ||          rDt          j        d           |                     ||||           |                     ||	||           |                     ||||           ||||	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!HY%)%6%6{I%N%N"{: 	R$11+}MM 	RHRLLLk9iKKKm[+yQQQ]I5I 	  	K 	K 	KI}kAAr#   c                 b    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## 	4+74++F3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                                          n# t          $ r Y nt          $ r |cY S w xY w|d         }|ddgk    rdg}|d                                         g |fS )N   	127.0.0.1r   )r5   rV   sortrk   
IndexErrorlower)r-   r[   ipss      r!   r   z+TestCase._normalize_result_gethostbyname_ex   s    
 &-00 q	    !       )C{K000"m1IOO%%r3//s   4 
A AAc                     t          |t                    r|S t          |t                    rd |D             }| j        rd |D             }t          |t                    r|                                 |S )Nc                     g | ]D}|d          t           j        t           j        fv r"|d         t           j        t           j        fv B|ES )r   r   )r   SOCK_STREAM
SOCK_DGRAMIPPROTO_TCPIPPROTO_UDP).0r.   s     r!   
<listcomp>z:TestCase._normalize_result_getaddrinfo.<locals>.<listcomp>)  sY       t 2F4EFFF!!3V5G HHH  IHHr#   c                 (    g | ]\  }}}}}|||d |fS )r   r   )r   familykindprotor$   addrs         r!   r   z:TestCase._normalize_result_getaddrinfo.<locals>.<listcomp>1  s=       4eQ T5"d3  r#   )r5   rV   list#NORMALIZE_GAI_IGNORE_CANONICAL_NAMEr   r   s     r!   r   z&TestCase._normalize_result_getaddrinfo  s    
 &-00  &$''  #   7      &$'' Mr#   c                     |S r   r   r   s     r!   _normalize_result_getnameinfoz&TestCase._normalize_result_getnameinfo;  s    r#   Fc                 r    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?  sG    " 	M+ 	.
650I0I 	.
 1Ir6!9--r#   c                    t          |          t          |          k    rd S |dt          |          dt          |          f}|                     t          |          t          |          |           t          |t                    rd S t
          rt          |t          j                  rd S |                     |j	        |j	        |           t          |d          r"|                     |j        |j                   d S d S )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33F)T+%6%6	4CVCVWd=))4+<+<cBBBk9-- 	F 	J{FM:: 	 F)=+=sCCC;(( 	E[.0CDDDDD	E 	Er#   c                 F   	 |                      |||           d S # t          $ r{ |dvsYt          |          t          j        t          j        fvs2t          |          t          j        t          j        t          j        fvr t          j        d|||d           Y d S 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RRRR 	& 	& 	&  &   K((0PPPM**6=&/SYS_2```HV"K$& & & & & & &	&s    BB B c                 ^    ||k    rdS t          | d|z   | j                  } ||||          S )NT_compare_results_)r   _generic_compare_results)r-   r   r   r   compare_funcs        r!   _compare_resultszTestCase._compare_resultsx  sE    -''4t%89%D#<> >|K	BBBr#   c                      	 t          |          t          |          k    rdS n# t          $ r Y dS w xY wt           fdt          ||          D                       S )NFc              3   L   K   | ]\  }}                     ||          V  d S r   )r   )r   r.   yr   r-   s      r!   	<genexpr>z4TestCase._generic_compare_results.<locals>.<genexpr>  sM       7 71 ((Ay99 7 7 7 7 7 7r#   )rq   r   allzipr   s   `  `r!   r   z!TestCase._generic_compare_results  s    	;3}#5#555u 6 	 	 	55	  7 7 7 7 7+}557 7 7 7 7 	7s    ' 
55c                    t          |t                    t          |t                    z   }|dk    rdS |dk    rdS t          |                              t          |                    sdS |                     |||          S )Nr   Tr   F)r5   r6   set
isdisjointr   )r-   r   r   r   errorss        r!   _compare_results_getaddrinfoz%TestCase._compare_results_getaddrinfo  s    
 K33jPY6Z6ZZQ;;4Q;;5;**3}+=+=>> 	4,,[-SSSr#   c                 n   |                     d          }|                     d          }|r|r||k    r|dv rdS |                    d                              |                    d                    s;|                    d                              |                    d                    rdS |dk    rD|dk    r>|                    d          d d         |                    d          d d         k    rdS |                    dd          d         |                    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,Ftxx}}''66 !((3--:R:RSTS[S[\_S`S`:a:a tQ:??qwws||BQB7G177SV<<XZYZXZK[7[7[twwsAr"aggc1oob&999r#   c                 .    |                      ||          S r   )r   r-   r   r   
_func_names       r!   _compare_results_gethostbynamez'TestCase._compare_results_gethostbyname  s    ,,[-HHHr#   c                 z    t          |d                                       t          |d                              S )Nr   )r   r   r   s       r!   !_compare_results_gethostbyname_exz*TestCase._compare_results_gethostbyname_ex  s4     {1~&&11#mA6F2G2GHHHHr#   c                    t           t          t          t          j        t          j        t          j        f}t          ||          r+t          ||          r|r|                     |||           d S | 	                    ||          }| 	                    ||          }| 
                    |||          rd S t          r"t          ||          rt          ||          sd S t          rCt          r<|dk    r6t          |t          j                  rt          |t          j                  sd S |                     ||           d S )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  sZ    LOM
 k6** 	z-/P/P 	# P((mYOOOF,,[)DD..}iHH  mYGG 	F
 $	{F33	 #=&99	
 F $		 ..}fl;; /";== / F 	m4444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Gyry<<GEK1 1 1 ":y9K
 
 
. . .	# 	# 	#* * *  !	J 	J 	J 	J	! 	! 	!5 5 5 5 5) ) ) ) ). . .  < 04B B B B   +8' B	 	 		 	 	 		0 	0 	0:	 	 	B   #(
 
 
E E E*& & &, :Ml55RlC C C	7 	7 	7T T T: : :I I II I I 15.5 .5 .5 .5 .5 .5 .5 .5r#   rK   c                       e Zd ZdS )TestTypeErrorNrC   ri   r  r   r#   r!   r  r            Dr#   r     c                   $    e Zd ZdZd Zd Zd ZdS )TestHostnameTc                     t           st          rGt          |t                    r2|d         }|                    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  s_     	*/ 	*Z5N5N 	* !9D::c1%%a(DWvabbz)Fr#   c                 b    t                               | |          }|                     |          S r   )rK   r   _TestHostname__normalize_namer   s     r!   r   z,TestHostname._normalize_result_gethostbyaddr  s+    99$GG$$V,,,r#   c                 t    t                               | |          }t          r|                     |          }|S r   )rK   r   r   r  r   s     r!   r   z*TestHostname._normalize_result_getnameinfo  s7    77fEE 	3**622Fr#   N)rC   ri   r  r   r  r   r   r   r#   r!   r  r    sG        "&  - - -    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                   d     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                 f    t           rdS t          t          |                               |          S )Nr   )r   r   r  r   r-   r[   r   s     r!   r   z+TestLocalhost._normalize_result_getaddrinfo  s0     	 2]D))GGOOOr#   Tc                     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  sP     =$//OOPVWWF&%(( ? )VAY>Mr#   )rC   ri   r  r   r   r   RUNNING_ON_TRAVISr   r   r   r  r  s   @r!   r  r    s        P P P P P #'" y} 9L 	 	 	 	 	 	 	 	 	           r#   r  zip6-localhostzCan return gaierror(-2)	localhostc                       e Zd ZdS )TestNonexistentNr  r   r#   r!   r$  r$  4  r  r#   r$  nonexistentxxxyyyc                       e Zd ZdS )Test1234Nr  r   r#   r!   r'  r'  :  r  r#   r'  z1.2.3.4c                       e Zd ZdZdS )
Test127001TN)rC   ri   r  r   r   r#   r!   r)  r)  @  s        "&r#   r)  r   c                   P    e Zd ZdZer ej        d          d             ZeZdS dS )TestBroadcastFz4ares raises errors for broadcasthost/255.255.255.255c                     d S r   r   r-   s    r!   test__broadcast__gethostbyaddrz,TestBroadcast.test__broadcast__gethostbyaddrS  s    Fr#   N)	rC   ri   r  r	  r   unittestr   r.  test__broadcast__gethostbynamer   r#   r!   r+  r+  L  s]        O H 
M	N	N	 	 
O	N	 *H&&&H Hr#   r+  z<broadcast>)	HostsFilec                        e Zd Z fdZ xZS )SanitizedHostsFilec              #      K   t          t          |                                           D ]P\  }}t          r(|                    d          s|dk    s|dk    s|dk    r4|                    d          rJ||fV  Qd S )Nlocalz255.255.255.255broadcasthostr"  )r   r3  iter_all_host_addr_pairsr   rh   )r-   rH   r   r   s      r!   r7  z+SanitizedHostsFile.iter_all_host_addr_pairs^  s       2D99RRTT 	 	JD$# w// !$555 O33 !K//}}W%%  *	 	r#   )rC   ri   r  r7  r  r  s   @r!   r3  r3  ]  s8                r#   r3  zYThis sometimes randomly fails on Travis with ares and on appveyor, beginning Feb 13, 2018c                   X    e Zd Z e ej        dd                    Zed             ZdS )TestEtcHostsGEVENTTEST_MAX_ETC_HOSTS10c                    t          t          j                            t          j                            t
                    d                    }t          |                                          }t          |          | j	        k    rt          s|d | j	                 }|D ]%\  }}t          | |           t          | |           &d S )Nzhosts_file.txt)r3  r
  pathjoindirname__file__sortedr7  rq   	MAX_HOSTSRUN_ALL_HOST_TESTSrI   )clshfall_etc_hostshostips        r!   populate_testszTestEtcHosts.populate_testsz  s    RW__X-F-F-=!? !? @ @r::<<==}--6H-).3=.9M% 	 	HD"TNNNRLLLL	 	r#   N)	rC   ri   r  intr
  r  rB  classmethodrI  r   r#   r!   r9  r9  p  sM         IBI8$??@@I	 	 [	 	 	r#   r9  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                     t          t          |                               |          }|d         dk    rd|dd          z   }|S )Nr   zpython-gevent.readthedocs.org)readthedocs.ior   )r   rM  r   r  s     r!   r   z0TestGeventOrg._normalize_result_gethostbyname_ex  sG    }d++NNvVV!9777)F122J6Fr#   c                 N   t           j        d t          j        ddt          j        f}t          j        | }|                     |d         d         d           t          j        | }t          d |D                        | _	        	 | 
                    ||d           | `	d S # | `	w xY w)Nr      rR  c              3   &   K   | ]}|d          V  dS )rT  Nr   )r   rs     r!   r   z2TestGeventOrg.test_AI_CANONNAME.<locals>.<genexpr>  s&      :U:UA1Q4:U:U:U:U:U:Ur#   r&   )rM  HOSTNAMEr   AF_INETAI_CANONNAMEr   r&   r   r   r   r   )r-   rS   r   r   s       r!   test_AI_CANONNAMEzTestGeventOrg.test_AI_CANONNAME  s     "N
 &148q)!,.>???($/7::U:U:U:U:U7U7U3U0	9##KNNN88888888s   B   B$)rC   ri   r  rW  rP  r   rZ  r  r  s   @r!   rM  rM    s]          H      9 9 9 9 9 9 9r#   rM  c                   T    e Zd Zd Zd Zd Z ej        ed          d             Z	dS )
TestFamilyc                 ^    |                      dt          j        d t          j                   d S Nr&   )r+   rM  rW  r   rX  r-  s    r!   	test_inetzTestFamily.test_inet  s%    

=-"8$OOOOOr#   c                 ^    |                      dt          j        d t          j                   d S r^  )r+   rM  rW  r   	AF_UNSPECr-  s    r!   test_unspeczTestFamily.test_unspec  s&    

=-"8$@PQQQQQr#   c                     |                      dt          j        d d           |                      dt          j        d d           |                      dt          j        d d           d S )Nr&      i r   r+   rM  rW  r-  s    r!   test_badvaluezTestFamily.test_badvalue  sY    

=-"8$DDD

=-"8$GGG

=-"8$CCCCCr#   zRaises the wrong errnoc                 H    |                      dt          j        d           d S )Nr&   r.   re  r-  s    r!   test_badtypezTestFamily.test_badtype  s!    

=-"8#>>>>>r#   N)
rC   ri   r  r_  rb  rf  r/  r   r   rh  r   r#   r!   r\  r\    sw        P P PR R RD D D
 X_')ABB? ? CB? ? ?r#   r\  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dS )Test_getaddrinfoc                 "     | j         dg|R   d S r^  r*   )r-   rS   s     r!   _test_getaddrinfoz"Test_getaddrinfo._test_getaddrinfo  s"    
=(4((((((r#   c                 F    |                      t          j        d           d S )Nr@   rl  rM  rW  r-  s    r!   test_80zTest_getaddrinfo.test_80  s!    }5r:::::r#   c                 F    |                      t          j        d           d S )N80rn  r-  s    r!   test_int_stringz Test_getaddrinfo.test_int_string  s!    }5t<<<<<r#   c                 F    |                      t          j        d           d S )Nr   rn  r-  s    r!   test_0zTest_getaddrinfo.test_0  s!    }5q99999r#   c                 F    |                      t          j        d           d S )Nr'   rn  r-  s    r!   	test_httpzTest_getaddrinfo.test_http  s!    }5v>>>>>r#   c                 2    |                      dd           d S )Nzmyhost.mytld5   rl  r-  s    r!   test_notexistent_tldz%Test_getaddrinfo.test_notexistent_tld  s    ~r22222r#   c                 2    |                      dd           d S )Nz"sdfsdfgu5e66098032453245wfdggd.comr@   ry  r-  s    r!   test_notexistent_dot_comz)Test_getaddrinfo.test_notexistent_dot_com  s    CRHHHHHr#   c                 r    |                      t          j        dt          j        t          j        dd          S )N4   r   )rl  rM  rW  r   ra  r   r-  s    r!   test1zTest_getaddrinfo.test1  s,    %%m&<b&BRTZTfhiklmmmr#   c                 p    |                      t          j        dt          j        t          j        d          S )Nrx     )rl  rM  rW  r   rX  r   r-  s    r!   test2zTest_getaddrinfo.test2  s(    %%m&<b&.RXRceghhhr#   z0dnspython only returns some of the possibilitiesc                 D    |                      ddt          j                  S )Nz
google.comr'   )rl  r   AF_INET6r-  s    r!   test3zTest_getaddrinfo.test3  s     %%lFFOLLLr#   zEnums only on Python 3.4+c                    t          j        ddt          j        t          j        t          j                  }|d         \  }}}}}|                     |t          j                   |                     |t          j                   d S )Nzexample.comr@   r   )r   r&   r   rX  r   r   r   )r-   gaiafsocktype_proto
_canonname_sas          r!   
test_enumszTest_getaddrinfo.test_enums  su     'r(.(.(:F<NP P 14A-Hfj#h 2333b&.)))))r#   N)rC   ri   r  rl  ro  rr  rt  rv  rz  r|  r  r  r/  r   r   r  r   r   r  r   r#   r!   rj  rj    s	       ) ) ); ; ;= = =: : :? ? ?3 3 3I I In n ni i i X_'GI IM MI IM Yc677* * 87* * *r#   rj  c                   L    e Zd Zer eej                  ehz
  Zerd Z	dS dS dS )TestInternationalc                 0    |                      d           d S )Nzares fails to encode.)skipTestr-  s    r!   test_russian_getaddrinfo_httpz/TestInternational.test_russian_getaddrinfo_http  s    
 566666r#   N)
rC   ri   r  r   r   rK   rW   r  r   r  r   r#   r!   r  r  	  sb        
 7 c(.//:-? 	77 7 7 7 77 7
	7 	7r#   r  u   президент.рфrussianz$dnspython can actually resolve theseF)r   r    r)   idnar(   c                   D     e Zd Zej         fd            Zd Zd Z xZS )TestInterrupted_gethostbynamec                 V    t          t          |                                            d S r   )r   r  test_returns_none_after_timeoutr   s    r!   r  z=TestInterrupted_gethostbyname.test_returns_none_after_timeout3  s&    +T22RRTTTTTr#   c                     t          j        |d          5  t          d          D ]/}	 t          j        d|z             # t
          j        $ r Y ,w xY wt          d          # 1 swxY w Y   d S )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  s    ^GU++ 	; 	;  !/0EFFFF|   D !9:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s4   A%A A%AA%AA%%A),A)c                     	 t          j                    j                                         d S # t          $ r t          j                     Y d S w xY wr   )rf   r   
threadpoolr>  r6   rX   rY   r-  s    r!   cleanupz%TestInterrupted_gethostbyname.cleanup@  s]    (	"N',,..... 	" 	" 	"!!!!!!	"s   *. AA)	rC   ri   r  r   ignores_leakcheckr  r  r  r  r  s   @r!   r  r  .  sk        
  U U U U ! U; ; ;" " " " " " "r#   r  c                       e Zd ZdS )TestBadNameNr  r   r#   r!   r  r  e  r  r#   r  xxxxxxxxxxxxc                       e Zd ZdS )	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dS )Test_getnameinfo_127001c                 4    |                      ddd           d S )Nr?   r   r@   r   r*   r-  s    r!   testzTest_getnameinfo_127001.tests  s    

="3Q77777r#   c                 v    |                      ddd           |                      ddt          j                   d S )Nr?   )r   i  r   )r+   r   NI_DGRAMr-  s    r!   
test_DGRAMz"Test_getnameinfo_127001.test_DGRAMv  s8    

="4a888

="4foFFFFFr#   c                 H    |                      ddt          j                   d S Nr?   r  )r+   r   	NI_NOFQDNr-  s    r!   test_NOFQDNz#Test_getnameinfo_127001.test_NOFQDNz  s"    

="3V5EFFFFFr#   c                 H    |                      ddt          j                   d S r  )r+   r   NI_NAMEREQDr-  s    r!   test_NAMEREQDz%Test_getnameinfo_127001.test_NAMEREQD~  s"    

="3V5GHHHHHr#   N)rC   ri   r  r  r  r  r  r   r#   r!   r  r  p  s[        8 8 8G G GG G GI I I I 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
dS )Test_getnameinfo_geventorgz<dnspython raises an error when multiple results are returnedc                     |                      dt          j        dfd           |                      dt          j        dft          j                   d S Nr?   r@   r   )r+   rM  rW  r   NI_NUMERICHOSTr-  s    r!   test_NUMERICHOSTz+Test_getnameinfo_geventorg.test_NUMERICHOST  sI     	

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

==#92">@UVVVVVr#   c                 `    |                      dt          j        dft          j                   d S )Nr?   r@   )r+   rM  rW  r   NI_NUMERICSERVr-  s    r!   test_NUMERICSERVz+Test_getnameinfo_geventorg.test_NUMERICSERV  s+     	

==#92">@UVVVVVr#   c                 L    |                      dt          j        dfd           d S r  re  r-  s    r!   test_domain1z'Test_getnameinfo_geventorg.test_domain1  s&    

==#92">BBBBBr#   c                 4    |                      ddd           d S )Nr?   )rN  r@   r   r*   r-  s    r!   test_domain2z'Test_getnameinfo_geventorg.test_domain2  s    

="8!<<<<<r#   c                 4    |                      ddd           d S )Nr?   )rN  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    s        X_'SU UW WU UW X_'SU UW WU UWC C C= = =< < < < <r#   r  c                       e Zd Zd Zd ZdS )Test_getnameinfo_failc                 4    |                      ddd           d S )Nr?   )rN  r'   r   r*   r-  s    r!   test_port_stringz&Test_getnameinfo_fail.test_port_string  s    

="<a@@@@@r#   c                 4    |                      ddd           d S )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    s5        A A A? ? ? ? ?r#   r  c                       e Zd Z ej                    d             Z ej        d          d             Z ej        d          d             Z	d Z
dS )TestInvalidPortc                 4    |                      ddd           d S )Nr?   )rN  r   r   r*   r-  s    r!   test_overflow_neg_onez%TestInvalidPort.test_overflow_neg_one  s!     	

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

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

="91=====r#   c                 4    |                      ddd           d S )Nr?   )rN  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    s        (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  rC  rI   rK   r  r  gethostnamer!  r  r$  r'  r)  r+  gevent.resolver._hostsfiler1  r3  r   RUNNING_ON_CIr9  rI  rM  rW  r\  rj  r  encodetimingAbstractGenericWaitTestCaser  r  r  r  r  r  r  rC   mainr   r#   r!   <module>r     s3   & % % % % % & & & & & &              				 				             % % % % % % " " " " " "       % % % % % %             > > > > > > 6>$ 

>8 $ $ $
78VT"".HM 6 6 6 6 6 6 5 5 5 5 5 5 0 0 0 0 0 0 & & & & & & ' ' ' ' ' '     0000fl**** RYBBGG  ##!7+ 7+ 7+ 7+r MNNv5 v5 v5 v5 v5y! v5 v5 ONv5r	 	 	 	 	H 	 	 	 M4    M2       8   0 
		$	F)F;	       H   4 ?	)   
 ;		$)   	 	 	 	 	h 	 	 	 O( ) ) )	 	 	 	 	x 	 	 	 Hi   ' ' ' ' ' ' ' '   H H H H HH H H H M= ! ! ! 1 0 0 0 0 0       & ))mo o    8  o o$      69 69 69 69 69H 69 69 69p M=) * * *? ? ? ? ? ? ? ?"/* /* /* /* /*x /* /* /*b7 7 7 7 7 7 7 7< 19

$$6        188@@&        MNN(" (" (" (" ("FN$9$U (" (" ON("l	 	 	 	 	( 	 	 	 K      	 	 	 	 	 	 	 	 I{    )-/UVVI I I I Ih I I WVI"< < < < < < < <.? ? ? ? ?H ? ? ?@ @ @ @ @h @ @ @: zIN r#   