ó
¨œž[c           @` sD  d  d l  m Z m Z m Z d  d l m Z d  d l m Z d  d l m 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 d  d l m Z m Z d  d	 l m Z d  d
 l m Z d  d l m Z d  d l m Z m Z m  Z  m! Z! m" Z" m# Z# d  d l$ m% Z% m& Z& m' Z' m( Z( m) Z) d  d l* m+ Z+ m, Z, d  d l- Z- d  d l. Z. d  d l/ Z/ d  d l0 Z0 d  d l1 Z1 d  d l2 Z2 d  d l3 Z3 d  d l4 Z4 y d  d l% m5 Z5 Wn; e6 k
 rýy d  d l5 Z5 Wn e6 k
 rùe7 Z5 n Xn Xd „  Z8 d e+ f d „  ƒ  YZ9 d e: f d „  ƒ  YZ; d e: f d „  ƒ  YZ< d e< f d „  ƒ  YZ= d e; e f d „  ƒ  YZ> d e; e f d „  ƒ  YZ? d e= e  f d „  ƒ  YZ@ d  e= e  f d! „  ƒ  YZA d" e= e  f d# „  ƒ  YZB d$ e  f d% „  ƒ  YZC d& e  f d' „  ƒ  YZD e& d( e< e  f d) „  ƒ  Yƒ ZE d* e% jF f d+ „  ƒ  YZG d S(,   i    (   t   absolute_importt   divisiont   print_function(   t   Future(   t   gen(   t   netutil(   t   IOStreamt   SSLIOStreamt   PipeIOStreamt   StreamClosedErrort   _StreamBuffer(   t   HTTPHeaders(   t	   Conditiont   Event(   t   gen_logt   app_log(   t   ssl_wrap_socket(   t   NullContext(   t	   TCPServer(   t   AsyncHTTPTestCaset   AsyncHTTPSTestCaset   AsyncTestCaset   bind_unused_portt	   ExpectLogt   gen_test(   t   unittestt   skipIfNonUnixt   refusing_portt   skipPypy3V58t   ignore_deprecation(   t   RequestHandlert   ApplicationN(   t   mockc           C` sI   t  d t j j t j j t ƒ d ƒ d t j j t j j t ƒ d ƒ ƒ S(   Nt   certfiles   test.crtt   keyfiles   test.key(   t   dictt   ost   patht   joint   dirnamet   __file__(    (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   _server_ssl_options"   s    !t   HelloHandlerc           B` s   e  Z d  „  Z RS(   c         C` s   |  j  d ƒ d  S(   Nt   Hello(   t   write(   t   self(    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   get*   s    (   t   __name__t
   __module__R.   (    (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyR*   )   s   t   TestIOStreamWebMixinc           B` s}   e  Z d  „  Z d „  Z d „  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z	 e d „  ƒ Z
 e d „  ƒ Z RS(	   c         C` s   t  ƒ  ‚ d  S(   N(   t   NotImplementedError(   R-   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   _make_client_iostream/   s    c         C` s   t  d t f g ƒ S(   Nt   /(   R   R*   (   R-   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   get_app2   s    c         C` s*   |  j  d d i d d 6ƒ} | j ƒ  d  S(   NR4   t   headerst   closet
   Connection(   t   fetcht   rethrow(   R-   t   response(    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_connection_closed5   s    c         c` sp   |  j  ƒ  } | j d |  j ƒ  f ƒ V| j d ƒ | j ƒ  V} |  j | j d ƒ ƒ |  j | j d ƒ ƒ d  S(   Ns	   127.0.0.1s   GET / HTTP/1.0

s   HTTP/1.1 200R+   (   R3   t   connectt   get_http_portR,   t   read_until_closet
   assertTruet
   startswitht   endswith(   R-   t   streamt   data(    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_read_until_close?   s    c         c` s¶   |  j  ƒ  |  _ |  j j d |  j ƒ  f ƒ V|  j j d ƒ |  j j d ƒ V} |  j | d ƒ |  j j d ƒ V} |  j | d ƒ |  j j d ƒ V} |  j | d ƒ |  j j ƒ  d  S(	   Ns	   127.0.0.1s   GET / HTTP/1.0

i	   s	   HTTP/1.1 i    t    i   t   200(   R3   RC   R=   R>   R,   t
   read_bytest   assertEqualR7   (   R-   RD   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_read_zero_bytesI   s    c         c` sÖ   |  j  ƒ  } | j d |  j ƒ  f ƒ } | j d ƒ } |  j | j ƒ  ƒ t j | | ƒ } g  } x+ | j ƒ  sŽ | j ƒ  V| j	 | j
 ƒ qd W|  j | | | g ƒ | j ƒ  V} |  j | j d ƒ ƒ | j ƒ  d  S(   Ns	   127.0.0.1s%   GET / HTTP/1.0
Connection: close

R+   (   R3   R=   R>   R,   t   assertFalset   doneR   t   WaitIteratort   nextt   appendt   current_futureRI   R?   R@   RB   R7   (   R-   RC   t   connect_futt	   write_futt   itt   resolved_orderRD   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_write_while_connecting]   s    c         c` sÒ   |  j  ƒ  } | j d |  j ƒ  f ƒ V} |  j | | ƒ | j d ƒ V| j d ƒ V} |  j | d ƒ | j d d d
 ƒV} t j	 | j
 d ƒ ƒ } t | d ƒ } | j | ƒ V} |  j | d	 ƒ | j ƒ  d
 S(   s3   Basic test of IOStream's ability to return Futures.s	   127.0.0.1s   GET / HTTP/1.0

s   
s   HTTP/1.1 200 OK
s   

t   callbackt   latin1s   Content-LengthR+   N(   R3   R=   R>   t   assertIsR,   t
   read_untilRI   t   NoneR   t   parset   decodet   intRH   R7   (   R-   RC   t   connect_resultt
   first_linet   header_dataR6   t   content_lengtht   body(    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_future_interfaces   s    c         c` sf   |  j  ƒ  } | j d |  j ƒ  f ƒ V| j d ƒ V|  j t ƒ  | j d ƒ VWd  QX| j ƒ  d  S(   Ns	   127.0.0.1s   GET / HTTP/1.0

i   i   (   R3   R=   R>   R,   t   assertRaisesR	   RH   R7   (   R-   RC   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_future_close_while_reading…   s    c         c` s†   |  j  ƒ  } | j d |  j ƒ  f ƒ V| j d ƒ V| j d ƒ V| j ƒ  V} |  j | d ƒ |  j t ƒ  | j	 d ƒ Wd  QXd  S(   Ns	   127.0.0.1s%   GET / HTTP/1.0
Connection: close

s   

R+   i   (
   R3   R=   R>   R,   RY   R?   RI   Rd   R	   RH   (   R-   RC   Rb   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_future_read_until_closeŽ   s    (   R/   R0   R3   R5   R<   R   RE   RJ   RU   Rc   Re   Rf   (    (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyR1   .   s   			

	t   TestReadWriteMixinc           B` sÓ  e  Z d  „  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z	 e d „  ƒ Z
 e d „  ƒ Z e d	 „  ƒ Z e d
 „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z  e d „  ƒ Z! RS(   c         K` s
   t  ‚ d  S(   N(   R2   (   R-   t   kwargs(    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   make_iostream_pair¢   s    c         c` s9   |  j  ƒ  V\ } } | j d ƒ V| j ƒ  | j ƒ  d  S(   NRF   (   Ri   R,   R7   (   R-   t   rst   ws(    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_write_zero_bytes¥   s    
c         #` sõ   |  j  ƒ  V\ } } zÆ g  ‰  t ƒ  ‰ ‡  ‡ f d †  } t ƒ   | j d d | ƒ} Wd  QX| j d ƒ x ˆ  s€ ˆ j ƒ  Vql W| j d ƒ | V} |  j | ƒ |  j ˆ  d d g ƒ | j d ƒ V} |  j | d ƒ Wd  | j ƒ  | j ƒ  Xd  S(	   Nc         ` s   ˆ  j  |  ƒ ˆ j ƒ  d  S(   N(   RO   t   notify(   RD   (   t   chunkst   cond(    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   streaming_callbackµ   s    i   Rp   t   1234t   5678t   56i   t   78(	   Ri   R   R   RH   R,   t   waitRK   RI   R7   (   R-   Rj   Rk   Rp   t   futt
   final_dataRD   (    (   Rn   Ro   s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_streaming_callback®   s$    	
	
c      
   #` s  ˆ j  ƒ  V\ } } zé g  ‰  g  ‰ t ƒ  ‰ ‡  ‡ f d †  } ‡ ‡ ‡ f d †  } t ƒ   | j d d | d | ƒWd  QX| j d ƒ x ˆ  sŸ ˆ j ƒ  Vq‹ W| j d ƒ x ˆ sÄ ˆ j ƒ  Vq° Wˆ j ˆ  d d g ƒ | j d	 ƒ V} ˆ j | d
 ƒ Wd  | j ƒ  | j ƒ  Xd  S(   Nc         ` s   ˆ  j  |  ƒ ˆ j ƒ  d  S(   N(   RO   Rm   (   RD   (   Rn   Ro   (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyRp   Ò   s    c         ` s(   ˆ j  |  ƒ ˆ j t ƒ ˆ  j ƒ  d  S(   N(   RK   RO   t   TrueRm   (   RD   (   Ro   t   final_calledR-   (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   final_callbackÖ   s    i   RV   Rp   Rq   Rr   Rs   i   Rt   (   Ri   R   R   RH   R,   Ru   RI   R7   (   R-   Rj   Rk   Rp   R{   RD   (    (   Rn   Ro   Rz   R-   s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt+   test_streaming_callback_with_final_callbackÊ   s*    	
		
c         c` s›   |  j  ƒ  V\ } } | j d ƒ | j d ƒ V} |  j | d ƒ t ƒ  } t ƒ   | j d | j ƒ Wd  QX| V} |  j | d ƒ | j ƒ  | j ƒ  d  S(   Ns
   abcd
efghs   
s   abcd
Rp   t   efgh(	   Ri   R,   RY   RI   R   R   R?   t
   set_resultR7   (   R-   Rj   Rk   RD   t   streaming_fut(    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt+   test_streaming_callback_with_data_in_bufferì   s    	

c      	   #` s  |  j  ƒ  V\ } } zá g  ‰  t g ‰ t ƒ  ‰ ‡  ‡ f d †  } ‡ ‡ f d †  } t ƒ   | j d | d | ƒ Wd  QX| j d ƒ x! t ˆ  ƒ d k r¨ ˆ j ƒ  Vqˆ W| j d ƒ V| j ƒ  x ˆ d sÜ ˆ j ƒ  VqÄ W|  j	 ˆ  d d g ƒ Wd  | j ƒ  | j ƒ  Xd  S(	   Nc         ` s   ˆ  j  |  ƒ ˆ j ƒ  d  S(   N(   RO   Rm   (   RD   (   Rn   Ro   (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyRp     s    c         ` s+   |  s t  |  ƒ ‚ t ˆ  d <ˆ j ƒ  d  S(   Ni    (   t   AssertionErrorRy   Rm   (   RD   (   t   closedRo   (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   close_callback  s    
RV   Rp   Rq   i   Rr   i    (
   Ri   t   FalseR   R   R?   R,   t   lenRu   R7   RI   (   R-   Rj   Rk   Rp   Rƒ   (    (   Rn   R‚   Ro   s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_streaming_until_closeû   s(    		


c         #` s“   |  j  ƒ  V\ ‰ ‰ zd g  ‰  t j ‡  ‡ f d †  ƒ } t j ‡ f d †  ƒ } | ƒ  | ƒ  g V|  j ˆ  d d g ƒ Wd  ˆ j ƒ  ˆ j ƒ  Xd  S(   Nc           3` s(   t  ƒ   ˆ j d ˆ  j ƒ VWd  QXd  S(   NRp   (   R   R?   RO   (    (   Rn   Rj   (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   rs_task   s    
c           3` s8   ˆ  j  d ƒ Vt j d ƒ Vˆ  j  d ƒ Vˆ  j ƒ  d  S(   NRq   g{®Gáz„?Rr   (   R,   R   t   sleepR7   (    (   Rk   (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   ws_task%  s    Rq   Rr   (   Ri   R   t	   coroutineRI   R7   (   R-   R‡   R‰   (    (   Rn   Rj   Rk   s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt!   test_streaming_until_close_future  s    
c         #` sÇ   |  j  ƒ  V\ ‰ ‰ z˜ t ƒ  } ˆ j | j ƒ ˆ j d ƒ g  ‰ ‡  ‡ ‡ ‡ f d †  } ‡ f d †  ‰  t ƒ   ˆ j d | ƒ Wd  QX| j ƒ  V|  j ˆ d d g ƒ Wd  ˆ j	 ƒ  ˆ j	 ƒ  Xd  S(   Nt   12c         ` s;   ˆ j  |  ƒ t ƒ   ˆ j d ˆ  ƒ Wd  QXˆ j ƒ  d  S(   Ni   (   RO   R   RH   R7   (   RD   (   t	   callback2Rn   Rj   Rk   (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt	   callback1?  s    
c         ` s   ˆ  j  |  ƒ d  S(   N(   RO   (   RD   (   Rn   (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyR   E  s    i   t   1t   2(
   Ri   R   t   set_close_callbackt   setR,   R   RH   Ru   RI   R7   (   R-   t   eventRŽ   (    (   R   Rn   Rj   Rk   s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_delayed_close_callback2  s    	

c         c` s”   |  j  ƒ  V\ } } ze | j d ƒ g  } | j | j d ƒ Vƒ | j ƒ  | j | j d ƒ Vƒ |  j | d d g ƒ Wd  | j ƒ  | j ƒ  Xd  S(   NRŒ   i   R   R   (   Ri   R,   RO   RH   R7   RI   (   R-   Rj   Rk   Rn   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt"   test_future_delayed_close_callbackO  s    

c         c` sª   |  j  d d ƒ V\ } } zu | j d d ƒ | j d ƒ V} |  j d d | ƒ | j ƒ  t j d ƒ V| j d ƒ V} |  j d d | ƒ Wd  | j ƒ  | j ƒ  Xd  S(   Nt   read_chunk_sizei   t   Ai   g{®Gáz„?(   Ri   R,   RH   RI   R7   R   Rˆ   (   R-   Rj   Rk   RD   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_close_buffered_data_  s    


c         c` s‡   |  j  ƒ  V\ } } zX | j d ƒ | j ƒ  | j d ƒ V} |  j | d ƒ | j ƒ  V} |  j | d ƒ Wd  | j ƒ  | j ƒ  Xd  S(   NRq   i   R   t   234(   Ri   R,   R7   RH   RI   R?   (   R-   Rj   Rk   RD   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt!   test_read_until_close_after_closey  s    

c         c` sÒ   |  j  ƒ  V\ } } z£ | j d ƒ | j ƒ  | j d ƒ V} |  j | d ƒ g  } t ƒ  } t ƒ   | j | j d | j	 ƒWd  QX| V} |  j d | ƒ |  j d j
 | ƒ d ƒ Wd  | j ƒ  | j ƒ  Xd  S(   NRq   i   R   Rp   RF   R™   (   Ri   R,   R7   RH   RI   R   R   R?   R~   RO   R&   (   R-   Rj   Rk   RD   t   streaming_datat   final_futureRw   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt+   test_streaming_read_until_close_after_closeŒ  s     
	

c         c` sÏ   |  j  ƒ  V\ } } z  t | t ƒ rI t j ƒ  d k rI t j d ƒ ‚ n  d } x% t | ƒ D] } | j d d ƒ q\ W| j d ƒ | j	 d ƒ V} |  j
 t | ƒ | d d ƒ Wd  | j ƒ  | j ƒ  Xd  S(   Nt   PyPys$   pypy gc causes problems with openssli   R—   i   s   
i   (   Ri   t
   isinstanceR   t   platformt   python_implementationR   t   SkipTestt   rangeR,   RY   RI   R…   R7   (   R-   Rj   Rk   t   NUM_KBt   iRD   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_large_read_until£  s    "
c         c` s¡   d } |  j  ƒ  V\ } } t ƒ  } | j | j ƒ zS | j | ƒ | j d ƒ V} |  j | | ƒ | j ƒ  | j d ƒ | j ƒ  VWd  | j ƒ  | j ƒ  Xd  S(   Ns   OK
s   
(	   Ri   R   R‘   R’   R,   RY   RI   R7   Ru   (   R-   t   OKRj   Rk   R“   t   res(    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt%   test_close_callback_with_pending_read»  s    	

c         #` sÈ   |  j  ƒ  V\ } } t g ‰  t ƒ  ‰ ‡  ‡ f d †  } | j | ƒ zh | j d ƒ | j d ƒ V} |  j | d ƒ |  j ˆ  d ƒ | j ƒ  ˆ j	 ƒ  V|  j
 ˆ  d ƒ Wd  | j ƒ  | j ƒ  Xd  S(   Nc           ` s   t  ˆ  d <ˆ j ƒ  d  S(   Ni    (   Ry   Rm   (    (   R‚   Ro   (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyRƒ   Û  s    
t   ai   i    (   Ri   R„   R   R‘   R,   RH   RI   RK   R7   Ru   R@   (   R-   Rj   Rk   Rƒ   R¨   (    (   R‚   Ro   s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_future_close_callbackÓ  s    		

c         c` sl   |  j  ƒ  V\ } } z= | j d ƒ } | j t d ƒ ƒ | V} |  j | d ƒ Wd  | j ƒ  | j ƒ  Xd  S(   Ni   t   hellot   hell(   Ri   RH   R,   t
   memoryviewRI   R7   (   R-   Rj   Rk   Rv   RD   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_write_memoryviewë  s    
c         c` sË   |  j  ƒ  V\ } } zœ | j d d t ƒ} | j d ƒ | V} |  j | d ƒ | j d d t ƒ} | j d ƒ | V} |  j | d ƒ | j d d t ƒV} |  j | d ƒ Wd  | j ƒ  | j ƒ  Xd  S(	   Ni2   t   partialR¬   i   t   worldt   wori    RF   (   Ri   RH   Ry   R,   RI   R7   (   R-   Rj   Rk   Rv   RD   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_read_bytes_partial÷  s    
c         c` s  |  j  ƒ  V\ } } t ƒ  } | j | j ƒ z¹ | j d d d ƒ} | j d ƒ | V} |  j | d ƒ | j d d d ƒ} | j d ƒ | V} |  j | d ƒ t t d ƒ 2 | j d d d ƒ} | j d ƒ | j	 ƒ  VWd  QXWd  | j
 ƒ  | j
 ƒ  Xd  S(	   Nt   deft	   max_bytesi2   t   abcdefi   s   Unsatisfiable readi   t   123456(   Ri   R   R‘   R’   RY   R,   RI   R   R   Ru   R7   (   R-   Rj   Rk   R‚   Rv   RD   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_read_until_max_bytes  s$    	
c         #` s¬   ˆ  j  ƒ  V\ } } t ƒ  } | j | j ƒ zd | j d ƒ t t d ƒ B t ƒ  ' | j d d ‡  f d †  d d ƒWd  QX| j	 ƒ  VWd  QXWd  | j
 ƒ  | j
 ƒ  Xd  S(   NR·   s   Unsatisfiable readR´   RV   c         ` s
   ˆ  j  ƒ  S(   N(   t   fail(   t   x(   R-   (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   <lambda>9  s    Rµ   i   (   Ri   R   R‘   R’   R,   R   R   R   RY   Ru   R7   (   R-   Rj   Rk   R‚   (    (   R-   s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt'   test_read_until_max_bytes_inline_legacy,  s    	
(
c         c` s¤   |  j  ƒ  V\ } } t ƒ  } | j | j ƒ z\ | j d ƒ t t d ƒ / |  j t ƒ  | j	 d d d ƒVWd  QXWd  QX| j
 ƒ  VWd  | j ƒ  | j ƒ  Xd  S(   NR·   s   Unsatisfiable readR´   Rµ   i   (   Ri   R   R‘   R’   R,   R   R   Rd   R	   RY   Ru   R7   (   R-   Rj   Rk   R‚   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt    test_read_until_max_bytes_inline?  s    	 
c         c` s   |  j  ƒ  V\ } } t ƒ  } | j | j ƒ zE | j d ƒ t t d ƒ # | j d d d ƒ| j ƒ  VWd  QXWd  | j	 ƒ  | j	 ƒ  Xd  S(   NR¶   s   Unsatisfiable readR´   Rµ   i   (
   Ri   R   R‘   R’   R,   R   R   RY   Ru   R7   (   R-   Rj   Rk   R‚   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt'   test_read_until_max_bytes_ignores_extraR  s    	
c         c` sÿ   |  j  ƒ  V\ } } t ƒ  } | j | j ƒ z· | j d d d ƒ} | j d ƒ | V} |  j | d ƒ | j d d d ƒ} | j d ƒ | V} |  j | d ƒ t t d ƒ 0 | j d d d ƒ| j d ƒ | j	 ƒ  VWd  QXWd  | j
 ƒ  | j
 ƒ  Xd  S(	   NR´   Rµ   i2   R¶   i   s   Unsatisfiable readi   R·   (   Ri   R   R‘   R’   t   read_until_regexR,   RI   R   R   Ru   R7   (   R-   Rj   Rk   R‚   Rv   RD   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_read_until_regex_max_bytesc  s$    	
c         c` s   |  j  ƒ  V\ } } t ƒ  } | j | j ƒ zE | j d ƒ t t d ƒ # | j d d d ƒ| j ƒ  VWd  QXWd  | j	 ƒ  | j	 ƒ  Xd  S(   NR·   s   Unsatisfiable readR´   Rµ   i   (
   Ri   R   R‘   R’   R,   R   R   R¿   Ru   R7   (   R-   Rj   Rk   R‚   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt&   test_read_until_regex_max_bytes_inline  s    	
c         c` s   |  j  ƒ  V\ } } t ƒ  } | j | j ƒ zE | j d ƒ t t d ƒ # | j d d d ƒ| j ƒ  VWd  QXWd  | j	 ƒ  | j	 ƒ  Xd  S(   NR¶   s   Unsatisfiable readR´   Rµ   i   (
   Ri   R   R‘   R’   R,   R   R   R¿   Ru   R7   (   R-   Rj   Rk   R‚   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt-   test_read_until_regex_max_bytes_ignores_extra‘  s    	
c         c` s‰   |  j  d d ƒ V\ } } zT | j d d d ƒ x8 t d ƒ D]* } | j d ƒ V} |  j | d d ƒ q> WWd  | j ƒ  | j ƒ  Xd  S(   Nt   max_buffer_sizei
   i   Rª   id   i (  (   Ri   R,   R£   RH   RI   R7   (   R-   Rj   Rk   R¥   RD   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt"   test_small_reads_from_large_buffer¢  s    
c         c` s—   |  j  d d
 ƒ V\ } } zb | j d d d d ƒ xB t d ƒ D]4 } | j d d d	 ƒV} |  j | d d d ƒ qB WWd  | j ƒ  | j ƒ  Xd  S(   NRÃ   i
   i   Rª   iÿ  s   
id   Rµ   i   i (  (   Ri   R,   R£   RY   RI   R7   (   R-   Rj   Rk   R¥   RD   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt(   test_small_read_untils_from_large_buffer±  s     
c         c` s•   d } |  j  d d | ƒ V\ } } zV | j d	 | ƒ | j | ƒ Vt j d ƒ Vx" t d ƒ D] } | j | ƒ Vq` WWd  | j ƒ  | j ƒ  Xd  S(
   Ni   RÃ   i   Rª   i
   gš™™™™™¹?i	   i   t
   aaaaaaaaaa(   Ri   R,   RH   R   Rˆ   R£   R7   (   R-   t   MBRj   Rk   R¥   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_flow_controlÀ  s    
c         #` sÄ  ˆ  j  ƒ  V\ } } ‡  f d †  } z†t d ƒ } | j | ƒ } | j d ƒ t j d ƒ Vˆ  j | j ƒ  ƒ | j d ƒ | V} ˆ  j | j ƒ  ƒ ˆ  j	 | d ƒ ˆ  j	 t
 | ƒ d ƒ | j | ƒ } t j d ƒ Vˆ  j | j ƒ  ƒ | j d ƒ | V} ˆ  j | j ƒ  ƒ ˆ  j	 | d ƒ ˆ  j	 t
 | ƒ d ƒ t d	 ƒ } | j d
 ƒ | j | ƒ V} ˆ  j	 | d	 ƒ ˆ  j	 t
 | ƒ d ƒ | j d ƒ V} ˆ  j	 | d ƒ Wd  | j ƒ  | j ƒ  Xd  S(   Nc           ` s   ˆ  j  j d „  ƒ d  S(   Nc           S` s   t  j d ƒ S(   Ngš™™™™™©?(   R   Rˆ   (    (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyR»   ×  s    (   t   io_loopt   run_sync(    (   R-   (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt
   sleep_someÖ  s    i
   R¬   gš™™™™™©?s   world!!t
   helloworldt
   1234567890s
   !!12345678i   t	   abcdefghit   90abi   t   cdefghi(   Ri   t	   bytearrayt	   read_intoR,   R   Rˆ   R@   t   readingRK   RI   t   bytesRH   R7   (   R-   Rj   Rk   RË   t   bufRv   RD   (    (   R-   s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_read_intoÒ  s<    
c         c` s&  |  j  ƒ  V\ } } z÷ t d ƒ } | j | d t ƒ} | j d ƒ | V} |  j | j ƒ  ƒ |  j | d ƒ |  j t | ƒ d ƒ | j d ƒ | j | d t ƒV} |  j | d ƒ |  j t | ƒ d ƒ | j | d t ƒV} |  j | d ƒ |  j t | ƒ d	 ƒ Wd  | j	 ƒ  | j	 ƒ  Xd  S(
   Ni
   R°   R¬   i   s
   hello     s   world!1234567890s
   world!1234i   t
   5678901234(
   Ri   RÑ   RÒ   Ry   R,   RK   RÓ   RI   RÔ   R7   (   R-   Rj   Rk   RÕ   Rv   RD   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_read_into_partialû  s$    
c         c` sa   |  j  ƒ  V\ } } z2 t ƒ  } | j | ƒ } |  j | j ƒ  d ƒ Wd  | j ƒ  | j ƒ  Xd  S(   Ni    (   Ri   RÑ   RÒ   RI   t   resultR7   (   R-   Rj   Rk   RÕ   Rv   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_read_into_zero_bytes  s    	
c         #` sÑ   t  j d ƒ ‰ d ‰ |  j ƒ  V\ ‰ ‰ t j ƒ  ‰ t j ƒ  ‰  t j ‡ ‡ ‡ ‡ f d †  ƒ } t j ‡  ‡ ‡ ‡ f d †  ƒ } z3 | ƒ  | ƒ  g Vˆ j ƒ  ˆ  j ƒ  k s´ t ‚ Wd  ˆ j	 ƒ  ˆ j	 ƒ  Xd  S(   Ni*   i@B c          3` s~   ˆ  }  x_ |  d k rg ˆ j  d t d |  ƒ ƒ } t j | ƒ } ˆ j | ƒ ˆ j | ƒ V|  | 8}  q	 W|  d k sz t ‚ d  S(   Ni    i   iè  (   t   randintt   minR$   t   urandomt   updateR,   R   (   t	   remainingt   sizeRD   (   t   nbytest   produce_hasht   rRk   (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   produce/  s    c          3` sæ   ˆ }  xÇ |  d k rÏ ˆ j  ƒ  d k rl ˆ j d t d |  ƒ ƒ } ˆ j | ƒ V} ˆ  j | ƒ |  | 8}  q	 ˆ j d t d |  ƒ ƒ } t | ƒ } ˆ j | ƒ V} | | k sµ t ‚ ˆ  j | ƒ |  | 8}  q	 W|  d k sâ t ‚ d  S(   Ni    g      à?i   iè  (   t   randomRÛ   RÜ   RH   RÞ   RÑ   RÒ   R   (   Rß   Rà   RD   RÕ   t   n(   t   consume_hashRá   Rã   Rj   (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   consume:  s    (
   Rå   t   RandomRi   t   hashlibt   sha1R   RŠ   t	   hexdigestR   R7   (   R-   Rä   Rè   (    (   Rç   Rá   Râ   Rã   Rj   Rk   s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_many_mixed_reads#  s    !!"
("   R/   R0   Ri   R   Rl   Rx   R|   R€   R†   R‹   R”   R•   R˜   Rš   R   R¦   R©   R«   R¯   R³   R¸   R¼   R½   R¾   RÀ   RÁ   RÂ   RÄ   RÅ   RÈ   RÖ   RØ   RÚ   Rí   (    (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyRg   ž   s>   		")t   TestIOStreamMixinc           B` sà   e  Z d  „  Z d „  Z e j d „  ƒ Z d „  Z e d „  ƒ Z	 e
 j e d k d ƒ e d „  ƒ ƒ Z e d „  ƒ Z e
 j e d k d ƒ e d „  ƒ ƒ Z e e e d	 „  ƒ ƒ ƒ Z e e d
 „  ƒ ƒ Z e d „  ƒ Z RS(   c         K` s   t  ƒ  ‚ d  S(   N(   R2   (   R-   t
   connectionRh   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   _make_server_iostreamW  s    c         K` s   t  ƒ  ‚ d  S(   N(   R2   (   R-   Rï   Rh   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyR3   Z  s    c         +` s¶   t  ƒ  \ } } t ƒ  ‰ ‡  ‡ ‡ f d †  } t j | | ƒ ˆ j t j ƒ  ˆ   } | j d | f ƒ } ˆ | g V\ } } ˆ j j | j	 ƒ  ƒ | j
 ƒ  t j | | f ƒ ‚ d  S(   Nc         ` s   ˆ j  ˆ j |  ˆ   ƒ d  S(   N(   R~   Rð   (   Rï   t   address(   Rh   R-   t   server_stream_fut(    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   accept_callbackb  s    s	   127.0.0.1(   R   R   R   t   add_accept_handlerR3   t   socketR=   RÉ   t   remove_handlert   filenoR7   R   t   Return(   R-   Rh   t   listenert   portRó   t   client_streamRQ   t   server_stream(    (   Rh   R-   Rò   s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyRi   ]  s    	
c         ` s5  t  ƒ  \ } } ˆ  j | ƒ t t j ƒ  ƒ } t ˆ  _ ‡  f d †  } | j ˆ  j ƒ t t	 d d t ƒ5 t
 ƒ   | j d | f | ƒ Wd  QXˆ  j ƒ  Wd  QXˆ  j ˆ  j ƒ ˆ  j t | j t j ƒ | j ƒ t j d k r1t j f } t t d ƒ r| t j f 7} n  ˆ  j | j j d | k ƒ n  d  S(   Nc           ` s   t  ˆ  _ ˆ  j ƒ  d  S(   N(   Ry   t   connect_calledt   stop(    (   R-   (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   connect_callbackv  s    	s   .*t   requireds	   127.0.0.1t   cygwint   WSAECONNREFUSEDi    (   R   t
   addCleanupR   Rõ   R„   Rý   R‘   Rþ   R   R   R   R=   Ru   RK   R@   RŸ   t   errort   sysR    t   errnot   ECONNREFUSEDt   hasattrR  t   args(   R-   t   cleanup_funcRú   RC   Rÿ   t   _ERRNO_CONNREFUSED(    (   R-   s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_connection_refused_legacym  s"    	
"c         c` s  t  ƒ  \ } } |  j | ƒ t t j ƒ  ƒ } | j |  j ƒ t t d d t ƒ/ |  j	 t
 ƒ  | j d | f ƒ VWd  QXWd  QX|  j t | j t j ƒ | j ƒ t j d k rt j f } t t d ƒ rã | t j f 7} n  |  j | j j d | k ƒ n  d  S(   Ns   .*R   s	   127.0.0.1R  R  i    (   R   R  R   Rõ   R‘   Rþ   R   R   R„   Rd   R	   R=   R@   RŸ   R  R  R    R  R  R  R  R	  (   R-   R
  Rú   RC   R  (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_connection_refusedˆ  s     "s   mock package not presentc         c` s¦   t  j  t  j t  j d ƒ } t | ƒ } | j |  j ƒ t j d d t  j t	 j
 d ƒ ƒE |  j t ƒ  | j d ƒ VWd  QX|  j t | j t  j ƒ ƒ Wd  QXd  S(   Ni    s   socket.socket.connectt   side_effectt   boomt	   localhostiP   (   R  iP   (   Rõ   t   AF_INETt   SOCK_STREAMR   R‘   Rþ   R    t   patcht   gaierrorR  t   EIORd   R	   R=   R@   RŸ   R  (   R-   t   sRC   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_gaierrorŸ  s    c         c` sÉ   |  j  ƒ  V\ } } zš t ƒ  } | j | j ƒ t t d ƒ S t ƒ  + t ƒ   | j d d d „  ƒWd  QXWd  QX| j	 d ƒ | j
 ƒ  VWd  QX|  j t | j t ƒ ƒ Wd  | j ƒ  | j ƒ  Xd  S(   Ns*   (Uncaught exception|Exception in callback)i   RV   c         S` s   d d S(   Ni   i    (    (   RD   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyR»   ½  s    R   (   Ri   R   R‘   R’   R   R   R   R   RH   R,   Ru   R@   RŸ   R  t   ZeroDivisionErrorR7   (   R-   t   servert   clientR‚   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_read_callback_error°  s    	

"
c      	   c` sx   |  j  ƒ  V\ } } zI t j d d t d ƒ ƒ( |  j t d ƒ  | j ƒ  Wd  QXWd  QXWd  | j ƒ  | j ƒ  Xd  S(   Ns.   tornado.iostream.BaseIOStream._try_inline_readR  R  (   Ri   R    R  t   IOErrort   assertRaisesRegexpR?   R7   (   R-   R  R  (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt    test_read_until_close_with_errorÅ  s    
c         c` so   |  j  ƒ  V\ } } z@ t j | j j ƒ  ƒ |  j t j ƒ  | j d ƒ Wd  QXWd  | j ƒ  | j ƒ  Xd  S(   Ni   (   Ri   R$   R7   Rõ   R÷   Rd   R  RH   (   R-   R  R  (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_inline_read_errorÒ  s    
c         #` sŸ   |  j  ƒ  V\ ‰  } t ƒ  } ˆ  j | j ƒ zW ˆ  j d ƒ | j d ƒ ‡  f d †  } | ˆ  _ t t d ƒ  | j	 ƒ  VWd  QXWd  ˆ  j
 ƒ  | j
 ƒ  Xd  S(   Ni   Rª   c           ` s*   t  j ˆ  j j ƒ  ƒ ˆ  j j ˆ  ƒ d  S(   N(   R$   R7   Rõ   R÷   t	   __class__t   read_from_fd(    (   R  (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   fake_read_from_fdõ  s    s   error on read(   Ri   R   R‘   R’   RH   R,   R!  R   R   Ru   R7   (   R-   R  R‚   R"  (    (   R  s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_async_read_error_loggingç  s    		
c         #` sÀ   d \ ‰ ‰ d } ˆ ˆ | ‰ |  j  d ˆ ƒ V\ ‰ ‰  t j ‡ ‡ ‡ f d †  ƒ } t j ‡  ‡ ‡ f d †  ƒ } z/ g  t | ƒ D] } | ƒ  ^ q… | ƒ  g VWd ˆ j ƒ  ˆ  j ƒ  Xd S(	   s?   
        Test that write() Futures are never orphaned.
        iˆ  iè  i
   RÃ   c          3` s3   d ˆ  }  x" t  ˆ ƒ D] } ˆ j |  ƒ Vq Wd  S(   NRº   (   R£   R,   (   RD   R¥   (   t   mRæ   R  (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyRä     s    
c          3` s=   d }  x0 |  ˆ k  r8 ˆ  j  ˆ ƒ V} |  t | ƒ 7}  q	 Wd  S(   Ni    (   RH   R…   (   t   nreadR¨   (   R  R$  t   total_bytes(    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyRè     s    N(   iˆ  iè  (   Ri   R   RŠ   R£   R7   (   R-   t
   nproducersRä   Rè   R¥   (    (   R  R$  Ræ   R  R&  s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_future_write   s    /
N(   R/   R0   Rð   R3   R   RŠ   Ri   R  R   R  R   t   skipIfR    RZ   R  R  R  R   R   R  R#  R(  (    (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyRî   V  s    			t   TestIOStreamWebHTTPc           B` s   e  Z d  „  Z RS(   c         C` s   t  t j ƒ  ƒ S(   N(   R   Rõ   (   R-   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyR3   !  s    (   R/   R0   R3   (    (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyR*     s   t   TestIOStreamWebHTTPSc           B` s   e  Z d  „  Z RS(   c         C` s"   t  t j ƒ  d t d t j ƒ ƒS(   Nt   ssl_optionst	   cert_reqs(   R   Rõ   R#   t   sslt	   CERT_NONE(   R-   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyR3   &  s    (   R/   R0   R3   (    (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyR+  %  s   t   TestIOStreamc           B` s   e  Z d  „  Z d „  Z RS(   c         K` s   t  | |  S(   N(   R   (   R-   Rï   Rh   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyRð   ,  s    c         K` s   t  | |  S(   N(   R   (   R-   Rï   Rh   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyR3   /  s    (   R/   R0   Rð   R3   (    (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyR0  +  s   	t   TestIOStreamSSLc           B` s   e  Z d  „  Z d „  Z RS(   c         K` s.   t  j | d t d t t ƒ  } t | |  S(   Nt   server_sidet   do_handshake_on_connect(   R.  t   wrap_socketRy   R„   R)   R   (   R-   Rï   Rh   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyRð   4  s
    c         K` s   t  | d t d t j ƒ | S(   NR,  R-  (   R   R#   R.  R/  (   R-   Rï   Rh   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyR3   ;  s    	(   R/   R0   Rð   R3   (    (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyR1  3  s   	t   TestIOStreamSSLContextc           B` s   e  Z d  „  Z d „  Z RS(   c         K` s€   t  j t  j ƒ } | j t j j t j j t ƒ d ƒ t j j t j j t ƒ d ƒ ƒ t	 | | d t
 d t ƒ} t | |  S(   Ns   test.crts   test.keyR2  R3  (   R.  t
   SSLContextt   PROTOCOL_SSLv23t   load_cert_chainR$   R%   R&   R'   R(   R   Ry   R„   R   (   R-   Rï   Rh   t   context(    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyRð   E  s    "	c         K` s%   t  j t  j ƒ } t | d | | S(   NR,  (   R.  R6  R7  R   (   R-   Rï   Rh   R9  (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyR3   O  s    (   R/   R0   Rð   R3   (    (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyR5  D  s   	
t   TestIOStreamStartTLSc           B` s   e  Z d  „  Z d „  Z d „  Z e j d „  ƒ Z e j d „  ƒ Z d
 d
 d „ Z
 d
 d „ Z e d „  ƒ Z e d „  ƒ Z e d	 „  ƒ Z RS(   c         C` së   yÄ t  t |  ƒ j ƒ  t ƒ  \ |  _ |  _ d  |  _ t ƒ  |  _	 t
 j |  j |  j ƒ t t j ƒ  ƒ |  _ |  j j |  j j d |  j f ƒ |  j ƒ |  j ƒ  |  j j |  j	 |  j ƒ |  j ƒ  Wn  t k
 ræ } t | ƒ ‚  n Xd  S(   Ns	   127.0.0.1(   t   superR:  t   setUpR   Rù   Rú   RZ   Rü   R   t   server_acceptedR   Rô   t   acceptR   Rõ   Rû   RÉ   t
   add_futureR=   Rþ   Ru   t	   Exceptiont   print(   R-   t   e(    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyR<  U  s    	

c         C` sb   |  j  d  k	 r |  j  j ƒ  n  |  j d  k	 r> |  j j ƒ  n  |  j j ƒ  t t |  ƒ j ƒ  d  S(   N(   Rü   RZ   R7   Rû   Rù   R;  R:  t   tearDown(   R-   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyRC  f  s    c         C` sB   |  j  d  k	 r |  j d ƒ n  t | ƒ |  _  |  j j d  ƒ d  S(   Ns   should only get one connection(   Rü   RZ   R¹   R   R=  R~   (   R-   Rï   Rñ   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyR>  n  s    c         c` s7   |  j  j | ƒ |  j j d ƒ V} |  j | | ƒ d  S(   Ns   
(   Rû   R,   Rü   RY   RI   (   R-   t   linet	   recv_line(    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   client_send_linet  s    c         c` s7   |  j  j | ƒ |  j j d ƒ V} |  j | | ƒ d  S(   Ns   
(   Rü   R,   Rû   RY   RI   (   R-   RD  RE  (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   server_send_linez  s    c         C` s%   |  j  } d  |  _  | j t | | ƒ S(   N(   Rû   RZ   t	   start_tlsR„   (   R-   R,  t   server_hostnameRû   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   client_start_tls€  s    		c         C` s"   |  j  } d  |  _  | j t | ƒ S(   N(   Rü   RZ   RH  Ry   (   R-   R,  Rü   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   server_start_tls…  s    		c         c` sç   |  j  d ƒ V|  j d ƒ V|  j  d ƒ V|  j  d ƒ V|  j d ƒ V|  j  d ƒ V|  j t d t j ƒ ƒ } |  j t ƒ  ƒ } | V|  _ | V|  _	 |  j
 t |  j t ƒ ƒ |  j
 t |  j	 t ƒ ƒ |  j d ƒ V|  j  d ƒ Vd  S(	   Ns   220 mail.example.com ready
s   EHLO mail.example.com
s   250-mail.example.com welcome
s   250 STARTTLS
s
   STARTTLS
s   220 Go ahead
R-  s   250 mail.example.com welcome
(   RG  RF  RJ  R#   R.  R/  RK  R)   Rû   Rü   R@   RŸ   R   (   R-   t   client_futuret   server_future(    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_start_tls_smtpŠ  s    

c      	   c` sƒ   |  j  t ƒ  ƒ } |  j d d ƒ } t t d ƒ # |  j t j ƒ 
 | VWd  QXWd  QX|  j t j t j	 f ƒ 
 | VWd  QXd  S(   NRI  R  s	   SSL Error(
   RK  R)   RJ  R   R   Rd   R.  t   SSLErrorRõ   R  (   R-   RM  RL  (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_handshake_failŸ  s    c      	   c` s€   |  j  t ƒ  ƒ } |  j t j ƒ  d d ƒ} t t d ƒ # |  j t j ƒ 
 | VWd  QXWd  QX|  j t	 ƒ 
 | VWd  QXd  S(   NRI  s	   127.0.0.1s	   SSL Error(
   RK  R)   RJ  R.  t   create_default_contextR   R   Rd   RO  R@  (   R-   RM  RL  (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_check_hostnameª  s    	N(   R/   R0   R<  RC  R>  R   RŠ   RF  RG  RZ   RJ  RK  R   RN  RP  RR  (    (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyR:  T  s   			t   WaitForHandshakeTestc           B` sV   e  Z e j d  „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z	 RS(   c         c` sÄ   d  } } z€ t ƒ  \ } } | d t ƒ  ƒ } | j | ƒ t t j ƒ  d t d t j ƒ ƒ} | j	 d | f ƒ V|  j
 | j j ƒ  ƒ Wd  | d  k	 r¦ | j ƒ  n  | d  k	 r¿ | j ƒ  n  Xd  S(   NR,  R-  s	   127.0.0.1(   RZ   R   R)   t
   add_socketR   Rõ   R#   R.  R/  R=   t   assertIsNotNonet   cipherRþ   R7   (   R-   t
   server_clsR  R  t   sockRú   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   connect_to_server½  s    
c         #` sE   |  ‰ t  ƒ  ‰  d t f ‡  ‡ f d †  ƒ  Y} |  j | ƒ Vˆ  Vd  S(   Nt
   TestServerc           ` s)   e  Z ‡ f d  †  Z ‡  ‡ f d †  Z RS(   c         ` sC   ˆ  j  | j j ƒ  ƒ | |  _ t ƒ   | j |  j ƒ Wd  QXd  S(   N(   t   assertIsNoneRõ   RV  RC   R   t   wait_for_handshaket   handshake_done(   R-   RC   Rñ   (   t   test(    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   handle_streamÕ  s    	
c         ` s*   ˆ j  |  j j j ƒ  ƒ ˆ  j d  ƒ d  S(   N(   RU  RC   Rõ   RV  R~   RZ   (   R-   (   t   handshake_futureR^  (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyR]  Ü  s    (   R/   R0   R_  R]  (    (   R`  R^  (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyRZ  Ô  s   (   R   R   RY  (   R-   RZ  (    (   R`  R^  s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt    test_wait_for_handshake_callbackÏ  s
    	c         #` sE   |  ‰ t  ƒ  ‰  d t f ‡  ‡ f d †  ƒ  Y} |  j | ƒ Vˆ  Vd  S(   NRZ  c           ` s/   e  Z ‡ f d  †  Z e j ‡  f d †  ƒ Z RS(   c         ` s0   ˆ  j  | j j ƒ  ƒ ˆ  j j |  j | ƒ d  S(   N(   R[  Rõ   RV  RÉ   t   spawn_callbackt   handle_connection(   R-   RC   Rñ   (   R^  (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyR_  ê  s    c         3` s   | j  ƒ  Vˆ  j d  ƒ d  S(   N(   R\  R~   RZ   (   R-   RC   (   R`  (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyRc  î  s    (   R/   R0   R_  R   RŠ   Rc  (    (   R`  R^  (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyRZ  é  s   (   R   R   RY  (   R-   RZ  (    (   R`  R^  s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_wait_for_handshake_futureä  s
    	
c         #` sE   |  ‰ t  ƒ  ‰  d t f ‡  ‡ f d †  ƒ  Y} |  j | ƒ Vˆ  Vd  S(   NRZ  c           ` s#   e  Z e j ‡  ‡ f d  †  ƒ Z RS(   c         3` s5   | j  ƒ  } ˆ j t | j  ƒ | Vˆ  j d  ƒ d  S(   N(   R\  Rd   t   RuntimeErrorR~   RZ   (   R-   RC   Rñ   Rv   (   R`  R^  (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyR_  ü  s    (   R/   R0   R   RŠ   R_  (    (   R`  R^  (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyRZ  û  s   (   R   R   RY  (   R-   RZ  (    (   R`  R^  s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt-   test_wait_for_handshake_already_waiting_errorö  s
    		c         #` s<   t  ƒ  ‰  d t f ‡  f d †  ƒ  Y} |  j | ƒ Vˆ  Vd  S(   NRZ  c           ` s    e  Z e j ‡  f d  †  ƒ Z RS(   c         3` s'   | j  ƒ  V| j  ƒ  Vˆ  j d  ƒ d  S(   N(   R\  R~   RZ   (   R-   RC   Rñ   (   R`  (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyR_    s    (   R/   R0   R   RŠ   R_  (    (   R`  (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyRZ    s   (   R   R   RY  (   R-   RZ  (    (   R`  s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt)   test_wait_for_handshake_already_connected  s    	(
   R/   R0   R   RŠ   RY  R   Ra  Rd  Rf  Rg  (    (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyRS  ¼  s
   t   TestPipeIOStreamc           B` s8   e  Z e j d  „  ƒ Z e d „  ƒ Z e d „  ƒ Z RS(   c         K` s.   t  j ƒ  \ } } t | |  t | |  f S(   N(   R$   t   pipeR   (   R-   Rh   Rã   t   w(    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyRi     s    c         c` s¢   |  j  ƒ  V\ } } | j d ƒ | j d ƒ | j d ƒ V} |  j | d ƒ | j d ƒ V} |  j | d ƒ | j ƒ  | j ƒ  V} |  j | d ƒ | j ƒ  d  S(   Nt   hels   lo worldt    s   hello i   R²   t   ld(   Ri   R,   RY   RI   RH   R7   R?   (   R-   Rj   Rk   RD   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_pipe_iostream  s    
c         c` sf   |  j  ƒ  V\ } } d } | j d | ƒ | j | ƒ V} |  j | d | ƒ | j ƒ  | j ƒ  d  S(   Ni   R   (   Ri   R,   RH   RI   R7   (   R-   Rj   Rk   t	   NUM_BYTESRD   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   test_pipe_iostream_big_write2  s    
(   R/   R0   R   RŠ   Ri   R   Rn  Rp  (    (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyRh    s   t   TestStreamBufferc           B` sP   e  Z d  Z d „  Z d „  Z d d „ Z d „  Z d „  Z d „  Z d „  Z	 RS(	   s9   
    Unit tests for the private _StreamBuffer class.
    c         C` s   t  j d ƒ |  _  d  S(   Ni*   (   Rå   Ré   (   R-   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyR<  G  s    c         C` sH   t  | t t f ƒ r t | ƒ St  | t ƒ r8 | j ƒ  St | ƒ ‚ d  S(   N(   RŸ   RÔ   RÑ   R®   t   tobytest	   TypeError(   R-   t   b(    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   to_bytesJ  s
    

i
   c         C` s%   t  ƒ  } | j s t ‚ | | _ | S(   N(   R
   t   _large_buf_thresholdR   (   R-   t   large_buf_thresholdRÕ   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   make_streambufferR  s    		c         C` s“   d } x† | d t  | ƒ k  rŽ |  j | j | ƒ ƒ } |  j | ƒ |  j t  | ƒ | ƒ |  j | j | ƒ | | f ƒ | d d d } q	 Wd  S(   Ni   i   i   (   R…   Ru  t   peekR@   t   assertLessEqualRA   (   R-   RÕ   t   expectedRà   t   got(    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt
   check_peekX  s    c         C` sÿ   |  j  t | ƒ d ƒ d } xW | D]O } | | 7} | j | | ƒ ƒ |  j  t | ƒ t | ƒ ƒ |  j | | ƒ q# Wxl | rä |  j j d t | ƒ d ƒ } | | } | j | ƒ |  j  t | ƒ t | ƒ ƒ |  j | | ƒ qy W|  j  t | ƒ d ƒ d  S(   Ni    RF   i   (   RI   R…   RO   R}  Rå   t	   randranget   advance(   R-   RÕ   t   objst
   input_typeR{  t   oRæ   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   check_append_all_then_skip_alla  s    
	
c         C` sg  d d d d d d d g } |  j  ƒ  } |  j | | t ƒ |  j  ƒ  } |  j | | t ƒ |  j  ƒ  } |  j | | t ƒ |  j  d ƒ } x! t d	 ƒ D] } | j d
 ƒ q” W|  j t | j	 ƒ d ƒ x! t d	 ƒ D] } | j d
 ƒ qÑ W|  j t | j	 ƒ d ƒ | j
 d ƒ |  j t | j	 ƒ d ƒ | j
 d ƒ |  j t | j	 ƒ d ƒ |  j t | ƒ d ƒ d  S(   NRŒ   t   345t   67t   89at   bcdet   fght   ijklmni
   i	   Rº   i   i   i   i    (   Rx  Rƒ  RÔ   RÑ   R®   R£   RO   RI   R…   t   _buffersR  (   R-   R€  RÕ   R¥   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt
   test_smallu  s&    c         C` s‚  d d d d d d d d d d g } |  j  ƒ  } |  j | | t ƒ |  j  ƒ  } |  j | | t ƒ |  j  ƒ  } |  j | | t ƒ |  j  d ƒ } x! t d ƒ D] } | j d ƒ q  W|  j t | j	 ƒ d ƒ | j d ƒ |  j t | j	 ƒ d ƒ | j d ƒ |  j t | j	 ƒ d ƒ | j
 d ƒ |  j t | j	 ƒ d
 ƒ | j
 d ƒ |  j t | j	 ƒ d ƒ |  j t | ƒ d ƒ d  S(   NRŒ   i   R„  i   R…  i   R†  i   R‡  i   Rˆ  i   R‰  i
   i   Rº   i   t   yi   t   zi!   i    t
   1212121212t   345345R‡  t   ijklmnijklmnt   xxxxxxxxxxx(   Rx  Rƒ  RÔ   RÑ   R®   R£   RO   RI   R…   RŠ  R  (   R-   R€  RÕ   R¥   (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt
   test_large  s4    	(
   R/   R0   t   __doc__R<  Ru  Rx  R}  Rƒ  R‹  R’  (    (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyRq  B  s   						(H   t
   __future__R    R   R   t   tornado.concurrentR   t   tornadoR   R   t   tornado.iostreamR   R   R   R	   R
   t   tornado.httputilR   t   tornado.locksR   R   t   tornado.logR   R   t   tornado.netutilR   t   tornado.stack_contextR   t   tornado.tcpserverR   t   tornado.testingR   R   R   R   R   R   t   tornado.test.utilR   R   R   R   R   t   tornado.webR   R   R  Rê   R$   R    Rå   Rõ   R.  R  R    t   ImportErrorRZ   R)   R*   t   objectR1   Rg   Rî   R*  R+  R0  R1  R5  R:  RS  Rh  t   TestCaseRq  (    (    (    s9   lib/python2.7/site-packages/tornado/test/iostream_test.pyt   <module>   sZ   (.(	pÿ ÿ ºÊhZ+