ó
úR‹_c           @   sl  d  d l  m Z e j ƒ  d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l	 Z	 d  d l
 j Z d  d l m Z d  d l
 m Z d  d l
 m Z d  d l m Z e Z d „  Z d e f d	 „  ƒ  YZ d
 e j f d „  ƒ  YZ d „  Z d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ e d k rhe j ƒ  n  d S(   iÿÿÿÿ(   t   monkeyN(   t   wraps(   t   six(   t   LARGE_TIMEOUT(   t   Threadc            s   t  ˆ  ƒ ‡  f d †  ƒ } | S(   Nc             s6   y ˆ  |  | Ž  SWn t  j ƒ  t j d ƒ n Xd  S(   Ni   (   t	   tracebackt	   print_exct   ost   _exit(   t   argst   kwargs(   t   func(    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   wrapper   s
    
(   R   (   R   R   (    (   R   sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt
   wrap_error   s    R   c           B   s   e  Z d  „  Z RS(   c         K   s?   | j  d ƒ } t | ƒ } t j |  d | | |  j ƒ  d  S(   Nt   target(   t   popR   t   _Threadt   __init__t   start(   t   selfR
   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyR   #   s    (   t   __name__t
   __module__R   (    (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyR   !   s   t   TestTCPc           B   s{  e  Z d Z e j Z d  j g  e d ƒ D] Z	 e
 e	 ƒ ^ q( ƒ Z e e e ƒ sd e j d ƒ Z n  d „  Z d „  Z d d d d d „ Z d d d „ Z d	 „  Z e j s¸ d
 „  Z n  d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e Z d d Z  e! j" d ƒ d „  ƒ Z# d „  Z$ d „  Z% d „  Z& d „  Z' d „  Z( d „  Z) e* j+ e, e d ƒ d ƒ d „  ƒ Z- RS(    s   , i N  t   asciic         C   sE   t  t |  ƒ j ƒ  |  j |  j ƒ  ƒ |  _ |  j j ƒ  d |  _ d  S(   Ni   (   t   superR   t   setUpt   _close_on_teardownt   _setup_listenert   listenert   getsocknamet   port(   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyR   2   s    c         C   s    t  j  ƒ  } t j | d ƒ | S(   Ns	   127.0.0.1i    (   s	   127.0.0.1i    (   t   sockett	   greentestt   bind_and_listen(   R   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyR   G   s    s	   127.0.0.1c         C   sm   t  j  ƒ  } | j | | p! |  j f ƒ | d  k	 rD | j | ƒ n  | d  k	 r` | j | ƒ n  |  j | ƒ S(   N(   R   t   connectR   t   Nonet
   settimeoutt   setblockingR   (   R   t   hostR   t   timeoutt   blockingt   sock(    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   create_connectionL   s    t   sendallc            sÈ   g  ‰  g  ‰ ‡  ‡ ‡ f d †  } t  d | ƒ } ˆ j |   } z t | | ƒ | ƒ Wd  | j t j ƒ | j ƒ  X| j ƒ  | d  k r– ˆ j	 } n  ˆ j
 ˆ  d | ƒ ˆ rÄ t j ˆ d Œ  n  d  S(   Nc             s¡   d  }  zs yR ˆ j j ƒ  \ }  } |  j d d ƒ } ˆ  j | j ƒ  ƒ | j ƒ  | j ƒ  Wn ˆ j t j	 ƒ  ƒ n XWd  |  r |  j ƒ  n  ˆ j j ƒ  Xd  S(   Nt   modet   rb(
   R#   R   t   acceptt   makefilet   appendt   readt   flusht   closet   syst   exc_info(   t   connt   _t   r(   t	   read_dataR   t   server_exc_info(    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   accept_and_read\   s     
R   i    (   R   R*   t   getattrt   shutdownR   t	   SHUT_RDWRR3   t   joinR#   t	   long_datat   assertEqualR   t   reraise(   R   t   datat
   match_datat   client_methodt   client_argsR;   t   servert   client(    (   R9   R   R:   sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   _test_sendallV   s    
c         C   s   |  j  |  j ƒ d  S(   N(   RI   R@   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   test_sendall_str|   s    c         C   s   |  j  t j |  j ƒ ƒ d  S(   N(   RI   R   t	   text_typeR@   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   test_sendall_unicode€   s    c         C   s&   t  j  d |  j ƒ } |  j | ƒ d  S(   Nt   B(   t   arrayR@   RI   (   R   RC   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   test_sendall_arrayƒ   s    c         C   s   d } |  j  | | ƒ d  S(   Nt    (   RI   (   R   RC   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   test_sendall_empty‡   s    c         C   s    d } |  j  | | d d ƒd  S(   NRP   R'   i
   (   RI   (   R   RC   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   test_sendall_empty_with_timeout‹   s    c         C   s    d } |  j  | | d t ƒd  S(   Ns   hi
R(   (   RI   t   False(   R   RC   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   test_sendall_nonblocking   s    c         C   s    d } |  j  | | d d ƒd  S(   NRP   RE   t   send(   RI   (   R   RC   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   test_empty_send˜   s    c            s­   d ‰  ‡  ‡ f d †  } t  d | ƒ } ˆ j ƒ  } | j ƒ  } t  d | j d ˆ  f ƒ } t j d ƒ | j d ƒ t j d ƒ | j ƒ  | j ƒ  | j ƒ  | j ƒ  d  S(   Ni † c             sz   ˆ j  j ƒ  \ ‰  }  ‡ ‡  f d †  } t d | ƒ } ˆ  j d ƒ } ˆ j | d ƒ | j ƒ  ˆ  j ƒ  ˆ j  j ƒ  d  S(   Nc              s   ˆ j  d ˆ  ƒ d  S(   Nt   t(   R+   (    (   t   Nt   remote_client(    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyR+   ¤   s    R   iè  s   hello world(   R   R.   R   t   recvRA   R?   R3   (   R7   R+   t   sendert   result(   RX   R   (   RY   sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyRG       s    

R   R	   gš™™™™™¹?s   hello world(	   R   R*   R/   R1   t   timet   sleepR+   R3   R?   (   R   RG   t   server_threadRH   t   client_filet   client_reader(    (   RX   R   sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   test_fullduplex   s    


c            s¬   g  ‰  t  d ‡  ‡ f d †  ƒ } ˆ j ƒ  } | j d ƒ t j ƒ  } ˆ j ˆ j | j d ƒ t j ƒ  | } ˆ j | d d ƒ | j ƒ  | j	 ƒ  ˆ  d d j	 ƒ  d  S(	   NR   c              s   ˆ  j  ˆ j j ƒ  ƒ S(   N(   R0   R   R.   (    (   t   client_sockR   (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   <lambda>Á   RP   i   i   gš™™™™™¹?i    gÍÌÌÌÌÌì?gš™™™™™ñ?(
   R   R*   R$   R]   t   assertRaisest   TIMEOUT_ERRORRZ   t   assertTimeWithinRangeR?   R3   (   R   t   acceptorRH   R   t   took(    (   Rc   R   sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   test_recv_timeout¿   s    

t   helloi áõs2   On Windows send() accepts whatever is thrown at itc            sé   g  ‰  t  d ‡  ‡ f d †  ƒ } ˆ j ƒ  } t j d ƒ ˆ  sF t ‚ | j d ƒ t j ƒ  } z\ ˆ j ˆ j ƒ  | j ˆ j	 ƒ Wd  QXˆ j
 rº t j ƒ  | } ˆ j | d d ƒ n  Wd  | j ƒ  | j ƒ  ˆ  d d j ƒ  Xd  S(   NR   c              s   ˆ  j  ˆ j j ƒ  ƒ S(   N(   R0   R   R.   (    (   Rc   R   (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyRd   Ú   RP   gš™™™™™¹?g
×£p=
·?gš™™™™™É?i    (   R   R*   R]   R^   t   AssertionErrorR$   Re   Rf   R+   t   _test_sendall_datat    _test_sendall_timeout_check_timeRg   R?   R3   (   R   Rh   RH   R   Ri   (    (   Rc   R   sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   test_sendall_timeout×   s     	

c            s   ‡  f d †  } t  d | ƒ } ˆ  j ƒ  } | j d d ƒ } | j ƒ  | j ƒ  } ˆ  j | d ƒ ˆ  j | j ƒ  d ƒ | j ƒ  | j ƒ  d  S(   Nc             sc   ˆ  j  j ƒ  \ }  } |  j d d ƒ } | j d ƒ | j ƒ  | j ƒ  |  j ƒ  ˆ  j  j ƒ  d  S(   NR,   t   wbs   hello
(   R   R.   R/   t   writeR2   R3   (   R6   R7   t   fd(   R   (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   accept_onceì   s    


R   R,   R-   s   hello
RP   (   R   R*   R/   R3   t   readlineRA   R1   R?   (   R   Rs   Rh   RH   R`   t   line(    (   R   sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   test_makefileë   s    	

c            s   ‡  f d †  } t  d | ƒ } ˆ  j ƒ  } | j d ƒ | j d d ƒ } ˆ  j ˆ  j | j ƒ | j ƒ  | j ƒ  | j ƒ  d  S(   Nc             s8   ˆ  j  j ƒ  \ }  } z t j d ƒ Wd  |  j ƒ  Xd  S(   Ng333333Ó?(   R   R.   R]   R^   R3   (   R6   R7   (   R   (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyRs     s    R   gš™™™™™¹?R,   R-   (	   R   R*   R$   R/   Re   Rf   Rt   R3   R?   (   R   Rs   Rh   RH   Rr   (    (   R   sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   test_makefile_timeout   s    

c         C   s  t  j  t  j t  j d ƒ } |  j t  j | j ƒ |  j t  j | j ƒ |  j d | j ƒ t t  d ƒ rõ | j d ƒ |  j t  j | j ƒ | j	 d ƒ t
 j d d ƒ t  j t  j d ƒ } z' | j	 d ƒ |  j | j | j ƒ Wd  | j ƒ  Xn  | j ƒ  d  S(   Ni    t   SOCK_NONBLOCKi   R   (   R   t   AF_INETt
   SOCK_DGRAMRA   t   typet   familyt   protot   hasattrR$   R%   R    t   get_originalR3   (   R   t   st
   std_socket(    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   test_attributes  s    $c         C   s^   t  j  t  j t  j ƒ } | j t ƒ | j t j t ƒ  f ƒ } |  j	 | t
 ƒ | j ƒ  d  S(   N(   R   Ry   t   SOCK_STREAMR%   RS   t
   connect_exR    t   DEFAULT_LOCAL_HOST_ADDRt   get_portt   assertIsInstancet   errno_typesR3   (   R   R€   t   ret(    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt*   test_connect_ex_nonblocking_bad_connection&  s
    c         C   sU   t  j  t  j t  j ƒ } |  j t  j ƒ  | j d t ƒ  f ƒ Wd  QX| j ƒ  d  S(   Ns   foo.bar.fizzbuzz(   R   Ry   Rƒ   Re   t   gaierrorR„   R†   R3   (   R   R€   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   test_connect_ex_gaierror.  s    c         C   s_   t  j  t  j t  j ƒ } | j t ƒ |  j t ƒ  | j t j	 d f ƒ Wd  QX| j
 ƒ  d  S(   Ni  (   R   Ry   Rƒ   R%   RS   Re   t   OverflowErrorR„   R    R…   R3   (   R   R€   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt$   test_connect_ex_nonblocking_overflow5  s
    t   SOCK_CLOEXECs   Requires SOCK_CLOEXECc            s£   t  j } t  j  t  j t  j | Bƒ } ‡  f d †  } t d | ƒ } | j d ˆ  j f ƒ | j d d ƒ } ˆ  j | j	 ƒ  d ƒ | j
 ƒ  | j
 ƒ  | j ƒ  d  S(   Nc             sL   ˆ  j  j ƒ  \ }  } |  j d d ƒ } | j d ƒ | j ƒ  |  j ƒ  d  S(   NR,   Rp   s   hello
(   R   R.   R/   Rq   R3   (   R6   R7   Rr   (   R   (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyRs   F  s
    
R   s	   127.0.0.1R,   R-   s   hello
(   R   R   Ry   Rƒ   R   R"   R   R/   RA   Rt   R3   R?   (   R   R   R€   Rs   Rh   Rr   (    (   R   sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt$   test_connect_with_type_flags_ignored=  s    	

N(.   R   R   R#   t   __timeout__R   R'   Rf   R?   t   ranget   xt   strR@   t
   isinstancet   bytest   encodeR   R   R*   RI   RJ   R   t   PY3RL   RO   RQ   RR   RT   RV   Rb   Rj   t   TrueRn   Rm   R    t   skipOnWindowsRo   Rv   Rw   R‚   RŠ   RŒ   RŽ   t   unittestt
   skipUnlessR~   R   (    (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyR   *   s>   	.				&								"	
						c          C   s7   t  j  ƒ  }  |  j d ƒ |  j ƒ  d } |  j ƒ  | S(   NRP   i    i   (   RP   i    (   R   t   bindR   R3   (   t   tempsockR   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyR†   W  s
    
t   TestCreateConnectionc           B   s)   e  Z e Z d  „  Z e j d „  ƒ Z RS(   c         C   sr   |  j  t j ƒ 5 } t j t j t ƒ  f d d d d t ƒ  f ƒWd  QX| j } |  j d t	 | ƒ j
 ƒ  ƒ d  S(   NR'   i   t   source_addressRP   t   refused(   Re   R   t   errorR*   R    t   DEFAULT_BIND_ADDRR†   t	   exceptiont   assertInR”   t   lower(   R   t   cmt   ex(    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   test_refusesc  s    	c            s  d t  f d „  ƒ  Y‰  d t f ‡  ‡ f d †  ƒ  Y‰ d „  } d d  l j } |  j | j t j ƒ | j } | j } zi ˆ | _ | | _ |  j ˆ  ƒ  t j d ƒ Wd  QX|  j d	 t ˆ j	 ƒ ƒ |  j
 ˆ j	 d
 j ƒ Wd  d ˆ _	 | | _ | | _ Xd  S(   Nt   Ec           B   s   e  Z RS(    (   R   R   (    (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyRª   o  s   t
   MockSocketc              s;   e  Z d Z e Z ‡ f d  †  Z ‡  f d †  Z d „  Z RS(   c            s   ˆ  j  |  f 7_  d  S(   N(   t   created(   R   R7   (   R«   (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyR   w  s    c            s   ˆ  ƒ  ‚ d  S(   N(    (   R   R7   (   Rª   (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyR"   z  s    c         S   s   t  |  _ d  S(   N(   R™   t   closed(   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyR3   }  s    (    (   R   R   R¬   RS   R­   R   R"   R3   (    (   Rª   R«   (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyR«   r  s
   c          W   s   d g S(   Ni   i   i   i   (   i   i   i   i   i   (    (   R7   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   mockgetaddrinfo€  s    iÿÿÿÿR&   R   i   i    (   R&   R   (    (   t   BaseExceptiont   objectt   gevent.socketR   RA   R*   t   getaddrinfoRe   t   lenR¬   t
   assertTrueR­   (   R   R®   t   gsockett   orig_sockett   orig_getaddrinfo(    (   Rª   R«   sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   test_base_exceptionk  s"    							(   R   R   R   R‘   R©   R    t   ignores_leakcheckR¸   (    (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyRŸ   _  s   	t   TestFunctionsc           B   s#   e  Z e j d  „  ƒ Z d „  Z RS(   c            sm   d d  l  ‰  d d  l ‰  d t f ‡  f d †  ƒ  Y} |  j ˆ  j j ƒ  ˆ  j j | ƒ  d d ƒWd  QXd  S(   Niÿÿÿÿt   ioc              s   e  Z d Z ‡  f d  †  Z RS(   c            s   ˆ  j  d ƒ d  S(   Ni
   (   R^   (   R   t   _args(   t   gevent(    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyR   ¤  s    N(   R   R   R#   t   callbackR   (    (   R½   (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyR»   ¡  s   R'   g{®Gáz„?(   R±   t   gevent._socketcommonR°   Re   R   R'   t   wait(   R   R»   (    (   R½   sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   test_wait_timeoutš  s
    c         C   sP   g  } t  j r9 | j d ƒ | j d ƒ | j d ƒ n  |  j d d | ƒd  S(   Nt   gethostbynamet   gethostbyname_ext   gethostbyaddrR   t   exclude(   R    t   PYPYR0   t!   assertMonkeyPatchedFuncSignatures(   R   RÅ   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   test_signatures«  s    	(   R   R   R    R¹   RÁ   RÈ   (    (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyRº   ˜  s   t
   TestSocketc           B   s   e  Z d  „  Z RS(   c         C   sC   t  j  ƒ  } | j ƒ  |  j t  j ƒ  | j t  j ƒ Wd  QXd  S(   N(   R   R3   Re   R¢   R=   R>   (   R   R€   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   test_shutdown_when_closed»  s    
(   R   R   RÊ   (    (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyRÉ   ¹  s   t   __main__(   R½   R    t	   patch_allR4   R   RN   R   R   R]   R›   t   gevent.testingt   testingR    t	   functoolsR   R   R   t	   threadingR   R   t   intRˆ   R   t   TestCaseR   R†   RŸ   Rº   RÉ   R   t   main(    (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__socket.pyt   <module>   s0    
		ÿ .	9!
