ó
úR‹_c           @  s“   d  d l  m Z d  d l j Z d  d l Z d  d l m Z d  d l m Z d „  Z d „  Z	 d e j
 f d „  ƒ  YZ e d	 k r e j ƒ  n  d S(
   iÿÿÿÿ(   t   print_functionN(   t   socket(   t   backdoorc         C  s‰   d } t  | t ƒ s t ‚ xK | j | ƒ sh |  j d ƒ } | s[ t d | | f ƒ ‚ n  | | 7} q Wt  | t ƒ r| | S| j d ƒ S(   Nt    i   s)   Connection ended before %r. Data read:
%rs   utf-8(   t
   isinstancet   bytest   AssertionErrort   endswitht   recvt   strt   decode(   t   connt   postfixt   readt   result(    (    sT   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__backdoor.pyt
   read_until   s    c         C  s#   |  j  ƒ   } | j ƒ  SWd  QXd  S(   N(   t   makefilet   readline(   R   t   f(    (    sT   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__backdoor.pyR      s    t   Testc           B  s¼   e  Z d  Z d Z d „  Z d „  Z d „  Z d d „ Z e	 j
 d ƒ d „  ƒ Z e	 j d ƒ d	 „  ƒ Z e	 j d ƒ d
 „  ƒ Z e	 j d ƒ d „  ƒ Z e	 j d ƒ d „  ƒ Z d „  Z RS(   i
   c         C  s_   |  j  d  k	 r5 |  j  j ƒ  |  j j |  j  j ƒ n  d  |  _  t j ƒ  t t |  ƒ j	 ƒ  d  S(   N(
   t   _servert   Nonet   stopt   close_on_teardownt   removet   geventt   sleept   superR   t   tearDown(   t   self(    (    sT   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__backdoor.pyR      s    	
c         O  sQ   |  j  d  k s t ‚ t j d | | Ž |  _  |  j |  j  j ƒ |  j  j ƒ  d  S(   Ns	   127.0.0.1i    (   s	   127.0.0.1i    (   R   R   R   R   t   BackdoorServert   _close_on_teardownR   t   start(   R   t   argst   kwargs(    (    sT   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__backdoor.pyt   _make_server%   s    c         C  s6   t  j  ƒ  } |  j | ƒ | j d |  j j f ƒ | S(   Ns	   127.0.0.1(   R   R   t   connectR   t   server_port(   R   R   (    (    sT   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__backdoor.pyt   _create_connection+   s    s	   quit()
)c         C  sG   | j  | ƒ t | ƒ } |  j | d ƒ | j ƒ  |  j j | ƒ d  S(   NR   (   t   sendallR   t   assertEqualt   closeR   R   (   R   R   t   cmdt   line(    (    sT   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__backdoor.pyt   _close1   s
    
s9   segfaults; See https://github.com/gevent/gevent/pull/1156c           sy   ˆ  j  ƒ  ‡  f d †  } g  t d ƒ D] } t j | ƒ ^ q& } t j | d t ƒ} ˆ  j t | ƒ t | ƒ | ƒ d  S(   Nc            sb   ˆ  j  ƒ  }  t |  d ƒ |  j d ƒ t |  ƒ } ˆ  j | j ƒ  d t | ƒ ƒ ˆ  j |  ƒ d  S(   Ns   >>> s   2+2
t   4(   R&   R   R'   R   R(   t   stript   reprR,   (   R   R+   (   R   (    sT   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__backdoor.pyR$   >   s    i
   t   raise_error(   R#   t   rangeR   t   spawnt   joinallt   TrueR(   t   len(   R   R$   t   _t   jobst   done(    (   R   sT   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__backdoor.pyt
   test_multi8   s
    
(s	   Times outc         C  s4   |  j  ƒ  |  j ƒ  } t | d ƒ |  j | ƒ d  S(   Ns   >>> (   R#   R&   R   R,   (   R   R   (    (    sT   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__backdoor.pyt	   test_quitK   s    
c         C  s7   |  j  ƒ  |  j ƒ  } t | d ƒ |  j | d ƒ d  S(   Ns   >>> s   import sys; sys.exit(0)
(   R#   R&   R   R,   (   R   R   (    (    sT   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__backdoor.pyt   test_sys_exitR   s    
c         C  s_   d } |  j  d | ƒ |  j ƒ  } t | d ƒ } |  j | t | ƒ  | | ƒ |  j | ƒ d  S(   Ns   Welcome stranger!t   banners   >>> (   R#   R&   R   R(   R5   R,   (   R   R<   R   t   response(    (    sT   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__backdoor.pyt   test_bannerY   s    c         C  ss   |  j  ƒ  |  j ƒ  } t | d ƒ | j d ƒ t | d ƒ } |  j t | ƒ d k  d d | ƒ|  j | ƒ d  S(   Ns   >>> s   locals()["__builtins__"]
i,  t   msgs   locals() unusable: %s...(   R#   R&   R   R'   t
   assertTrueR5   R,   (   R   R   R=   (    (    sT   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__backdoor.pyt   test_builtinsc   s    
#c           s§   d d l  m ‰ m ‰  ‡  ‡ f d †  } |  j d i | d 6ƒ |  j ƒ  } t | d ƒ | j d ƒ t | d ƒ } | j d d	 ƒ } |  j d
 | ƒ |  j	 | ƒ d  S(   Niÿÿÿÿ(   t   Queuet   Emptyc            sp   ˆ ƒ  }  t  d ƒ y |  j d t d d ƒ Wn ˆ  k
 rJ t  d ƒ n Xt  d ƒ t j d ƒ t  d ƒ d  S(   Ns   switching out, then throwing int   blockt   timeoutgš™™™™™¹?s	   Got Emptys   switching outs   switched in(   t   printt   getR4   R   R   (   t   q(   RC   RB   (    sT   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__backdoor.pyt   badq   s    	

t   localsRI   s   >>> s   bad()
s   
s   
sH   switching out, then throwing in
Got Empty
switching out
switched in
>>> (
   t   gevent.queueRB   RC   R#   R&   R   R'   t   replaceR(   R,   (   R   RI   R   R=   (    (   RC   RB   sT   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__backdoor.pyt   test_switch_excn   s    N(   t   __name__t
   __module__t   __timeout__R   R   R   R#   R&   R,   t	   greentestt   skipOnLibuvOnTravisOnCPython27R9   t   skipOnAppVeyorR:   R;   R>   RA   RM   (    (    (    sT   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__backdoor.pyR      s   			
t   __main__(   t
   __future__R    t   gevent.testingt   testingRQ   R   R   R   R   R   t   TestCaseR   RN   t   main(    (    (    sT   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__backdoor.pyt   <module>   s   		o