ó
ßüÚ\c        
   @` s´  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l Z d  d l m Z d  d l	 Z	 e	 j
 d ƒ 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 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  d  d l! m" Z" m# Z# m$ Z$ m% Z% m& Z& m' Z' m( Z( m) Z) m* Z* m+ Z+ m, Z, m- Z- m. Z. m/ Z/ m0 Z0 d  d l1 m2 Z2 e3 e2 _4 e	 j5 j6 e j7 d  d k d d ƒe d e8 d i i e" d< 6d 6ƒ d „  ƒ ƒ Z9 e d e8 d e: d i e  d 6ƒ ƒ d „  ƒ Z; e d e8 ƒ d „  ƒ Z< e d e8 ƒ d „  ƒ Z= e d e8 ƒ d „  ƒ Z> e d e8 ƒ d „  ƒ Z? e d e8 ƒ d „  ƒ Z@ e d e8 ƒ d „  ƒ ZA e d e8 ƒ d „  ƒ ZB e d e8 ƒ d  „  ƒ ZC e d e8 ƒ d! „  ƒ ZD e d e8 ƒ d" „  ƒ ZE e d e8 ƒ d# „  ƒ ZF e d e8 ƒ d$ „  ƒ ZG e d e8 ƒ d% „  ƒ ZH e d e8 ƒ d& „  ƒ ZI e d e8 ƒ d' „  ƒ ZJ e d e8 ƒ d( „  ƒ ZK e d e8 ƒ d) „  ƒ ZL e d e8 d i i d* „  d+ 6d, 6ƒ d- „  ƒ ZM e d e8 ƒ d. „  ƒ ZN e d e8 ƒ d/ „  ƒ ZO e d e8 ƒ d0 „  ƒ ZP e d e8 d1 d2 ƒ d3 „  ƒ ZQ e d e8 ƒ d4 „  ƒ ZR e d e8 d5 i d6 d7 6d8 d9 6ƒ d: „  ƒ ZS e d e8 d i i e" d= 6d 6ƒ d; „  ƒ ZT d S(>   i    (   t   print_functiont   divisiont   absolute_importN(   t   sleept   bokeh(   t   first(   t   gen(   t   AsyncHTTPClient(   t   flatten(   t   tokey(   t   wait(   t   time(   t   gen_clustert   inct   dect   slowinct   div(   t   Counterst   BokehWorker(   t   BokehSchedulert   SystemMonitort	   Occupancyt   StealingTimeSeriest   StealingEventst   Eventst
   TaskStreamt   TaskProgresst	   MemoryUset   CurrentLoadt   ProcessingHistogramt   NBytesHistogramt   WorkerTablet	   GraphPlott   ProfileServer(   t	   scheduleri   t   reasons*   https://github.com/bokeh/bokeh/issues/5494t   clientt   scheduler_kwargst   servicesc   
      c` s#  t  | j d t ƒ s t ‚ | j d j } |  j t d ƒ } t j d ƒ Vt ƒ  } x d d d d d d	 d
 d d d d d d g D]` } | j	 d | | f ƒ V} | j
 j ƒ  }	 d |	 j ƒ  k sÊ t ‚ t j d |	 ƒ sƒ t ‚ qƒ W| j	 d | ƒ V} t j | j
 j ƒ  ƒ } | st ‚ d  S(   NR   i   gš™™™™™¹?t   systemt   counterst   workerst   statust   taskst   stealingt   graphs   individual-task-streams   individual-progresss   individual-graphs   individual-nbytess   individual-nprocessings   individual-profiles   http://localhost:%d/%ss   href=./s)   http://localhost:%d/individual-plots.json(   t
   isinstanceR&   R   t   AssertionErrort   portt   submitR   R   R   t   fetcht   bodyt   decodet   lowert   ret   searcht   jsont   loads(
   t   ct   st   at   bR0   t   futuret   http_clientt   suffixt   responseR3   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   test_simple,   s6    	t   worker_kwargsc         C` s   x† t  t t g D]u } | | ƒ } | j ƒ  | j j } t t | j ƒ  ƒ ƒ sV t	 ‚ | t k r t
 d „  | d Dƒ ƒ s… t	 ‚ q q Wd  S(   Nc         s` s   |  ] } | j  d  ƒ Vq d S(   s
   127.0.0.1:N(   t
   startswith(   t   .0t   addr(    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pys	   <genexpr>\   s    t   bokeh_address(   R   R   R   t   updatet   sourcet   datat   lenR   t   valuesR/   t   all(   R:   R;   R<   R=   t	   componentt   ssRJ   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt
   test_basicS   s    
c         c` s¸   t  j d ƒ x! d | j k r0 t j d ƒ Vq Wt | ƒ } | j ƒ  t j d ƒ V| j ƒ  t ƒ  } xI t | j	 d d j
 d ƒ s³ t j d ƒ Vt ƒ  | d k  sk t ‚ qk Wd  S(	   Nt   cricks   tick-durationg{®Gáz„?gš™™™™™¹?i    t   xi   i   (   t   pytestt   importorskipt   digestsR   R   R   RH   R   RK   t   digest_sourcesRJ   R/   (   R:   R;   R<   R=   RO   t   start(    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   test_counters_   s    

	!c      	   c` s‰   t  | ƒ } |  j t t d ƒ d d d | j d t ƒ} x | j sV t j d ƒ Vq< W| j	 ƒ  t
 t | j j j ƒ  ƒ ƒ s… t ‚ d  S(   Nid   t   delaygš™™™™™¹?R)   t   allow_other_workersg{®Gáz„?(   R   t   mapR   t   ranget   addresst   Truet
   task_stateR   R   RH   RK   R   RI   RJ   RL   R/   (   R:   R;   R<   R=   t   set   futures(    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   test_stealing_eventsp   s    '
c      	   c` s    t  | d ƒ } |  j t t d ƒ d d d | j d t ƒ} x | j sY t j d ƒ Vq? W| j	 ƒ  t
 | j j ƒ } t d „  | d	 Dƒ ƒ d
 k sœ t ‚ d  S(   NRM   id   RY   gš™™™™™¹?R)   RZ   g{®Gáz„?c         s` s   |  ] } | d  k Vq d S(   s
   add-workerN(    (   RE   R<   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pys	   <genexpr>   s    t   actioni   (   R   R[   R   R\   R]   R^   R_   R   R   RH   t   dictRI   RJ   t   sumR/   (   R:   R;   R<   R=   t   eRa   t   d(    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   test_events€   s    '
c         c` s7  t  | ƒ } |  j t t d ƒ d d ƒ} t | ƒ V| j ƒ  t | j j ƒ } t	 d „  | j
 ƒ  Dƒ ƒ ss t ‚ t | d ƒ d k s t ‚ | j ƒ  t | j j ƒ } t	 d „  | j
 ƒ  Dƒ ƒ sÍ t ‚ |  j t | ƒ } t | ƒ V| j ƒ  t | j j ƒ } t t t t | j
 ƒ  ƒ ƒ ƒ d k s3t ‚ d  S(	   Ni
   RY   gü©ñÒMbP?c         s` s!   |  ] } t  | ƒ d  k Vq d S(   i
   N(   RK   (   RE   t   L(    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pys	   <genexpr>›   s    RW   i    c         s` s!   |  ] } t  | ƒ d  k Vq d S(   i
   N(   RK   (   RE   Ri   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pys	   <genexpr>    s    i   (   R   R[   R   R\   R
   RH   Rd   RI   RJ   RM   RL   R/   t   minR1   Re   RK   t   set(   R:   R;   R<   R=   t   tsRa   Rg   t   total(    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   test_task_stream   s    
"
"
c         c` sk   t  | d d ƒ} |  j t t d ƒ d d ƒ} t | ƒ V| j ƒ  t | j j d ƒ d k sg t	 ‚ d  S(   Nt   n_rectanglesi
   RY   gü©ñÒMbP?RW   (
   R   R[   R   R\   R
   RH   RK   RI   RJ   R/   (   R:   R;   R<   R=   Rl   Ra   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   test_task_stream_n_rectanglesª   s
    
c         c` su   t  | d d d d ƒ} | j ƒ  |  j t t d ƒ ƒ } t | ƒ V| j ƒ  t  | d d d d ƒ} | j ƒ  d  S(   NRo   i
   t   clear_intervali   (   R   RH   R[   R   R\   R
   (   R:   R;   R<   R=   Rl   Ra   t   ts2(    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   test_task_stream_second_plugin´   s    

c         c` s¤  t  | d d ƒ} t |  j t t d ƒ ƒ ƒ V| j ƒ  t j d ƒ Vt |  j t t d ƒ ƒ ƒ V| j ƒ  t	 t
 t t	 | j j j ƒ  ƒ ƒ ƒ d k s¡ t ‚ | j j d j d ƒ d k sÆ t ‚ | j j d j d ƒ d k së t ‚ t j d	 ƒ Vt |  j t t d d
 ƒ ƒ ƒ V| j ƒ  t	 t
 t t	 | j j j ƒ  ƒ ƒ ƒ d k sVt ‚ | j j d j d ƒ d k s{t ‚ | j j d j d ƒ d k s t ‚ d  S(   NRq   iÈ   i
   g{®Gáz„?i   t   nameR   R   g333333Ó?i   i    (   R   R
   R[   R   R\   RH   R   R   R   RK   Rk   RI   RJ   RL   R/   t   count(   R:   R;   R<   R=   Rl   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   test_task_stream_clear_intervalÀ   s    

3%% 
3%c         c` sR  t  | ƒ } |  j t t d ƒ d d ƒ} t | ƒ V| j ƒ  t | j j ƒ } t	 d „  | j
 ƒ  Dƒ ƒ ss t ‚ | d d g k sŒ t ‚ |  j t t d ƒ ƒ } t | ƒ V| j ƒ  t | j j ƒ } t	 d „  | j
 ƒ  Dƒ ƒ sí t ‚ | d d d	 g k s	t ‚ ~ ~ x | j r,t j d
 ƒ VqW| j ƒ  | j j d sNt ‚ d  S(   Ni
   RY   gü©ñÒMbP?c         s` s!   |  ] } t  | ƒ d  k Vq d S(   i   N(   RK   (   RE   Ri   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pys	   <genexpr>à   s    Rt   R   i   c         s` s!   |  ] } t  | ƒ d  k Vq d S(   i   N(   RK   (   RE   Ri   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pys	   <genexpr>è   s    R   g{®Gáz„?RM   (   R   R[   R   R\   R
   RH   Rd   RI   RJ   RM   RL   R/   R   R+   R   R   (   R:   R;   R<   R=   t   tpRa   Rg   t   futures2(    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   test_TaskProgress×   s$    
"
"
c      	   c` s¼   t  | ƒ } | j ƒ  g  t d ƒ D]& } |  j t | d d d | ƒ^ q# } t | ƒ V| j ƒ  ~ x | j r„ t j d ƒ Vqj W| j ƒ  t	 d „  | j
 j j ƒ  Dƒ ƒ s¸ t ‚ d  S(   Ni   t   keys   f-R<   g{®Gáz„?c         s` s   |  ] } t  | ƒ Vq d  S(   N(   RK   (   RE   t   v(    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pys	   <genexpr>  s    (   R   RH   R\   R1   R   R
   R+   R   R   t   anyRI   RJ   RL   R/   (   R:   R;   R<   R=   Rw   t   iRa   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   test_TaskProgress_emptyô   s    
9

c         c` s   t  | ƒ } |  j t t d ƒ d d ƒ} t | ƒ V| j ƒ  t | j j ƒ } t	 d „  | j
 ƒ  Dƒ ƒ ss t ‚ | d d g k sŒ t ‚ d  S(   Ni
   RY   gü©ñÒMbP?c         s` s!   |  ] } t  | ƒ d  k Vq d S(   i   N(   RK   (   RE   Ri   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pys	   <genexpr>  s    Rt   R   (   R   R[   R   R\   R
   RH   Rd   RI   RJ   RM   RL   R/   (   R:   R;   R<   R=   t   muRa   Rg   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   test_MemoryUse  s    
"c         c` s   t  | ƒ } |  j t t d ƒ d d ƒ} t | ƒ V| j ƒ  t | j j ƒ } t	 d „  | j
 ƒ  Dƒ ƒ ss t ‚ t	 | d ƒ s‰ t ‚ d  S(   Ni
   RY   gü©ñÒMbP?c         s` s!   |  ] } t  | ƒ d  k Vq d S(   i   N(   RK   (   RE   Ri   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pys	   <genexpr>  s    t   nbytes(   R   R[   R   R\   R
   RH   Rd   RI   RJ   RM   RL   R/   (   R:   R;   R<   R=   t   clRa   Rg   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   test_CurrentLoad  s    
"c         c` s¨   t  | ƒ } | j ƒ  | j j d d k j ƒ  d k s> t ‚ |  j t t d ƒ d d ƒ} x | j	 sy t
 j d ƒ Vq_ W| j ƒ  | j j d d	 d
 k s¤ t ‚ d  S(   Nt   topi    i   i
   RY   gš™™™™™©?g{®Gáz„?t   rightiÿÿÿÿi   (   R   RH   RI   RJ   Re   R/   R[   R   R\   R+   R   R   (   R:   R;   R<   R=   t   phRa   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   test_ProcessingHistogram   s    
(
c         c` s   t  | ƒ } | j ƒ  | j j d d k j ƒ  d k s> t ‚ |  j t t d ƒ ƒ } t	 | ƒ V| j ƒ  | j j d d d	 k s‹ t ‚ d  S(
   NR„   i    i   i
   R…   iÿÿÿÿi   i   id   (
   R   RH   RI   RJ   Re   R/   R[   R   R\   R
   (   R:   R;   R<   R=   t   nhRa   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   test_NBytesHistogram.  s    
(
c         C` s‚   t  | ƒ } | j ƒ  t | j j j ƒ  ƒ s4 t ‚ t d „  | j j j ƒ  Dƒ ƒ s\ t ‚ | j j d } t | ƒ s~ t ‚ d  S(   Nc         s` s!   |  ] } t  | ƒ d  k Vq d S(   i   N(   RK   (   RE   R{   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pys	   <genexpr>@  s    t   ncores(   R   RH   RM   RI   RJ   RL   R/   (   R:   R;   R<   R=   t   wtRŠ   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   test_WorkerTable;  s    
(c         c` s  d „  } d „  } i | d 6| d 6} x> | | g D]0 } x' | j  ƒ  D] \ } }	 |	 | j | <qF Wq3 W| j ƒ  | j ƒ  g Vx` | | g D]R } | j | j j d | j k s· t ‚ | j | j j d | j k s‹ t ‚ q‹ Wt | ƒ }
 |
 j ƒ  |
 j	 j
 } x  | D] } | | k s
t ‚ q
Wt | j ƒ  ƒ s>t ‚ t d „  | j ƒ  Dƒ ƒ s`t ‚ | d j | j ƒ | d j | j ƒ f } g  | D] } | d | ^ q“| j | j g k sÅt ‚ g  | D] } | d | ^ qÌ| j | j g k sþt ‚ d  S(   Nc         S` s   |  j  S(   N(   R0   (   t   worker(    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   metric_portH  s    c         S` s   |  j  S(   N(   R]   (   R   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   metric_addressK  s    RŽ   R   c         s` s!   |  ] } t  | ƒ d  k Vq d S(   i   N(   RK   (   RE   R{   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pys	   <genexpr>b  s    R   (   t   itemst   metricst	   heartbeatR)   R]   R0   R/   R   RH   RI   RJ   RM   RL   t   index(   R:   R;   R<   R=   RŽ   R   R‘   t   wRt   t   funcR‹   RJ   t   my_indexR}   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   test_WorkerTable_custom_metricsF  s(    		&*
",9c   	      c` s¢  d „  } | | j  d <| | j  d <| j ƒ  | j ƒ  g V| j | j j  d | j k s` t ‚ | j | j j  d | j k s† t ‚ t | ƒ } | j ƒ  | j j	 } d | k sº t ‚ d | k sÌ t ‚ t
 | j ƒ  ƒ sä t ‚ t
 d „  | j ƒ  Dƒ ƒ st ‚ | d j | j ƒ | d j | j ƒ f } g  | D] } | d | ^ q9| j d  g k sht ‚ g  | D] } | d | ^ qod  | j g k sžt ‚ d  S(   Nc         S` s   |  j  S(   N(   R0   (   R   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyRŽ   j  s    t   metric_at   metric_bc         s` s!   |  ] } t  | ƒ d  k Vq d S(   i   N(   RK   (   RE   R{   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pys	   <genexpr>{  s    R   (   R‘   R’   R)   R]   R0   R/   R   RH   RI   RJ   RM   RL   R“   t   None(	   R:   R;   R<   R=   RŽ   R‹   RJ   R–   R}   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt"   test_WorkerTable_different_metricsh  s     	&&
",6c   	      c` s  d „  } | | j  d <| j ƒ  | j ƒ  g Vt | ƒ } | j ƒ  | j j } d | k sa t ‚ t | j ƒ  ƒ sy t ‚ t d „  | j ƒ  Dƒ ƒ s› t ‚ | d j	 | j
 ƒ | d j	 | j
 ƒ f } g  | D] } | d | ^ qÎ | j d  g k sý t ‚ d  S(   Nc         S` s   |  j  S(   N(   R0   (   R   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyRŽ   ƒ  s    R˜   c         s` s!   |  ] } t  | ƒ d  k Vq d S(   i   N(   RK   (   RE   R{   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pys	   <genexpr>  s    R   (   R‘   R’   R   RH   RI   RJ   R/   RM   RL   R“   R]   R0   Rš   (	   R:   R;   R<   R=   RŽ   R‹   RJ   R–   R}   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt0   test_WorkerTable_metrics_with_different_metric_2  s    	
",c         C` s   |  j  S(   N(   R0   (   R”   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   <lambda>”  t    t   my_portR‘   c         c` sn  d „  } | | j  d <| | j  d <| j ƒ  | j ƒ  g V| j | j j  d | j k s` t ‚ | j | j j  d | j k s† t ‚ t | ƒ } | j ƒ  d | j j	 k s´ t ‚ d | j j	 k sÌ t ‚ | j  d =| j ƒ  | j ƒ  g Vt | ƒ } | j ƒ  d | j j	 k st ‚ | j  d =| j ƒ  | j ƒ  g Vt | ƒ } | j ƒ  d | j j	 k sjt ‚ d  S(   Nc         S` s   |  j  S(   N(   R0   (   R   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyRŽ   –  s    R˜   R™   (
   R‘   R’   R)   R]   R0   R/   R   RH   RI   RJ   (   R:   R;   R<   R=   RŽ   R‹   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt'   test_WorkerTable_add_and_remove_metrics”  s(    	&&




c         c` s´   d „  } | | j  d <| | j  d <| | j  d <| j ƒ  | j ƒ  g V| j | j j  d d k sj t ‚ | j | j j  d d k s t ‚ | j | j j  d d k s° t ‚ d  S(   Nc         S` s   d S(   Niüÿÿ(    (   R   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   metric·  s    t	   executingt   cpuR¡   iüÿÿ(   R‘   R’   R)   R]   R/   (   R:   R;   R<   R=   R¡   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt7   test_WorkerTable_custom_metric_overlap_with_core_metricµ  s    	##c         c` sù  t  | ƒ } |  j t t d ƒ ƒ } |  j t | ƒ } | V| j ƒ  t t t | j	 j
 j ƒ  ƒ ƒ d h k su t ‚ t t t | j j
 j ƒ  ƒ ƒ d h k s¥ t ‚ t j d ƒ } | j j d d d ƒj ƒ  } | | j | j d d ƒ }	 |	 j ƒ  }	 t |	 ƒ V| j ƒ  | j ƒ  |  j | |	 j ƒ  ƒ V| j ƒ  |  j t d ƒ }
 |  j t |
 ƒ } t | ƒ V|
 j } ~
 ~ x! | | j k rt j d	 ƒ Vq}Wd
 | j	 j
 d k sºt ‚ | j ƒ  | j ƒ  t d „  | j j
 d Dƒ ƒ sõt ‚ d  S(   Ni   i   s
   dask.arrayi   t   chunksi
   t   axisi    g{®Gáz„?t   memoryt   statec         s` s   |  ] } | d  k Vq d S(   t   FalseN(    (   RE   RR   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pys	   <genexpr>é  s    t   visible(   i   i   (   i
   i
   (   R    R[   R   R\   R1   Re   RH   Rk   RK   t   node_sourceRJ   RL   R/   t   edge_sourceRS   RT   t   randomt   persistt   Tt   meanR
   t   computeRz   R+   R   R   RM   (   R:   R;   R<   R=   t   gpRa   Rm   t   daRR   t   yR>   t   future2Rz   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   test_GraphPlotÄ  s6    
00


	

c         c` sò   t  | ƒ } |  j t t d ƒ ƒ } |  j t | ƒ } | V| j ƒ  ~ ~ x | j rh t j	 d ƒ VqN W| j ƒ  | j ƒ  t
 ƒ  } xe t | j j j ƒ  ƒ s¹ t | j j j ƒ  ƒ rí t j	 d ƒ V| j ƒ  t
 ƒ  | d k  s‰ t ‚ q‰ Wd  S(   Ni   g{®Gáz„?gš™™™™™¹?(   R    R[   R   R\   R1   Re   RH   R+   R   R   R   R|   R«   RJ   RL   R¬   R/   (   R:   R;   R<   R=   R²   Ra   Rm   RW   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   test_GraphPlot_clearì  s    


	3
t   timeouti   c   	      #` s¶  t  j d ƒ } t | ƒ ‰  | j j d d d ƒ} | | j | j d d ƒ j ƒ  } t | ƒ Vˆ  j ƒ  t	 ˆ  j
 j ƒ t	 ˆ  j j d ƒ k s™ t ‚ t	 ˆ  j
 j ƒ t	 | j ƒ k sÀ t ‚ | | j ƒ  j ƒ  } t | ƒ Vˆ  j ƒ  t	 ˆ  j
 j ƒ t	 ˆ  j j d ƒ k st ‚ t	 ˆ  j
 j ƒ t	 | j ƒ k s@t ‚ ~ t j d ƒ Vˆ  j ƒ  t	 ˆ  j
 j ƒ t d	 „  ˆ  j j d
 Dƒ ƒ k s“t ‚ t	 ˆ  j
 j ƒ t	 | j ƒ k sºt ‚ t ˆ  j
 j j ƒ  ƒ t	 ˆ  j j d
 ƒ k  sît ‚ ˆ  j
 j t	 ˆ  j j d
 ƒ k st ‚ ˆ  j ƒ  t ˆ  j
 j j ƒ  ƒ t t t	 ˆ  j
 j ƒ ƒ ƒ k s\t ‚ ˆ  j j d
 ‰ t t t t | j ƒ  ƒ ƒ ƒ } t ‡  ‡ f d †  | Dƒ ƒ s²t ‚ d  S(   Ns
   dask.arrayiÐ  R¥   iè  R¦   i    RR   gš™™™™™É?c         s` s   |  ] } | d  k Vq d S(   R^   N(    (   RE   R{   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pys	   <genexpr>  s    Rª   c         3` s)   |  ] } ˆ ˆ  j  j | d  k Vq d S(   R^   N(   t   layoutR“   (   RE   Rz   (   R²   Rª   (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pys	   <genexpr>   s    (   iÐ  iÐ  (   iè  iè  (   RS   RT   R    R­   R¯   R°   R®   R
   RH   RK   R¹   R“   R«   RJ   R/   R+   Re   R   R   t   maxRL   t
   next_indexRk   R\   t   listR[   R	   R   t   __dask_keys__RM   (	   R:   R;   R<   R=   R³   RR   R´   t   zt   keys(    (   R²   Rª   sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   test_GraphPlot_complex  s4    #
.'
.'
&'4(
<!c         c` sy   |  j  t d ƒ } |  j  t d d ƒ } t | ƒ Vt | ƒ } | j ƒ  | j j d | j j	 | j
 d k su t ‚ d  S(   Ni   i    R¨   t   erred(   R1   R   R   R
   R    RH   R«   RJ   R¹   R“   Rz   R/   (   R:   R;   R<   R=   RR   R´   R²   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   test_GraphPlot_order#  s    
t   configt   10mss#   distributed.worker.profile.intervalt   50mss    distributed.worker.profile.cyclec         c` sd   t  | ƒ } | j ƒ  t j d ƒ V| j ƒ  d t | j j d ƒ k  oU d k  n s` t ‚ d  S(   Ngš™™™™™É?i   R   i   (   R!   t   trigger_updateR   R   RK   t	   ts_sourceRJ   R/   (   R:   R;   R<   R=   t   ptp(    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   test_profile_server/  s
    

c         c` sU   t  ƒ  } | j d | j d j ƒ V} | j d k s< t ‚ d | j k sQ t ‚ d  S(   Ns   http://localhost:%d/R   iÈ   s   /status(   R   R2   R&   R0   t   codeR/   t   effective_url(   R:   R;   R<   R=   R?   RA   (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   test_root_redirect>  s
    	(   R   i    (   R   i    (U   t
   __future__R    R   R   R8   R6   t   sysR   R   RS   RT   t   toolzR   t   tornadoR   t   tornado.httpclientR   t	   dask.coreR   t   distributed.utilsR	   t   distributed.clientR
   t   distributed.metricst   distributed.utils_testR   R   R   R   R   t   distributed.bokeh.workerR   R   t   distributed.bokeh.schedulerR   R   R   R   R   R   R   R   R   R   R   R   R   R    R!   t   distributed.bokehR"   R©   t	   PROFILINGt   markt   skipift   version_infoR^   RB   Rd   RP   RX   Rb   Rh   Rn   Rp   Rs   Rv   Ry   R~   R€   Rƒ   R‡   R‰   RŒ   R—   R›   Rœ   R    R¤   R¶   R·   RÀ   RÂ   RÉ   RÌ   (    (    (    sK   lib/python2.7/site-packages/distributed/bokeh/tests/test_scheduler_bokeh.pyt   <module>   sf   (d		/$.
"/!(