ó
úR‹_c           @  s¿  d  d l  m Z m 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 Z d  d l m Z d e f d „  ƒ  YZ d	 e f d
 „  ƒ  YZ d e j f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ e j j e ƒ d „ Z d e f d „  ƒ  YZ  d e f d „  ƒ  YZ! e" d k r»e j# ƒ  n  d S(   iÿÿÿÿ(   t   print_functiont   divisionN(   t   PY3(   t   DEFAULT_SOCKET_TIMEOUT(   t   socket(   t   StreamServert   SimpleStreamServerc           B  s   e  Z d  „  Z RS(   c   	      C  sê   | j  ƒ  } zÌ | j ƒ  } | s% d  Sy | j d d ƒ \ } } } Wn% t k
 rk t d | f ƒ ‚  n X| d k rˆ | j d ƒ nO | d k rÊ | j d ƒ x3 t rÆ | j d	 ƒ } | s¤ Pq¤ q¤ Wn | j d
 ƒ Wd  | j ƒ  Xd  S(   Nt    i   s    Failed to parse request line: %rs   /pings   HTTP/1.0 200 OK

PONGs   /longs   /shortt   helloi   s   HTTP/1.0 404 WTF?

(   s   /longs   /short(	   t   makefilet   readlinet   splitt	   Exceptiont   printt   sendallt   Truet   recvt   close(	   t   selft   client_sockett   _addresst   fdt   request_linet   _methodt   patht   _restt   data(    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   handle   s(    	(   t   __name__t
   __module__R   (    (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR      s   t   Settingsc           B  sb   e  Z e Z e Z e Z e Z e	 d  „  ƒ Z
 e
 Z e	 d „  ƒ Z e	 d „  ƒ Z e	 d „  ƒ Z RS(   c         C  s)   |  j  ƒ  } | j ƒ  } |  j | ƒ d  S(   N(   R	   t   readt   assertFalse(   t   instt   connt   result(    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   assertAcceptedConnectionError0   s    c         C  sQ   |  j  ƒ  y |  j ƒ  Wn2 t j k
 rL } | j d t j k rM ‚  qM n Xd  S(   Ni    (   t	   assert500t   send_requestR   t   errort   argst	   greentestt   CONN_ABORTED_ERRORS(   R!   t   ex(    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt	   assert5038   s    
c         C  s-   |  j  t j ƒ  |  j d d ƒ Wd  QXd  S(   Nt   timeoutg{®Gáz„?(   t   assertRaisesR   R-   t   assertRequestSucceeded(   R!   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   assertPoolFullC   s    c         C  s   | j  d |  j ƒ  ƒ | S(   Nt   spawn(   t
   setdefaultt	   get_spawn(   R!   t   kwargs(    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   fill_default_server_argsH   s    (   R   R   R   t   ServerClassR   t   ServerSubClassR   t   restartablet   close_socket_detectedt   staticmethodR$   R%   R,   R0   R5   (    (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR   *   s   t   TestCasec           B  s  e  Z e j Z e Z d Z d  „  Z d „  Z	 d „  Z
 e d d „ Z d e d d „ Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z e d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z e d „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z  RS(   c         C  s5   t  |  d d  ƒ d  k	 r1 |  j j ƒ  d  |  _ n  d  S(   Nt   server(   t   getattrt   NoneR<   t   stop(   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   cleanupS   s    c         C  s7   t  j  ƒ  } | j d ƒ | j d ƒ |  j | ƒ | S(   Ns	   127.0.0.1i    i   (   s	   127.0.0.1i    (   R   t   bindt   listent   _close_on_teardown(   R   t   sock(    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   get_listenerX   s
    c         C  sy   |  j  j } | s t j } n | d k r6 t j } n  y |  j  j j } Wn t k
 re t j } n X| |  j  j	 | f S(   Ns   ::(
   R<   t   server_hostR)   t   DEFAULT_LOCAL_HOST_ADDRt   DEFAULT_LOCAL_HOST_ADDR6R   t   familyt   AttributeErrort   AF_INETt   server_port(   R   RF   RI   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   get_server_host_port_family_   s    i   c   	      C  sÈ   |  j  ƒ  \ } } } t j d | ƒ } y | j | | f ƒ Wn t k
 r^ | j ƒ  ‚  n Xt r| i | d 6d d 6} n i | d 6} | j |   } t rª | | _ n  | j j | ƒ | j ƒ  | S(   NRI   t	   bufferingt   rwbt   modet   bufsize(	   RM   R   t   connectR   R   R   R	   t   _sockt
   settimeout(	   R   R-   RQ   RF   RL   RI   RD   R4   t   rconn(    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR	   n   s     

t   /c         C  s@   |  j  d | d | ƒ } | j d | j d ƒ ƒ | j ƒ  | S(   NR-   RQ   s   GET %s HTTP/1.0

s   latin-1(   R	   t   writet   encodet   flush(   R   t   urlR-   RQ   R"   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR&   ‡   s    
c         C  sa   |  j  t j ƒ  } |  j ƒ  } | j ƒ  Wd  QX| j } |  j | j d t j	 t j
 f ƒ d  S(   Ni    (   R.   R   R'   R	   R   t	   exceptiont   assertInR(   t   errnot   ECONNREFUSEDt   EADDRNOTAVAIL(   R   t   excR"   R+   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   assertConnectionRefused   s
    	c         C  s   |  j  j |  ƒ d  S(   N(   R   R%   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR%   •   s    c         C  s   |  j  j |  ƒ d  S(   N(   R   R,   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR,   ˜   s    c         C  s   |  j  j |  ƒ d  S(   N(   R   R$   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR$   ›   s    c         C  s   |  j  j |  ƒ d  S(   N(   R   R0   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR0   ž   s    c         C  s²   |  j  ƒ  } | j d ƒ | j ƒ  d } y7 x0 t r^ | j j d ƒ } | sQ Pn  | | 7} q/ WWn" t j k
 r„ |  j | ƒ d  SX|  j	 | j
 d ƒ t | ƒ ƒ | j ƒ  d  S(   Ns   GET / HTTP/1.0

t    i   s"   HTTP/1.0 500 Internal Server Error(   R	   RW   RY   R   RS   R   R   R-   R    t
   assertTruet
   startswitht   reprR   (   R   R"   R#   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   assertNotAccepted¡   s    
	c         C  sZ   |  j  d | ƒ } | j d ƒ | j ƒ  } | j ƒ  | j d ƒ sV t t | ƒ ƒ ‚ d  S(   NR-   s   GET /ping HTTP/1.0

s   

PONG(   R	   RW   R   R   t   endswitht   AssertionErrorRe   (   R   R-   R"   R#   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR/   ²   s
    
c         C  s%   |  j  j ƒ  |  j ƒ  |  j ƒ  d  S(   N(   R<   t   startR/   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   start_server¹   s    
c         C  s   |  j  j ƒ  |  j ƒ  d  S(   N(   R<   R?   Ra   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   stop_server¾   s    c         C  s   d  S(   N(    (   R   t   _msg(    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   report_netstatÂ   s    c         C  s   |  j  t j d f ƒ S(   Ni    (   R7   R)   t   DEFAULT_BIND_ADDR(   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   _create_serverÇ   s    c         C  s-   |  j  ƒ  |  _ |  j j ƒ  t j d ƒ d  S(   Ng{®Gáz„?(   Ro   R<   Ri   t   geventt   sleep(   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   init_serverÊ   s    c         C  s
   |  j  j S(   N(   R<   R   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR   Ï   s    c         C  s~   zS |  j  t j d f d „  ƒ |  _ |  j j ƒ  |  j ƒ  |  j ƒ  |  j t ƒ Wd  |  j j	 ƒ  d d  l
 } | j ƒ  Xd  S(   Ni    c           S  s   d  S(   N(   R>   (    (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   <lambda>Õ   Rb   iÿÿÿÿ(   R6   R)   Rn   R<   Ri   t   expect_one_errorR%   t   assert_errort	   TypeErrorR?   t   gct   collect(   R   Rw   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   _test_invalid_callbackÓ   s    !

 c         C  s   |  j  j |  | ƒ S(   N(   R   R5   (   R   R4   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR5   ã   s    c         O  s   |  j  j | |  j | ƒ Ž  S(   N(   R   R6   R5   (   R   R(   R4   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR6   æ   s    c         O  s   |  j  j | |  j | ƒ Ž  S(   N(   R   R7   R5   (   R   R(   R4   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR7   ê   s    c         C  s   d  S(   N(   R>   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR3   î   s    N(!   R   R   R)   t   LARGE_TIMEOUTt   __timeout__R   R>   R<   R@   RE   RM   t   _DEFAULT_SOCKET_TIMEOUTR	   R&   Ra   R%   R,   R$   R0   Rf   R/   Rj   Rk   Rm   Ro   Rr   t   propertyR   Ry   R5   R6   R7   R3   (    (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR;   M   s4   																			t   TestDefaultSpawnc           B  s°   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 e
 j e j ƒ d „  ƒ Z d	 „  Z d
 „  Z d „  Z d „  Z e d „  ƒ Z d „  Z d „  Z RS(   c         C  s   t  j S(   N(   Rp   R1   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR3   ó   s    c         C  sœ   |  j  d ƒ |  j ƒ  |  j  d ƒ | r |  j j r |  j j ƒ  |  j  d ƒ |  j ƒ  |  j j ƒ  |  j  d ƒ |  j ƒ  n  |  j	 ƒ  |  j  d ƒ d  S(   Ns   before starts   after starts   after stop_acceptings   after start_acceptings
   after stop(
   Rm   Rj   R   R8   R<   t   stop_acceptingRf   t   start_acceptingR/   Rk   (   R   R8   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   _test_server_start_stopö   s    


c      
   C  sB   t  |  _ |  j t ƒ $ |  j |  j ƒ  d d d t  ƒWd  QXd  S(   Nt   backlogi   R   (   t   Falset   switch_expectedR.   Rv   R6   RE   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt'   test_backlog_is_not_accepted_for_socket  s    	c         C  s?   |  j  t j d f d d ƒ|  _ |  j ƒ  |  j d t ƒ d  S(   Ni    R‚   i   R8   (   R7   R)   Rn   R<   Ra   R   Rƒ   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt$   test_backlog_is_accepted_for_address	  s    !
c         C  s&   |  j  |  j ƒ  ƒ |  _ |  j ƒ  d  S(   N(   R7   RE   R<   Rf   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   test_subclass_just_create  s    c         C  s6   |  j  |  j ƒ  ƒ |  _ |  j ƒ  |  j d t ƒ d  S(   NR8   (   R7   RE   R<   Rf   R   R   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   test_subclass_with_socket  s    
c         C  s9   |  j  t j d f ƒ |  _ |  j ƒ  |  j d t ƒ d  S(   Ni    R8   (   R7   R)   Rn   R<   Ra   R   R   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   test_subclass_with_address  s    
c         C  s   |  j  ƒ  d  S(   N(   Ry   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   test_invalid_callback  s    c         C  sv   t  j |  j j ƒ } zE t  j d ƒ |  j ƒ  |  j j ƒ  |  j j sO t ‚ |  j	 ƒ  Wd  | j
 ƒ  | j ƒ  Xd  S(   Ng{®Gáz„?(   Rp   R1   R<   t   serve_foreverRq   R/   R?   t   startedRh   Ra   t   killt   get(   R   t   g(    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   _test_serve_forever!  s    

c         C  s=   |  j  d ƒ |  _ |  j j s% t ‚ |  j ƒ  |  j ƒ  d  S(   Ns	   127.0.0.1i    (   s	   127.0.0.1i    (   R7   R<   RŒ   Rh   Ra   R   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   test_serve_forever.  s    
c         C  se   |  j  t j d f ƒ |  _ |  j ƒ  |  j j s8 t ‚ |  j j ƒ  |  j j sW t ‚ |  j ƒ  d  S(   Ni    (	   R7   R)   Rn   R<   Ra   RŒ   Rh   Ri   R   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   test_serve_forever_after_start4  s    
c      	   C  sø   |  j  t j d f d „  ƒ |  _ |  j j ƒ  |  j ƒ  } t j j d ƒ œ z‰ y: | j	 ƒ  } | r‰ | j
 d ƒ s‰ t t | ƒ ƒ ‚ n  WnH t j k
 rÔ } | j d d k rµ qÕ | j d t j k rÎ qÕ ‚  n XWd  | j ƒ  XWd  QX|  j ƒ  d  S(   Ni    c          W  s   g  S(   N(    (   R(   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyRs   =  Rb   i   s"   HTTP/1.0 500 Internal Server ErroriE'  (   R6   R)   Rn   R<   Ri   R&   Rp   t   Timeoutt   _start_new_or_dummyR   Rd   Rh   Re   R   R'   R(   R]   t
   ECONNRESETR   Rk   (   R   R"   R#   R+   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt!   test_server_closes_client_sockets<  s"    ! (c         C  s-   |  j  ƒ  |  _ |  j j ƒ  t j d ƒ d  S(   Ng{®Gáz„?(   Ro   R<   Ri   Rp   Rq   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyRr   R  s    c         C  s
   |  j  j S(   N(   R<   R   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR   W  s    c           sf   |  j  ƒ  |  j |  j j ƒ t d ƒ ‰  ‡  f d †  |  j _ |  j ƒ  |  j ƒ  |  j t ˆ  ƒ d  S(   Nt   test_error_in_spawnc            s   t  j ƒ  j ˆ  ƒ S(   N(   Rp   t
   getcurrentt   throw(   R(   (   R'   (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyRs   _  Rb   (	   Rr   Rc   R<   RŒ   t   ExpectedErrort   _spawnRt   R$   Ru   (   R   (    (   R'   sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR—   [  s    


c         C  s×   |  j  ƒ  |  j ƒ  |  j d t |  j ƒ ƒ |  j j |  j j ƒ |  j d t |  j ƒ ƒ |  j d t |  j ƒ ƒ |  j j |  j ƒ |  j d t |  j ƒ ƒ d „  } |  j j | ƒ |  j d t |  j ƒ ƒ d  S(   Nt   Servers   handle=<bound methods   of self>t.   test_server_repr_when_handle_is_instancemethodc           S  s   d  S(   N(    (    (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR   q  s    s   handle=<function(   Rr   Rj   R\   Re   R<   t
   set_handleR   R   (   R   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR   d  s    

	(   R   R   R3   R   R…   R†   R‡   Rˆ   R‰   RŠ   R)   t   reraises_flaky_timeoutR   R-   R   R‘   R’   R–   Rr   R}   R—   R   (    (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR~   ñ   s    														t   TestRawSpawnc           B  s   e  Z d  „  Z RS(   c         C  s   t  j S(   N(   Rp   t	   spawn_raw(   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR3   y  s    (   R   R   R3   (    (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR    w  s   t   TestPoolSpawnc           B  s8   e  Z d  „  Z e j e j d ƒ d „  ƒ Z e e _ RS(   c         C  s   d S(   Ni   (    (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR3     s    s™   If we have bad timer resolution and hence increase timeouts, it can be hard to sleep for a correct amount of time that lets requests in the pool be full.c         C  sÍ   |  j  ƒ  |  j d ƒ } |  j d ƒ } t j ƒ  j j ƒ  t j t d ƒ |  j ƒ  |  j ƒ  |  j ƒ  | j	 j
 ƒ  t rŠ | j
 ƒ  n  t j t ƒ y |  j ƒ  Wn t j k
 rÅ t j ƒ  n X~ d  S(   Ns   /shorts   /longg      $@(   Rr   R&   Rp   t   get_hubt   loopt
   update_nowRq   R|   R0   RS   R   R   R/   R   R-   R)   t   reraiseFlakyTestTimeout(   R   t   short_requestt   long_request(    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   test_pool_full‚  s"    



(	   R   R   R3   R)   t   skipIft   EXPECT_POOR_TIMER_RESOLUTIONR©   Rƒ   t   error_fatal(    (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR¢   }  s   	!t   TestNoneSpawnc           B  s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C  s   d  S(   N(   R>   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR3   ©  s    c         C  s   |  j  ƒ  d  S(   N(   Ry   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyRŠ   ¬  s    c         C  se   d „  } |  j  j t j d f | d d  ƒ|  _ |  j j ƒ  |  j ƒ  |  j ƒ  |  j	 t
 d ƒ d  S(   Nc          W  s   t  j d ƒ d  S(   Ni    (   Rp   Rq   (   t   _args(    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyRq   °  s    i    R1   s?   Impossible to call blocking function in the event loop callback(   R   R6   R)   Rn   R>   R<   Ri   Rt   R%   Ru   Rh   (   R   Rq   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   test_assertion_in_blocking_func¯  s    	'

(   R   R   R3   RŠ   R¯   (    (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR­   §  s   		Rš   c           B  s   e  Z RS(    (   R   R   (    (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyRš   ¹  s   t   TestSSLSocketNotAllowedc           B  s;   e  Z e Z d  „  Z e j e e d ƒ d ƒ d „  ƒ Z	 RS(   c         C  s   t  j S(   N(   Rp   R1   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR3   Â  s    t   ssls   Uses socket.sslc         C  si   d d l  m } d d l  m } | ƒ  } | j d ƒ | j d ƒ | | ƒ } |  j t |  j | ƒ d  S(   Niÿÿÿÿ(   R±   (   R   s   0.0.0.0i    i   (   s   0.0.0.0i    (   t   gevent.socketR±   R   RA   RB   R.   Rv   R7   (   R   R±   t   gsockett   listener(    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   testÅ  s    	(
   R   R   Rƒ   R„   R3   t   unittestt
   skipUnlesst   hasattrR   Rµ   (    (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR°   ¾  s   	c         C  s   t  j j t  j j | |  ƒ ƒ S(   N(   t   osR   t   abspatht   join(   t   namet   here(    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   _fileÏ  s    t   BadWrapExceptionc           B  s   e  Z RS(    (   R   R   (    (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR¿   Ó  s   t   TestSSLGetCertificatec           B  s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C  s.   |  j  t j d f d t d ƒ d t d ƒ ƒS(   Ni    t   keyfiles
   server.keyt   certfiles
   server.crt(   R7   R)   Rn   R¾   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyRo   Ù  s    c         C  s   t  j S(   N(   Rp   R1   (   R   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyR3   Þ  s    c         C  sx   d d l  m } m } |  j | j d ƒ ƒ |  j | j d ƒ ƒ |  j ƒ  |  j ƒ  \ } } } | j | | f ƒ d  S(   Niÿÿÿÿ(   t   monkeyR±   R±   R   (   Rp   RÃ   R±   R    t   is_module_patchedRr   RM   t   get_server_certificate(   R   RÃ   R±   RF   RL   t   _family(    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   test_certificateá  s    
c         C  sL   |  j  ƒ  d „  } | |  j _ |  j t ƒ  |  j j d  d  ƒ Wd  QXd  S(   Nc         [  s   t  ƒ  ‚ d  S(   N(   R¿   (   t   _client_sockett
   _wrap_args(    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   bad_wrapõ  s    (   Rr   R<   t   wrap_socketR.   R¿   t   _handleR>   (   R   RÊ   (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt(   test_wrap_socket_and_handle_wrap_failureî  s
    
	(   R   R   Ro   R3   RÇ   RÍ   (    (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyRÀ   ×  s   			t   __main__($   t
   __future__R    R   R¶   R]   R¹   t   gevent.testingt   testingR)   R   R   R|   Rp   R   t   gevent.serverR   R   t   objectR   R;   R~   R    R¢   R­   R   Rš   R°   R   t   dirnamet   __file__R¾   t   BaseExceptionR¿   RÀ   R   t   main(    (    (    sR   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__server.pyt   <module>   s.   #¤†*+