ó
ßüÚ\c           @` sP  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l m Z m Z m	 Z	 m
 Z
 m Z m Z 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 m Z m Z m Z m Z m Z d „  Z d „  Z d	 „  Z  d
 „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& d „  Z' d „  Z( d „  Z) d S(   i    (   t   print_functiont   divisiont   absolute_importN(   t   CancelledErrort   TimeoutErrort   Futuret   waitt   as_completedt   FIRST_COMPLETEDt   FIRST_EXCEPTION(   t   take(   t   slowinct   slowaddt   slowdect   inct   throwst   varying(   t   clientt   cluster_fixturet   loopt   st   at   bc         C` s    t  d „  |  j ƒ  j ƒ  Dƒ ƒ S(   Nc         s` s!   |  ] \ } } t  | ƒ Vq d  S(   N(   t   len(   t   .0t   kt   v(    (    sE   lib/python2.7/site-packages/distributed/tests/test_client_executor.pys	   <genexpr>   s    (   t   sumt
   processingt   items(   R   (    (    sE   lib/python2.7/site-packages/distributed/tests/test_client_executor.pyt   number_of_processing_tasks   s    c      
   C` sð   |  j  ƒ  Þ } | j t d d ƒ } t | t ƒ s9 t ‚ | j t d d d ƒ} | j t d ƒ } | j t d d d d	 ƒ} | j ƒ  d k s– t ‚ | j ƒ  d
 k s® t ‚ t j	 t
 ƒ  | j ƒ  Wd  QX| j ƒ  d k sæ t ‚ Wd  QXd  S(   Ni   i   i   t   yi   t   foot   xi   i   i   i   (   t   get_executort   submitR   t
   isinstanceR   t   AssertionErrorR   t   resultt   pytestt   raisest   RuntimeError(   R   t   et   f1t   f2t   f3t   f4(    (    sE   lib/python2.7/site-packages/distributed/tests/test_client_executor.pyt   test_submit   s    c         C` s¸   |  j  ƒ  ¦ } d } g  t | ƒ D] } | j t | d d ƒ^ q" } t t d | d ƒ ƒ } x? t | ƒ D]1 } | j ƒ  } | | k s t ‚ | j | ƒ ql W| s® t ‚ Wd  QXd  S(   Ni
   t   delayg{®Gáz”?i   (	   R"   t   rangeR#   R   t   setR   R&   R%   t   remove(   R   R*   t   Nt   it   fst   expectedt   ft   res(    (    sE   lib/python2.7/site-packages/distributed/tests/test_client_executor.pyt   test_as_completed)   s    1c         C` s¾  |  j  d t ƒ ¦} d } g  t | ƒ D] } | j t | d d ƒ^ q( } t | d d ƒ} t | j ƒ d k sy t ‚ t | ƒ } t | j ƒ d k s  t ‚ | j	 t
 | ƒ k s» t ‚ g  t | ƒ D] } | j t | d d ƒ^ qÈ } t | d t ƒ} t | j ƒ d k st ‚ t | j	 ƒ d	 k s4t ‚ t | ƒ } t | j ƒ d k s[t ‚ | j	 t
 | ƒ k svt ‚ g  t | ƒ D] } | j t | d d ƒ^ qƒ} | | j t d  ƒ g 7} | g  t | ƒ D] } | j t | d d ƒ^ qÐ7} t | d t ƒ} t d
 „  | j	 Dƒ ƒ s&t ‚ | j s5t ‚ g  } xB | j	 D]7 } y | j ƒ  WqEt k
 r{} | j | ƒ qEXqEWt | ƒ d	 k s˜t ‚ d t | d ƒ k s´t ‚ Wd  QXd  S(   Nt   purei
   R0   gš™™™™™©?t   timeoutg{®Gáz„?i    t   return_wheni   c         s` s   |  ] } | j  ƒ  Vq d  S(   N(   t	   exception(   R   R8   (    (    sE   lib/python2.7/site-packages/distributed/tests/test_client_executor.pys	   <genexpr>M   s    t   hello(   R"   t   FalseR1   R#   R   R   R   t   not_doneR%   t   doneR2   R   R   t   NoneR   R	   t   anyR&   R)   t   appendt   str(   R   R*   R4   R5   R6   R9   t   errors(    (    sE   lib/python2.7/site-packages/distributed/tests/test_client_executor.pyt	   test_wait7   s:    1115c   	      C` s’  |  j  d t ƒ } | j t j d ƒ } t j ƒ  } x? t |  ƒ d k rw t j ƒ  | d k  sg t ‚ t j d ƒ q9 W| j ƒ  s‹ t ‚ | j ƒ  | j	 ƒ  s§ t ‚ t j ƒ  } x? t |  ƒ d k rô t j ƒ  | d k  sä t ‚ t j d ƒ q¶ Wt
 j t ƒ  | j ƒ  Wd  QXWd  QX|  j  d t ƒ Ã } d } g  t | ƒ D] } | j t | d d ƒ^ qC} | d	 j ƒ  t | d
 t ƒ} t | j ƒ d k s¢t ‚ t | j ƒ d k s½t ‚ | d	 | j k sÖt ‚ | d	 j	 ƒ  sìt ‚ Wd  QX|  j  d t ƒ ˆ } d } g  t | ƒ D] } | j t | d d ƒ^ q} | d	 j ƒ  | d j ƒ  t d „  t | ƒ Dƒ ƒ } | d k sˆt ‚ Wd  QXd  S(   NR;   g       @i    i   g{®Gáz„?i
   R0   g{®Gáz”?i   R=   i   c         s` s   |  ] } | j  ƒ  Vq d  S(   N(   t	   cancelled(   R   R8   (    (    sE   lib/python2.7/site-packages/distributed/tests/test_client_executor.pys	   <genexpr>   s    i   (   R"   R@   R#   t   timet   sleepR   R%   RB   t   cancelRI   R'   R(   R   R&   R1   R   R   R   R   RA   R   R   (	   R   R*   t   futt   startR4   R5   R6   R9   t   n_cancelled(    (    sE   lib/python2.7/site-packages/distributed/tests/test_client_executor.pyt   test_cancellation[   s>    
11c         C` s¶  |  j  ƒ  i } d } | j t t | ƒ ƒ } t t d | d ƒ ƒ } x | D] } | j | ƒ qM W| sq t ‚ Wd  QX|  j  d t ƒ — } d } | j t t | ƒ d g | d d ƒ} g  } t	 j
 t ƒ # x | D] } | j | ƒ q× WWd  QXd t | ƒ k od k  n st ‚ Wd  QX|  j  d t ƒ | } d } | j t t | ƒ d g | ƒ } x t d | ƒ D] } qoWt |  ƒ d	 k s‘t ‚ ~ t |  ƒ d	 k s¬t ‚ Wd  QXd  S(
   Ni
   i   R;   gš™™™™™¹?R<   gš™™™™™Ù?i   i   i    (   R"   t   mapR   R1   R2   R3   R%   R@   R   R'   R(   R   RE   R   R
   R   (   R   R*   R4   t   itR7   R!   t   results(    (    sE   lib/python2.7/site-packages/distributed/tests/test_client_executor.pyt   test_map…   s.    (."c           C` s
   t  j  ƒ  S(   N(   t   random(    (    (    sE   lib/python2.7/site-packages/distributed/tests/test_client_executor.pyt
   get_random¤   s    c      	   C` s  d } |  j  ƒ  x } g  t | ƒ D] } | j t ƒ ^ q" } g  t | ƒ D] } | j ƒ  ^ qJ } t t | ƒ ƒ t | ƒ k  s† t ‚ Wd  QX|  j  d t	 ƒ x } g  t | ƒ D] } | j t ƒ ^ q® } g  t | ƒ D] } | j ƒ  ^ qÖ } t t | ƒ ƒ t | ƒ k st ‚ Wd  QXd  S(   Ni
   R;   (
   R"   R1   R#   RV   R   R&   R   R2   R%   R@   (   R   R4   R*   R5   R6   RM   R9   (    (    sE   lib/python2.7/site-packages/distributed/tests/test_client_executor.pyt	   test_pure¨   s    (%*(%c   	   	   C` s§   d } |  j  d | d g ƒ ‚ } g  t | ƒ D] } | j t | ƒ ^ q/ } t | ƒ |  j ƒ  } | j | d ƒ s} t ‚ t | | d ƒ | k s t ‚ Wd  QXd  S(   Ni
   t   workerst   address(	   R"   R1   R#   R   R   t   has_whatt   getR%   R   (	   R   R   R   R   R4   R*   R5   R6   RZ   (    (    sE   lib/python2.7/site-packages/distributed/tests/test_client_executor.pyt   test_workers´   s    +
c         C` sZ   t  j t ƒ * } |  j d | d g d d d d ƒ Wd  QXd t | j ƒ k sV t ‚ d  S(   NRX   RY   R    i   t   bari   s7   unsupported arguments to ClientExecutor: ['bar', 'foo'](   R'   R(   t	   TypeErrorR"   RF   t   valueR%   (   R   R   R   R   t   excinfo(    (    sE   lib/python2.7/site-packages/distributed/tests/test_client_executor.pyt   test_unsupported_arguments¾   s    )c         C` s}  t  d ƒ t  d ƒ d g } |  j d d d t ƒ 4 } | j t | ƒ ƒ } | j ƒ  d k sc t ‚ Wd  QX|  j d d ƒ : } | j t | ƒ ƒ } | j ƒ  } | d k s± t ‚ Wd  QX|  j d d ƒ M } | j t | ƒ ƒ } t j t  ƒ  } | j ƒ  } Wd  QX| j	 d ƒ Wd  QX|  j d d	 ƒ M } | j t | ƒ ƒ } t j t  ƒ  } | j ƒ  } Wd  QX| j	 d ƒ Wd  QXd  S(
   Nt   onet   twoi*   t   retriesi   R;   i   i   i    (
   t   ZeroDivisionErrorR"   R@   R#   R   R&   R%   R'   R(   t   match(   R   t   argsR*   t   futureR&   t   exc_infoR9   (    (    sE   lib/python2.7/site-packages/distributed/tests/test_client_executor.pyt   test_retriesÆ   s$    c         C` sf  |  j  ƒ  } | j t j d ƒ } t j ƒ  } | j ƒ  t j ƒ  | } d | k o^ d k n si t ‚ t j d ƒ | j ƒ  sˆ t ‚ | j ƒ  t j	 t
 ƒ  | j t j d ƒ Wd  QX|  j  ƒ  } | j t j d ƒ } t j ƒ  } | j d t ƒ t j ƒ  | } | d k  st ‚ t j d ƒ | j ƒ  s9t ‚ t j	 t
 ƒ  | j t j d ƒ Wd  QXd  S(   Ng      ð?g      à?g       @gš™™™™™¹?R   (   R"   R#   RJ   RK   t   shutdownR%   RB   R&   R'   R(   R)   R@   RI   (   R   R*   RM   t   t1t   dt(    (    sE   lib/python2.7/site-packages/distributed/tests/test_client_executor.pyt   test_shutdownß   s*    
"
(*   t
   __future__R    R   R   RU   RJ   t   concurrent.futuresR   R   R   R   R   R   R	   R'   t   toolzR
   t   distributed.utils_testR   R   R   R   R   R   R   R   R   R   R   R   R   R/   R:   RH   RP   RT   RV   RW   R\   Ra   Rj   Rn   (    (    (    sE   lib/python2.7/site-packages/distributed/tests/test_client_executor.pyt   <module>   s&   4
..				$	*				
		