ó
ßüÚ\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 m	 Z	 m
 Z
 m Z m Z d  d l m Z d  d l m Z m Z m Z m Z d  d l m Z d  d l m Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  e d „  ƒ Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& d „  Z' e j( j) e j* d  d k  d d ƒd „  ƒ Z+ d S(   i    (   t   print_functiont   divisiont   absolute_importN(   t   loadst   dumpst   msgpackt   maybe_compresst   to_serialize(   t   compressions(   t	   Serializet
   Serializedt	   serializet   deserialize(   t   nbytes(   t   slowc          C` s]   xV d d d i d d 6i d d 6i d d 6i  g D]$ }  t  t |  ƒ ƒ |  k s1 t ‚ q1 Wd  S(   Ni   t   at   xt    (   R   R   t   AssertionError(   t   msg(    (    sG   lib/python2.7/site-packages/distributed/protocol/tests/test_protocol.pyt   test_protocol   s    7c          C` s   t  j d ƒ t  j d ƒ }  |  j d ƒ } t i t | j ƒ  ƒ d 6ƒ } t t t | ƒ ƒ | j k  sn t	 ‚ t
 | ƒ } i | j ƒ  d 6| k s™ t	 ‚ d  S(   Nt   lz4t   numpyi@B R   (   t   pytestt   importorskipt   onesR   R	   t   tobytest   sumt   mapR   R   R   (   t   npR   t   framest   y(    (    sG   lib/python2.7/site-packages/distributed/protocol/tests/test_protocol.pyt   test_compression_1   s    $c          C` sv   t  j d ƒ t  j d ƒ }  |  j j d ƒ } t | j ƒ  ƒ \ } } | sr t j | d d ƒj d ƒ sr t ‚ d  S(   NR   R   i'  t   encodingt   utf8t   compression(	   R   R   t   randomR   R   R   R   t   getR   (   R   R   t   headert   payload(    (    sG   lib/python2.7/site-packages/distributed/protocol/tests/test_protocol.pyt   test_compression_2   s
    c          C` s™   t  j d ƒ t  j d ƒ }  |  j d ƒ } t i t | ƒ d 6ƒ } t d „  | Dƒ ƒ s` t ‚ t | d t ƒ} t d „  | d j	 Dƒ ƒ s• t ‚ d  S(   NR   R   i@B R   c         s` s!   |  ] } t  | ƒ d  k  Vq d S(   i@B N(   t   len(   t   .0t   frame(    (    sG   lib/python2.7/site-packages/distributed/protocol/tests/test_protocol.pys	   <genexpr>,   s    R   c         s` s!   |  ] } t  | ƒ d  k  Vq d S(   i@B N(   R)   (   R*   R+   (    (    sG   lib/python2.7/site-packages/distributed/protocol/tests/test_protocol.pys	   <genexpr>/   s    (
   R   R   R   R   R	   t   allR   R   t   FalseR   (   R   R   R   R   (    (    sG   lib/python2.7/site-packages/distributed/protocol/tests/test_protocol.pyt(   test_compression_without_deserialization&   s    c           C` sR   t  t t t d ƒ ƒ ƒ d k  s' t ‚ t  t t t d ƒ ƒ ƒ d k  sN t ‚ d  S(   NR   i
   i   (   R   R   R   R   R   (    (    (    sG   lib/python2.7/site-packages/distributed/protocol/tests/test_protocol.pyt
   test_small2   s    'c          C` s@   i d d 6d d d 6}  t  |  ƒ } t | ƒ |  k s< t ‚ d  S(	   Ni   i   i   R   t   0i€–˜ R   (   i   i   i   (   R   R   R   (   t   dt   L(    (    sG   lib/python2.7/site-packages/distributed/protocol/tests/test_protocol.pyt   test_small_and_big7   s    c       
   C` sb  t  t g }  d d g } d } t j j i d  d 6ƒ : x2 |  D]* } t | | ƒ ƒ d  | f k s? t ‚ q? WWd  QXxè | D]à } y t | ƒ Wn t	 k
 r¤ qz n Xt j j i | d 6ƒ š x’ |  D]Š } d } t | | ƒ ƒ d  | f k sö t ‚ d d } t | | ƒ ƒ \ } } | | d f k s0t ‚ t
 | d | ƒ | k sÆ t ‚ qÆ WWd  QXqz Wd  S(	   Nt   zlibR   t   123s   distributed.comm.compressionR0   i'  t   blosct
   decompress(   t   bytest
   memoryviewt   daskt   configt   sett   NoneR   R   t
   __import__t   ImportErrorR   (   t   try_converterst   try_compressionsR'   t   fR#   t   rct   rd(    (    sG   lib/python2.7/site-packages/distributed/protocol/tests/test_protocol.pyt   test_maybe_compress?   s&    .$
c          C` s‚   t  j d ƒ }  t  j d ƒ } |  j j d d d d ƒj d ƒ j ƒ  } t | ƒ \ } } | d  k sl t ‚ | | k s~ t ‚ d  S(   NR   R   i    iÿ   t   sizei'  t   u1(	   R   R   R$   t   randintt   astypeR   R   R=   R   (   R   R   R'   t   fmtt
   compressed(    (    sG   lib/python2.7/site-packages/distributed/protocol/tests/test_protocol.pyt   test_maybe_compress_sample]   s    *c          C` s³   x¬ t  t f D]ž }  i |  d d ƒ d 6d d 6} t | ƒ } t | ƒ | k sU t ‚ t | d ƒ d k  sq t ‚ t | d ƒ d k  s t ‚ t | d t ƒ| k s t ‚ q Wd  S(	   NR0   i@B R   i   R   i    iè  R   (   R8   t	   bytearrayR   R   R   R)   R-   (   t   tpR   R   (    (    sG   lib/python2.7/site-packages/distributed/protocol/tests/test_protocol.pyt   test_large_bytesf   s    c          C` se  t  j d ƒ }  t  j d ƒ } t  j d ƒ | j ƒ  j d k  rD d  St j j d k rZ d S|  j j d d d d	 d
 d ƒ} i t	 | ƒ d g d 6i t	 | ƒ d 6d d 6d 6} t
 | ƒ } t | ƒ } | d d | d d k sé t ‚ | d d | d d k st ‚ | d d j | d d k j ƒ  s6t ‚ | d d j | d d k j ƒ  sat ‚ d  S(   NR   t   psutilR   g    eÍýAi   i    iÿ   RF   i Âët   dtypeRG   t   small_bytesR   R   t   bR   i   (   R   R   t   virtual_memoryt   totalt   syst   version_infot   majorR$   RH   R	   R   R   R   t   dataR,   (   R   RP   R   R   RS   t   msg2(    (    sG   lib/python2.7/site-packages/distributed/protocol/tests/test_protocol.pyt   test_large_messagesq   s"    !""+c          C` su   d d  l  }  |  j ƒ  j d k  r1 t j d ƒ n  d „  t d ƒ Dƒ } t | ƒ } t | ƒ } | | k sq t ‚ d  S(   Ni    g    eÍýAs   insufficient memoryc         S` s   i  |  ] } d  | | “ q S(   s   mystring_%d(    (   R*   t   i(    (    sG   lib/python2.7/site-packages/distributed/protocol/tests/test_protocol.pys
   <dictcomp>‘   s   	 i † (	   RP   RT   RU   R   t   skipt   rangeR   R   R   (   RP   R   RS   t   x2(    (    sG   lib/python2.7/site-packages/distributed/protocol/tests/test_protocol.pyt   test_large_messages_map‹   s    c          C` sÀ   t  i t d ƒ d 6d d 6ƒ }  t |  ƒ } | i d d 6d d 6k sL t ‚ t |  d t ƒ} | d d k st t ‚ t | d t ƒ s t ‚ t | d j | d j	 ƒ } | d k s¼ t ‚ d  S(   Ni{   RY   t   OKt   statusR   (
   R   R	   R   R   R-   t
   isinstanceR
   R   R&   R   (   R   R   t   result(    (    sG   lib/python2.7/site-packages/distributed/protocol/tests/test_protocol.pyt   test_loads_deserialize_False˜   s      c          C` sØ   t  j d ƒ d d }  i d d 6t |  ƒ d 6} t | ƒ } t t t | ƒ ƒ d k  s^ t ‚ t | d t	 ƒ} t t t | d j
 ƒ ƒ d k  s˜ t ‚ t | ƒ } t | ƒ } | i d d 6d d d 6k sÔ t ‚ d  S(	   NR   R0   i † i   R   RY   i'  R   (   R   R   R   R   R   R   R   R   R   R-   R   (   RS   R   R   RZ   t   msg3t   msg4(    (    sG   lib/python2.7/site-packages/distributed/protocol/tests/test_protocol.pyt5   test_loads_without_deserialization_avoids_compression¥   s    
!(c         C` sB   d |  k r4 t  j |  d t ƒt  j | d t ƒk S|  | k Sd  S(   Nt   headerst   use_list(   R   R   R-   (   R   RS   (    (    sG   lib/python2.7/site-packages/distributed/protocol/tests/test_protocol.pyt	   eq_frames·   s    (c          ` s   i d d 6t  d ƒ d 6}  t |  ƒ ‰  t ˆ  ƒ d k s> t ‚ t ˆ  ƒ } | i d d 6d d 6k sj t ‚ t ˆ  d t ƒ} | d d k s’ t ‚ t | d t ƒ s« t ‚ t ‡  f d †  | d j	 Dƒ ƒ sÔ t ‚ t | ƒ } t
 t t ˆ  | ƒ ƒ sþ t ‚ t | ƒ } | | k st ‚ d  S(   Ni   R   i{   RY   i   R   c         3` s(   |  ] } ˆ  D] } | | k Vq q d  S(   N(    (   R*   R   RS   (   R   (    sG   lib/python2.7/site-packages/distributed/protocol/tests/test_protocol.pys	   <genexpr>È   s    (   R	   R   R)   R   R   R-   Rc   R
   t   anyR   R,   R   Rk   (   R   Rd   t   result2t   frames2t   result3(    (   R   sG   lib/python2.7/site-packages/distributed/protocol/tests/test_protocol.pyt   test_dumps_loads_Serialize¾   s     )c          C` sà   i d d 6t  t d ƒ Œ  d 6}  t |  ƒ } t | ƒ d k sD t ‚ t | ƒ } | i d d 6d d 6k sp t ‚ t | d t ƒ} | |  k s” t ‚ t | ƒ } t t t	 | | ƒ ƒ s¾ t ‚ t | ƒ } | | k sÜ t ‚ d  S(   Ni   R   i{   RY   i   R   (
   R
   R   R   R)   R   R   R-   R,   R   Rk   (   R   R   Rd   Rm   Rn   Ro   (    (    sG   lib/python2.7/site-packages/distributed/protocol/tests/test_protocol.pyt   test_dumps_loads_SerializedÑ   s      i   t   reasons   NumPy doesnt use memoryviewsc          C` sÐ   t  j d ƒ }  t  j d ƒ |  j d d d ƒ} t | j ƒ \ } } y d d  l } WnB t k
 rš | d k sx t ‚ t | ƒ | j	 d k  sÌ t ‚ n2 X| d k s­ t ‚ t | ƒ | j	 d	 k  sÌ t ‚ d  S(
   NR   R   i@B RQ   t   int64i    g      è?R6   i
   (
   R   R   t   arangeR   RY   R6   R?   R   R)   R   (   R   R   R#   R'   R6   (    (    sG   lib/python2.7/site-packages/distributed/protocol/tests/test_protocol.pyt   test_maybe_compress_memoryviewsâ   s    #(,   t
   __future__R    R   R   RV   R:   R   t   distributed.protocolR   R   R   R   R   t    distributed.protocol.compressionR   t   distributed.protocol.serializeR	   R
   R   R   t   distributed.utilsR   t   distributed.utils_testR   R   R    R(   R.   R/   R3   RE   RL   RO   R[   R`   Re   Rh   Rk   Rp   Rq   t   markt   skipifRW   Ru   (    (    (    sG   lib/python2.7/site-packages/distributed/protocol/tests/test_protocol.pyt   <module>   s2   ("		
														