ó
ßüÚ\c           @` sˆ  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l m Z d  d l Z d  d l	 Z	 d  d l	 m
 Z
 d  d l Z d  d l m Z d  d l m Z m Z m Z m Z m Z m Z d  d l m Z d  d l m Z m Z m Z d  d	 l m Z m Z m Z e d
 e ƒ d „  ƒ Z e d
 e d d! g d ƒ d „  ƒ Z e d
 e d d" g d ƒ d „  ƒ Z  e d
 e d d# g d ƒ d „  ƒ Z! e d
 e ƒ d „  ƒ Z" d „  Z# e d
 e ƒ d „  ƒ Z$ e d
 e d d$ g ƒ d „  ƒ Z% e d
 e ƒ d „  ƒ Z& d „  Z' e d
 e ƒ d „  ƒ Z( e d
 e ƒ d „  ƒ Z) d „  Z* d „  Z+ e d
 e ƒ d „  ƒ Z, e d
 e ƒ d „  ƒ Z- e ƒ  d  „  ƒ Z. d S(%   i    (   t   print_functiont   divisiont   absolute_importN(   t   sleep(   t   delayed(   t   gen(   t   worker_clientt   Clientt   as_completedt
   get_workert   waitt
   get_client(   t   time(   t   doublet   gen_clustert   inc(   t   clientt   cluster_fixturet   loopR   c   
      c` sÑ   d „  } |  j  | d d g ƒ \ } } |  j | | g ƒ V\ } } | d d	 k sY t ‚ | d
 d k so t ‚ t | j ƒ d k sŠ t ‚ t g  | j D]! }	 |	 j ƒ  j d ƒ r— |	 ^ q— ƒ d k sÍ t ‚ d  S(   Nc         S` sT   t  ƒ  E } | j t |  ƒ }  | j t |  ƒ } |  j ƒ  | j ƒ  } | SWd  QXd  S(   N(   R   t   submitR   R   t   result(   t   xt   ct   yR   (    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyt   func   s
    i
   i   i   i   R   i   i   i   i   i   i*   (   t   mapt   _gathert   AssertionErrort   lent   transition_logt
   wants_whatt   lowert
   startswith(
   R   t   st   at   bR   R   R   t   xxt   yyt   id(    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyt   test_submit_from_worker   s    	t   ncoress	   127.0.0.1i   i   c         c` sÑ   d „  } |  j  | ƒ } | V} | t d d d d d g ƒ k sF t ‚ d „  } |  j  | ƒ } | V} | t k sw t ‚ t ƒ  } xJ t d „  | j j ƒ  Dƒ ƒ sÌ t j	 d	 ƒ Vt ƒ  | d k  sƒ t ‚ qƒ Wd  S(
   Nc          S` sÏ   t  ƒ  À }  |  j d d d d d g ƒ } t | t t f ƒ sE t ‚ t | ƒ d k s] t ‚ t t ƒ  j	 ƒ } d „  t
 | d d d d d g ƒ Dƒ } | | k s© t ‚ |  j t | ƒ } | j ƒ  SWd  QXd  S(   Ni   i   i   i   i   c         S` s"   i  |  ] \ } } | | j  “ q S(    (   t   key(   t   .0t   ft   i(    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pys
   <dictcomp>6   s   	 (   R   t   scattert
   isinstancet   listt   tupleR   R   t   dictR	   t   datat   zipR   t   sumR   (   R   t   futuresR   R   t   total(    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyR   /   s    (i   i   i   i   i   c       	   S` sª   t  ƒ  › }  t } xN d d g d d d h g D]1 } |  j | ƒ } | t | ƒ t | ƒ k M} q. Wt ƒ  } |  j i | d 6ƒ } | t ƒ  j d | k M} | SWd  QXd  S(   Ni   i   R   (   i   i   (   R   t   TrueR-   t   typet   objectR	   R2   (   R   t   correctR2   R5   t   o(    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyR   @   s    " 	c         s` s   |  ] } | d  k Vq d S(   i   N(    (   R*   t   v(    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pys	   <genexpr>Q   s    gš™™™™™¹?(
   R   R4   R   R7   R   t   allR(   t   valuesR   R   (   R   R!   R"   R#   R   t   futureR   t   start(    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyt   test_scatter_from_worker-   s    	'		"c         #` s0   t  j d ƒ ‰  ‡  f d †  } |  j | ƒ Vd  S(   Nt   numpyc          ` sL   t  ƒ  = }  ˆ  j d ƒ } |  j | ƒ } | j ˆ  j k sB t ‚ Wd  QXd  S(   Ni   (   R   t   onesR-   R8   t   ndarrayR   (   R   R   R?   (   t   np(    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyR   Z   s    (   t   pytestt   importorskipR   (   R   R!   R"   R#   R   (    (   RE   sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyt   test_scatter_singletonV   s    c         #` sb   | j  ‰  | j  ‰ ˆ  ˆ k s$ t ‚ ‡  ‡ f d †  } |  j | ƒ } | V} | d k s^ t ‚ d  S(   Nc       	   ` sg   t  ƒ  R }  |  j t d d ˆ  ƒ} |  j t d d ˆ ƒ} |  j | | g ƒ \ } } Wd  QX| | f S(   Ni   t   workersi   (   R   R   R   t   gather(   t   eeR   R   R$   R%   (   t	   a_addresst	   b_address(    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyR   i   s
    !i   i   (   i   i   (   t   addressR   R   (   R   R!   R"   R#   R   R?   R   (    (   RL   RM   sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyt   test_gather_multi_machinec   s    		c         c` s/   d „  } |  j  | ƒ } | V} | s+ t ‚ d  S(   Nc          S` s)   t  ƒ   }  |  j t ƒ  j k SWd  QXd  S(   N(   R   R   R	   (   t   lc(    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyR+   y   s    (   R   R   (   R   R!   R"   R#   R+   R?   R   (    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyt   test_same_loopw   s    	c         C` s.   d „  } t  | ƒ ƒ  j ƒ  d k s* t ‚ d  S(   Nc          S` s}   d }  g  t  d ƒ D] } t t ƒ | ƒ ^ q } t ƒ  = } | j | ƒ } x$ t | ƒ D] } |  | j ƒ  7}  qY WWd  QX|  S(   Ni    id   (   t   rangeR   R   R   t   computeR   R   (   R   R,   t	   sub_tasksRP   R5   R+   (    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyt   mysumƒ   s    +i¬&  (   R   RS   R   (   R   RU   (    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyt	   test_sync‚   s    	
c         c` sƒ   d „  } |  j  t | ƒ ƒ  ƒ } | Vt ƒ  } xM t | j ƒ t | j ƒ d k r~ t j d ƒ Vt ƒ  | d k  s2 t ‚ q2 Wd  S(   Nc          S` s}   d }  g  t  d ƒ D] } t t ƒ | ƒ ^ q } t ƒ  = } | j | ƒ } x$ t | ƒ D] } |  | j ƒ  7}  qY WWd  QX|  S(   Ni    id   (   RR   R   R   R   RS   R   R   (   R   R,   RT   RP   R5   R+   (    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyRU   ’   s    +i   gš™™™™™¹?i   (   RS   R   R   R   R2   R   R   R   (   R   R!   R"   R#   RU   R?   R@   (    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyt
   test_async   s    	
	%i   c         c` sb   d | _  d „  } |  j | t d ƒ ƒ } |  j | ƒ V} t | ƒ t t d ƒ ƒ k s^ t ‚ d  S(   Ni    c         S` s„   t  d t ƒ o } t ƒ  j d 7_ t ƒ  j d k s< t ‚ t t j ƒ  d ƒ t ƒ  j d k sh t ‚ t ƒ  j d 8_ Wd  QX|  S(   Nt   separate_threadi   i   i(   (   R   t   FalseR	   t   countR   R   t   random(   R,   R   (    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyR+   ©   s    i   (   RZ   R   RR   R   R/   R   (   R   R!   R"   R+   R5   t   results(    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyt   test_separate_thread_false¥   s
    			c         c` s5   d „  } |  j  | ƒ } | V} | d k s1 t ‚ d  S(   Nc          S` sG   t  ƒ  8 }  |  j ƒ  # } t | j t t d ƒ ƒ ƒ SWd  QXWd  QXd  S(   Ni   (   R   t   get_executorR4   R   R   RR   (   R   t   e(    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyRU   ¹   s    i   i   if  (   R   R   (   R   R!   R"   R#   RU   R?   R   (    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyt   test_client_executor·   s    	c         C` sÁ   d d  l  j } d „  } | j d d g ƒ } | j | ƒ } t d |  d t d t ƒ d } t j j	 ƒ  | j
 k sx t ‚ x t d ƒ D] } | j ƒ  q… Wt j j	 ƒ  | j
 k s· t ‚ Wd  QXd  S(   Ni    c         S` s   t  ƒ   } t SWd  QXd  S(   N(   R   R7   (   R   R   (    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyR+   Æ   s    i   i   R   t	   processest   set_as_default(   t   dask.bagt   bagt   from_sequenceR   R   RY   R7   t   daskt   baset   get_schedulert   getR   RR   RS   (   R   t   dbR+   R#   t   b2R   R,   (    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyt   test_dont_override_default_getÃ   s    	c         #` sN   d d l  m ‰  ‡  f d †  } |  j | d ƒ } | V} | d k sJ t ‚ d  S(   Ni    (   t   local_clientc         ` so   t  j d t ƒ W } ˆ  ƒ  % } | j t |  ƒ }  |  j ƒ  } Wd  QXt d „  | Dƒ ƒ sa t ‚ | SWd  QXd  S(   Nt   recordc         s` s$   |  ] } d  t  | j ƒ k Vq d S(   R   N(   t   strt   message(   R*   t   r(    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pys	   <genexpr>Þ   s    (   t   warningst   catch_warningsR7   R   R   R   t   anyR   (   R   Rn   R   R   (   Rm   (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyR   Ù   s    i
   i   (   t   distributedRm   R   R   (   R   R!   R"   R#   R   R?   R   (    (   Rm   sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyt   test_local_client_warningÕ   s
    c         c` sJ   d „  } t  |  j | t d ƒ ƒ ƒ V| j ƒ  V|  j d k sF t ‚ d  S(   Nc         S` s   t  ƒ  d  S(   N(   R   (   R   (    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyR   è   s    i
   t   running(   R
   R   RR   t   closet   statusR   (   R   R!   R"   R#   R   (    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyt'   test_closing_worker_doesnt_close_clientæ   s    	c         C` s>   d „  } |  j  | ƒ } t j t ƒ  | j ƒ  } Wd  QXd  S(   Nc          S` s&   t  d d ƒ  }  t d ƒ Wd  QXd  S(   Nt   timeouti    t   hello(   R   t   print(   t   wc(    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyR   ò   s    (   R   RF   t   raisest   EnvironmentErrorR   (   R   R   R?   R   (    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyt   test_timeoutñ   s    	c          C` s   g  }  t  d t d i |  d 6ƒ d „  ƒ } | ƒ  \ } } } } } | d k sU t ‚ t g  | j D] } | j ƒ  d k ^ qb ƒ s‰ t ‚ d S(   s|   
    Tests that seceding works with the Stealing extension disabled
    https://github.com/dask/distributed/issues/1262
    R   t   scheduler_kwargst
   extensionsc         s` sG   d „  } |  j  |  j | d ƒ ƒ V} t j |  | | | | f ƒ ‚ d  S(   Nc         ` s;   t  ƒ  , } | j ‡  f d †  ƒ } | j | ƒ SWd  QXd  S(   Nc           ` s   d ˆ  S(   Ni   (    (    (   R   (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyt   <lambda>
  t    (   R   R   RJ   (   R   R~   R   (    (   R   sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyR     s    i   (   RJ   R   R   t   Return(   R   R!   R"   R#   R   R+   (    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyt   secede_test  s    	i   N(   R   R7   R   R=   t   _worker_coroutinest	   exceptiont   None(   Rƒ   R‡   R   R!   R"   R#   R+   (    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyt'   test_secede_without_stealing_issue_1262û   s
    %c         c` s;   t  j d „  ƒ } |  j | ƒ  ƒ V} | d k s7 t ‚ d  S(   Nc           S` s0   t  ƒ  ! t j d „  ƒ d ƒ j ƒ  SWd  QXd  S(   Nc         S` s   |  S(   N(    (   R   (    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyR„     R…   i   (   R   Rf   R   RS   (    (    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyR+     s    
i   (   Rf   R   RS   R   (   R   R!   R"   R#   R+   R   (    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyt!   test_compute_within_worker_client  s    c         c` s)   d „  } |  j  | ƒ V} | s% t ‚ d  S(   Nc           S` s)   t  ƒ   Wd  QXt j ƒ  t ƒ  j j k S(   N(   R   t	   threadingt   current_threadR	   t   executort   _threads(    (    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyR+   %  s    
(   R   R   (   R   R!   R"   R#   R+   R   (    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyt   test_worker_client_rejoins#  s    	c         c` s­   t  j d ƒ } t d |  j j d ƒ d d |  j d t ƒV} z[ | j | j j	 d d d
 d ƒ ƒ } t
 | ƒ V| j d „  | ƒ V} | d k s™ t ‚ Wd  | j ƒ  VXd  S(   Ns
   dask.arrays
   localhost:t   :iÿÿÿÿR   t   asynchronoust   sizeid   i
   t   chunksi2   c         S` s   |  j  ƒ  j ƒ  S(   N(   R4   RS   (   R   (    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyR„   :  R…   i    (   id   i
   (   RF   RG   R   RN   t   splitR   R7   t   persistR[   t   uniformR
   R   R   Rx   (   R!   R"   R#   t   daR   t   Xt   fut(    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyt   test_submit_different_names/  s    -$(   s	   127.0.0.1i   (   s	   127.0.0.1i   (   s	   127.0.0.1i   (   s	   127.0.0.1i   (/   t
   __future__R    R   R   R[   R   R   R   Rr   Rf   R   RF   t   tornadoR   Ru   R   R   R   R	   R
   R   t   distributed.metricst   distributed.utils_testR   R   R   R   R   R   R7   R'   RA   RH   RO   RQ   RV   RW   R]   R`   Rl   Rv   Rz   R   R‹   RŒ   R‘   Rœ   (    (    (    sC   lib/python2.7/site-packages/distributed/tests/test_worker_client.pyt   <module>   s:   .%)%%	!		
	