ó
ßüÚ\c           @   sã  d  d l  m Z d  d l m Z d  d l Z d  d l 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 d  d l m Z d  d	 l m Z d  d
 l m Z m Z m Z d  d l m Z d e f d „  ƒ  YZ 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 e d d ƒ d „  ƒ ƒ Z$ e	 j% d „  ƒ Z& e ƒ  d „  ƒ Z' e e ƒ  d „  ƒ ƒ Z( e ƒ  d „  ƒ Z) d S(   iÿÿÿÿ(   t   contextmanager(   t	   timedeltaN(   t   assoc(   t   gen(   t   BatchedSend(   t   listent   connectt   CommClosedError(   t   time(   t   All(   t   gen_testt   slowt   captured_logger(   t   to_serializet
   EchoServerc           B   s)   e  Z d  Z e j d „  ƒ Z d „  Z RS(   i    c         c   sV   xO t  rQ y. | j ƒ  V} |  j d 7_ | j | ƒ VWq t k
 rM } d  SXq Wd  S(   Ni   (   t   Truet   readt   countt   writeR   (   t   selft   commt   msgt   e(    (    s=   lib/python2.7/site-packages/distributed/tests/test_batched.pyt   handle_comm   s    	c         C   s8   t  d |  j ƒ } | j ƒ  | j |  _ | j |  _ d  S(   Nt    (   R   R   t   startt   contact_addresst   addresst   stop(   R   t   listener(    (    s=   lib/python2.7/site-packages/distributed/tests/test_batched.pyR      s    
(   t   __name__t
   __module__R   R   t	   coroutineR   R   (    (    (    s=   lib/python2.7/site-packages/distributed/tests/test_batched.pyR      s   
c          c   s.   t  ƒ  }  |  j ƒ  z	 |  VWd  |  j ƒ  Xd  S(   N(   R   R   R   (   t   server(    (    s=   lib/python2.7/site-packages/distributed/tests/test_batched.pyt   echo_server%   s
    	
	c          c   s@  t  ƒ  1}  t |  j ƒ V} t d d ƒ } t t | j ƒ ƒ t | ƒ k sR t ‚ t t | j ƒ ƒ t | ƒ k sy t ‚ | j	 | ƒ t
 j d ƒ V| j d ƒ | j d ƒ | j d ƒ t
 j d ƒ V| j d ƒ | j d ƒ | j ƒ  V} | d k st ‚ | j ƒ  V} | d	 k s!t ‚ | j d k s6t ‚ Wd  QXd  S(
   Nt   intervali
   g{®Gáz”?t   hellot   worldt   HELLOi   (   R$   R$   R%   (   R&   R&   (   R"   R   R   R   t   strt   lent   buffert   AssertionErrort   reprR   R   t   sleept   sendR   t
   byte_count(   R   R   t   bt   result(    (    s=   lib/python2.7/site-packages/distributed/tests/test_batched.pyt   test_BatchedSend0   s$    ''c          c   s{   t  ƒ  l }  t |  j ƒ V} t d d ƒ } | j d ƒ | j d ƒ | j | ƒ | j ƒ  V} | d k sq t ‚ Wd  QXd  S(   NR#   i
   R$   R%   (   R$   R%   (   R"   R   R   R   R-   R   R   R*   (   R   R   R/   R0   (    (    s=   lib/python2.7/site-packages/distributed/tests/test_batched.pyt   test_send_before_startK   s    c          c   s¡   t  ƒ  ’ }  t |  j ƒ V} t d d ƒ } | j | ƒ | j d ƒ | j d ƒ | j ƒ  V} t | ƒ d k  r… | | j ƒ  V7} n  | d k s— t ‚ Wd  QXd  S(   NR#   i
   R$   R%   i   (   R$   R%   (	   R"   R   R   R   R   R-   R   R(   R*   (   R   R   R/   R0   (    (    s=   lib/python2.7/site-packages/distributed/tests/test_batched.pyt   test_send_after_stream_startZ   s    c       
   c   sæ   t  ƒ  × }  t |  j ƒ V} t d d ƒ } | j | ƒ t |  j ƒ } | j d ƒ | j ƒ  V| j	 so t
 ‚ t ƒ  } x> |  j | d k r¸ t j d ƒ Vt ƒ  | d k  s{ t
 ‚ q{ Wt j t ƒ  | j d ƒ Wd  QXWd  QXd  S(   NR#   i
   R$   i   g{®Gáz„?i   t   123(   R"   R   R   R   R   t   intR   R-   t   closeR)   R*   R   R   R,   t   pytestt   raisesR   (   R   R   R/   t   cntR   (    (    s=   lib/python2.7/site-packages/distributed/tests/test_batched.pyt   test_send_before_closej   s    	c          c   s”   t  ƒ  … }  t |  j ƒ V} t d d ƒ } | j | ƒ | j d ƒ | j ƒ  | j ƒ  Vd t | ƒ k sr t ‚ d t	 | ƒ k sŠ t ‚ Wd  QXd  S(   NR#   i
   i{   t   closed(
   R"   R   R   R   R   R-   R6   R+   R*   R'   (   R   R   R/   (    (    s=   lib/python2.7/site-packages/distributed/tests/test_batched.pyt   test_close_closed€   s    
c          c   s   t  d d ƒ }  |  j ƒ  Vd  S(   NR#   i
   (   R   R6   (   R/   (    (    s=   lib/python2.7/site-packages/distributed/tests/test_batched.pyt   test_close_not_started   s    c          c   sX   t  ƒ  I }  t |  j ƒ V} t d d ƒ } | j | ƒ | j ƒ  V| j ƒ  VWd  QXd  S(   NR#   i
   (   R"   R   R   R   R   R6   (   R   R   R/   (    (    s=   lib/python2.7/site-packages/distributed/tests/test_batched.pyt   test_close_twice–   s    t   timeouti2   c       
   #   s¤   t  ƒ  • }  t |  j ƒ V‰ g  ‰  t j ‡ f d †  ƒ } t j ‡  ‡ f d †  ƒ } t | ƒ  | ƒ  g ƒ Vˆ  t t d d d ƒ ƒ k s t ‚ ˆ j	 ƒ  Wd  QXd  S(   Nc          3   sy   t  d d ƒ }  |  j ˆ  ƒ xV t d d d ƒ D]B } |  j | ƒ |  j | d ƒ t j d t j d d ƒ ƒ Vq/ Wd  S(	   NR#   i   i    i'  i   i   gñhãˆµøä>i
   (   R   R   t   rangeR-   R   R,   t   randomt   randint(   R/   t   i(   R   (    s=   lib/python2.7/site-packages/distributed/tests/test_batched.pyR-   ¨   s    c          3   sT   xM t  rO t j t d d ƒ ˆ j ƒ  ƒ V}  ˆ  j |  ƒ |  d d k r Pq q Wd  S(   Nt   secondsi   iÿÿÿÿi'  (   R   R   t   with_timeoutR   R   t   extend(   R0   (   t   LR   (    s=   lib/python2.7/site-packages/distributed/tests/test_batched.pyt   recv±   s
    	"i    i'  i   (
   R"   R   R   R   R    R	   t   listR@   R*   R6   (   R   R-   RH   (    (   RG   R   s=   lib/python2.7/site-packages/distributed/tests/test_batched.pyt   test_stress¡   s    	$c      
   c   sÒ  t  j d ƒ } d d l m } t | j j d d d | f ƒj d ƒ j ƒ } t	 ƒ  t} t
 | j ƒ V} t d d	 ƒ } | j | ƒ i | | ƒ d
 6} xS t |  ƒ D]E }	 | j t | d |	 ƒ ƒ | j j ƒ  d k r§ t j d ƒ Vq§ q§ Wg  }
 d } xY t |
 ƒ |  k  rWt j t d d ƒ | j ƒ  ƒ V} | d 7} |
 j d „  | Dƒ ƒ qÿ W| | j k ou| j k n s€t ‚ | j |  k s•t ‚ |
 t t |  ƒ ƒ k s³t ‚ | j ƒ  | j ƒ  VWd  QXd  S(   Nt   numpyiÿÿÿÿ(   R   i    iÿ   t   sizet   u1R#   g{®Gáz„?t   xRC   g      à?gü©ñÒMbP?RD   i   i   c         s   s   |  ] } | d  Vq d S(   RC   N(    (   t   .0t   r(    (    s=   lib/python2.7/site-packages/distributed/tests/test_batched.pys	   <genexpr>Ú   s    (   R7   t   importorskipt   distributed.protocolR   t   bytesRA   RB   t   astypet   dataR"   R   R   R   R   R@   R-   R   R   R,   R(   RE   R   R   RF   t   batch_countR   R*   t   message_countRI   R6   (   t   nsendst   nbytest   npR   RU   R   R   R/   R   RC   t   resultsR   RG   (    (    s=   lib/python2.7/site-packages/distributed/tests/test_batched.pyt   run_traffic_jam¿   s.    0"
(
c           c   s   t  d d ƒ Vd  S(   Ni2   ià“ (   R\   (    (    (    s=   lib/python2.7/site-packages/distributed/tests/test_batched.pyt   test_sending_traffic_jamå   s    c           c   s   t  d d ƒ Vd  S(   Niô  i`ã (   R\   (    (    (    s=   lib/python2.7/site-packages/distributed/tests/test_batched.pyt   test_large_traffic_jamê   s    c          c   sƒ  t  ƒ  t}  t |  j ƒ V} t d d d d g ƒ } | j | ƒ | j i t d ƒ d 6ƒ | j i t d ƒ d 6ƒ t j d ƒ V| j i t d	 „  ƒ d 6ƒ t	 d
 ƒ  } t j d ƒ VWd  QX| j
 ƒ  } d | k sá t ‚ d | k só t ‚ d | k st ‚ | j ƒ  V} t | ƒ i d d 6i d d 6g k s>t ‚ t j t j ƒ ' t j t d d ƒ | j ƒ  ƒ V} Wd  QXWd  QXd  S(   NR#   t   10mst   serializerst   msgpacki{   RN   R$   gš™™™™™¹?c         S   s   |  d S(   Ni   (    (   RN   (    (    s=   lib/python2.7/site-packages/distributed/tests/test_batched.pyt   <lambda>ü   R   s   distributed.protocolt	   serializet   typet   functiont   millisecondsid   (   R"   R   R   R   R   R-   R   R   R,   R   t   getvalueR*   R   RI   R7   R8   t   TimeoutErrorRE   R   (   R   R   R/   t   siot   valueR   (    (    s=   lib/python2.7/site-packages/distributed/tests/test_batched.pyt   test_serializersð   s$    ,(*   t
   contextlibR    t   datetimeR   RA   R7   t   toolzR   t   tornadoR   t   distributed.batchedR   t   distributed.coreR   R   R   t   distributed.metricsR   t   distributed.utilsR	   t   distributed.utils_testR
   R   R   RR   R   t   objectR   R"   R1   R2   R3   R:   R<   R=   R>   RJ   R    R\   R]   R^   Rk   (    (    (    s=   lib/python2.7/site-packages/distributed/tests/test_batched.pyt   <module>   s6   &