σ
¨[c           @` s  d  d l  m Z m Z 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 Z d  d l m Z m Z m Z m Z m Z d  d l m Z d  d l m Z m Z m Z d  d l m Z m Z m Z y d  d l m Z Wn e k
 rd Z n Xy d  d l  Z  Wn e k
 r;d Z  n Xd  d	 l! m" Z" y d  d l# Z# d  d l$ Z# Wn e k
 rd Z# n Xd  d
 l% m& Z& d e' f d     YZ( d e' f d     YZ) d   Z* e d e e( f d     Y Z+ d e e) f d     YZ, d e e( f d     YZ- e e j. e d k d  d e e( f d     Y  Z/ d e e) f d     YZ0 e e j. e d k d  e j. e
 j1 d k d  d e j2 f d     Y   Z3 e e j. e  d k d  d  e e( f d!     Y  Z4 e e j. e# d k d"  e j. e5 e# d# d$  d% k  d&  d' e e( f d(     Y   Z6 d) e j2 f d*     YZ7 d+ e j2 f d,     YZ8 d S(-   i    (   t   absolute_importt   divisiont   print_functionN(   t   Popen(   t   BlockingResolvert   OverrideResolvert   ThreadedResolvert   is_valid_ipt   bind_sockets(   t   ExceptionStackContext(   t   AsyncTestCaset   gen_testt   bind_unused_port(   t   unittestt   skipIfNoNetworkt   ignore_deprecation(   t   futures(   t   CaresResolver(   t   TwistedResolvert   _ResolverTestMixinc           B` s    e  Z d    Z e d    Z RS(   c      	   C` sU   t    ! |  j j d d d |  j Wd  QX|  j   } |  j t j d f |  d  S(   Nt	   localhostiP   t   callbacks	   127.0.0.1(   s	   127.0.0.1iP   (   R   t   resolvert   resolvet   stopt   waitt   assertInt   sockett   AF_INET(   t   selft   result(    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyt   test_localhost(   s    
"c         c` s9   |  j  j d d t j  V} |  j t j d f |  d  S(   NR   iP   s	   127.0.0.1(   s	   127.0.0.1iP   (   R   R   R   t	   AF_UNSPECR   R   (   R   t   addrinfo(    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyt   test_future_interface.   s    (   t   __name__t
   __module__R   R   R"   (    (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyR   '   s   	t   _ResolverErrorTestMixinc           B` s    e  Z d    Z e d    Z RS(   c         ` sn     f d   } t    4 t |  !   j j d d d   j Wd  QXWd  QX  j   }   j | t  d  S(   Nc         ` s     j  |  t S(   N(   R   t   True(   t   exc_typt   exc_valt   exc_tb(   R   (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyt   handler:   s    s   an invalid domainiP   R   (   R   R	   R   R   R   R   t   assertIsInstancet	   Exception(   R   R*   R   (    (   R   s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyt   test_bad_host9   s    
(c         c` s4   |  j  t   |  j j d d t j  VWd  QXd  S(   Ns   an invalid domainiP   (   t   assertRaisest   IOErrorR   R   R   R    (   R   (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyt   test_future_interface_bad_hostE   s    (   R#   R$   R-   R   R0   (    (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyR%   8   s   	c          G` s   t  j t j d   d S(   s4   Dummy implementation of getaddrinfo for use in mockss   mock: lookup failedN(   R   t   gaierrort   errnot   EIO(   t   args(    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyt   _failing_getaddrinfoL   s    t   BlockingResolverTestc           B` s   e  Z d    Z RS(   c         C` s#   t  t |   j   t   |  _ d  S(   N(   t   superR6   t   setUpR   R   (   R   (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyR8   S   s    (   R#   R$   R8   (    (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyR6   Q   s   t   BlockingResolverErrorTestc           B` s   e  Z d    Z d   Z RS(   c         C` s8   t  t |   j   t   |  _ t j |  _ t t _ d  S(   N(	   R7   R9   R8   R   R   R   t   getaddrinfot   real_getaddrinfoR5   (   R   (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyR8   \   s    c         C` s#   |  j  t _ t t |   j   d  S(   N(   R;   R   R:   R7   R9   t   tearDown(   R   (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyR<   b   s    (   R#   R$   R8   R<   (    (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyR9   [   s   	t   OverrideResolverTestc           B` s    e  Z d    Z e d    Z RS(   c         C` s_   t  t |   j   i d d 6d d d t j f 6d d d t j f 6} t t   |  |  _ d  S(	   Ns   1.2.3.4iP   s
   google.coms    2a02:6b8:7c:40c:c51e:495f:e23a:3(   s   1.2.3.4iP   (   s
   google.comiP   (   s   1.2.3.4iP   (   s    2a02:6b8:7c:40c:c51e:495f:e23a:3iP   (	   R7   R=   R8   R   R   t   AF_INET6R   R   R   (   R   t   mapping(    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyR8   h   s    c         c` sn   |  j  j d d t j  V} |  j t j d f |  |  j  j d d t j  V} |  j t j d f |  d  S(   Ns
   google.comiP   s   1.2.3.4s    2a02:6b8:7c:40c:c51e:495f:e23a:3i    (   s   1.2.3.4iP   (   s    2a02:6b8:7c:40c:c51e:495f:e23a:3iP   i    i    (   R   R   R   R   R   R>   (   R   R   (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyt   test_resolve_multiaddrq   s    (   R#   R$   R8   R   R@   (    (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyR=   g   s   		s   futures module not presentt   ThreadedResolverTestc           B` s   e  Z d    Z d   Z RS(   c         C` s#   t  t |   j   t   |  _ d  S(   N(   R7   RA   R8   R   R   (   R   (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyR8   }   s    c         C` s$   |  j  j   t t |   j   d  S(   N(   R   t   closeR7   RA   R<   (   R   (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyR<      s    (   R#   R$   R8   R<   (    (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyRA   z   s   	t   ThreadedResolverErrorTestc           B` s   e  Z d    Z d   Z RS(   c         C` s8   t  t |   j   t   |  _ t j |  _ t t _ d  S(   N(	   R7   RC   R8   R   R   R   R:   R;   R5   (   R   (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyR8      s    c         C` s#   |  j  t _ t t |   j   d  S(   N(   R;   R   R:   R7   RC   R<   (   R   (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyR<      s    (   R#   R$   R8   R<   (    (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyRC      s   	t   win32s!   preexec_fn not available on win32t   ThreadedResolverImportTestc           B` s   e  Z d    Z RS(   c         ` s¦   d   t  j d d g } t j   } t | d   f d   } xS t j   |   k  r | j   } | d  k	 r |  j d |  d  St j d  qB W|  j d  d  S(	   Ni   s   -cs'   import tornado.test.resolve_test_helpert
   preexec_fnc           ` s   t  j    S(   N(   t   signalt   alarm(    (   t   TIMEOUT(    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyt   <lambda>’   s    i    g©?s   import timed out(	   t   syst
   executablet   timeR   t   pollt   Nonet   assertEqualt   sleept   fail(   R   t   commandt   startt   popent   return_code(    (   RI   s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyt   test_import   s    	(   R#   R$   RW   (    (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyRE      s   s   pycares module not presentt   CaresResolverTestc           B` s   e  Z d    Z RS(   c         C` s#   t  t |   j   t   |  _ d  S(   N(   R7   RX   R8   R   R   (   R   (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyR8   Ά   s    (   R#   R$   R8   (    (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyRX   ³   s   s   twisted module not presentt   __version__s   0.0s   12.1s   old version of twistedt   TwistedResolverTestc           B` s   e  Z d    Z RS(   c         C` s#   t  t |   j   t   |  _ d  S(   N(   R7   RZ   R8   R   R   (   R   (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyR8   Ζ   s    (   R#   R$   R8   (    (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyRZ   Β   s   t   IsValidIPTestc           B` s   e  Z d    Z RS(   c         C` sπ   |  j  t d   |  j  t d   |  j  t d   |  j  t d   |  j  t d   |  j  t d   |  j  t d   |  j  t d   |  j  t d	   |  j  t d
   |  j  t d   |  j  t d   d  S(   Ns	   127.0.0.1s   4.4.4.4s   ::1s   2620:0:1cfe:face:b00c::3s   www.google.comR   s   4.4.4.4<s
    127.0.0.1t    t    s   
s    (   t
   assertTrueR   (   R   (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyt   test_is_valid_ipΜ   s    (   R#   R$   R_   (    (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyR[   Λ   s   t   TestPortAllocationc           B` s6   e  Z d    Z e j e e d  d  d    Z RS(   c         ` s   d t  j k r |  j d  n  t d  d  } z? | d j   d   |  j t   f d   | d D   Wd  x | D] } | j   qw WXd  S(   Nt   TRAVISs6   dual-stack servers often have port conflicts on travisR   i    i   c         3` s%   |  ] } | j    d    k Vq d S(   i   N(   t   getsockname(   t   .0t   s(   t   port(    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pys	   <genexpr>β   s   (	   t   ost   environt   skipTestR   RO   Rb   R^   t   allRB   (   R   t   socketst   sock(    (   Re   s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyt   test_same_port_allocationά   s    t   SO_REUSEPORTs   SO_REUSEPORT is not supportedc         ` s   g  } t  d t  \ }   z< t   d d t } |  j t   f d   | D   Wd  | j   x | D] } | j   qk WXd  S(   Nt
   reuse_ports	   127.0.0.1c         3` s%   |  ] } | j    d    k Vq d S(   i   N(   Rb   (   Rc   Rd   (   Re   (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pys	   <genexpr>ξ   s    (   R   R&   R   R^   Ri   RB   (   R   Rj   R   Rk   (    (   Re   s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyt   test_reuse_portθ   s    '
(   R#   R$   Rl   R   t   skipIft   hasattrR   Ro   (    (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyR`   Ϋ   s   	(9   t
   __future__R    R   R   R2   Rf   RG   R   t
   subprocessR   RK   RM   t   tornado.netutilR   R   R   R   R   t   tornado.stack_contextR	   t   tornado.testingR
   R   R   t   tornado.test.utilR   R   R   t
   concurrentR   t   ImportErrorRO   t   pycarest   tornado.platform.caresresolverR   t   twistedt   twisted.namest   tornado.platform.twistedR   t   objectR   R%   R5   R6   R9   R=   Rp   RA   RC   t   platformt   TestCaseRE   RX   t   getattrRZ   R[   R`   (    (    (    s8   lib/python2.7/site-packages/tornado/test/netutil_test.pyt   <module>   sd   (


		
$