B
    F.\                 @   s6  d dl Z d dl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 d dlmZ d d	lmZ e
d
ddd Ze
d
ddd Ze
d
ddd Ze
dddd Zdd Ze
dddd Zdd Ze
d
ddd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Z e
ddd)d* Z!dS )+    N)delayed)Client)
futures_of)time)gen_clusterinc)clientcluster_fixtureloop)
Serialized)genF)r   c       	   	   c   s  t | j| jfddV }t | j| jfddV }|tdV }|j|dV }d| jd jks^tt	| jd jd d t
s|ttt}|j|dV }W d Q R X dt|jkstdt|jkst|j V }|dkst|j V }|dkst| V  | V  d S )NT)asynchronous   )datar   publishexists)r   ipportscatterrangepublish_dataset
extensionsdatasetsAssertionError
isinstancer   pytestraisesKeyErrorstrvalue	schedulerpublish_listclose)	sabcfr   outexc_inforesult r+   =lib/python3.7/site-packages/distributed/tests/test_publish.pytest_publish_simple   s     
r-   c       	      c   s   t | j| jfddV }t | j| jfddV }z|xvdD ]n}|tdV }|j||dV }|| jd jksltt	| jd j| d t
st|j V }||ks4tq4W W d |  |  X d S )NT)r   ))r$   r%   g      "@   r   )namer   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,   test_publish_non_string_key(   s    
r0   c       	   	   c   s  t | j| jfddV }t | j| jfddV }|dddgV }|j|dV  d| j|d j ksdt|jdd	V }t	|t	|kst|
|V }|dddgksttt}|jd
d	V }W d Q R X dt|jkstd
t|jkst| V  | V  d S )NT)r   r         )r   zpublished-datar   )r/   Znonexistentz	not found)r   r   r   r   r   	who_wantskeyr   get_datasetlenZgatherr   r   r   r   r   r"   )	r#   r$   r%   r&   r'   r   r*   r(   r)   r+   r+   r,   test_publish_roundtrip<   s    
r7   Tc       	   	   c   s   |  dddgV }| j|dV  |d j}~| jjddV  d|jd jksPtt }x,||j	krt
dV  t |d	 k sXtqXW tt}| jddV }W d Q R X d
t|jkstdt|jkstd S )Nr   r1   r2   )r   r   )r/   r   g{Gz?   z	not found)r   r   r4   r    Zpublish_deleter   r   r   r   r3   r   Zsleepr   r   r   r5   r   r   )	r&   r#   r$   r%   r   r4   startr)   r*   r+   r+   r,   test_unpublishU   s    
r:   c          	   C   sr   |  dddg}| j|d | jdd tt}| jdd}W d Q R X dt|jks\t	dt|jksnt	d S )Nr   r1   r2   )r   r   )r/   z	not found)
r   r   unpublish_datasetr   r   r   r5   r   r   r   )r   r   r)   r*   r+   r+   r,   test_unpublish_syncm   s    r<   c             c   sL   t td}t td}| j||dV  | j V }t|ddhksHtd S )Nr1   r2   )xyr=   r>   )r   r   r   r    r!   setr   )r&   r#   r$   r%   r=   r>   r   r+   r+   r,   test_publish_multiple_datasetsy   s
    r@   c          	   C   s   t td}t td}| j||d | jdd tt}| jdd}W d Q R X |  }t	|dhksnt
dt|jkst
dt|jkst
| jdd tt}| jdd}W d Q R X dt|jkst
dt|jkst
d S )Nr1   r2   )r=   r>   r=   )r/   r>   z	not found)r   r   r   r;   r   r   r   r5   list_datasetsr?   r   r   r   )r   r=   r>   r)   r*   r   r+   r+   r,   %test_unpublish_multiple_datasets_sync   s    rB   c             c   s<  t d}t| j| jfddV }t| j| jfddV }|dddg}||}tt|dksdt	dd	 t|D }|t
|jkst	|j|d
V  tt|dkst	|dV }	t
|	j t
|j kst	dd	 |	j D dd	 |j D kst	||	V }
|
dddgks$t	| V  | V  d S )Nzdask.bagT)r   r   r1   r2   r   c             S   s   h | ]
}|j qS r+   )r4   ).0r'   r+   r+   r,   	<setcomp>   s    z#test_publish_bag.<locals>.<setcomp>)r   r   c             S   s   h | ]
}|j qS r+   )r4   )rC   r'   r+   r+   r,   rD      s    )r   Zimportorskipr   r   r   Zfrom_sequenceZpersistr6   r   r   r?   daskr   r5   keysvaluesZcomputer"   )r#   r$   r%   Zdbr&   r'   ZbagZbagprF   r*   r(   r+   r+   r,   test_publish_bag   s"    

 .
rH   c             C   s2   x,dD ]$}d}|| j |< | ||kstqW d S )N)r4   )r4   r4   r1   r   )r   r5   r   )r   r4   r   r+   r+   r,   test_datasets_setitem   s    

rI   c             C   s6   x0dD ](}d}| j ||d | j| |kstqW d S )N)r4   )r4   r4   r1   r   )r/   )r   r   r   )r   r4   r   r+   r+   r,   test_datasets_getitem   s    
rJ   c             C   s<   x6dD ].}d}| j ||d | j|= ||  kstqW d S )N)r4   )r4   r4   r1   r   )r/   )r   r   rA   r   )r   r4   r   r+   r+   r,   test_datasets_delitem   s
    
rK   c             C   sF   | j f dd tdD  t| j }|dd tdD ksBtd S )Nc             S   s   i | ]}|t |qS r+   )r   )rC   nr+   r+   r,   
<dictcomp>   s    z&test_datasets_keys.<locals>.<dictcomp>
   c             S   s   g | ]}t |qS r+   )r   )rC   rL   r+   r+   r,   
<listcomp>   s    z&test_datasets_keys.<locals>.<listcomp>)r   r   listr   rF   r   )r   rF   r+   r+   r,   test_datasets_keys   s    rQ   c             C   s&   d\}}| j |d || jks"td S )N)r4   r   )r4   )r   r   r   )r   r4   r   r+   r+   r,   test_datasets_contains   s    rR   c             C   sT   dd t dD }| jf dd |D  x&t| jD ]\}}|t|ks4tq4W d S )Nc             S   s   g | ]}|qS r+   r+   )rC   rL   r+   r+   r,   rO      s    z&test_datasets_iter.<locals>.<listcomp>rN   c             S   s   i | ]}|t |qS r+   )r   )rC   r4   r+   r+   r,   rM      s    z&test_datasets_iter.<locals>.<dictcomp>)r   r   	enumerater   r   r   )r   rF   rL   r4   r+   r+   r,   test_datasets_iter   s    rT   c          	   c   s   t |jddgdV }z|jdddgdV  |dV }|d	ksBttt |jd
d dV  W d Q R X | jdd dV  tt |dV  W d Q R X W d | V  X d S )NTZmsgpack)r   Zserializersr1   r2   r   )r=   r=   )r1   r2   r   c             S   s   | S )Nr+   )r=   r+   r+   r,   <lambda>   s    z"test_pickle_safe.<locals>.<lambda>)r>   c             S   s   | S )Nr+   )r=   r+   r+   r,   rU      s    )zrV   )	r   Zaddressr   r5   r   r   r   	TypeErrorr"   )r&   r#   r$   r%   Zc2r*   r+   r+   r,   test_pickle_safe   s    rX   )"r   rE   r   Zdistributedr   Zdistributed.clientr   Zdistributed.metricsr   Zdistributed.utils_testr   r   r   r	   r
   Zdistributed.protocolr   Ztornador   r-   r0   r7   r:   r<   r@   rB   rH   rI   rJ   rK   rQ   rR   rT   rX   r+   r+   r+   r,   <module>   s.   
