ó
ßüÚ\c           @   s­  d  d l  m Z d  d l m 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 d  d l m Z m Z m Z 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 d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# e d
 e ƒ d „  ƒ Z$ e d
 e ƒ d „  ƒ Z% d „  Z& d „  Z' e d
 e ƒ d „  ƒ Z( d „  Z) e d
 e ƒ d „  ƒ Z* d S(   iÿÿÿÿ(   t   CancelledError(   t   addN(   t   sleep(   t   gen(   t   _as_completedt   as_completedt   _first_completed(   t   Emptyt   StopAsyncIterationt   Queuet   Iterator(   t   gen_clustert   inct   throws(   t   clientt   cluster_fixturet   loopR   c   	      c   sÙ   |  j  t d ƒ } |  j  t d ƒ } |  j  t d ƒ } t ƒ  } t | | | g | ƒ V| j ƒ  d k sn t ‚ | j ƒ  | j ƒ  | j ƒ  h | | | h k s¤ t ‚ t | | | g ƒ V} | | | | g k sÕ t ‚ d  S(   Ni   i   i   (   t   submitR   R	   R   t   qsizet   AssertionErrort   getR   (	   t   ct   st   at   bt   xt   yt   zt   queuet   result(    (    sB   lib/python2.7/site-packages/distributed/tests/test_as_completed.pyt   test__as_completed   s    	6c         C   sÓ   |  j  t d ƒ } |  j  t d ƒ } |  j  t d ƒ } t | | | g ƒ } | j ƒ  d k sc t ‚ t | t ƒ sx t ‚ t | ƒ | | | h k s™ t ‚ | j ƒ  d k s± t ‚ t t g  ƒ ƒ g  k sÏ t ‚ d  S(   Ni   i   i   i    (	   R   R   R   t   countR   t
   isinstanceR
   t   sett   list(   R   R   R   R   t   seq(    (    sB   lib/python2.7/site-packages/distributed/tests/test_as_completed.pyt   test_as_completed   s    !c      	   C   s3   t  j t ƒ  t t d d d g ƒ ƒ Wd  QXd  S(   Ni   i   i   (   t   pytestt   raisest	   TypeErrorR"   R   (   R   (    (    sB   lib/python2.7/site-packages/distributed/tests/test_as_completed.pyt"   test_as_completed_with_non_futures-   s    c         C   sÇ   d } t  t t t d ƒ ƒ ƒ } |  j t t d ƒ ƒ } t | ƒ } xi | D]a } | j ƒ  } | | 7} t j ƒ  d k  rL |  j t | d ƒ } | j | ƒ | | d 7} qL qL W| | k sÃ t	 ‚ d  S(   Ni    i
   g      à?(
   t   sumt   mapR   t   rangeR   R   t   randomR   R   R   (   R   t   totalt   expectedt   futurest   act   futureR   (    (    sB   lib/python2.7/site-packages/distributed/tests/test_as_completed.pyt   test_as_completed_add2   s    
c         C   sÌ   d } t  t d ƒ ƒ } t t t | ƒ ƒ } t g  ƒ } xz | sO | j ƒ  rµ | r† | d  | d } } | j |  j t | ƒ ƒ n  | j d t	 ƒ } | t d „  | Dƒ ƒ 7} q< W| | k sÈ t
 ‚ d  S(   Ni    i
   i   t   blockc         s   s   |  ] } | j  ƒ  Vq d  S(   N(   R   (   t   .0t   r(    (    sB   lib/python2.7/site-packages/distributed/tests/test_as_completed.pys	   <genexpr>K   s    (   R"   R+   R)   R*   R   R   t   is_emptyt   updatet
   next_batcht   TrueR   (   R   R-   t   todoR.   R0   t   workt   batch(    (    sB   lib/python2.7/site-packages/distributed/tests/test_as_completed.pyt   test_as_completed_updateA   s    c         C   s®   t  ƒ  } |  j t d ƒ } | j | ƒ | j | ƒ t | ƒ | k sM t ‚ t | ƒ | k se t ‚ t j t ƒ  t | ƒ Wd  QX| j | ƒ t | ƒ | k sª t ‚ d  S(   Ni   (	   R   R   R   R   t   nextR   R%   R&   t   StopIteration(   R   R0   R   (    (    sB   lib/python2.7/site-packages/distributed/tests/test_as_completed.pyt   test_as_completed_repeatsO   s    	c         C   s{   t  ƒ  } | j ƒ  s t ‚ |  j t d ƒ } | j | ƒ | j ƒ  sM t ‚ t | ƒ | k se t ‚ | j ƒ  sw t ‚ d  S(   Ni   (   R   R6   R   R   R   R   R>   (   R   R0   R   (    (    sB   lib/python2.7/site-packages/distributed/tests/test_as_completed.pyt   test_as_completed_is_empty_   s    	c         C   s  |  j  t d ƒ } |  j  t d ƒ } t | | g ƒ } | j ƒ  t | ƒ | k s^ | s^ t ‚ t | ƒ | k s| | s| t ‚ t j t ƒ  | j	 j
 d d ƒ Wd  QXt t | | | g ƒ ƒ } t | ƒ d k sØ t ‚ t | ƒ | | h k sö t ‚ | j | ƒ d k st ‚ d  S(   Ni   t   timeoutgš™™™™™¹?i   i   (   R   R   R   t   cancelR>   R   R%   R&   R   R   R   R"   t   lenR!   R   (   R   R   R   R0   t   res(    (    sB   lib/python2.7/site-packages/distributed/tests/test_as_completed.pyt   test_as_completed_canceli   s    
c            s›   |  j  t d ƒ ‰  |  j  t d ƒ } |  j  t d ƒ ‰ t j ‡  ‡ f d †  ƒ } |  j j | ƒ t | ˆ g ƒ } t | ƒ } | | ˆ h k s— t ‚ d  S(   Ng333333Ó?i   c           3   s4   t  j d ƒ Vˆ  j d t ƒ Vˆ j d t ƒ Vd  S(   Ngš™™™™™¹?t   asynchronous(   R   R   RC   R9   (    (   t   wR   (    sB   lib/python2.7/site-packages/distributed/tests/test_as_completed.pyt   _   s    (	   R   R   R   t	   coroutineR   t   add_callbackR   R!   R   (   R   R   RI   R0   R   (    (   RH   R   sB   lib/python2.7/site-packages/distributed/tests/test_as_completed.pyt   test_as_completed_cancel_last|   s    c   	      c   sÅ   |  j  t d g d d t ƒ} t | ƒ } | j ƒ  V} | j ƒ  V} | j ƒ  V} | j ƒ  sd t ‚ | j ƒ  sv t ‚ | j ƒ  sˆ t ‚ | j | j k s  t ‚ t j	 t
 ƒ  | j ƒ  VWd  QXd  S(   Ng{®Gáz„?i   t   pure(   R*   R   t   FalseR   t	   __anext__t   doneR   t   keyR%   R&   R   (	   R   R   R   R   R/   R#   R   R   R   (    (    sB   lib/python2.7/site-packages/distributed/tests/test_as_completed.pyt   test_async_for_py2_equivalent   s    c   
      c   s¢   |  j  t d ƒ } |  j  t d ƒ } t | | g ƒ } | j ƒ  V} | j ƒ  V} | | h }	 |	 | | h k st t ‚ | j d k s‰ t ‚ | j d k sž t ‚ d  S(   Ni   t   errort   finished(   R   R   R   R   RO   R   t   status(
   R   R   R   R   R   R   R0   t   firstt   secondR   (    (    sB   lib/python2.7/site-packages/distributed/tests/test_as_completed.pyt   test_as_completed_error_async    s    c         C   sˆ   |  j  t d ƒ } |  j  t d ƒ } t | | g ƒ } t | ƒ } | | | h k sZ t ‚ | j d k so t ‚ | j d k s„ t ‚ d  S(   Ni   RS   RT   (   R   R   R   R   R!   R   RU   (   R   R   R   R0   R   (    (    sB   lib/python2.7/site-packages/distributed/tests/test_as_completed.pyt   test_as_completed_error¯   s    c         C   sž   |  j  t d ƒ } |  j  t d ƒ } |  j  t d ƒ } t | | | g d t ƒ} | j ƒ  t j t ƒ  } t	 | ƒ } Wd  QXt
 | j ƒ d k sš t ‚ d  S(   Ni   i   t   with_resultss   hello!(   R   R   R   R   R9   RC   R%   R&   t   RuntimeErrorR"   t   strt   valueR   (   R   R   R   R   R0   t   excRE   (    (    sB   lib/python2.7/site-packages/distributed/tests/test_as_completed.pyt   test_as_completed_with_results»   s    
c         c   s¹   |  j  t d ƒ } |  j  t d ƒ } |  j  t d ƒ } t | | | g d t ƒ} | j ƒ  t j t ƒ . } | j	 ƒ  V}	 | j	 ƒ  V}
 | j	 ƒ  V} Wd  QXt
 | j ƒ d k sµ t ‚ d  S(   Ni   i   RZ   s   hello!(   R   R   R   R   R9   RC   R%   R&   R[   RO   R\   R]   R   (   R   R   R   R   R   R   R   R0   R^   RV   RW   t   third(    (    sB   lib/python2.7/site-packages/distributed/tests/test_as_completed.pyt$   test_as_completed_with_results_asyncÇ   s    
c         C   s?  |  j  t d ƒ } |  j  t d ƒ } |  j  t d ƒ } t | | | g d t d t ƒ} | j ƒ  t | ƒ } d „  | Dƒ } t | j	 ƒ  ƒ | | | h k s¤ t
 ‚ | j d k s¹ t
 ‚ | j d k sÎ t
 ‚ | j d k sã t
 ‚ t | | d	 t ƒ s t
 ‚ t | | d	 d t ƒ s!t
 ‚ | | d	 d
 k s;t
 ‚ d  S(   Ni   i   RZ   t   raise_errorsc         S   s!   i  |  ] } | d  | d “ q S(   i   i    (    (   R4   R5   (    (    sB   lib/python2.7/site-packages/distributed/tests/test_as_completed.pys
   <dictcomp>ß   s   	 RS   t	   cancelledRT   i    i   (   R   R   R   R   R9   RN   RC   R"   R!   t   keysR   RU   R    R    R[   (   R   R   R   R   R0   RE   t   dd(    (    sB   lib/python2.7/site-packages/distributed/tests/test_as_completed.pyt'   test_as_completed_with_results_no_raiseÖ   s    !
'!c         c   si  |  j  t d ƒ } |  j  t d ƒ } |  j  t d ƒ } t | | | g d t d t ƒ} | j ƒ  | j ƒ  V} | j ƒ  V}	 | j ƒ  V}
 | |	 |
 g } d „  | Dƒ } t | j	 ƒ  ƒ | | | h k sÎ t
 ‚ | j d k sã t
 ‚ | j d k sø t
 ‚ | j d k st
 ‚ t | | d	 t ƒ s*t
 ‚ t | | d	 d t ƒ sKt
 ‚ | | d	 d
 k set
 ‚ d  S(   Ni   i   RZ   Rb   c         S   s!   i  |  ] } | d  | d “ q S(   i   i    (    (   R4   R5   (    (    sB   lib/python2.7/site-packages/distributed/tests/test_as_completed.pys
   <dictcomp>÷   s   	 RS   Rc   RT   i    i   (   R   R   R   R   R9   RN   RC   RO   R!   Rd   R   RU   R    R    R[   (   R   R   R   R   R   R   R   R0   RV   RW   R`   RE   Re   (    (    sB   lib/python2.7/site-packages/distributed/tests/test_as_completed.pyt-   test_as_completed_with_results_no_raise_asyncê   s"    !
'!(+   t   concurrent.futures._baseR    t   operatorR   R,   t   timeR   R%   t   tornadoR   t   distributed.clientR   R   R   t   distributed.compatibilityR   R   R	   R
   t   distributed.utils_testR   R   R   R   R   R   R9   R   R$   R(   R2   R=   R@   RA   RF   RL   RR   RX   RY   R_   Ra   Rf   Rg   (    (    (    sB   lib/python2.7/site-packages/distributed/tests/test_as_completed.pyt   <module>   s2   "						
					