ó
ßüÚ\c        	   @` sQ  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
 Z
 d  d l Z d  d l m Z d  d l m Z d  d l Z d  d l m Z 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 d  d l m Z m Z m  Z  m! Z! m" Z" m# Z# m$ Z$ m% Z% d  d l m& Z& m' Z' m( Z( d  d l) m Z d  d l* m+ Z+ e' Z, e( Z- e d e. ƒ d „  ƒ Z/ e j0 j1 d/ e! d f e  d f g ƒ d „  ƒ Z2 e j0 j3 e j4 j5 d ƒ d d ƒe d e. d d0 g d d d ƒ d  „  ƒ ƒ Z7 d! „  Z8 e d g  d e. d d ƒ d" „  ƒ Z9 e d d1 g d# d e. d d$ ƒ d% „  ƒ Z: d& „  Z; e j0 j< e# e d e. d d2 g d' d d ƒ d( „  ƒ ƒ ƒ Z= e j0 j> e d e. d d3 g d# d d$ ƒ d) „  ƒ ƒ Z? e# e d d4 g d# d e. d d* ƒ d+ „  ƒ ƒ Z@ e j0 jA d d, ƒ e d e. d d- d d5 g ƒ d. „  ƒ ƒ ZB d S(6   i    (   t   print_functiont   divisiont   absolute_import(   t   CancelledError(   t	   timedelta(   t   addN(   t   sleep(   t   delayed(   t   concatt   sliding_window(   t   Clientt   waitt   Nanny(   t   config(   t   time(   t   All(   t   gen_clustert   clustert   inct   slowinct   slowaddt   slowt   slowsumt   bump_rlimit(   t   loopt   nodebug_setup_modulet   nodebug_teardown_module(   R   (   t   gent   clientc         c` sÁ   d } |  j  t t | ƒ ƒ } xj t | ƒ d k rŠ t j d ƒ Vg  t d t | ƒ d ƒ D]' } |  j t | | | | d ƒ ^ qZ } q! W| d V} | t t  t t | ƒ ƒ ƒ k s½ t	 ‚ d  S(   Ni   i   i   gš™™™™™¹?i    i@   (
   t   mapR   t   ranget   lenR   R   t   submitR   t   sumt   AssertionError(   t   ct   st   at   bt   nt   seqt   it   result(    (    s<   lib/python2.7/site-packages/distributed/tests/test_stress.pyt   test_stress_1*   s    Jt   funcR'   id   iè  c   	      C` s˜   t  ƒ  ‰ \ } \ } } t | d d |  ƒ^ } | j | d ƒ } x& t | ƒ D] } | j | | ƒ } qP W| j ƒ  | d k sˆ t ‚ Wd  QXWd  QXd  S(   Nt   addressR   i   i   (   R   R
   R    R   R*   R"   (	   R   R,   R'   R$   R%   R&   R#   t   xR)   (    (    s<   lib/python2.7/site-packages/distributed/tests/test_stress.pyt   test_stress_gc6   s    t   wint   reasons#   test can leave dangling RPC objectst   ncoress	   127.0.0.1i   i   t   timeoutc   	      g` s   t  j d ƒ } | j j d d d ƒ} |  j | ƒ } t | g ƒ V| j d d ƒ | j d d ƒ d j ƒ  } t | j ƒ t | j ƒ } xm t	 d ƒ D]_ } |  j
 | ƒ } x9 t | j ƒ t j ƒ  d d	 | k ré t j d
 ƒ Vq± W|  j | ƒ Vq™ Wd  S(   Ns
   dask.arrayi2   t   chunksi   t   axisi    i   i   g      à?g{®Gáz„?(   i2   i2   (   i   i   (   t   pytestt   importorskipt   randomt   persistR   R!   t   stdR   t   daskR   t   computet   waitingR   R   t   _cancel(	   R#   R$   t   workerst   daR.   t   yt   n_todoR)   t   f(    (    s<   lib/python2.7/site-packages/distributed/tests/test_stress.pyt   test_cancel_stressA   s    ,*c   
      C` sö   t  j d ƒ } | j j d d d ƒ} t d d ƒ º \ } \ } } t | d d |  ƒ } | j | ƒ } | j d	 d
 ƒ | j d	 d ƒ d j ƒ  } t | ƒ x@ t	 d ƒ D]2 } | j
 | ƒ }	 t t j ƒ  ƒ | j |	 ƒ q° WWd  QXWd  QXd  S(   Ns
   dask.arrayi2   R4   i   t   active_rpc_timeouti
   R-   R   R5   i    i   i   (   i2   i2   (   i   i   (   R6   R7   R8   R   R
   R9   R!   R:   R   R   R<   R   t   cancel(
   R   R@   R.   R$   R%   R&   R#   RA   R)   RC   (    (    s<   lib/python2.7/site-packages/distributed/tests/test_stress.pyt   test_cancel_stress_syncS   s    ,
c         #` sÆ   d ˆ  _  t j d ƒ } | j j d d d d ƒ } | d j | d | j d	 d ƒ } |  j | ƒ } t j ‡  f d
 †  ƒ } t j	 t
 d d ƒ t g  t d ƒ D] } | d | ƒ ^ q¡ ƒ ƒ Vd  S(   Ni † s
   dask.arrayt   sizeiÐ  R4   id   i   i   R5   c         3` su   t  ƒ  } xe t  ƒ  | d k  rp t ˆ  j d d d ˆ  j ƒ} | j d ƒ t j |  ƒ V| j ƒ  Vt d ƒ q Wd  S(   Ni   R2   i   R   i    s   Killed nanny(	   R   R   R-   R   t   startR   R   t   closet   print(   t   delayRI   R'   (   R$   (    s<   lib/python2.7/site-packages/distributed/tests/test_stress.pyt   create_and_destroy_workerl   s    	t   minutesi   gš™™™™™¹?(   iÐ  iÐ  (   id   id   (   t   allowed_failuresR6   R7   R8   t   Tt   meanR9   R   t	   coroutinet   with_timeoutR   R   R   (   R#   R$   R@   R.   RA   t   zRM   R)   (    (   R$   s<   lib/python2.7/site-packages/distributed/tests/test_stress.pyt!   test_stress_creation_and_deletiona   s    	%i
   i<   c      
   g` sÿ  d d  l  } d | _ t j d ƒ } |  j g  t t | ƒ ƒ D] } | j  j  d ƒ ^ q= ƒ V} |  j | d d ƒVg  t d ƒ D]C } t t	 d t
 ƒ| j | ƒ | j | ƒ d	 d
 d d | ƒ^ q€ } g  t t d | ƒ ƒ D]= \ } \ } }	 t t	 d t
 ƒ| |	 d	 d d d | ƒ^ qß } |  j | ƒ }
 d  } } t | ƒ } d d l m } x¥ t d ƒ D]— } t j d ƒ Vy | j ƒ  WnK t k
 rÓ}  | j |  ƒ t j d ƒ rÍd d  l } | j ƒ  qÔ‚  n X| j | ƒ } | j ƒ  V| j | ƒ qdWzò y' t j t d d ƒ |  j  |
 ƒ ƒ VWnÄ t j! k
 rßd „  | Dƒ } t" | j# ƒ t" | ƒ t" |
 ƒ y0 g  | j$ ƒ  D] } | j% r}| ^ q}d } Wn t k
 r°n Xt j d ƒ rÙd d  l } | j ƒ  qð‚  n t& k
 rïn XWd  d  }
 Xd  S(   Ni    iè  t   numpyi'  R'   i   i2   t   pureRL   gš™™™™™©?t   dask_key_names   slowadd-1-%dg{®Gáz”?s   slowadd-2-%d(   t   loggeri   gš™™™™™¹?s
   log-on-errt   secondsi   c         S` s+   i  |  ]! } | j  d  k r | | j “ q S(   t   closed(   t   statusR-   (   t   .0t   w(    (    s<   lib/python2.7/site-packages/distributed/tests/test_stress.pys
   <dictcomp>°   s   	 ('   R8   RO   R6   R7   t   scatterR   R   t
   _replicateR   R   t   Truet   choicet	   enumerateR	   R<   t   Nonet   listt   distributed.schedulerRY   R   R   t   validate_statet	   Exceptiont	   exceptionR   t   gett   pdbt	   set_traceRJ   t   removeRS   R   t   _gathert   TimeoutErrorRK   t
   processingt   valuest   waiting_for_dataR   (   R#   R$   R?   R8   t   npR)   t   Lt   addsR%   R&   t   futurest   aliveRY   Rk   R^   t   wst   worker(    (    s<   lib/python2.7/site-packages/distributed/tests/test_stress.pyt   test_stress_scatter_death~   sZ    	;SV
 '

0c          G` s
   t  |  ƒ S(   N(   R!   (   t   args(    (    s<   lib/python2.7/site-packages/distributed/tests/test_stress.pyt   vsumÄ   s    iP   c      
   g` sô   t  | _ t j d ƒ } t j d ƒ } t | j d ƒ d } g  t | ƒ D] } | j j d d d ƒ^ qJ } g  | D] } | | j ^ qu }	 | j	 t
 d d	 d
 t t |	 d g | ƒ ƒ Œ}
 |  j |
 j ƒ  ƒ } | V} t | t ƒ sð t ‚ d  S(   Ns
   dask.arrayt   resourcei    i   id   R4   i   t   ijt   dtypet   float64(   id   id   (   i   i   (   t   Falset   validateR6   R7   R   t   RLIMIT_NOFILER   R8   RP   t   atopR|   R   t   zipR<   R!   t
   isinstancet   floatR"   (   R#   R$   R?   R@   R}   R'   R)   t   xsR.   t   ysRT   t   futureR*   (    (    s<   lib/python2.7/site-packages/distributed/tests/test_stress.pyt   test_stress_communicationÈ   s    	1 1c         g` s^  t  | _ x | D] } t  | _ q Wt t ƒ } g  t d ƒ D] } t t ƒ | d d ƒ^ q< } xH t d ƒ D]: } g  t d | ƒ D] } t t ƒ | d d ƒ^ qƒ } qm Wt t ƒ | ƒ } |  j | ƒ }	 x‹ |	 j	 d k rYt
 j d ƒ VxZ t d ƒ D]L } t j | ƒ }
 t j | ƒ } |
 | k	 rù | j |
 j | j d ƒ qù qù W| j sÏ PqÏ qÏ Wd  S(	   Nid   RL   g{®Gázt?i   t   finishedgš™™™™™¹?i   g      à?(   R   R‚   R   R   R   R	   R   R!   R<   R\   R   R   R8   Rb   t
   work_stealR-   Rp   (   R#   R$   R?   R^   t   dincR)   Rt   t   partt   totalRŠ   R%   R&   (    (    s<   lib/python2.7/site-packages/distributed/tests/test_stress.pyt   test_stress_stealÝ   s$    	18 	ix   c   	      g` sà   t  j d ƒ } | j j d d d d	 ƒ } x2 t d ƒ D]$ } | j d
 ƒ } | j d ƒ } q7 W|  j | j ƒ  ƒ } xZ t | j j	 ƒ  ƒ rÐ t
 j d ƒ Vt j t | ƒ ƒ } x | j D] } | j ƒ  q¹ Wqw Wt | ƒ Vd  S(   Ns
   dask.arrayRH   iè  R4   i   i   g      à?(   iè  iè  (   iè  i   (   i   iè  (   iè  i   (   R6   R7   R8   R   t   rechunkR<   R!   t   anyRp   Rq   R   R   Rb   Re   t   _commst   abortR   (	   R#   R$   R?   R@   R.   R)   RŠ   Ry   t   comm(    (    s<   lib/python2.7/site-packages/distributed/tests/test_stress.pyt   test_close_connections÷   s    se   IOStream._handle_write blocks on large write_buffer https://github.com/tornadoweb/tornado/issues/2110i   c      
   c` s¿  t  j d ƒ t  j d ƒ } | j j d ƒ } | j } d d l m } d d l m } d d l m	 } d d l
 m }	 x> | | g D]0 }
 | | | d	 |
 j ƒƒ |
 _ t ƒ  |
 _ q„ W|	 d
 d ƒ 1 } |  j | d t d t ƒV} t j d ƒ VWd  QX| j ƒ  d  } x: | | g D], }
 |
 j d j d j ƒ  d k  st ‚ qW| j g  | j D] } | j ^ qWƒ } | | d 8} | j ƒ  | d d k  st ‚ | d | d d k  s»t ‚ d  S(   Nt   crickRV   i áõi    (   t   Digest(   t   defaultdict(   t   partial(   t   ResourceProfilerR   t   dtg{®Gáz„?t   directt   hashg      à?s   tick-durationi   g    €„.Aiÿÿÿÿg333333ó?(   R6   R7   R8   t   nbytest   distributed.counterR™   t   collectionsRš   t	   functoolsR›   t   dask.diagnosticsRœ   t   io_loopt   digestsR   t
   _last_tickR_   Ra   R   R   R   RJ   Rd   t
   componentst   maxR"   t   arrayt   resultst   mem(   R#   R$   R^   Rs   R.   t   x_nbytesR™   Rš   R›   Rœ   t   servert   rprofRŠ   t   tR    (    (    s<   lib/python2.7/site-packages/distributed/tests/test_stress.pyt#   test_no_delay_during_large_transfer  s,    	
*( (   R,   R'   (   s	   127.0.0.1i   (   s	   127.0.0.1i   (   s	   127.0.0.1i   (   s	   127.0.0.1i   (   s	   127.0.0.1i   (   s	   127.0.0.1i   (C   t
   __future__R    R   R   t   concurrent.futuresR   t   datetimeR   t   operatorR   R8   t   sysR   R   R;   R   R6   t   toolzR   R	   t   distributedR
   R   R   t   distributed.configR   t   distributed.metricst   distributed.utilsR   t   distributed.utils_testR   R   R   R   R   R   R   R   R   R   R   t   distributed.clientt   tornadoR   t   setup_modulet   teardown_moduleRa   R+   t   markt   parametrizeR/   t   skipift   platformt
   startswithRd   RD   RG   RU   Rz   R|   t   avoid_travisR‹   t   skipR‘   R—   t   xfailR±   (    (    (    s<   lib/python2.7/site-packages/distributed/tests/test_stress.pyt   <module>   sL   :
0	.	$+F		1	..