ó
ÐH/\c           @  sÐ  d  d l  m Z d  d l Z 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 j Z e j j e j j e ƒ ƒ Z e j j e d ƒ Z e j ƒ  Z e j Z e j Z e Z e Z e Z e re Z n  e e f Z e j Z d  d l m Z y d  d l  Z  Wn e! k
 rOd Z  n Xd e j# f d „  ƒ  YZ$ e j% d ƒ d	 e$ f d
 „  ƒ  Yƒ Z& e j% d ƒ d e$ f d „  ƒ  Yƒ Z' e( d k rÌe	 j) ƒ  n  d S(   iÿÿÿÿ(   t   print_functionN(   t   monkeys   2_7_keycert.pem(   t   get_open_filest   Testc           B  sw   e  Z d
 Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 e ru e ru d „  Z d	 „  Z n  RS(   c         C  s    d |  _  t t |  ƒ j ƒ  d  S(   N(    (   t   extra_allowed_open_statest   superR   t   tearDown(   t   self(    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyR   (   s    	c         C  s€   y | ƒ  } WnV t  j t f k
 re } | j d t j k rB d  St r_ | j d d k r_ d  S‚  n Xt d | | f ƒ ‚ d  S(   Ni    i6'  s"   NOT RAISED EBADF: %r() returned %r(   t   sockett   errort   OSErrort   argst   errnot   EBADFt   WINt   AssertionError(   R   t   funct   resultt   ex(    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyt   assert_raises_EBADF,   s    c         C  sK   t  | t ƒ s t ‚ t ƒ  } | | k rG t d | | d f ƒ ‚ n  d  S(   Ns   %r is not open:
%st   data(   t
   isinstancet   fd_typesR   R   (   R   t   filenot
   open_files(    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyt   assert_fd_open8   s    	c         C  so   t  | t ƒ s! t t | ƒ ƒ ‚ | d k s9 t | ƒ ‚ t ƒ  } | | k rk t d | | d f ƒ ‚ n  d  S(   Ni    s   %r is not closed:
%sR   (   R   R   R   t   reprR   (   R   R   R   (    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyt   assert_fd_closed>   s
    !	c         C  s•   t  ƒ  } | j ƒ  } x_ | d D]S } t | d d  ƒ | k r  | j t j t j f |  j k so t	 | j ƒ ‚ d  Sq  Wt	 d | | d f ƒ ‚ d  S(   NR   t   laddrs   %r is not open:
%s(
   R   t   getsocknamet   getattrt   Nonet   statust   psutilt   CONN_LISTENt   CONN_ESTABLISHEDR   R   (   R   t   sockR   t   socknamet   x(    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyt   _assert_sock_openE   s    	1c         G  s¾   t  | t ƒ r( t s™ |  j | ƒ q™ nq | j ƒ  } t  | t ƒ sO t | ƒ ‚ | j ƒ  } t  | t ƒ sv t | ƒ ‚ t sŒ |  j | ƒ n |  j | ƒ | rº |  j	 | d | d Œ n  d  S(   Ni    i   (
   R   R   R   R   R   R   R   t   tupleR'   t   assert_open(   R   R$   t   restR   R%   (    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyR)   O   s    c         G  s“   t  | t ƒ r |  j | ƒ nO t r> |  j | j ƒ  d ƒ n |  j | j ƒ |  j | j ƒ |  j | j ƒ | r |  j	 | d | d Œ n  d  S(   Niÿÿÿÿi    i   (
   R   R   R   t   PY3t   assertEqualR   R   R   t   acceptt   assert_closed(   R   R$   R*   (    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyR.   _   s    c         C  s_   t  j  ƒ  } | j d ƒ |  j | ƒ t s5 t j rE | j d ƒ n  |  j | | j ƒ  ƒ | S(   Ns	   127.0.0.1i    i   (   s	   127.0.0.1i    (	   R   t   bindt   _close_on_teardownR   t	   greentestt   LINUXt   listenR)   R   (   R   t   s(    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyt   make_open_socketn   s    c         C  s   |  j  j t j | ƒ ƒ | S(   N(   t   close_on_teardownt   appendt   weakreft   ref(   R   t   resource(    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyR0      s    c         C  sH   g  |  j  D] } | ƒ  d  k	 r
 | ƒ  ^ q
 |  _  t t |  ƒ j ƒ  d  S(   N(   R6   R   R   R   t   _tearDownCloseOnTearDown(   R   t   r(    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyR;   …   s    1(    (   t   __name__t
   __module__R   R   R   R   R   R'   R)   R.   R5   t   CPYTHONt   PY2R0   R;   (    (    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyR   $   s   					
				s0   This sometimes times out for no apparent reason.t
   TestSocketc           B  s>   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C  s6   |  j  ƒ  } | j ƒ  } | j ƒ  |  j | | ƒ d  S(   N(   R5   R   t   closeR.   (   R   R4   R   (    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyt   test_simple_close   s    
c         C  s™   |  j  ƒ  } | j ƒ  } | j ƒ  } |  j | | ƒ | j ƒ  t rW |  j | | ƒ n |  j | ƒ |  j | ƒ | j ƒ  |  j | ƒ |  j | ƒ d  S(   N(   R5   R   t   makefileR)   RB   R+   R.   (   R   R4   R   t   f(    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyt   test_makefile1“   s    

c         C  s‰   |  j  ƒ  } | j ƒ  } |  j | | ƒ | j ƒ  } |  j | ƒ |  j | | ƒ | j ƒ  |  j | | ƒ | j ƒ  |  j | | ƒ d  S(   N(   R5   R   R)   RD   RB   R.   (   R   R4   R   RE   (    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyt   test_makefile2¤   s    

c           sì   t  j  ƒ  } | j d ƒ | j ƒ  d ‰ | j d ƒ t  j  ƒ  ‰  |  j ˆ  ƒ ‡  ‡ f d †  } t j d | ƒ } | j ƒ  zI | j ƒ  \ } } | j	 ƒ  } |  j
 | | ƒ | j ƒ  |  j | ƒ Wd  | j ƒ  | j ƒ  ˆ  j ƒ  Xd  S(   Ns	   127.0.0.1i    i   c             s   ˆ  j  d ˆ f ƒ d  S(   Ns	   127.0.0.1(   t   connect(    (   t	   connectort   port(    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyRH   º   s    t   target(   s	   127.0.0.1i    (   R   R/   R   R3   R0   t	   threadingt   Threadt   startR-   R   R)   RB   R.   t   join(   R   t   listenerRH   t   tt   client_sockett   _addrR   (    (   RI   RJ   s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyt   test_server_simple±   s$    



c           s8  t  j  ƒ  } | j d ƒ | j ƒ  d ‰ | j d ƒ t  j  ƒ  ‰  |  j ˆ  ƒ ‡  ‡ f d †  } t j d | ƒ } | j ƒ  z• | j ƒ  \ } } | j	 ƒ  } | j
 ƒ  } |  j | | ƒ | j ƒ  t rÝ |  j | | ƒ n |  j | ƒ |  j | ƒ | j ƒ  |  j | | ƒ Wd  | j ƒ  | j ƒ  ˆ  j ƒ  Xd  S(   Ns	   127.0.0.1i    i   c             s   ˆ  j  d ˆ f ƒ d  S(   Ns	   127.0.0.1(   RH   (    (   RI   RJ   (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyRH   Ô   s    RK   (   s	   127.0.0.1i    (   R   R/   R   R3   R0   RL   RM   RN   R-   R   RD   R)   RB   R+   R.   RO   (   R   RP   RH   RQ   RR   RS   R   RE   (    (   RI   RJ   s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyt   test_server_makefile1Ë   s0    




c           s  t  j  ƒ  } | j d ƒ | j ƒ  d ‰ | j d ƒ t  j  ƒ  ‰  |  j ˆ  ƒ ‡  ‡ f d †  } t j d | ƒ } | j ƒ  zr | j ƒ  \ } } | j	 ƒ  } | j
 ƒ  } |  j | | ƒ | j ƒ  |  j | | ƒ | j ƒ  |  j | | ƒ Wd  | j ƒ  | j ƒ  ˆ  j ƒ  Xd  S(   Ns	   127.0.0.1i    i   c             s   ˆ  j  d ˆ f ƒ d  S(   Ns	   127.0.0.1(   RH   (    (   RI   RJ   (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyRH   ÷   s    RK   (   s	   127.0.0.1i    (   R   R/   R   R3   R0   RL   RM   RN   R-   R   RD   R)   RB   R.   RO   (   R   RP   RH   RQ   RR   RS   R   RE   (    (   RI   RJ   s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyt   test_server_makefile2î   s*    




(   R=   R>   RC   RF   RG   RT   RU   RV   (    (    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyRA   Š   s   					#t   TestSSLc           B  s’   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 j o~ e j o~ e j d
 ƒ d „  ƒ Z RS(   c         C  sK   | j  d | f ƒ y t j | ƒ } Wn t j k
 r< n X| j ƒ  d  S(   Ns	   127.0.0.1(   RH   t   sslt   wrap_socketR   R	   RB   (   R   RI   RJ   R&   (    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyt   _ssl_connect_task  s    c         C  s.   t  j d |  j d | | f ƒ } t | _ | S(   NRK   R   (   RL   RM   RZ   t   Truet   daemon(   R   RI   RJ   RQ   (    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyt   _make_ssl_connect_task   s    !	c         G  s/   | j  ƒ  x | D] } | j ƒ  q W~ ~ d  S(   N(   RO   RB   (   R   t   taskt   socketsR4   (    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyt	   __cleanup%  s
    
c         C  sn   |  j  ƒ  } | j ƒ  } t j | ƒ } |  j | ƒ | j ƒ  } |  j | | ƒ | j ƒ  |  j | | ƒ d  S(   N(   R5   R   RX   RY   R0   R)   RB   R.   (   R   R4   R   (    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyRC   =  s    
c         C  s¢   |  j  ƒ  } t j | ƒ } |  j | ƒ | j ƒ  } |  j | | ƒ | j ƒ  } |  j | | ƒ | j ƒ  |  j | | ƒ | j ƒ  | j ƒ  |  j | | ƒ d  S(   N(	   R5   RX   RY   R0   R   R)   RD   RB   R.   (   R   t   raw_sR4   R   RE   (    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyRF   G  s    


c         C  s¤   |  j  ƒ  } | j ƒ  } t j | ƒ } |  j | ƒ | j ƒ  } |  j | | ƒ | j ƒ  } |  j | | ƒ | j ƒ  |  j | | ƒ | j ƒ  |  j | | ƒ d  S(   N(	   R5   R   RX   RY   R0   R)   RD   RB   R.   (   R   R4   R   RE   (    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyRG   W  s    

c         C  s  t  j  ƒ  } | j d ƒ | j ƒ  d } | j d ƒ t  j  ƒ  } |  j | ƒ |  j | | ƒ } | j ƒ  zŠ | j ƒ  \ } } |  j | j ƒ t	 j
 | d t d t d t ƒ} |  j | ƒ | j ƒ  } |  j | | ƒ | j ƒ  |  j | | ƒ Wd  |  j | | | ƒ Xd  S(   Ns	   127.0.0.1i    i   t   keyfilet   certfilet   server_side(   s	   127.0.0.1i    (   R   R/   R   R3   R0   R]   RN   R-   RB   RX   RY   Rc   R[   R   R)   R.   t   _TestSSL__cleanup(   R   RP   RJ   RI   RQ   RR   RS   R   (    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyRT   g  s$    
!
c   	      C  sS  t  j  ƒ  } |  j | ƒ | j d ƒ | j ƒ  d } | j d ƒ t  j  ƒ  } |  j | ƒ |  j | | ƒ } | j ƒ  zÀ | j ƒ  \ } } |  j | j ƒ t	 j
 | d t d t d t ƒ} |  j | ƒ | j ƒ  } |  j | | ƒ | j ƒ  } |  j | | ƒ | j ƒ  |  j | | ƒ | j ƒ  |  j | | ƒ Wd  |  j | | | ƒ Xd  S(   Ns	   127.0.0.1i    i   Rb   Rc   Rd   (   s	   127.0.0.1i    (   R   R0   R/   R   R3   R]   RN   R-   RB   RX   RY   Rc   R[   R   R)   RD   R.   Re   (	   R   RP   RJ   RI   RQ   RR   RS   R   RE   (    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyRU     s.    
!

c   	      C  sF  t  j  ƒ  } | j d ƒ | j ƒ  d } | j d ƒ t  j  ƒ  } |  j | ƒ |  j | | ƒ } | j ƒ  z½ | j ƒ  \ } } |  j | ƒ t j	 | d t
 d t
 d t ƒ} |  j | ƒ | j ƒ  } |  j | | ƒ | j ƒ  } |  j | | ƒ | j ƒ  |  j | | ƒ | j ƒ  |  j | | ƒ Wd  |  j | | | | ƒ Xd  S(   Ns	   127.0.0.1i    i   Rb   Rc   Rd   (   s	   127.0.0.1i    (   R   R/   R   R3   R0   R]   RN   R-   RX   RY   Rc   R[   R   R)   RD   RB   R.   Re   (	   R   RP   RJ   RI   RQ   RR   RS   R   RE   (    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyRV   ž  s,    
!

c   	      C  s<  t  j  ƒ  } | j ƒ  } | j d ƒ | j ƒ  d } | j d ƒ |  j | ƒ t j | d t d t ƒ} t  j  ƒ  } |  j | ƒ |  j	 | | ƒ } | j
 ƒ  z‚ | j ƒ  \ } } | j ƒ  } |  j | | ƒ | j ƒ  } |  j | | ƒ | j ƒ  |  j | | ƒ | j ƒ  |  j | | ƒ Wd  |  j | | | ƒ Xd  S(   Ns	   127.0.0.1i    i   Rb   Rc   (   s	   127.0.0.1i    (   R   R   R/   R   R3   R0   RX   RY   Rc   R]   RN   R-   R)   RD   RB   R.   Re   (	   R   RP   R   RJ   RI   RQ   RR   RS   RE   (    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyt   test_serverssl_makefile1»  s,    


sŽ   Often segfaults, cannot reproduce locally. Not too worried about this before Python 3.7rc1. https://travis-ci.org/gevent/gevent/jobs/327357684c           s…  t  j  ƒ  } |  j | ƒ | j d
 ƒ | j ƒ  d ‰ | j d ƒ t j | d t d t ƒ} t  j  ƒ  ‰  ‡  ‡ f d †  } t j	 d | ƒ } t
 | _ | j ƒ  zÌ | j ƒ  \ } } | j ƒ  } |  j | | ƒ | j ƒ  } |  j | | ƒ |  j | j ƒ  d ƒ |  j | j ƒ  d	 ƒ | j ƒ  t rBt rBt j f |  _ n  |  j | | ƒ | j ƒ  |  j | | ƒ Wd  |  j | | ƒ Xd  S(   Ns	   127.0.0.1i    i   Rb   Rc   c            sG   ˆ  j  d ˆ f ƒ t j ˆ  ƒ }  |  j d ƒ |  j ƒ  ˆ  j ƒ  d  S(   Ns	   127.0.0.1t   test_serverssl_makefile2(   RH   RX   RY   t   sendallRB   (   R4   (   RI   RJ   (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyRH   å  s
    
RK   Rg   t    (   s	   127.0.0.1i    (   R   R0   R/   R   R3   RX   RY   Rc   RL   RM   R[   R\   RN   R-   R   R)   RD   R,   t   readRB   R   R!   t   CONN_CLOSE_WAITR   R.   Re   (   R   RP   RH   RQ   RR   RS   R   RE   (    (   RI   RJ   s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyRg   ×  s4    	


(   R=   R>   RZ   R]   Re   RC   RF   RG   RT   RU   RV   Rf   R1   t   skipIft   RUNNING_ON_TRAVISt   PY37t   LIBUVRg   (    (    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyRW     s   				
						t   __main__(*   t
   __future__R    t   ost   geventR   t	   patch_allR   RX   RL   t   unittestR   R8   t   gevent.testingt   testingR1   t   patht   dirnamet   abspatht   __file__RO   Rc   t   getpidt   pidR+   t   PYPYR?   R@   t   intR   t   longR   R   R!   t   ImportErrorR   t   TestCaseR   t   skipOnAppVeyorRA   RW   R=   t   main(    (    (    s>   lib/python2.7/site-packages/gevent/tests/test__makefile_ref.pyt   <module>   sD    
				
f‚õ