ó
¨œž[c           @` sK  d  d l  m Z m Z m Z d  d l m Z d  d l m Z d  d l m Z m	 Z	 d  d l
 m Z d  d l m Z m Z d  d l m Z m Z m Z d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ e d k rGe j ƒ  n  d S(   i    (   t   absolute_importt   divisiont   print_function(   t	   timedelta(   t   random(   t   gent   queues(   t   TimeoutError(   t   gen_testt   AsyncTestCase(   t   unittestt   skipBefore35t	   exec_testt   QueueBasicTestc           B` s)   e  Z d  „  Z d „  Z e d „  ƒ Z RS(   c         C` sW  t  j d d ƒ } |  j t t | ƒ ƒ t | ƒ ƒ |  j t t | ƒ ƒ t | ƒ ƒ | j ƒ  xv t | ƒ t | ƒ f D]\ } |  j	 | j
 d ƒ ƒ |  j d | ƒ |  j d | ƒ |  j d | ƒ |  j d | ƒ qy W| j d  ƒ | j d  ƒ | j d  ƒ xP t | ƒ t | ƒ f D]6 } |  j d | ƒ |  j d	 | ƒ |  j d
 | ƒ qWd  S(   Nt   maxsizei   s   <Queues	   maxsize=1s
   getters[1]t   putterst   taskst   getterss
   putters[1]s   tasks=2(   R   t   Queuet   assertInt   hext   idt   reprt   assertNotInt   strt   gett
   assertTruet
   startswitht   putt   None(   t   selft   qt   q_str(    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   test_repr_and_str   s"    ""
c         C` su   t  j ƒ  } x$ d d d g D] } | j | ƒ q Wg  t d ƒ D] } | j ƒ  ^ q@ } |  j d d d g | ƒ d  S(   Ni   i   i   (   R   R   t
   put_nowaitt   ranget
   get_nowaitt   assertEqual(   R   R   t   it   _t   items(    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt
   test_order0   s
    %c         c` sQ  |  j  t t j d d  ƒ|  j  t t j d d ƒt j d d ƒ } |  j | j ƒ  ƒ |  j | j	 ƒ  ƒ |  j
 d | j ƒ |  j | j d ƒ j ƒ  ƒ |  j | j d ƒ j ƒ  ƒ |  j | j ƒ  ƒ |  j | j	 ƒ  ƒ | j d ƒ } |  j | j ƒ  ƒ |  j
 d | j ƒ  Vƒ |  j | j ƒ  ƒ |  j | j ƒ  ƒ |  j | j	 ƒ  ƒ d  S(   NR   iÿÿÿÿi   i    i   (   t   assertRaisest	   TypeErrorR   R   R   t
   ValueErrorR   t   emptyt   assertFalset   fullR%   R   R   t   doneR   (   R   R   t   put2(    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   test_maxsize8   s     (   t   __name__t
   __module__R!   R)   R   R2   (    (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyR      s   		t   QueueGetTestc           B` s˜   e  Z e d  „  ƒ Z d „  Z d „  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z	 e d „  ƒ Z
 e d „  ƒ Z e e d	 „  ƒ ƒ Z RS(
   c         c` s4   t  j ƒ  } | j d ƒ |  j d | j ƒ  Vƒ d  S(   Ni    (   R   R   R"   R%   R   (   R   R   (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   test_blocking_getN   s    c         C` s3   t  j ƒ  } | j d ƒ |  j d | j ƒ  ƒ d  S(   Ni    (   R   R   R"   R%   R$   (   R   R   (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   test_nonblocking_getT   s    c         C` s&   t  j ƒ  } |  j t  j | j ƒ d  S(   N(   R   R   R*   t
   QueueEmptyR$   (   R   R   (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   test_nonblocking_get_exceptionY   s    c         c` sT   t  j d ƒ } | j d ƒ | j d ƒ } |  j d | j ƒ  Vƒ |  j | Vƒ d  S(   Ni   i    (   R   R   R"   R   R%   R   t   assertIsNone(   R   R   R   (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   test_get_with_putters]   s
    c         c` s›   t  j ƒ  } | j d ƒ |  j j d | j d ƒ |  j j d | j d ƒ |  j d | j d t d d ƒ ƒ Vƒ |  j d | j d t d d ƒ ƒ Vƒ d  S(   Ni    g{®Gáz„?i   g{®Gáz”?i   t   timeoutt   seconds(   R   R   R   t   io_loopt
   call_laterR%   R   R   (   R   R   (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   test_blocking_get_waite   s    &c         c` sp   t  j ƒ  } | j d t d d ƒ ƒ } | j ƒ  } |  j t ƒ 
 | VWd  QX| j d ƒ |  j d | Vƒ d  S(   NR<   R=   g{®Gáz„?i    (   R   R   R   R   R*   R   R"   R%   (   R   R   t   get_timeoutR   (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   test_get_timeoutn   s    c         c` sW   t  j ƒ  } | j d t d d ƒ ƒ } | j d ƒ t j d ƒ V|  j d | Vƒ d  S(   NR<   R=   g{®Gáz„?i    g{®Gáz”?(   R   R   R   R   R   R   t   sleepR%   (   R   R   R   (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   test_get_timeout_preemptedy   s
    c         c` s  t  j d ƒ } g  t d ƒ D]! } | j | t d d ƒ ƒ ^ q } | j d ƒ } |  j d t | j ƒ ƒ t j	 d ƒ V|  j d t | j ƒ ƒ |  j
 | j ƒ  ƒ | j d ƒ |  j d | j ƒ  Vƒ |  j d t | j ƒ ƒ x% | d D] } |  j t | j ƒ qí Wd  S(   Ni   i
   R=   g{®Gáz„?g{®Gáz”?i   i    (   R   R   R#   R   R   R%   t   lent   _puttersR   RC   R.   R0   R   R*   R   t   result(   R   R   R&   R   R   t   putter(    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt!   test_get_clears_timed_out_putters   s    4c         c` sç   t  j ƒ  } g  t d ƒ D] } | j t d d ƒ ƒ ^ q } | j ƒ  } |  j d t | j ƒ ƒ t j	 d ƒ V|  j d t | j ƒ ƒ |  j
 | j ƒ  ƒ | j ƒ  |  j d t | j ƒ ƒ x! | D] } |  j t | j ƒ qÆ Wd  S(   Ni
   R=   g{®Gáz„?i   g{®Gáz”?i   (   R   R   R#   R   R   R%   RE   t   _gettersR   RC   R.   R0   R*   R   RG   (   R   R   R'   R   R   t   getter(    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt!   test_get_clears_timed_out_getters‘   s    1
c         c` sv   t  j ƒ  } x! t d ƒ D] } | j | ƒ q Wt t ƒ  t ƒ  d ƒ } | d ƒ  V} |  j | t t d ƒ ƒ ƒ d  S(   Ni   s·   
        async def f():
            results = []
            async for i in q:
                results.append(i)
                if i == 4:
                    return results
        t   f(	   R   R   R#   R   R   t   globalst   localsR%   t   list(   R   R   R&   t	   namespacet   results(    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   test_async_forŸ   s    	(   R3   R4   R   R6   R7   R9   R;   R@   RB   RD   RI   RL   R   RS   (    (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyR5   M   s   			t   QueuePutTestc           B` s˜   e  Z e d  „  ƒ 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 RS(
   c         C` s3   t  j ƒ  } | j d ƒ |  j d | j ƒ  ƒ d  S(   Ni    (   R   R   R   R%   R$   (   R   R   (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   test_blocking_put³   s    c         C` s9   t  j d ƒ } | j d ƒ |  j t  j | j d ƒ d  S(   Ni   i    (   R   R   R   R*   t	   QueueFullR"   (   R   R   (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   test_nonblocking_put_exception¹   s    c         c` sf   t  j ƒ  } | j ƒ  } | j ƒ  } | j d ƒ V|  j d | Vƒ | j d ƒ V|  j d | Vƒ d  S(   Ni    i   (   R   R   R   R   R%   (   R   R   t   get0t   get1(    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   test_put_with_getters¾   s    c         c` st   t  j ƒ  } | j ƒ  } | j ƒ  } | j d ƒ t j V|  j d | Vƒ | j d ƒ t j V|  j d | Vƒ d  S(   Ni    i   (   R   R   R   R"   R   t   momentR%   (   R   R   RX   RY   (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt!   test_nonblocking_put_with_gettersÈ   s    c         c` sŒ   t  j d ƒ } | j d ƒ |  j j d | j ƒ |  j j d | j ƒ | j d ƒ | j d ƒ g } |  j t d „  | Dƒ ƒ ƒ | Vd  S(   Ni   i    g{®Gáz„?g{®Gáz”?c         s` s   |  ] } | j  ƒ  Vq d  S(   N(   R0   (   t   .0RM   (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pys	   <genexpr>Ü   s    (	   R   R   R"   R>   R?   R   R   R.   t   any(   R   R   t   futures(    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   test_blocking_put_waitÕ   s    c         c` sš   t  j d ƒ } | j d ƒ | j d d t d d ƒ ƒ} | j d ƒ } |  j t ƒ 
 | VWd  QX|  j d | j ƒ  ƒ |  j d | j	 ƒ  Vƒ | Vd  S(   Ni   i    R<   R=   g{®Gáz„?i   (
   R   R   R"   R   R   R*   R   R%   R$   R   (   R   R   t   put_timeoutR   (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   test_put_timeoutß   s    c         c` s[   t  j d ƒ } | j d ƒ | j d d t d d ƒ ƒ} | j ƒ  t j d ƒ V| Vd  S(   Ni   i    R<   R=   g{®Gáz„?g{®Gáz”?(   R   R   R"   R   R   R   R   RC   (   R   R   R   (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   test_put_timeout_preemptedï   s    
c         c` s÷   t  j d ƒ } g  t d ƒ D]! } | j | t d d ƒ ƒ ^ q } | j d ƒ } |  j d t | j ƒ ƒ t j	 d ƒ V|  j d t | j ƒ ƒ |  j
 | j ƒ  ƒ | j d ƒ |  j d t | j ƒ ƒ x% | d D] } |  j t | j ƒ qÖ Wd  S(   Ni   i
   R=   g{®Gáz„?g{®Gáz”?i   i   (   R   R   R#   R   R   R%   RE   RF   R   RC   R.   R0   R*   R   RG   (   R   R   R&   R   R   RH   (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt!   test_put_clears_timed_out_puttersø   s    4c         c` s  t  j ƒ  } g  t d ƒ D] } | j t d d ƒ ƒ ^ q } | j ƒ  } | j ƒ  |  j d t | j ƒ ƒ t j	 d ƒ V|  j d t | j ƒ ƒ |  j
 | j ƒ  ƒ | j d ƒ |  j d t | j ƒ ƒ |  j d | Vƒ x! | D] } |  j t | j ƒ qä Wd  S(   Ni
   R=   g{®Gáz„?i   g{®Gáz”?i    i   (   R   R   R#   R   R   R%   RE   RJ   R   RC   R.   R0   R   R*   R   RG   (   R   R   R'   R   R   RK   (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt!   test_put_clears_timed_out_getters  s    1
c         c` s0  t  j d d ƒ } |  j | j ƒ  ƒ |  j | j ƒ  ƒ | j d ƒ | j d ƒ |  j | j ƒ  ƒ |  j | j ƒ  ƒ |  j t  j | j d ƒ |  j	 d | j
 ƒ  ƒ |  j | j ƒ  ƒ |  j | j ƒ  ƒ | j d ƒ V| j d ƒ } |  j | j ƒ  ƒ |  j	 d | j ƒ  Vƒ | V|  j | j ƒ  ƒ d  S(   NR   gÍÌÌÌÌÌô?i    i   i   i   (   R   R   R   R-   R.   R/   R"   R*   RV   R%   R$   R   R0   R   (   R   R   R   (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   test_float_maxsize  s"    (   R3   R4   R   RU   RW   RZ   R\   R`   Rb   Rc   Rd   Re   Rf   (    (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyRT   ²   s   	

	t   QueueJoinTestc           B` sV   e  Z e j Z d  „  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z	 e d „  ƒ Z
 RS(   c         C` s#   |  j  ƒ  } |  j t | j ƒ d  S(   N(   t   queue_classR*   R,   t	   task_done(   R   R   (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   test_task_done_underflow1  s    c         #` s   ˆ j  ƒ  ‰  x! t d ƒ D] } ˆ  j | ƒ q Wd ˆ _ t j ‡  ‡ f d †  ƒ } | ƒ  | ƒ  ˆ  j ƒ  Vˆ j t t d ƒ ƒ ˆ j ƒ d  S(   Nid   i    c          3` sL   xE t  rG ˆ  j ƒ  V}  ˆ j |  7_ ˆ  j ƒ  t j t ƒ  d ƒ Vq Wd  S(   Ng{®Gáz„?(   t   TrueR   t   accumulatorRi   R   RC   R   (   t   item(   R   R   (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   worker=  s
    	
(	   Rh   R#   R"   Rl   R   t	   coroutinet   joinR%   t   sum(   R   R&   Rn   (    (   R   R   s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   test_task_done5  s    		c         c` s’   |  j  ƒ  } | j d ƒ | j ƒ  } |  j | j ƒ  ƒ | j ƒ  V|  j | j ƒ  ƒ t j V|  j | j ƒ  ƒ | j ƒ  |  j	 | j ƒ  ƒ d  S(   Ni    (
   Rh   R"   Rp   R.   R0   R   R   R[   Ri   R   (   R   R   Rp   (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   test_task_done_delayK  s    
c         c` s&   |  j  ƒ  } | j ƒ  V| j ƒ  Vd  S(   N(   Rh   Rp   (   R   R   (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   test_join_empty_queueY  s    c      	   c` sM   |  j  ƒ  } | j d ƒ |  j t ƒ  | j d t d d ƒ ƒ VWd  QXd  S(   Ni    R<   R=   g{®Gáz„?(   Rh   R   R*   R   Rp   R   (   R   R   (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   test_join_timeout_  s    (   R3   R4   R   R   Rh   Rj   R   Rr   Rs   Rt   Ru   (    (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyRg   .  s   		t   PriorityQueueJoinTestc           B` s    e  Z e j Z e d  „  ƒ Z RS(   c         c` sÊ   |  j  d d ƒ } | j d
 ƒ | j d ƒ |  j | j ƒ  ƒ | j d ƒ | j d ƒ |  j d | j ƒ  ƒ |  j d | j ƒ  Vƒ |  j d | j ƒ  ƒ |  j d | j ƒ  Vƒ |  j | j ƒ  ƒ d  S(   NR   i   i   t   ai    t   bi   t   ct   d(   i   Rw   (   i    Rx   (   i   Ry   (   i   Rz   (   i    Rx   (   i   Rw   (   i   Rz   (   i   Ry   (	   Rh   R"   R   R/   R   R%   R$   R   R-   (   R   R   (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyR)   j  s    (   R3   R4   R   t   PriorityQueueRh   R   R)   (    (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyRv   g  s   	t   LifoQueueJoinTestc           B` s    e  Z e j Z e d  „  ƒ Z RS(   c         c` sÊ   |  j  d d ƒ } | j d ƒ | j d ƒ |  j | j ƒ  ƒ | j d ƒ | j d ƒ |  j d | j ƒ  ƒ |  j d | j ƒ  Vƒ |  j d | j ƒ  ƒ |  j d | j ƒ  Vƒ |  j | j ƒ  ƒ d  S(   NR   i   i   i    i   (	   Rh   R"   R   R/   R   R%   R$   R   R-   (   R   R   (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyR)   |  s    (   R3   R4   R   t	   LifoQueueRh   R   R)   (    (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyR|   y  s   	t   ProducerConsumerTestc           B` s   e  Z e d  „  ƒ Z RS(   c         #` s…   t  j d d ƒ ‰ g  ‰  t j ‡  ‡ f d †  ƒ } t j ‡ f d †  ƒ } | ƒ  | ƒ  Vˆ j ƒ  V|  j t t d ƒ ƒ ˆ  ƒ d  S(   NR   i   c           3` s/   x( t  r* ˆ  j ˆ j ƒ  Vƒ ˆ j ƒ  q Wd  S(   N(   Rk   t   appendR   Ri   (    (   t   historyR   (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   consumer•  s    	c          3` s)   x" t  d ƒ D] }  ˆ  j |  ƒ Vq Wd  S(   Ni
   (   R#   R   (   Rm   (   R   (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   producer›  s    i
   (   R   R   R   Ro   Rp   R%   RP   R#   (   R   R   R‚   (    (   R€   R   s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   test_producer_consumerŒ  s    (   R3   R4   R   Rƒ   (    (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyR~   ‹  s   t   __main__N(   t
   __future__R    R   R   t   datetimeR   R   t   tornadoR   R   t   tornado.genR   t   tornado.testingR   R	   t   tornado.test.utilR
   R   R   R   R5   RT   Rg   Rv   R|   R~   R3   t   main(    (    (    s7   lib/python2.7/site-packages/tornado/test/queues_test.pyt   <module>   s   5e|9