ó
¨œž[c           @` s¤  d  d l  m Z m Z m Z d  d l m Z d  d l Z d  d l Z d  d l Z d  d l	 Z	 d  d l
 Z
 d  d l Z d  d l Z d  d l Z d  d l Z y d  d l m Z Wn; e k
 ré y d  d l Z Wn e k
 rå e Z n Xn Xd  d l m Z d  d l m Z d  d l m Z m Z m Z m Z d  d l m Z d  d	 l m Z d  d
 l  m! Z! m" Z" m# Z# m$ Z$ d  d l% m& Z& m' Z' m( Z( m) Z) d  d l* m Z m+ Z+ m, Z, m- Z- m. Z. m/ Z/ y d  d l0 m1 Z1 Wn e k
 rëe Z1 n Xy d  d l2 Z2 Wn e k
 re Z2 n Xy d  d l3 Z3 Wn e k
 r?e Z3 n Xd e f d „  ƒ  YZ4 d e f d „  ƒ  YZ5 d e& f d „  ƒ  YZ6 d e j7 f d „  ƒ  YZ8 d e& f d „  ƒ  YZ9 d e& f d „  ƒ  YZ: d e: f d „  ƒ  YZ; e j< e1 e k d ƒ d e& f d „  ƒ  Yƒ Z= d e j7 f d  „  ƒ  YZ> e j< e2 e k	 d! ƒ d" e j7 f d# „  ƒ  Yƒ Z? d$ e j7 f d% „  ƒ  YZ@ d& e j7 f d' „  ƒ  YZA eB d( k r e jC ƒ  n  d S()   i    (   t   absolute_importt   divisiont   print_function(   t   ThreadPoolExecutorN(   t   mock(   t
   native_str(   t   gen(   t   IOLoopt   TimeoutErrort
   PollIOLoopt   PeriodicCallback(   t   app_log(   t   _Select(   t   ExceptionStackContextt   StackContextt   wrapt   NullContext(   t   AsyncTestCaset   bind_unused_portt	   ExpectLogt   gen_test(   t   unittestt   skipIfNonUnixt   skipOnTravist   skipBefore35t	   exec_testt   ignore_deprecation(   t   futurest   FakeTimeSelectc           B` s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C` s    d |  _  t t |  ƒ j ƒ  d  S(   Niè  (   t   _timet   superR   t   __init__(   t   self(    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR   0   s    	c         C` s   |  j  S(   N(   R   (   R    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   time4   s    c         C` s   |  j  | 7_  d  S(   N(   R   (   R    t   t(    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   sleep7   s    c         C` s5   t  t |  ƒ j d ƒ } | r" | S|  j | 7_ g  S(   Ni    (   R   R   t   pollR   (   R    t   timeoutt   events(    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR$   :   s
    (   t   __name__t
   __module__R   R!   R#   R$   (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR   /   s   			t   FakeTimeIOLoopc           B` s    e  Z d  Z d „  Z d „  Z RS(   sä   IOLoop implementation with a fake and deterministic clock.

    The clock advances as needed to trigger timeouts immediately.
    For use when testing code that involves the passage of time
    and no external dependencies.
    c         C` s8   t  ƒ  |  _ t t |  ƒ j d |  j d |  j j ƒ d  S(   Nt   implt	   time_func(   R   t   ftsR   R)   t
   initializeR!   (   R    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR-   I   s    c         C` s   |  j  j | ƒ d S(   s1   Simulate a blocking sleep by advancing the clock.N(   R,   R#   (   R    R"   (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR#   N   s    (   R'   R(   t   __doc__R-   R#   (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR)   B   s   	t
   TestIOLoopc           B` s(  e  Z d  „  Z e d „  ƒ Z e d „  ƒ Z 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 d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e d „  ƒ Z d „  Z e d „  ƒ Z e  d „  ƒ Z! RS(   c         ` s¨   d |  _  |  j } |  ‰ | j ‰  ‡  ‡ f d †  } t j | | ƒ | _ | j d „  ƒ | j d „  ƒ | j t j d d ƒ | j ƒ | j	 ƒ  |  j
 |  j  d ƒ d  S(   Ni    c         ` s#   ˆ j  d 7_  ˆ  | | | Ž d  S(   Ni   (   t   calls(   R    t   callbackt   argst   kwargs(   t   old_add_callbackt   test(    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   add_callback\   s    c           S` s   i  S(   N(    (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   <lambda>a   s    c           S` s   g  S(   N(    (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR7   b   s    t   millisecondsi2   i
   (   R0   t   io_loopR6   t   typest
   MethodTypet   add_timeoutt   datetimet	   timedeltat   stopt   startt
   assertLess(   R    t   loopR6   (    (   R4   R5   s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt!   test_add_callback_return_sequenceT   s    			
c         ` sz   ‡ f d †  ‰  ‡  ‡ f d †  } ˆ j  j ˆ j  j ƒ  | ƒ ˆ j ƒ  ˆ j t j ƒ  ˆ j d d ƒˆ j ˆ j ƒ d  S(   Nc           ` s   t  ˆ  _ ˆ  j ƒ  d  S(   N(   t   Truet   calledR?   (    (   R    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR1   k   s    	c           ` s,   t  ˆ _ ˆ j j ˆ  ƒ t j ƒ  ˆ _ d  S(   N(   t   FalseRE   R9   R6   R!   t
   start_time(    (   R1   R    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   schedule_callbacko   s    	t   placesi   (   R9   R<   R!   t   waitt   assertAlmostEqualRG   t
   assertTrueRE   (   R    RH   (    (   R1   R    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_add_callback_wakeupg   s    
c         ` so   ‡  f d †  } t  j d | ƒ } ˆ  j j | j ƒ ˆ  j ƒ  t j ƒ  ˆ  j } ˆ  j | d ƒ | j	 ƒ  d  S(   Nc           ` s3   t  j d ƒ t  j  ƒ  ˆ  _ ˆ  j j ˆ  j ƒ d  S(   Ng{®Gáz„?(   R!   R#   t	   stop_timeR9   R6   R?   (    (   R    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   target{   s    RO   gš™™™™™¹?(
   t	   threadingt   ThreadR9   R6   R@   RJ   R!   RN   RA   t   join(   R    RO   t   threadt   delta(    (   R    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt%   test_add_callback_wakeup_other_thready   s    
c         C` s0   |  j  j t j d d ƒ |  j ƒ |  j ƒ  d  S(   Nt   microsecondsi   (   R9   R<   R=   R>   R?   RJ   (   R    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_add_timeout_timedelta‡   s    "c         C` sˆ   t  ƒ  \ } } zQ |  j j | j ƒ  d „  t j ƒ |  j t |  j j | j ƒ  d „  t j ƒ Wd  |  j j | j ƒ  ƒ | j	 ƒ  Xd  S(   Nc         S` s   d  S(   N(   t   None(   t   fdR&   (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR7   Ž   s    c         S` s   d  S(   N(   RX   (   RY   R&   (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR7   “   s    (
   R   R9   t   add_handlert   filenoR   t   READt   assertRaisest	   Exceptiont   remove_handlert   close(   R    t   sockt   port(    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_multiple_add‹   s    
c         C` s;   t  ƒ  \ } } z |  j j | j ƒ  ƒ Wd  | j ƒ  Xd  S(   N(   R   R9   R_   R[   R`   (   R    Ra   Rb   (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_remove_without_add™   s    c         C` s!   |  j  j |  j ƒ |  j ƒ  d  S(   N(   R9   t   add_callback_from_signalR?   RJ   (   R    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_add_callback_from_signal¢   s    c         C` sP   t  ƒ  } t j d | j ƒ } | j ƒ  | j | j ƒ | j ƒ  | j ƒ  d  S(   NRO   (   R   RP   RQ   R@   Re   R?   RR   R`   (   R    t   other_ioloopRS   (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt*   test_add_callback_from_signal_other_thread¨   s    	

c         ` sx   t  j ƒ  ‰  ‡  ‡ f d †  } t ƒ  ‰ t  j d | ƒ } | j ƒ  ˆ  j ƒ  x$ t d ƒ D] } ˆ j d „  ƒ qZ Wd  S(   Nc           ` s8   ˆ j  ˆ j ƒ ˆ j ƒ  ˆ  j ƒ  ˆ j d t ƒ d  S(   Nt   all_fds(   R6   R?   R@   t   setR`   RD   (    (   t   closingRg   (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyRO   ¹   s    

RO   iè  c           S` s   d  S(   N(   RX   (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR7   Ã   s    (   RP   t   EventR   RQ   R@   RJ   t   rangeR6   (   R    RO   RS   t   i(    (   Rk   Rg   s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_add_callback_while_closing³   s    	

c         ` sL   ‡  f d †  } | ˆ  j  _ t ƒ   ˆ  j  j d „  ƒ Wd  QXˆ  j ƒ  d  S(   Nc         ` s(   ˆ  j  t j ƒ  d t ƒ ˆ  j ƒ  d  S(   Ni    (   t   assertIst   syst   exc_infot   ZeroDivisionErrorR?   (   R1   (   R    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   handle_callback_exceptionÈ   s    c           S` s   d d S(   Ni   i    (    (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR7   Ï   s    (   R9   Rt   R   R6   RJ   (   R    Rt   (    (   R    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_handle_callback_exceptionÅ   s
    
c         ` s¯   t  j ƒ  \ } } z ‡  f d †  } ˆ  j j | j ƒ  | t j ƒ ˆ  j j ˆ  j j ƒ  d t	 j
 | j d ƒ ƒ ˆ  j ƒ  ˆ  j j | j ƒ  ƒ Wd  | j ƒ  | j ƒ  Xd  S(   Nc         ` s!   ˆ  j  | t j ƒ ˆ  j ƒ  d  S(   N(   t   assertEqualR   R\   R?   (   RY   R&   (   R    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   handlerÙ   s    g{®Gáz„?t   asdf(   t   sockett
   socketpairR9   RZ   R[   R   R\   R<   R!   t	   functoolst   partialt   sendRJ   R_   R`   (   R    t   clientt   serverRw   (    (   R    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_read_while_writeableÒ   s    

c         C` s?   |  j  j |  j  j ƒ  |  j ƒ } |  j ƒ  |  j  j | ƒ d  S(   N(   R9   R<   R!   R?   RJ   t   remove_timeout(   R    t   handle(    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_remove_timeout_after_fireå   s    !
c         ` ss   xI t  d ƒ D]; } ˆ  j j ˆ  j j ƒ  d d „  ƒ } ˆ  j j | ƒ q Wˆ  j j ‡  f d †  ƒ ˆ  j ƒ  d  S(   NiÐ  i  c           S` s   d  S(   N(   RX   (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR7   ó   s    c           ` s   ˆ  j  j ˆ  j ƒ S(   N(   R9   R6   R?   (    (   R    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR7   ö   s    (   Rm   R9   R<   R!   R   R6   RJ   (   R    Rn   R%   (    (   R    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_remove_timeout_cleanupë   s    c         ` sº   t  t  g ‰  ˆ j j ƒ  } ‡  ‡ ‡ f d †  } ˆ j j | d | ƒ ‡  f d †  } ˆ j j | d | ƒ ‰ ˆ j j | d ˆ j ƒ t j d ƒ ˆ j ƒ  ˆ j ˆ  t t  g ƒ d  S(   Nc           ` s   t  ˆ  d <ˆ j j ˆ ƒ d  S(   Ni    (   RD   R9   R   (    (   R0   R    t	   t2_handle(    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   t1  s    
g{®Gáz„?c           ` s   t  ˆ  d <d  S(   Ni   (   RD   (    (   R0   (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   t2  s    g{®Gáz”?g¸…ëQ¸ž?(	   RF   R9   R!   R<   R?   R#   RJ   Rv   RD   (   R    t   nowR†   R‡   (    (   R0   R    R…   s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt    test_remove_timeout_from_timeoutù   s    
c         C` sÎ   g  } |  j  j |  j  j ƒ  | j d ƒ |  j  j t j d d ƒ | j d ƒ |  j  j |  j  j ƒ  | j d ƒ |  j  j d | j d ƒ |  j  j d |  j ƒ |  j	 ƒ  |  j
 t | ƒ d d d d g ƒ d  S(   Ni   t   secondsi    i   i   i   (   R9   R<   R!   t   appendR=   R>   t   call_att
   call_laterR?   RJ   Rv   t   sorted(   R    t   results(    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_timeout_with_arguments  s    ""
c         C` sH   |  j  j |  j  j ƒ  d „  ƒ } |  j | d  k ƒ |  j  j | ƒ d  S(   Nc           S` s   d  S(   N(   RX   (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR7     s    (   R9   R<   R!   t   assertFalseRX   R   (   R    R‚   (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_add_timeout_return  s    !c         C` sH   |  j  j |  j  j ƒ  d „  ƒ } |  j | d  k ƒ |  j  j | ƒ d  S(   Nc           S` s   d  S(   N(   RX   (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR7   $  s    (   R9   RŒ   R!   R‘   RX   R   (   R    R‚   (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_call_at_return#  s    !c         C` s?   |  j  j d d „  ƒ } |  j | d  k ƒ |  j  j | ƒ d  S(   Ni    c           S` s   d  S(   N(   RX   (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR7   )  s    (   R9   R   R‘   RX   R   (   R    R‚   (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_call_later_return(  s    c         C` sw   d t  f d „  ƒ  Y} t ƒ  \ } } | | ƒ } t ƒ  } | j | d „  t j ƒ | j d t ƒ |  j | j ƒ d S(   s¦   When a file object is used instead of a numeric file descriptor,
        the object should be closed (by IOLoop.close(all_fds=True),
        not just the fd.
        t   SocketWrapperc           B` s#   e  Z d  „  Z d „  Z d „  Z RS(   c         S` s   | |  _  t |  _ d  S(   N(   t   sockobjRF   t   closed(   R    R–   (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR   6  s    	c         S` s   |  j  j ƒ  S(   N(   R–   R[   (   R    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR[   :  s    c         S` s   t  |  _ |  j j ƒ  d  S(   N(   RD   R—   R–   R`   (   R    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR`   =  s    	(   R'   R(   R   R[   R`   (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR•   5  s   		c         S` s   d  S(   N(   RX   (   RY   R&   (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR7   C  s    Ri   N(	   t   objectR   R   RZ   R\   R`   RD   RL   R—   (   R    R•   R–   Rb   t   socket_wrapperR9   (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_close_file_object-  s    	
c         ` s:  t  ƒ  \ ‰ } g  ‰  ‡  ‡ ‡ f d †  } ˆ j j ˆ | t j ƒ t j t j ƒ  ƒ $ } | j d | f ƒ ˆ j	 ƒ  Wd QXˆ j j
 ˆ ƒ ˆ j j ˆ j ƒ  | t j ƒ t j t j ƒ  ƒ $ } | j d | f ƒ ˆ j	 ƒ  Wd QXˆ j ˆ  d ˆ ƒ ˆ j ˆ  d ˆ j ƒ  ƒ ˆ j j
 ˆ j ƒ  ƒ ˆ j ƒ  d S(   s>   The handler callback receives the same fd object it passed in.c         ` s7   ˆ  j  |  ƒ ˆ j ƒ  \ } } | j ƒ  ˆ j ƒ  d  S(   N(   R‹   t   acceptR`   R?   (   RY   R&   t   connt   addr(   t   fdsR    t   server_sock(    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   handle_connectionM  s    
s	   127.0.0.1Ni    i   (   R   R9   RZ   R   R\   t
   contextlibRk   Ry   t   connectRJ   R_   R[   Rp   Rv   R`   (   R    Rb   R    t   client_sock(    (   Rž   R    RŸ   s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt!   test_handler_callback_file_objectH  s"    
c         C` sŠ   t  ƒ  \ } } d „  } |  j j | | t j ƒ |  j t ƒ $ |  j j | j ƒ  | t j ƒ Wd  QX|  j j | j ƒ  ƒ | j	 ƒ  d  S(   Nc         S` s   d  S(   N(    (   RY   R&   (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   fd  s    (
   R   R9   RZ   R   R\   R]   R^   R[   R_   R`   (   R    RŸ   Rb   R¥   (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_mixed_fd_fileobja  s    	%c         ` sg   t  g ‰ t  g ‰  ‡  ‡ ‡ f d †  } ˆ j j | ƒ ˆ j ƒ  ˆ j ˆ  d ƒ ˆ j ˆ d ƒ d S(   s:   Calling start() twice should raise an error, not deadlock.c           ` sG   y ˆ j  j ƒ  t ˆ d <Wn t k
 r8 t ˆ  d <n Xˆ j ƒ  d  S(   Ni    (   R9   R@   RD   R^   R?   (    (   t   got_exceptiont   returned_from_startR    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR1   s  s    i    N(   RF   R9   R6   RJ   RL   R‘   (   R    R1   (    (   R§   R¨   R    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_reentrantn  s    		
c      	   C` sZ   t  ƒ  K |  j j d „  ƒ |  j j |  j ƒ t t d ƒ  |  j ƒ  Wd QXWd QXd S(   s-   Uncaught exceptions get logged by the IOLoop.c           S` s   d d S(   Ni   i    (    (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR7   „  s    s   Exception in callbackN(   R   R9   R6   R?   R   R   RJ   (   R    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_exception_logging  s
    
c      	   ` s\   t  ƒ  M t j ‡  f d †  ƒ } ˆ  j j | ƒ t t d ƒ  ˆ  j ƒ  Wd QXWd QXd S(   s:   The IOLoop examines exceptions from Futures and logs them.c           ` s   ˆ  j  j ˆ  j ƒ d d d  S(   Ni   i    (   R9   R6   R?   (    (   R    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR1   Œ  s    s   Exception in callbackN(   R   R   t	   coroutineR9   R6   R   R   RJ   (   R    R1   (    (   R    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_exception_logging_future‰  s
    
c      	   C` s`   t  t ƒ  t ƒ  d ƒ } t ƒ  9 |  j j | d ƒ t t d ƒ  |  j ƒ  Wd QXWd QXd S(   s=   The IOLoop examines exceptions from awaitables and logs them.s  
        async def callback():
            # Stop the IOLoop two iterations after raising an exception
            # to give the exception time to be logged.
            self.io_loop.add_callback(self.io_loop.add_callback, self.stop)
            1 / 0
        R1   s   Exception in callbackN(	   R   t   globalst   localsR   R9   R6   R   R   RJ   (   R    t	   namespace(    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt"   test_exception_logging_native_coro”  s    	
c      
   C` s   t  ƒ  ~ |  j j d „  ƒ |  j t ƒ  |  j ƒ  Wd  QX|  j j d „  ƒ |  j j |  j ƒ t t	 d ƒ  |  j ƒ  Wd  QXWd  QXd  S(   Nc           S` s   d d S(   Ni   i    (    (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR7   §  s    c           S` s   d d S(   Ni   i    (    (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR7   ¬  s    s   Exception in callback(
   R   R9   R6   R]   Rs   RJ   t   spawn_callbackR?   R   R   (   R    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_spawn_callback£  s    
c         ` sÕ   t  j ƒ  \ ‰ ‰ z§ ˆ j d ƒ ˆ j d ƒ g  ‰  ‡  ‡ ‡ ‡ f d †  } ˆ j j ˆ | ˆ j j ƒ ˆ j j ˆ | ˆ j j ƒ ˆ j j d ˆ j ƒ ˆ j ƒ  ˆ j	 ˆ  d g ƒ Wd  ˆ j
 ƒ  ˆ j
 ƒ  Xd  S(   Nt   abcc         ` sI   ˆ  j  |  j d ƒ ƒ |  ˆ k r5 ˆ j j ˆ ƒ n ˆ j j ˆ ƒ d  S(   Ni   (   R‹   t   recvR9   R_   (   RY   R&   (   t   chunksR~   R    R   (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   handle_read¼  s    gš™™™™™¹?(   Ry   Rz   R}   R9   RZ   R\   R   R?   RJ   Rv   R`   (   R    R¶   (    (   Rµ   R~   R    R   s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt    test_remove_handler_from_handler±  s    

c         c` sC   d „  } t  j g  t d ƒ D] } |  j j d  | ƒ ^ q ƒ Vd  S(   Nc          S` s.   x' t  d ƒ D] }  t ƒ  } | j ƒ  q Wd  S(   Ni
   (   Rm   R   R`   (   Rn   RB   (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR¥   Ð  s    	i   (   R   t   multiRm   R9   t   run_in_executorRX   (   R    R¥   Rn   (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_init_close_raceÍ  s    	("   R'   R(   RC   R   RM   RU   RW   Rc   Rd   Rf   Rh   Ro   Ru   R   R€   Rƒ   R„   R‰   R   R’   R“   R”   Rš   R¤   R¦   R©   Rª   R¬   R   R°   R²   R·   R   Rº   (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR/   S   s8   																					
		t   TestIOLoopCurrentc           B` s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C` s   d  |  _ t j ƒ  d  S(   N(   RX   R9   R   t   clear_current(   R    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   setUpÛ  s    	c         C` s#   |  j  d  k	 r |  j  j ƒ  n  d  S(   N(   R9   RX   R`   (   R    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   tearDownß  s    c         C` sU   t  ƒ  |  _ |  j |  j t  j ƒ  ƒ t  ƒ  } |  j |  j t  j ƒ  ƒ | j ƒ  d  S(   N(   R   R9   Rp   t   currentR`   (   R    t   io_loop2(    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_default_currentã  s
    	c         ` s¡   t  d t ƒ ˆ  _ ˆ  j t  j d t ƒ ƒ xo t d ƒ D]a } ‡  f d †  } ˆ  j j | ƒ ˆ  j j ƒ  ˆ  j ˆ  j	 ˆ  j ƒ ˆ  j t  j d t ƒ ƒ q8 Wd  S(   Nt   make_currentt   instancei   c           ` s    t  j ƒ  ˆ  _ ˆ  j j ƒ  d  S(   N(   R   R¿   t   current_io_loopR9   R?   (    (   R    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR¥   ó  s    (
   R   RF   R9   t   assertIsNoneR¿   Rm   R6   R@   Rp   RÄ   (   R    Rn   R¥   (    (   R    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_non_currentì  s    c         C` sk   t  d t ƒ |  _ |  j |  j t  j ƒ  ƒ |  j t ƒ  t  d t ƒ Wd  QX|  j |  j t  j ƒ  ƒ d  S(   NRÂ   (   R   RD   R9   Rp   R¿   R]   t   RuntimeError(   R    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_force_currentü  s
    (   R'   R(   R½   R¾   RÁ   RÆ   RÈ   (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR»   Ú  s
   					t   TestIOLoopCurrentAsyncc           B` s   e  Z e d  „  ƒ Z RS(   c         c` s*   t  d ƒ  } | j t j ƒ VWd  QXd  S(   Ni   (   R   t   submitR   R¼   (   R    t   e(    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_clear_without_current  s    (   R'   R(   R   RÌ   (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyRÉ     s   t   TestIOLoopAddCallbackc           B` s>   e  Z d  „  Z d „  Z e j d „  ƒ Z d „  Z d „  Z RS(   c         C` s    t  t |  ƒ j ƒ  g  |  _ d  S(   N(   R   RÍ   R½   t   active_contexts(   R    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR½     s    c         O` s   |  j  j | | | Ž d  S(   N(   R9   R6   (   R    R1   R2   R3   (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR6     s    c         c` s2   |  j  j | ƒ d  V|  j |  j  j ƒ  | ƒ d  S(   N(   RÎ   R‹   Rv   t   pop(   R    t   name(    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   context  s    c         ` sŠ   ‡  f d †  } t  ƒ  b t t j ˆ  j d ƒ ƒ  t | ƒ } Wd  QXt t j ˆ  j d ƒ ƒ  ˆ  j | ƒ Wd  QXWd  QXˆ  j ƒ  d  S(   Nc           ` s4   ˆ  j  d ˆ  j ƒ ˆ  j d ˆ  j ƒ ˆ  j ƒ  d  S(   Nt   c1t   c2(   t   assertInRÎ   t   assertNotInR?   (    (   R    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   f1!  s    RÒ   RÓ   (   R   R   R{   R|   RÑ   R   R6   RJ   (   R    RÖ   t   wrapped(    (   R    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_pre_wrap  s    
c         ` s¥   ‡  f d †  } t  ƒ  k t t j ˆ  j d ƒ ƒ  t | ƒ } Wd  QXt t j ˆ  j d ƒ ƒ  ˆ  j | d d d ƒWd  QXWd  QXˆ  j ƒ  } ˆ  j | d ƒ d  S(   Nc         ` s=   ˆ  j  d ˆ  j ƒ ˆ  j d ˆ  j ƒ ˆ  j |  | f ƒ d  S(   NRÒ   RÓ   (   RÔ   RÎ   RÕ   R?   (   t   foot   bar(   R    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyRÖ   4  s    RÒ   RÓ   i   RÚ   i   (   i   i   (	   R   R   R{   R|   RÑ   R   R6   RJ   Rv   (   R    RÖ   R×   t   result(    (   R    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_pre_wrap_with_args/  s    
"(	   R'   R(   R½   R6   R¡   t   contextmanagerRÑ   RØ   RÜ   (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyRÍ     s
   			t   TestIOLoopAddCallbackFromSignalc           B` s   e  Z d  „  Z RS(   c         O` s   |  j  j | | | Ž d  S(   N(   R9   Re   (   R    R1   R2   R3   (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR6   F  s    (   R'   R(   R6   (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyRÞ   D  s   s   futures module not presentt   TestIOLoopFuturesc           B` sM   e  Z d  „  Z d „  Z e d „  ƒ Z e e d „  ƒ ƒ Z e d „  ƒ Z RS(   c         ` s|   t  j d ƒ g } ˆ  j j | j d „  ƒ ‡  f d †  ƒ ˆ  j ƒ  } ˆ  j | j ƒ  ƒ ˆ  j | j ƒ  d  k ƒ Wd  QXd  S(   Ni   c           S` s   d  S(   N(   RX   (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR7   N  s    c         ` s   ˆ  j  |  ƒ S(   N(   R?   (   t   future(   R    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR7   O  s    (
   R   R   R9   t
   add_futureRÊ   RJ   RL   t   doneRÛ   RX   (   R    t   poolRà   (    (   R    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_add_future_threadsL  s    c         ` sâ   t  j ƒ  ‰  ‡  f d †  } ‡ f d †  } ‡ f d †  } t ƒ  ` t j d ƒ @ } t | ƒ ! ˆ j j | j | ƒ | ƒ Wd  QXˆ  j	 ƒ  Wd  QXˆ j
 ƒ  Wd  QXˆ j ˆ j j d d ƒ ˆ j ˆ j j ƒ  j d d ƒ d  S(   Nc           ` s5   ˆ  j  d ƒ ˆ  j ƒ  s% t d ƒ ‚ t d ƒ ‚ d  S(   Ni   s	   timed outt   worker(   RJ   t   isSett   AssertionErrorR^   (    (   t   ready(    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   taskW  s    c         ` s   |  ˆ  _  t d ƒ ‚ d  S(   NR1   (   Rà   R^   (   Rà   (   R    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR1   `  s    	c         ` s   | ˆ  _  ˆ  j ƒ  t S(   N(   t	   exceptionR?   RD   (   t   typt   valuet	   traceback(   R    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   handle_exceptiond  s    	
i   i    R1   Rå   (   RP   Rl   R   R   R   R   R9   Rá   RÊ   Rj   RJ   Rv   Rê   R2   Rà   (   R    Ré   R1   Rî   Rã   (    (   Rè   R    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_add_future_stack_contextT  s    	
"c         c` sx   t  j ƒ  } t  j ƒ  } d „  } t j ƒ  j d  | | | ƒ t j ƒ  j d  | | | ƒ g V} |  j | | g | ƒ d  S(   Nc         S` s   |  j  ƒ  | j ƒ  |  S(   N(   Rj   RJ   (   t
   self_eventt   other_event(    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt	   sync_funcz  s    

(   RP   Rl   R   R¿   R¹   RX   Rv   (   R    t   event1t   event2Rò   t   res(    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_run_in_executor_genu  s    	"c         c` sz   t  j ƒ  } t  j ƒ  } d „  } t t ƒ  t ƒ  d ƒ } | d | | ƒ | d | | ƒ g V} |  j | | g | ƒ d  S(   Nc         S` s   |  j  ƒ  | j ƒ  |  S(   N(   Rj   RJ   (   Rð   Rñ   (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyRò   ‘  s    

sÄ   
            async def async_wrapper(self_event, other_event):
                return await IOLoop.current().run_in_executor(
                    None, sync_func, self_event, other_event)
        t   async_wrapper(   RP   Rl   R   R­   R®   Rv   (   R    Ró   Rô   Rò   R¯   Rõ   (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_run_in_executor_native‹  s    		c         #` s§   d g ‰ d t  j f ‡  ‡ f d †  ƒ  Y‰  t j ƒ  ‰ ‡ f d †  } ˆ  d ƒ } t j ƒ  } | j | ƒ | j d  | ƒ V|  j	 d ˆ d ƒ |  j
 ˆ j ƒ  ƒ d  S(   Ni    t
   MyExecutorc           ` s   e  Z ‡  ‡ f d  †  Z RS(   c         ` s)   ˆ d c d 7<t  ˆ  |  ƒ j | | Œ S(   Ni    i   (   R   RÊ   (   R    t   funcR2   (   Rù   t   count(    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyRÊ   «  s    (   R'   R(   RÊ   (    (   Rù   Rû   (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyRù   ª  s   c           ` s   ˆ  j  ƒ  d  S(   N(   Rj   (    (   t   event(    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyRò   ±  s    i   (   R   R   RP   Rl   R   R¿   t   set_default_executorR¹   RX   Rv   RL   t   is_set(   R    Rò   t   executorRB   (    (   Rù   Rû   Rü   s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_set_default_executor¦  s    	"(	   R'   R(   Rä   Rï   R   Rö   R   Rø   R   (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyRß   J  s   		!t   TestIOLoopRunSyncc           B` s_   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 e
 d „  ƒ Z RS(	   c         C` s   t  ƒ  |  _ d  S(   N(   R   R9   (   R    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR½   ½  s    c         C` s   |  j  j ƒ  d  S(   N(   R9   R`   (   R    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR¾   À  s    c         C` s0   |  j  t j ƒ  |  j j d „  ƒ Wd  QXd  S(   Nc           S` s   d S(   Ni*   (    (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR7   Å  s    (   R]   R   t   BadYieldErrorR9   t   run_sync(   R    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_sync_resultÃ  s    c         C` s-   |  j  t ƒ  |  j j d „  ƒ Wd  QXd  S(   Nc           S` s   d d S(   Ni   i    (    (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR7   É  s    (   R]   Rs   R9   R  (   R    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_sync_exceptionÇ  s    c         C` s2   t  j d „  ƒ } |  j |  j j | ƒ d ƒ d  S(   Nc           s` s   t  j Vt  j d ƒ ‚ d  S(   Ni*   (   R   t   momentt   Return(    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR¥   Ì  s    i*   (   R   R«   Rv   R9   R  (   R    R¥   (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_async_resultË  s    c         C` s<   t  j d „  ƒ } |  j t ƒ  |  j j | ƒ Wd  QXd  S(   Nc           s` s   t  j Vd d d  S(   Ni   i    (   R   R  (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR¥   Ó  s    (   R   R«   R]   Rs   R9   R  (   R    R¥   (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_async_exceptionÒ  s    c         ` s#   ‡  f d †  } ˆ  j  j | ƒ d  S(   Nc           ` s   ˆ  j  t j ƒ  ˆ  j ƒ d  S(   N(   Rp   R   R¿   R9   (    (   R    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR¥   Û  s    (   R9   R  (   R    R¥   (    (   R    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_currentÚ  s    c         C` s5   t  j d „  ƒ } |  j t |  j j | d d ƒd  S(   Nc           s` s   t  j d ƒ Vd  S(   Ni   (   R   R#   (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR¥   à  s    R%   g{®Gáz„?(   R   R«   R]   R   R9   R  (   R    R¥   (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_timeoutß  s    c         C` sB   t  j d „  ƒ } t t ƒ  t ƒ  d ƒ } |  j j | d ƒ d  S(   Nc           s` s   t  j Vd  S(   N(   R   R  (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyRÖ   ç  s    s8   
        async def f2():
            await f1()
        t   f2(   R   R«   R   R­   R®   R9   R  (   R    RÖ   R¯   (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_native_coroutineå  s    	(   R'   R(   R½   R¾   R  R  R  R	  R
  R  R   R  (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR  ¼  s   								s"   IOLoop configuration not availablet   TestPeriodicCallbackc           B` s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C` s   t  ƒ  |  _ |  j j ƒ  d  S(   N(   R)   R9   RÂ   (   R    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR½   õ  s    c         C` s   |  j  j ƒ  d  S(   N(   R9   R`   (   R    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR¾   ù  s    c         ` sz   g  ‰  ‡  ‡ f d †  } t  | d ƒ } | j ƒ  ˆ j j d ˆ j j ƒ ˆ j j ƒ  ˆ j ˆ  d d d d d g ƒ d  S(	   Nc           ` s   ˆ  j  ˆ j j ƒ  ƒ d  S(   N(   R‹   R9   R!   (    (   R0   R    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   cbÿ  s    i'  i2   iò  iü  i  i  i  (   R
   R@   R9   R   R?   Rv   (   R    R  t   pc(    (   R0   R    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt
   test_basicü  s    
c         ` s    d d d d d d d d d d g
 ‰ d d d	 d
 d d d d d d d g } g  ‰  ‡  ‡ ‡ f d †  } t  | d ƒ } | j ƒ  ˆ j j ƒ  ˆ j ˆ  | ƒ d  S(   Ni	   i
   i   i   i#   i    iò  iü  i  i  i.  iL  ij  i’  iº  iÄ  iÎ  c           ` sJ   ˆ  j  ˆ j j ƒ  ƒ ˆ s- ˆ j j ƒ  d  Sˆ j j ˆ j d ƒ ƒ d  S(   Ni    (   R‹   R9   R!   R?   R#   RÏ   (    (   R0   R    t   sleep_durations(    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR    s
    i'  (   R
   R@   R9   Rv   (   R    t   expectedR  R  (    (   R0   R    R  s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_overrun  s    $	
c         ` sŽ   g  ‰  t  ƒ  ‰ ‡  ‡ f d †  } t | d ƒ } ˆ j ƒ  | j ƒ  ˆ j d ˆ j ƒ ˆ j ƒ  |  j ˆ  d d d d d g ƒ ˆ j ƒ  d  S(	   Nc           ` s   ˆ  j  ˆ j ƒ  ƒ d  S(   N(   R‹   R!   (    (   R0   R9   (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR  #  s    i'  i2   iò  iü  i  i  i  (   R)   R
   RÂ   R@   R   R?   Rv   R`   (   R    R  R  (    (   R0   R9   s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_io_loop_set_at_start  s    	


(   R'   R(   R½   R¾   R  R  R  (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR  ò  s
   				t   TestPeriodicCallbackMathc           B` sM   e  Z d  „  Z d „  Z d „  Z d „  Z e j e d k d ƒ d „  ƒ Z
 RS(   c         C` sT   g  } d } | | _  x8 | D]0 } | j | ƒ | j | j  ƒ | j  | } q W| S(   s9  Simulate a series of calls to the PeriodicCallback.

        Pass a list of call durations in seconds (negative values
        work to simulate clock adjustments during the call, or more or
        less equivalently, between calls). This method returns the
        times at which each call would be made.
        iè  (   t   _next_timeoutt   _update_nextR‹   (   R    R  t	   durationsR0   Rˆ   t   d(    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   simulate_calls/  s    	c         C` sE   t  d  d ƒ } |  j |  j | d g d ƒ d d d d d g ƒ d  S(	   Ni'  i    i   iò  iü  i  i  i  (   R
   RX   Rv   R  (   R    R  (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR  @  s    c         C` s}   d d d d d d d d d d d g } d d d	 d
 d d d d d d d g } t  d  d ƒ } |  j |  j | | ƒ | ƒ d  S(   Ni	   i
   i   i   i#   i    iò  iü  i  i  i.  iL  ij  i’  iº  iÄ  iÎ  i'  (   R
   RX   Rv   R  (   R    t   call_durationsR  R  (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR  E  s    '	c         C` s{   t  d  d ƒ } |  j |  j | d d d d d g ƒ d d d d	 d
 g ƒ |  j |  j | d d d g ƒ d d d g ƒ d  S(   Ni'  iþÿÿÿiÿÿÿÿiýÿÿÿi    iò  iü  i  i  i  iœÿÿÿ(   R
   RX   Rv   R  (   R    R  (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_clock_backwardsU  s
    $s   mock package not presentc         ` s”   d d d d g ‰  d d d d g } d g t  ˆ  ƒ } t d  d	 d
 d ƒ} ‡  f d †  } t j d | ƒ ! |  j |  j | | ƒ | ƒ Wd  QXd  S(   Ng      à?i   i    g      è?iò  g     ô@i  g     E@i'  t   jitterc           ` s   ˆ  j  d ƒ S(   Ni    (   RÏ   (    (   t   random_times(    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   mock_randomm  s    s   random.random(   t   lenR
   RX   R   t   patchRv   R  (   R    R  R  R  R   (    (   R  s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_jitterf  s    N(   R'   R(   R  R  R  R  R   t   skipIfR   RX   R#  (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR  .  s
   				t   TestIOLoopConfigurationc           B` s¶   e  Z d  „  Z d „  Z e j e d	 k	 d ƒ d „  ƒ Z e j e d	 k d ƒ d „  ƒ Z	 e j e d	 k d ƒ d „  ƒ Z
 e j e d	 k d ƒ e j e d	 k	 d ƒ d „  ƒ ƒ Z RS(
   c         G` sJ   d d g t  | ƒ } t j d d j | ƒ g } t t j | ƒ ƒ j ƒ  S(   Ns-   from tornado.ioloop import IOLoop, PollIOLoops*   classname = lambda x: x.__class__.__name__s   -cs   ; (   t   listRq   t
   executableRR   R   t
   subprocesst   check_outputt   strip(   R    t
   statementsR2   (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt
   run_pythonu  s
    c         C` sp   t  d  k	 rM |  j d ƒ } |  j | d ƒ |  j d ƒ } |  j | d ƒ n |  j d ƒ } |  j | d ƒ d  S(   Ns"   print(classname(IOLoop.current()))t   AsyncIOMainLoops   print(classname(IOLoop()))t   AsyncIOLoops/   print(isinstance(IOLoop.current(), PollIOLoop))RD   (   t   asyncioRX   R,  Rv   (   R    t   clst   is_poll(    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_default}  s    	s"   IOLoop configuration not availablec         C` s&   |  j  d d ƒ } |  j | d ƒ d  S(   Ns8   IOLoop.configure("tornado.platform.select.SelectIOLoop")s"   print(classname(IOLoop.current()))t   SelectIOLoop(   R,  Rv   (   R    t   default_class(    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_explicit_selectŠ  s    	s   asyncio module not presentc         C` s&   |  j  d d ƒ } |  j | d ƒ d  S(   Ns8   IOLoop.configure("tornado.platform.asyncio.AsyncIOLoop")s"   print(classname(IOLoop.current()))R-  (   R,  Rv   (   R    R0  (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_asyncio“  s    	c         C` s)   |  j  d d d ƒ } |  j | d ƒ d  S(   Ns4   from tornado.platform.asyncio import AsyncIOMainLoops   AsyncIOMainLoop().install()s"   print(classname(IOLoop.current()))R-  (   R,  Rv   (   R    R0  (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_asyncio_mainš  s
    	s   twisted module not presentc         C` s)   |  j  d d d ƒ } |  j | d ƒ d  S(   Ns2   from tornado.platform.twisted import TwistedIOLoops   TwistedIOLoop().install()s"   print(classname(IOLoop.current()))t   TwistedIOLoop(   R,  Rv   (   R    R0  (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   test_twisted¢  s
    	N(   R'   R(   R,  R2  R   R$  R/  RX   R5  R6  R7  t   twistedR9  (    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyR%  t  s   		!!t   __main__(D   t
   __future__R    R   R   t   concurrent.futuresR   R¡   R=   R{   Ry   R(  Rq   RP   R!   R:   R   R   t   ImportErrorRX   t   tornado.escapeR   t   tornadoR   t   tornado.ioloopR   R   R	   R
   t   tornado.logR   t   tornado.platform.selectR   t   tornado.stack_contextR   R   R   R   t   tornado.testingR   R   R   R   t   tornado.test.utilR   R   R   R   R   t
   concurrentR   R/  R:  R   R)   R/   t   TestCaseR»   RÉ   RÍ   RÞ   R$  Rß   R  R  R  R%  R'   t   main(    (    (    s7   lib/python2.7/site-packages/tornado/test/ioloop_test.pyt   <module>   sn   """.


ÿ ˆ,
4q6	:F9