ó
ßüÚ\c           @` sŽ  d  d l  m Z m Z m 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 d  d l m Z m Z m Z m Z m Z d  d l m Z m Z m Z m Z m Z d	 „  Z d
 „  Z d „  Z e e d e ƒ d „  ƒ ƒ Z e d e ƒ d „  ƒ Z e d e ƒ d „  ƒ Z d d „ Z  e d e d e d d ƒ d „  ƒ Z" e d e d e ƒ d d „ ƒ Z# e d e ƒ d „  ƒ Z$ d S(   i    (   t   print_functiont   divisiont   absolute_importN(   t   gen(   t   Nanny(   t   wait(   t   time(   t   gen_clustert   inct   dect   divt   nodebug(   t   Progresst   SchedulerPlugint   AllProgresst   GroupProgresst   MultiProgressc          G` s   d  S(   N(    (   t   args(    (    sJ   lib/python2.7/site-packages/distributed/diagnostics/tests/test_progress.pyt   f   s    c          G` s   d  S(   N(    (   R   (    (    sJ   lib/python2.7/site-packages/distributed/diagnostics/tests/test_progress.pyt   g   s    c          G` s   d  S(   N(    (   R   (    (    sJ   lib/python2.7/site-packages/distributed/diagnostics/tests/test_progress.pyt   h   s    t   clientc         c` sÛ   |  j  t d ƒ } |  j  t | ƒ } |  j  t | ƒ } g  t d ƒ D] } t d | g d | ƒ ^ qC } g  | D] }	 |	 j ƒ  ^ qn V| Vt ƒ  }
 xA t d „  | Dƒ ƒ sÖ t	 j
 d ƒ Vt ƒ  |
 d k  s– t ‚ q– Wd  S(   Ni   i
   t   keyst	   schedulerc         s` s   |  ] } | j  d  k Vq d S(   t   finishedN(   t   status(   t   .0t   b(    (    sJ   lib/python2.7/site-packages/distributed/diagnostics/tests/test_progress.pys	   <genexpr>-   s    gš™™™™™¹?i   (   t   submitR   R   R   t   rangeR   t   setupR   t   allR   t   sleept   AssertionError(   t   ct   st   aR   t   xt   yt   zt   it   barst   bart   start(    (    sJ   lib/python2.7/site-packages/distributed/diagnostics/tests/test_progress.pyt   test_many_Progress    s    1	c   
      c` s.  |  j  t d ƒ } |  j  t | ƒ } |  j  t | ƒ } |  j  t | ƒ } |  j  t | ƒ } t | g d | d t ƒ}	 |	 j ƒ  V|	 j i d „  | | | g Dƒ d 6d „  | | g Dƒ d 6k sÆ t ‚ | V|	 j d t	 ƒ  k sç t ‚ | V|	 j i t	 ƒ  d 6t	 ƒ  d 6k st ‚ |	 j
 d k s*t ‚ d  S(	   Ni   R   t   completec         S` s   h  |  ] } | j  ’ q S(    (   t   key(   R   R   (    (    sJ   lib/python2.7/site-packages/distributed/diagnostics/tests/test_progress.pys	   <setcomp>>   s   	 R   c         S` s   h  |  ] } | j  ’ q S(    (   R.   (   R   R   (    (    sJ   lib/python2.7/site-packages/distributed/diagnostics/tests/test_progress.pys	   <setcomp>?   s   	 R   R   (   R   R   R   R   t   TrueR   t   all_keysR!   R   t   setR   (
   R"   R#   R$   R   t   x1t   x2t   x3t   y1t   y2t   p(    (    sJ   lib/python2.7/site-packages/distributed/diagnostics/tests/test_progress.pyt   test_multiprogress2   s    	#)c   	      c` sm   d t  f d „  ƒ  Y} | ƒ  } | j | ƒ |  j t d ƒ } |  j t | ƒ } | V} | d k si t ‚ d  S(   Nt   Badc           B` s   e  Z d  „  Z RS(   c         [` s   t  ƒ  ‚ d  S(   N(   t	   Exception(   t   selfR.   R+   t   finisht   kwargs(    (    sJ   lib/python2.7/site-packages/distributed/diagnostics/tests/test_progress.pyt
   transitionP   s    (   t   __name__t
   __module__R>   (    (    (    sJ   lib/python2.7/site-packages/distributed/diagnostics/tests/test_progress.pyR9   O   s   i   i   (   R   t
   add_pluginR   R   R!   (	   R"   R#   R$   R   R9   t   badR%   R&   t   result(    (    sJ   lib/python2.7/site-packages/distributed/diagnostics/tests/test_progress.pyt   test_robust_to_bad_pluginM   s    	i(   c         C` s„   |  j  ƒ  \ } } g  | j d ƒ d j d ƒ D] } | j ƒ  ^ q/ \ } } } | d d | d k sn t ‚ | d k s€ t ‚ d  S(   Ns   iÿÿÿÿt   |t   [t   #t   ]s   100% Completed(   t
   readouterrt   splitt   stripR!   (   t   capsyst   widtht   outt   errR(   R*   t   percentR   (    (    sJ   lib/python2.7/site-packages/distributed/diagnostics/tests/test_progress.pyt   check_bar_completed\   s    >t   Workert   timeoutc         #` s4  |  j  t d d d g ƒ \ } } } |  j  t | | | g ƒ \ } } }	 t | | | g ƒ Vt ˆ  ƒ }
 |
 j d | j | j | j h k s“ t ‚ |
 j d d | j | j | j h k sÂ t ‚ |
 j d i  k sÛ t ‚ |
 j d i  k sô t ‚ d |
 j	 k s	t ‚ t
 |
 j	 d t ƒ s%t ‚ |
 j	 d d k s>t ‚ t | | |	 g ƒ V|
 j d	 | j | j |	 j h k s}t ‚ |
 j d d	 | j | j |	 j h k s¬t ‚ |
 j d i  k sÅt ‚ |
 j d i  k sÞt ‚ |
 j	 d |
 j	 d	 k sþt ‚ |  j t | | | g ƒ } | V| j | j | j h } ~ ~ ~ d d  l } | j ƒ  x. t ‡  f d
 †  | Dƒ ƒ r…t j d ƒ VqXW|
 j d d | k s£t ‚ |
 j d | k s¼t ‚ |
 j d	 | j | j |	 j h k sçt ‚ d |
 j	 k r|
 j	 d d k st ‚ n  |  j t d d ƒ } t | g ƒ V|
 j d i | j h d 6k s[t ‚ | j } ~ ~ ~	 ~ d d  l } | j ƒ  x! | ˆ  j k r©t j d ƒ Vq‰WxQ |
 j |
 j	 g t |
 j j ƒ  ƒ D]* } d | k sèt ‚ d	 | k sÐt ‚ qÐWd „  } x& t d ƒ D] } |  j | | ƒ } qWd d  l } | j ƒ  t j d ƒ Vt | g ƒ V|
 j d i | j h d 6k sˆt ‚ |  j ƒ  Vx4 |
 j g t |
 j j ƒ  ƒ D] } | s³t ‚ q³W|  j t d d ƒ } t | g ƒ Vt |
 j ƒ d h k st ‚ t d „  |
 j j ƒ  Dƒ ƒ s0t ‚ d  S(   Ni   i   i   R   t   memoryt   releasedt   erredi    R	   c         3` s   |  ] } | ˆ  j  k Vq d  S(   N(   t   who_has(   R   t   k(   R#   (    sJ   lib/python2.7/site-packages/distributed/diagnostics/tests/test_progress.pys	   <genexpr>‚   s    g{®Gáz„?R
   c         S` s   |  S(   N(    (   R%   (    (    sJ   lib/python2.7/site-packages/distributed/diagnostics/tests/test_progress.pyR   œ   s    i   R   c         s` s$   |  ] } t  | ƒ d  h k Vq d S(   R
   N(   R1   (   R   t   d(    (    sJ   lib/python2.7/site-packages/distributed/diagnostics/tests/test_progress.pys	   <genexpr>²   s    (   t   mapR   R	   R   R   R   R.   R!   t   statet   nbytest
   isinstancet   intR   t   sumt   gct   collectt   anyR   R    R
   t   taskst   listt   valuesR   t   _restartR1   (   R"   R#   R$   R   R%   R&   R'   t   xxt   yyt   zzR7   t   tR   R`   t   xxxt   tkeyt   collR   R(   t   future(    (   R#   sJ   lib/python2.7/site-packages/distributed/diagnostics/tests/test_progress.pyt   test_AllProgressc   sr    $$+/+/ 	
+&	
,	
&&c         c` sÀ   t  | ƒ } |  j t t d ƒ ƒ } t | ƒ Vt | j d d ƒ d k sR t ‚ | j ƒ  V| j ƒ  Vt	 ƒ  } xH t | j d d ƒ d k r» t
 j d ƒ Vt	 ƒ  | d k  st t ‚ qt Wd  S(   Ni   RT   R   i    gš™™™™™¹?(   R   RZ   R   R   R   t   lenR[   R!   t   closeR   R   R    (   R"   R#   R$   R   RS   R7   t   futuresR+   (    (    sJ   lib/python2.7/site-packages/distributed/diagnostics/tests/test_progress.pyt   test_AllProgress_lost_keyµ   s    #	 c         c` s•  t  j d ƒ } t | ƒ } | j d d d ƒ} | d } | | j ƒ  j d t ƒ } t | ƒ Vd t | j	 ƒ k  o d k  n sŒ t
 ‚ x} | j	 j ƒ  D]l \ }	 }
 | j |	 s» t
 ‚ t | j |	 ƒ t |
 j ƒ  ƒ k sæ t
 ‚ t d „  |
 j ƒ  Dƒ ƒ sœ t
 ‚ qœ W| j | j | j h k s.t
 ‚ | j | j | j | | j h k sZt
 ‚ ~ ~ ~ x | j r€t j d	 ƒ VqfW| j	 s‘t
 ‚ d  S(
   Ns
   dask.arrayid   t   chunksi
   i   t   optimize_graphi   c         s` s   |  ] } | d  k Vq d S(   i    N(    (   R   t   v(    (    sJ   lib/python2.7/site-packages/distributed/diagnostics/tests/test_progress.pys	   <genexpr>Ò   s    g{®Gáz„?(   t   pytestt   importorskipR   t   onesR_   t   persistt   FalseR   Rp   t   groupsR!   t   itemsR   Re   R   t   dependenciest   namet
   dependentsRc   R   R    (   R"   R#   R$   R   t   dat   fpR%   R&   R'   RX   R   (    (    sJ   lib/python2.7/site-packages/distributed/diagnostics/tests/test_progress.pyt   test_GroupProgressÅ   s"    
++&",	(%   t
   __future__R    R   R   Rw   t   tornadoR   t   distributedR   t   distributed.clientR   t   distributed.metricsR   t   distributed.utils_testR   R   R	   R
   R   t    distributed.diagnostics.progressR   R   R   R   R   R   R   R   R/   R,   R8   RD   RQ   t   NoneRo   Rs   Rƒ   (    (    (    sJ   lib/python2.7/site-packages/distributed/diagnostics/tests/test_progress.pyt   <module>   s&   ((				$R