ó
ßüÚ\c           @` sk  d  d l  m Z m Z m Z d  d l m Z d  d l Z d  d l Z d  d l Z d  d l	 Z	 d  d l
 Z
 d  d l m Z m Z m Z m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z 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$ m% Z% d  d l& m' Z' m( Z( m) Z) m* Z* m+ Z+ m, Z, m- Z- m. Z. m/ Z/ m0 Z0 m1 Z1 e ƒ  Z2 e ƒ  rÀe	 j3 d e4 ƒ  e	 j5 d ƒ e ƒ  Z6 Wd QXn  e d ƒ Z7 d` db dd df f Z8 d „  Z9 e: d i e ƒ  d 6d i e ƒ  d 6ƒ Z; e j< d d d „ ƒ Z> d „  Z? d „  Z@ d „  ZA e j< d  „  ƒ ZB d! „  ZC d" „  ZD d# „  ZE d$ „  ZF d% „  ZG e ƒ  d& „  ƒ ZH e ƒ  d' „  ƒ ZI e ƒ  d( „  ƒ ZJ e j< d) „  ƒ ZK d* „  ZL d+ „  ZM e ƒ  d, „  ƒ ZN e ƒ  d- „  ƒ ZO e j< d d d d d. „ ƒ ZP d d/ „ ZQ eQ ZR d0 „  ZS e ƒ  d1 „  ƒ ZT e e ƒ  d2 „  ƒ ƒ ZU e ƒ  d3 „  ƒ ZV e e ƒ  d4 „  ƒ ƒ ZW e ƒ  d5 „  ƒ ZX e e ƒ  d6 „  ƒ ƒ ZY e ƒ  d7 „  ƒ ZZ e ƒ  d8 „  ƒ Z[ e j< d d d d9 „ ƒ Z\ e ƒ  d: „  ƒ Z] e ƒ  d; „  ƒ Z^ e ƒ  d< „  ƒ Z_ e j< d d d= „ ƒ Z` e ƒ  d> „  ƒ Za e ƒ  d? „  ƒ Zb e ƒ  d@ „  ƒ Zc e ƒ  dA „  ƒ Zd e j< dB „  ƒ Ze e ƒ  dC „  ƒ Zf e ƒ  dD „  ƒ Zg dE „  Zh e ƒ  dF „  ƒ Zi e ƒ  dG „  ƒ Zj e j< dH „  ƒ Zk e j< dI „  ƒ Zl e j< dJ „  ƒ Zm e
 jn jo dK dL ƒ e ƒ  dM „  ƒ ƒ Zp e ƒ  dN „  ƒ Zq e j< dO „  ƒ Zr e ƒ  dP „  ƒ Zs e ƒ  dQ „  ƒ Zt dR „  Zu dS ev f dT „  ƒ  YZw e j< dU „  ƒ Zx e ƒ  dV „  ƒ Zy e j< dW „  ƒ Zz e ƒ  dX „  ƒ Z{ e ƒ  dY „  ƒ Z| e ƒ  dZ „  ƒ Z} e j< d[ „  ƒ Z~ e ƒ  d\ „  ƒ Z e ƒ  d] „  ƒ Z€ e ƒ  d^ „  ƒ Z d S(g   i    (   t   print_functiont   divisiont   absolute_import(   t   partialN(   t   gent   ioloopt   lockst   queues(   t   Future(   t   PY3(   t   time(   t   get_ipt   get_ipv6(   t   gen_testt   requires_ipv6t   has_ipv6t   get_certt   get_server_ssl_contextt   get_client_ssl_context(   t   loop(   t   to_serializet
   Serializedt	   serializet   deserialize(   t   tcpt   inproct   connectt   listent   CommClosedErrort   parse_addresst   parse_host_portt   unparse_host_portt   resolve_addresst   get_address_hostt   get_local_address_fort   recordt   alwayss   tls-ca-cert.pemt   countryNamet   XYt   localityNames   Dask-distributedt   organizationNamet   Daskt
   commonNamet	   localhostc         C` sŽ   t  |  t ƒ s t ‚ |  d d t k s/ t ‚ d |  k sA t ‚ |  d \ } } } d | k sf t ‚ d | k sx t ‚ | d k sŠ t ‚ d  S(   Nt   peercertt   subjectt   ciphert   AESt   TLSi€   (   t
   isinstancet   dictt   AssertionErrort   cert_subject(   t   infot   cipher_namet
   proto_namet   secret_bits(    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   check_tls_extra>   s    t   listen_argst   ssl_contextt   connect_argsc         +` s|   t  j ƒ  ‰  ‡  f d †  } t |  | d | | } | j ƒ  t | j d | | V} ˆ  j ƒ  V} t j | | f ƒ ‚ d  S(   Nc         ` s   ˆ  j  |  ƒ d  S(   N(   t   put(   t   comm(   t   q(    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   handle_commS   s    t   connection_args(	   R   t   QueueR   t   startR   t   contact_addresst   getR   t   Return(   t   listen_addrR:   R<   t   kwargsR@   t   listenerR>   t	   serv_comm(    (   R?   s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   get_comm_pairO   s    
c          K` s   t  d |   S(   Ns   tcp://(   RK   (   RH   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   get_tcp_comm_pair`   s    c          K` s   |  j  t ƒ t d |   S(   Ns   tls://(   t   updatet
   tls_kwargsRK   (   RH   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   get_tls_comm_paird   s    c          K` s   t  d |   S(   Ns	   inproc://(   RK   (   RH   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   get_inproc_comm_pairi   s    c          c` sA   x: t  r< t j j ƒ  }  t d |  |  j ƒ t j d ƒ Vq Wd S(   s   
    Debug helper
    t   .g      à?N(   t   TrueR   t   IOLoopt   currentt   printt	   _handlersR   t   sleep(   R   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt
   debug_loopm   s    	c       	   C` s>  t  }  |  d ƒ d k s t ‚ |  d ƒ d k s6 t ‚ |  d d ƒ d k sQ t ‚ |  d d ƒ d k sl t ‚ t j t ƒ  |  d ƒ Wd  QX|  d ƒ d k s¤ t ‚ |  d
 d ƒ d k s¿ t ‚ |  d d ƒ d k sÚ t ‚ t j t ƒ  |  d ƒ Wd  QXt j t ƒ  |  d ƒ Wd  QXt j t ƒ  |  d	 ƒ Wd  QXd  S(   Ns   localhost:123R+   i{   s   127.0.0.1:456s	   127.0.0.1iÈ  iP   s	   [::1]:123s   ::1s   [fe80::1]:123s   fe80::1s   [::1]s   ::1:123(   R+   i{   (   s	   127.0.0.1iÈ  (   R+   i{   (   R+   iP   (   s   ::1i{   (   s   fe80::1i{   (   s   ::1iP   (   R   R3   t   pytestt   raisest
   ValueError(   t   f(    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_parse_host_port}   s     c          C` s*  t  }  |  d d ƒ d k s! t ‚ |  d d ƒ d k s< t ‚ |  d d ƒ d k sW t ‚ |  d d ƒ d k sr t ‚ |  d ƒ d k sŠ t ‚ |  d d	 ƒ d k s¥ t ‚ |  d d  ƒ d k sÀ t ‚ |  d d
 ƒ d k sÛ t ‚ |  d ƒ d k só t ‚ |  d ƒ d k st ‚ |  d d
 ƒ d k s&t ‚ d  S(   NR+   i{   s   localhost:123s	   127.0.0.1s   127.0.0.1:123s   ::1s	   [::1]:123s   [::1]i    t   *s   127.0.0.1:*s   [::1]:*(   R   R3   t   None(   R\   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_unparse_host_port”   s    c          C` sP   t  }  |  d ƒ d k s t ‚ |  d t ƒ  t j ƒ  f ƒ t ƒ  k sL t ‚ d  S(   Ns   tcp://127.0.0.1:123s	   127.0.0.1s   inproc://%s/%d/123(   R!   R3   R   t   ost   getpid(   R\   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_get_address_host¦   s    c          C` s  t  }  |  d ƒ d k s t ‚ |  d ƒ d k s6 t ‚ |  d ƒ d k sN t ‚ |  d ƒ d k sf t ‚ t ƒ  rÒ |  d ƒ d k s‡ t ‚ |  d ƒ d k sŸ t ‚ |  d ƒ d k s· t ‚ |  d
 ƒ d
 k sÒ t ‚ n  |  d ƒ d k sê t ‚ |  d ƒ d k st ‚ |  d ƒ d k st ‚ d  S(   Ns   tcp://127.0.0.1:123s   127.0.0.2:789s   tcp://127.0.0.2:789s   tcp://0.0.0.0:456s   tcp://[::1]:123s   tls://[::1]:123s	   [::2]:789s   tcp://[::2]:789s   tcp://[::0.0.0.2]:789s   tcp://[::]:123s   localhost:123s   tcp://localhost:456s   tcp://127.0.0.1:456s   tls://localhost:456s   tls://127.0.0.1:456(   s   tcp://[::2]:789s   tcp://[::0.0.0.2]:789(   R    R3   R   (   R\   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_resolve_address­   s    	c          C` s±   t  }  |  d ƒ d k s t ‚ |  d ƒ d t ƒ  k s= t ‚ t ƒ  ra |  d ƒ d k sa t ‚ n  d t ƒ  t j ƒ  f } |  | ƒ } | j d ƒ s› t ‚ | | k s­ t ‚ d  S(	   Ns   tcp://127.0.0.1:80s   tcp://127.0.0.1s   tcp://8.8.8.8:4444s   tcp://s   tcp://[::1]:123s   tcp://[::1]s   inproc://%s/%d/444s	   inproc://(   R"   R3   R   R   Ra   Rb   t
   startswith(   R\   t
   inproc_argt
   inproc_res(    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_get_local_address_forÁ   s    	c          #` s  t  j ‡ f d †  ƒ }  t j d |  ƒ } | j ƒ  | j ƒ  \ ‰ ‰ ˆ d k sX t ‚ ˆ d k sj t ‚ t j ƒ  ‰  g  ‰ t  j d ‡  ‡ ‡ ‡ f d † ƒ } | d d ƒ Vd	 } g  t | ƒ D] } | d | d
 d ƒ ^ qÁ } | Vt	 ˆ ƒ d h t	 t | ƒ ƒ Bk st ‚ d S(   s    
    Test concrete TCP API.
    c         3` se   |  j  j d ˆ  ƒ s t ‚ |  j i  k s1 t ‚ |  j ƒ  V} d | d <|  j | ƒ V|  j ƒ  Vd  S(   Ns   tcp://t   pongt   op(   t   peer_addressRe   R3   t
   extra_infot   readt   writet   close(   R>   t   msg(   t   host(    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyR@   Ú   s    
R+   s	   127.0.0.1s   ::1i    c         3` sÊ   d ˆ ˆ f } ˆ  j  | ƒ V} | j d | k s9 t ‚ | j i  k sN t ‚ | j i d d 6|  d 6ƒ V| r t j | ƒ Vn  | j ƒ  V} | i d d 6|  d 6k s® t ‚ ˆ j |  ƒ | j	 ƒ  Vd  S(   Ns   %s:%ds   tcp://t   pingRj   t   dataRi   (
   R   Rk   R3   Rl   Rn   R   RW   Rm   t   appendRo   (   t   keyt   delayt   addrR>   Rp   (   t	   connectorRq   t   lt   port(    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   client_communicateì   s     Ru   iÒ  id   Rv   gš™™™™™©?N(   R+   s	   127.0.0.1s   ::1(
   R   t	   coroutineR   t   TCPListenerRC   t   get_host_portR3   t   TCPConnectort   ranget   set(   R@   RI   R{   t   Nt   it   futures(    (   Rx   Rq   Ry   Rz   s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_tcp_specificÔ   s    	
.c          #` s1  t  j ‡ f d †  ƒ }  t ƒ  } t ƒ  ‰  t j d |  d | ƒ} | j ƒ  | j ƒ  \ ‰ ‰ ˆ d k sp t ‚ ˆ d k s‚ t ‚ t j	 ƒ  ‰ g  ‰ t  j d ‡  ‡ ‡ ‡ ‡ f d † ƒ } | d d	 ƒ Vd
 } g  t
 | ƒ D] } | d | d d ƒ ^ qÜ } | Vt ˆ ƒ d	 h t t
 | ƒ ƒ Bk s-t ‚ d S(   s    
    Test concrete TLS API.
    c         3` s]   |  j  j d ˆ  ƒ s t ‚ t |  j ƒ |  j ƒ  V} d | d <|  j | ƒ V|  j ƒ  Vd  S(   Ns   tls://Ri   Rj   (   Rk   Re   R3   R9   Rl   Rm   Rn   Ro   (   R>   Rp   (   Rq   (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyR@   	  s    
R+   R;   s	   127.0.0.1s   ::1i    c         3` sÈ   d ˆ ˆ f } ˆ j  | d ˆ  ƒV} | j d | k s? t ‚ t | j ƒ | j i d d 6|  d 6ƒ V| r t j | ƒ Vn  | j ƒ  V} | i d d 6|  d 6k s¬ t ‚ ˆ j	 |  ƒ | j
 ƒ  Vd  S(   Ns   %s:%dR;   s   tls://Rr   Rj   Rs   Ri   (   R   Rk   R3   R9   Rl   Rn   R   RW   Rm   Rt   Ro   (   Ru   Rv   Rw   R>   Rp   (   t
   client_ctxRx   Rq   Ry   Rz   (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyR{     s     Ru   iÒ  id   Rv   gš™™™™™©?N(   R+   s	   127.0.0.1s   ::1(   R   R|   R   R   R   t   TLSListenerRC   R~   R3   t   TLSConnectorR€   R   (   R@   t
   server_ctxRI   R{   R‚   Rƒ   R„   (    (   R†   Rx   Rq   Ry   Rz   s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_tls_specific  s"    			
!.c          c` sØ   t  j d „  ƒ }  t j ƒ  } |  ƒ  } t j t ƒ  t d d ƒ VWd QX| V} t rq | d | k sq t	 ‚ n  |  ƒ  } t j t ƒ # t d d d i t
 ƒ  d 6ƒVWd QX| V} t rÔ | d | k sÔ t	 ‚ n  d S(	   sÎ   
    When we fail to connect, make sure we don't make a lot
    of threads.

    We only assert for PY3, because the thread limit only is
    set for python 3.  See github PR #2403 discussion for info.
    c          s` s_   d }  xC t  d ƒ D]5 } t j d ƒ Vt j ƒ  } | |  k r | }  q q Wt j |  ƒ ‚ d  S(   Ni    i<   gü©ñÒMbP?(   R€   R   RW   t	   threadingt   active_countRF   (   t   max_thread_countt   xt   thread_count(    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   sleep_for_60ms?  s    s   tcp://localhost:28400g9´Èv¾Ÿª?Ni   s   tls://localhost:28400RA   R;   (   R   R|   R‹   RŒ   RY   RZ   t   IOErrorR   R	   R3   R   (   R   t   original_thread_countt   sleep_futureR   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_comm_failure_threading5  s"    

		c         #` s‰  t  j j ƒ  ‰ ˆ j d ƒ d ‰ t ƒ  ‰ d ‰  t j ‡  ‡ ‡ f d †  ƒ } t  j ˆ | ƒ } | j ƒ  | j	 | j
 k oŒ d ˆ k n s— t ‚ t  j t  j ƒ ‰ g  ‰ t j d ‡  ‡ ‡ ‡ f d † ƒ } t |  | ƒ } | d d ƒ Vd	 } g  t | ƒ D] } | d | d
 d ƒ ^ q} | Vt ˆ ƒ d h t t | ƒ ƒ Bk sTt ‚ t ˆ ƒ | d k spt ‚ | j
 ˆ k s…t ‚ d S(   s#   
    Test concrete InProc API.
    t   /i    i   c         3` sw   |  j  j d ˆ ƒ s t ‚ ˆ j |  j  ƒ x9 t ˆ  ƒ D]+ } |  j ƒ  V} d | d <|  j | ƒ Vq9 W|  j ƒ  Vd  S(   Ns	   inproc://Ri   Rj   (   Rk   Re   R3   t   addR€   Rm   Rn   Ro   (   R>   Rƒ   Rp   (   t   N_MSGSt	   addr_headt   client_addresses(    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyR@   m  s    
s	   inproc://c         3` sÝ   ˆ j  ˆ ƒ V} | j d ˆ k s) t ‚ xT t ˆ  ƒ D]F } | j i d d 6|  d 6ƒ V| ro t j | ƒ Vn  | j ƒ  V} q6 W| i d d 6|  d 6k s  t ‚ ˆ j |  ƒ t	 j
 t ƒ  | j ƒ  VWd  QX| j ƒ  Vd  S(   Ns	   inproc://Rr   Rj   Rs   Ri   (   R   Rk   R3   R€   Rn   R   RW   Rm   Rt   RY   RZ   R   Ro   (   Ru   Rv   R>   Rƒ   Rp   (   R—   Rx   Ry   t   listener_addr(    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyR{   ‚  s     Ru   iÒ  i   Rv   gü©ñÒMbP?i   N(   R   t   global_managert   new_addresst
   rpartitionR   R   R|   t   InProcListenerRC   t   listen_addressRD   R3   t   InProcConnectorR   R€   t   len(   t
   run_clientR@   RI   R{   R‚   Rƒ   R„   (    (   R—   R˜   R™   Rx   Ry   Rš   s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   check_inproc_specifica  s,    	

.+c         O` s   |  | | Ž  S(   N(    (   t   funct   argsRH   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   run_coroŸ  s    c         ` sS   t  ƒ  ‰ t j j ƒ  ‰ ‡  ‡ ‡ ‡ ‡ f d †  } t j d | ƒ } | j ƒ  ˆ S(   Nc          ` s‡   t  j ƒ  }  zi y% |  j t ˆ ˆ  ˆ Ž d d ƒ} Wn* t k
 r` ˆ j ˆ j t j ƒ  ƒ n Xˆ j ˆ j	 | ƒ Wd  |  j
 ƒ  Xd  S(   Nt   timeouti
   (   R   RS   t   run_syncR   t	   Exceptiont   add_callbackt   set_exc_infot   syst   exc_infot
   set_resultRo   (   t   thread_loopt   res(   R¥   R¤   t   futRH   t	   main_loop(    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   run§  s     %t   target(   R   R   RS   RT   R‹   t   ThreadRC   (   R¤   R¥   RH   R³   t   t(    (   R¥   R¤   R±   RH   R²   s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   run_coro_in_thread£  s    	
c           c` s   t  t ƒ Vd  S(   N(   R£   R¦   (    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt    test_inproc_specific_same_thread·  s    c           c` s   t  t ƒ Vd  S(   N(   R£   R·   (    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt&   test_inproc_specific_different_threads¼  s    c         #` s¸  t  j ‡  f d †  ƒ } | p( i d d 6} ˆ p; i d d 6‰ t |  | d | ƒ‰ ˆ j ƒ  ˆ j } t | ƒ \ ‰  } ˆ  d k sŠ t ‚ ˆ  t |  ƒ d	 k s¦ t ‚ | d k	 r¿ | | ƒ n  ˆ j } t | ƒ \ }	 }
 |	 ˆ  k sì t ‚ | d k	 r| |
 ƒ n | | k st ‚ g  ‰ t  j d	 ‡ ‡ ‡ f d
 † ƒ } | d d ƒ Vg  t	 d ƒ D] } | d | d d ƒ ^ qY} | Vt
 ˆ ƒ d h t
 t	 d ƒ ƒ Bk sªt ‚ ˆ j ƒ  d S(   s(   
    Abstract client / server test.
    c         3` s”   t  |  j ƒ \ } } | ˆ  k s' t ‚ |  j ƒ  V} | d d k sJ t ‚ d | d <|  j | ƒ V|  j ƒ  V} | d d k s… t ‚ |  j ƒ  Vd  S(   NRj   Rr   Ri   t   foobar(   R   Rk   R3   Rm   Rn   Ro   (   R>   t   schemet   locRp   (   t   bound_scheme(    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyR@   Ò  s    
t   bart   xxxt   fooRA   R   R   t   tlsi    c         3` s¿   t  ˆ j d ˆ  ƒV} | j ˆ j k s. t ‚ | j i d d 6|  d 6ƒ V| j i d d 6ƒ V| rv t j | ƒ Vn  | j ƒ  V} | i d d 6|  d 6k s£ t ‚ ˆ j |  ƒ | j	 ƒ  Vd  S(   NRA   Rr   Rj   Rs   Rº   Ri   (
   R   RD   Rk   R3   Rn   R   RW   Rm   Rt   Ro   (   Ru   Rv   R>   Rp   (   R<   Ry   RI   (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyR{   ý  s     Ru   iÒ  i   Rv   gš™™™™™©?N(   R   R   RÁ   (   R   R|   R   RC   RŸ   R   R3   R_   RD   R€   R   t   stop(   Rw   t   check_listen_addrt   check_contact_addrR:   R<   R@   t
   bound_addrt	   bound_loct   contact_addrt   contact_schemet   contact_locR{   Rƒ   R„   (    (   R½   R<   Ry   RI   s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   check_client_serverÆ  s2    
		.+c         ` s   ‡  ‡ f d †  } | S(   Nc         ` sk   t  |  ƒ \ } } | ˆ  k s$ t ‚ ˆ d  k	 rE | ˆ k sg t ‚ n" d | k  o\ d k  n sg t ‚ d  S(   Niÿ  i   (   R   R3   R_   (   R¼   Rq   Rz   (   t   expected_hostt   expected_port(    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   checker  s
    (    (   RË   RÌ   RÍ   (    (   RË   RÌ   s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   tcp_eq  s    c          ` s+   t  ƒ  ‰  t j ƒ  ‰ ‡  ‡ f d †  }  |  S(   Nc         ` sF   |  j  d ƒ \ } } } | ˆ  k s* t ‚ t | ƒ ˆ k sB t ‚ d  S(   NR•   (   t   splitR3   t   int(   R¼   t   ipt   pidt   suffix(   t   expected_ipt   expected_pid(    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyRÍ   (  s    (   R   Ra   Rb   (   RÍ   (    (   RÔ   RÕ   s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   inproc_check$  s    	c           c` s¯   t  d t d ƒ ƒ Vt  d t d d ƒ ƒ Vt  d t d ƒ t t ƒ ƒ Vt  d t d d ƒ t t d ƒ ƒ Vt  d t d ƒ t t ƒ ƒ Vt  d t d d	 ƒ t t d	 ƒ ƒ Vd  S(
   Ns	   127.0.0.1s   127.0.0.1:3201i  s   0.0.0.0s   0.0.0.0:3202i‚  t    s   :3203iƒ  (   RÊ   RÎ   t   EXTERNAL_IP4(    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_default_client_server_ipv40  s     c           c` so   t  d t d ƒ ƒ Vt  d t d d ƒ ƒ Vt  d t d ƒ t t ƒ ƒ Vt  d t d d ƒ t t d ƒ ƒ Vd  S(	   Ns   [::1]s   ::1s
   [::1]:3211i‹  s   [::]s   ::s	   [::]:3212iŒ  (   RÊ   RÎ   t   EXTERNAL_IP6(    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_default_client_server_ipv6@  s
    c           c` s¯   t  d t d ƒ ƒ Vt  d t d d ƒ ƒ Vt  d t d ƒ t t ƒ ƒ Vt  d t d d ƒ t t d ƒ ƒ Vt  d	 t d ƒ t t ƒ ƒ Vt  d
 t d d ƒ t t d ƒ ƒ Vd  S(   Ns   tcp://127.0.0.1s	   127.0.0.1s   tcp://127.0.0.1:3221i•  s   tcp://0.0.0.0s   0.0.0.0s   tcp://0.0.0.0:3222i–  s   tcp://s   tcp://:3223i—  (   RÊ   RÎ   RØ   (    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_tcp_client_server_ipv4K  s     c           c` so   t  d t d ƒ ƒ Vt  d t d d ƒ ƒ Vt  d t d ƒ t t ƒ ƒ Vt  d t d d ƒ t t d ƒ ƒ Vd  S(	   Ns   tcp://[::1]s   ::1s   tcp://[::1]:3231iŸ  s
   tcp://[::]s   ::s   tcp://[::]:3232i   (   RÊ   RÎ   RÚ   (    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_tcp_client_server_ipv6Y  s
    c           c` sU   t  d t d ƒ t  Vt  d t d d ƒ t  Vt  d t d ƒ t t ƒ t  Vd  S(   Ns   tls://127.0.0.1s	   127.0.0.1s   tls://127.0.0.1:3221i•  s   tls://s   0.0.0.0(   RÊ   t   tls_eqRN   RØ   (    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_tls_client_server_ipv4d  s
    c           c` s   t  d t d ƒ t  Vd  S(   Ns   tls://[::1]s   ::1(   RÊ   RÞ   RN   (    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_tls_client_server_ipv6o  s    c           c` s,   t  d t ƒ  ƒ Vt  t j ƒ  t ƒ  ƒ Vd  S(   Ns	   inproc://(   RÊ   RÖ   R   Rœ   (    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_inproc_client_serveru  s    c    	      c` sú  t  ƒ  }  t ƒ  } d } t  | Œ  } t | Œ  } t j d „  ƒ } t d | d i | d 6ƒ} | j ƒ  t j t ƒ ? } t	 | j
 d d d i | d 6ƒV} | j i d	 d
 6ƒ VWd  QXt j d k r<t j d k r<y d t | j ƒ k sô t ‚ Wq<t k
 r8t j d k r2d t | j ƒ k s5t ‚ q9‚  q<Xn  t	 | j
 d d d i |  d 6ƒV} | j ƒ  Vt d | d i | d 6ƒ} | j ƒ  t j t ƒ ( } t	 | j
 d d d i |  d 6ƒVWd  QXt j d k röd t | j ƒ k söt ‚ n  d  S(   Ns   tls-self-signed-cert.pems   tls-self-signed-key.pemc         s` s6   t  |  j ƒ \ } } | d k s' t ‚ |  j ƒ  Vd  S(   NRÁ   (   R   Rk   R3   Ro   (   R>   R»   R¼   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyR@   Š  s    s   tls://RA   R;   R§   g      à?RÀ   RŽ   i   t   nts
   unknown cas*   An existing connection was forcibly closeds   certificate verify failed(   s   tls-self-signed-cert.pems   tls-self-signed-key.pem(   i   (   i   (   R   R   R   R|   R   RC   RY   RZ   t   EnvironmentErrorR   RD   Rn   R¬   t   version_infoRa   t   namet   strt   valueR3   Ro   (	   t   cli_ctxt   serv_ctxt   bad_cert_keyt   bad_cli_ctxt   bad_serv_ctxR@   RI   t   excinfoR>   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_tls_reject_certificate€  sF    		
	
 
	c         c` s©   t  j d „  ƒ } t |  | d | ƒ} | j ƒ  | j } t | d | ƒV} t j t ƒ  | j	 i  ƒ VWd  QXt | d | ƒV} t j t ƒ  | j
 ƒ  VWd  QXd  S(   Nc         s` s   |  j  ƒ  Vd  S(   N(   Ro   (   R>   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyR@   Ç  s    RA   (   R   R|   R   RC   RD   R   RY   RZ   R   Rn   Rm   (   Rw   Rv   R:   R<   R@   RI   RÇ   R>   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   check_comm_closed_implicitÅ  s    
	c           c` s   t  d ƒ Vd  S(   Ns   tcp://127.0.0.1(   Rï   (    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_tcp_comm_closed_implicitØ  s    c           c` s   t  d t  Vd  S(   Ns   tls://127.0.0.1(   Rï   RN   (    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_tls_comm_closed_implicitÝ  s    c           c` s   t  t j ƒ  ƒ Vd  S(   N(   Rï   R   Rœ   (    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt    test_inproc_comm_closed_implicitâ  s    c         c` s  t  |  d | d | ƒV\ } } | j ƒ  } | j ƒ  } | j ƒ  Vt j t ƒ 
 | VWd  QXt j t ƒ 
 | VWd  QXt j t ƒ  | j ƒ  VWd  QXt j t ƒ  | j ƒ  VWd  QXt j t ƒ  | j i  ƒ VWd  QXt j t ƒ  | j i  ƒ VWd  QX| j ƒ  Vd  S(   NR:   R<   (   RK   Rm   Ro   RY   RZ   R   Rn   (   Rw   R:   R<   t   at   bt   a_readt   b_read(    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   check_comm_closed_explicitç  s"    c           c` s   t  d ƒ Vd  S(   Ns   tcp://127.0.0.1(   R÷   (    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_tcp_comm_closed_explicitÿ  s    c           c` s   t  d t  Vd  S(   Ns   tls://127.0.0.1(   R÷   RN   (    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_tls_comm_closed_explicit  s    c           c` s   t  t j ƒ  ƒ Vd  S(   N(   R÷   R   Rœ   (    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt    test_inproc_comm_closed_explicit	  s    c       	   #` sõ  g  ‰  t  j ‡  f d †  ƒ }  t d |  ƒ } | j ƒ  | j } t | ƒ V} | j ƒ  | j ƒ  si t ‚ t	 ƒ  } x= t
 ˆ  ƒ d k  r± t	 ƒ  | d k  s  t ‚ t  j d ƒ Vqu Wt
 ˆ  ƒ d k sÊ t ‚ t j t ƒ  | j ƒ  VWd  QXt j t ƒ  | j d ƒ VWd  QXt | ƒ V} | j d ƒ t j t ƒ  | j ƒ  VWd  QXt j t ƒ  | j d ƒ VWd  QX| j ƒ  s€t ‚ t | ƒ V} | j d ƒ t	 ƒ  } x7 | j ƒ  sÜt  j d ƒ Vt	 ƒ  | d k  s¦t ‚ q¦W| j ƒ  | j ƒ  d  S(   Nc         3` sP   y |  j  ƒ  VWn0 t k
 rA |  j ƒ  s1 t ‚ ˆ  j t ƒ n X|  j ƒ  d  S(   N(   Rm   R   t   closedR3   Rt   RR   Ro   (   R>   (   t   listener_errors(    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyR@     s    s	   inproc://i   g{®Gáz„?RÀ   i   (   R   R|   R   RC   RD   R   Ro   Rû   R3   R
   R¡   RW   RY   RZ   R   Rm   Rn   (   R@   RI   RÇ   R>   RC   (    (   Rü   s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt"   test_inproc_comm_closed_explicit_2  s@    
	
		
c         c` sc   t  ƒ  } t j t ƒ  t |  d d ƒVWd  QXt  ƒ  | } d | k oT d k n s_ t ‚ d  S(   NR§   g333333Ã?i   gš™™™™™¹?(   R
   RY   RZ   R‘   R   R3   (   Rw   t   t1t   dt(    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   check_connect_timeoutH  s
    	c           c` s   t  d ƒ Vd  S(   Ns   tcp://127.0.0.1:44444(   R   (    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_tcp_connect_timeoutQ  s    c           c` s   t  t j ƒ  ƒ Vd  S(   N(   R   R   Rœ   (    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_inproc_connect_timeoutV  s    c         C` sÊ   t  j d „  ƒ } g  } d } x: t | ƒ D], } t |  | ƒ } | j ƒ  | j | ƒ q+ Wt t d „  | Dƒ ƒ ƒ | k sƒ t ‚ t t d „  | Dƒ ƒ ƒ | k s« t ‚ x | D] } | j	 ƒ  q² Wd  S(   Nc         S` s   d  S(   N(    (   R>   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyR@   \  s    id   c         s` s   |  ] } | j  Vq d  S(   N(   RŸ   (   t   .0Ry   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pys	   <genexpr>h  s    c         s` s   |  ] } | j  Vq d  S(   N(   RD   (   R  Ry   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pys	   <genexpr>i  s    (
   R   R|   R€   R   RC   Rt   R¡   R   R3   RÂ   (   Rw   R@   t	   listenersR‚   Rƒ   RI   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   check_many_listeners[  s    
((c           C` s"   t  d ƒ t  d ƒ t  d ƒ d  S(   Ns   tcp://127.0.0.1s   tcp://0.0.0.0s   tcp://(   R  (    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_tcp_many_listenerso  s    

c           C` s   t  d ƒ d  S(   Ns	   inproc://(   R  (    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_inproc_many_listenersv  s    c         #` s†   t  j ƒ  ‰  t j ‡  f d †  ƒ } t |  | d | ƒ } t | j ƒ V} Wd  QX| j | ƒ Vˆ  j ƒ  V} | | ƒ | j	 ƒ  Vd  S(   Nc         3` s)   |  j  ƒ  V} ˆ  j | ƒ |  j ƒ  Vd  S(   N(   Rm   t
   put_nowaitRo   (   R>   Rp   (   R?   (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyR@   „  s    R   (
   R   RB   R   R|   R   R   RD   Rn   RE   Ro   (   Rw   R   t   in_valuet	   check_outR@   RI   R>   t	   out_value(    (   R?   s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   check_listener_deserialize€  s    
c         #` s…   t  j ƒ  ‰  t j ‡  ‡ f d †  ƒ } t |  | ƒ  } t | j d | ƒV} Wd  QX| j ƒ  V} ˆ  j ƒ  | j	 ƒ  V| | ƒ d  S(   Nc         3` s(   |  j  ˆ ƒ Vˆ  j ƒ  V|  j ƒ  Vd  S(   N(   Rn   t   waitRo   (   R>   (   t   doneR	  (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyR@   ˜  s    R   (
   R   t   EventR   R|   R   R   RD   Rm   R   Ro   (   Rw   R   R	  R
  R@   RI   R>   R  (    (   R  R	  s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   check_connector_deserialize”  s    
c         #` s‘  i d d 6d d 6t  d ƒ g d 6t t d ƒ Œ  d 6‰ ˆ j ƒ  ‰ ‡ f d	 †  } ‡ f d
 †  } t |  t ˆ | ƒ Vt |  t ˆ | ƒ Vt |  t ˆ | ƒ Vt |  t ˆ | ƒ Vt j	 d ƒ d ‰  i d d 6ˆ  d 6t  ˆ  ƒ g d 6t t ˆ  ƒ Œ  d 6‰ ˆ j ƒ  ‰ ‡  ‡ f d †  } t |  t ˆ t
 | t ƒ ƒ Vt |  t ˆ t
 | t ƒ ƒ Vt |  t ˆ t
 | t ƒ ƒ Vt |  t ˆ t
 | t ƒ ƒ Vd S(   sA   
    Check the "deserialize" flag on connect() and listen().
    RM   Rj   t   abcRŽ   i{   t   to_seriÈ  t   serc         ` sù   |  j  ƒ  }  |  j d ƒ } |  j d ƒ } ˆ  j  ƒ  } | d =| d =|  | k sV t ‚ t | t ƒ sk t ‚ t | j | j ƒ d k sŒ t ‚ t | t ƒ s¡ t ‚ | \ } t | t ƒ rÝ t | j | j ƒ d k sõ t ‚ n | t	 d ƒ k sõ t ‚ d  S(   NR  R  iÈ  i{   (
   t   copyt   popR3   R1   R   R   t   headert   framest   listR   (   R  R  R  t   expected_msg(   t   msg_orig(    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   check_out_false¶  s    !	$c         ` s9   ˆ  j  ƒ  } d | d <d g | d <|  | k s5 t ‚ d  S(   NiÈ  R  i{   R  (   R  R3   (   R  R  (   Rp   (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   check_out_trueÌ  s    
i   i   i   c         ` sS  t  | ƒ t  ˆ ƒ k s t ‚ | j ƒ  } | j d ƒ } | j d ƒ } ˆ j ƒ  } | d =| d =| | k st t ‚ |  r° t | t t f ƒ s• t ‚ t | ƒ ˆ  k sOt ‚ nŸ t | t ƒ sÅ t ‚ t | j	 | j
 ƒ ˆ  k sæ t ‚ t | t ƒ sû t ‚ | \ } t | t ƒ r7t | j	 | j
 ƒ ˆ  k sOt ‚ n | t ˆ  ƒ k sOt ‚ d  S(   NR  R  (   t   sortedR3   R  R  R1   t   bytest	   bytearrayR   R   R  R  R  R   (   t   deserialize_flagR  R  R  R  (   t   _uncompressibleR  (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyR
  æ  s$    !	$Ni   (   R   R   R   R  R  t   FalseR  RR   Ra   t   urandomR   (   Rw   R  R  R
  (    (   R!  Rp   R  s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   check_deserialize§  s0    t   reasons   intermittent failure on windowsc           c` s   t  d ƒ Vd  S(   Ns   tcp://(   R$  (    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_tcp_deserialize  s    c           c` s   t  d ƒ Vd  S(   Ns	   inproc://(   R$  (    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_inproc_deserialize  s    c         c` s„  t  j d ƒ d } i d d 6| d 6t | ƒ g d 6t t | ƒ Œ  d 6} x3t t f D]%} t |  d	 | ƒV\ } } | j | ƒ V| j	 ƒ  V} | j | ƒ V| j	 ƒ  V} t
 | ƒ t
 | ƒ k sÊ t ‚ x( d D]  } | | | | k sÑ t ‚ qÑ W| r@t | d d
 t t f ƒ st ‚ t | d t t f ƒ s|t ‚ qW t | d d
 t t f ƒ sct ‚ t | d t ƒ sW t ‚ qW Wd S(   sD   
    Sanity check round-tripping with "deserialize" on and off.
    i   i   i   RM   Rj   RŽ   R  R  R   i    Ni   (   Rj   RŽ   (   Ra   R#  R   R   R   RR   R"  RK   Rn   Rm   R  R3   R1   R  R  (   Rw   R!  Rp   t   should_deserializeRó   Rô   t   gott   k(    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   check_deserialize_roundtrip  s(    #"#c           c` s   t  d ƒ Vd  S(   Ns	   inproc://(   R+  (    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt!   test_inproc_deserialize_roundtrip4  s    c           c` s   t  d ƒ Vd  S(   Ns   tcp://(   R+  (    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_tcp_deserialize_roundtrip9  s    c           C` s
   t  ‚ d  S(   N(   t   EOFError(    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   _raise_eoferror>  s    t   _EOFRaisingc           B` s   e  Z d  „  Z RS(   c         C` s
   t  d f S(   N(    (   R/  (   t   self(    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt
   __reduce__C  s    (   t   __name__t
   __module__R2  (    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyR0  B  s   c      	   c` se   t  j d „  ƒ } t |  | ƒ > } t | j d t ƒV} t j t ƒ  | j	 ƒ  VWd QXWd QXd S(   s<   
    EOFError when deserializing should close the comm.
    c         s` sC   |  j  i t t ƒ  ƒ d 6ƒ Vt j t ƒ  |  j ƒ  VWd  QXd  S(   NRs   (   Rn   R   R0  RY   RZ   R   Rm   (   R>   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyR@   M  s    R   N(
   R   R|   R   R   RD   R   RY   RZ   R   Rm   (   Rw   R@   RI   R>   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   check_deserialize_eoferrorG  s
    c           c` s   t  d ƒ Vd  S(   Ns   tcp://(   R5  (    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_tcp_deserialize_eoferrorY  s    c         c` sz   d t  |  ƒ k s t ‚ d t  | ƒ k s0 t ‚ |  j ƒ  Vd t  |  ƒ k sS t ‚ | j ƒ  Vd t  | ƒ k sv t ‚ d  S(   NRû   (   t   reprR3   Ro   (   Ró   Rô   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt
   check_reprc  s    c          c` sX   t  ƒ  V\ }  } |  j t | ƒ k s+ t ‚ | j t |  ƒ k sF t ‚ t |  | ƒ Vd  S(   N(   RL   t   local_addressR7  R3   R8  (   Ró   Rô   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_tcp_reprm  s    c          c` sX   t  ƒ  V\ }  } |  j t | ƒ k s+ t ‚ | j t |  ƒ k sF t ‚ t |  | ƒ Vd  S(   N(   RO   R9  R7  R3   R8  (   Ró   Rô   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_tls_repru  s    c          c` sX   t  ƒ  V\ }  } |  j t | ƒ k s+ t ‚ | j t |  ƒ k sF t ‚ t |  | ƒ Vd  S(   N(   RP   R9  R7  R3   R8  (   Ró   Rô   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_inproc_repr}  s    c         C` sH   |  j  | j k s t ‚ |  j | j  k s0 t ‚ |  j ƒ  | j ƒ  d  S(   N(   Rk   R9  R3   t   abort(   Ró   Rô   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   check_addresses…  s    
c          c` s"   t  ƒ  V\ }  } t |  | ƒ Vd  S(   N(   RL   R>  (   Ró   Rô   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_tcp_adresses  s    c          c` s"   t  ƒ  V\ }  } t |  | ƒ Vd  S(   N(   RO   R>  (   Ró   Rô   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_tls_adresses“  s    c          c` s"   t  ƒ  V\ }  } t |  | ƒ Vd  S(   N(   RP   R>  (   Ró   Rô   (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   test_inproc_adresses™  s    (   R%   R&   (   (   R%   R&   (   R'   s   Dask-distributed(   (   R'   s   Dask-distributed(   R(   R)   (   (   R(   R)   (   R*   R+   (   (   R*   R+   (‚   t
   __future__R    R   R   t	   functoolsR   Ra   R¬   R‹   t   warningsRY   t   tornadoR   R   R   R   t   tornado.concurrentR   t   distributed.compatibilityR	   t   distributed.metricsR
   t   distributed.utilsR   R   t   distributed.utils_testR   R   R   R   R   R   R   t   distributed.protocolR   R   R   R   t   distributed.commR   R   R   R   R   R   R   R   R    R!   R"   RØ   t   catch_warningsRR   t   simplefilterRÚ   t   ca_fileR4   R9   R2   RN   R|   R_   RK   RL   RO   RP   RX   R]   R`   Rc   Rd   Rh   R…   RŠ   R”   R£   R¦   R·   R¸   R¹   RÊ   RÎ   RÞ   RÖ   RÙ   RÛ   RÜ   RÝ   Rß   Rà   Rá   Rî   Rï   Rð   Rñ   Rò   R÷   Rø   Rù   Rú   Rý   R   R  R  R  R  R  R  R  R$  t   markt   xfailR&  R'  R+  R,  R-  R/  t   objectR0  R5  R6  R8  R:  R;  R<  R>  R?  R@  RA  (    (    (    s@   lib/python2.7/site-packages/distributed/comm/tests/test_comms.pyt   <module>   sÒ   "."L												/2,>		
I	

E:		
`"	

