B
    F.\                 @   s   d dl Z d dlZd dlmZ d dlZd dlmZ d dlmZ d dl	m
Z
mZmZmZmZmZ dd Zdd	 Zd
d Zdd Zdd Zdd ZdS )    N)first)get_thread_identity)metrics)processmergecreate
call_stack
identifierwatchc                 sJ  dd  dd  fdd} t j| d}d|_|  t }x4td	D ](}td
 t	 |j
 }t|d | qHW |d d	kst|}x$t|d dkrt|d  }qW |d d	kstdt|d kstdd |d  D d }dd |d  D d }|d |d k std|d |d    k r@d	ksFn td S )Nc               S   s   t d d S )Ng{Gz?)timesleep r   r   =lib/python3.7/site-packages/distributed/tests/test_profile.pytest_g   s    ztest_basic.<locals>.test_gc               S   s   t d d S )Ng{Gz?)r   r   r   r   r   r   test_h   s    ztest_basic.<locals>.test_hc                 s"   xt dD ]}      q
W d S )Nd   )range)i)r   r   r   r   test_f   s    ztest_basic.<locals>.test_f)targetTr   g{Gz?countchildren   r   descriptionc             S   s    g | ]}d t |d kr|qS )r   r   )str).0cr   r   r   
<listcomp>*   s    ztest_basic.<locals>.<listcomp>r   c             S   s    g | ]}d t |d kr|qS )r   r   )r   )r   r   r   r   r   r   +   s    _   )	threadingZThreadZdaemonstartr   r   r   r   sys_current_framesZidentr   AssertionErrorlenr   valuesr   )r   Zthreadstater   framedghr   )r   r   r   
test_basic   s*    
r+   c           
   C   s   ddddddi ddd	d
i ddd} dddddi dddd	i d
ddd}ddddddi ddddi ddd	d
i ddd}t | ||kstd S )N   roota   zb-funcb)r   r   r	   r      zc-funcr   )r0   r   )r   r	   r   r      zd-funcr(   )r   r   r   r	   )r(   r   	   )r0   r(   r   )r   r#   )Za1Za2Zexpectedr   r   r   
test_merge1   sL    r4   c               C   s@   t  t kstt t t ks$tt t t t ks<td S )N)r   r   r#   r   r   r   r   test_merge_emptyc   s    r5   c              C   sR   t  t  } t| }t|ts$ttdd |D s:tdt|d ksNtd S )Nc             s   s   | ]}t |tV  qd S )N)
isinstancer   )r   sr   r   r   	<genexpr>m   s    z"test_call_stack.<locals>.<genexpr>test_call_stack)	r!   r"   r   r   r6   listr#   allr   )r'   Lr   r   r   r9   i   s
    r9   c              C   s:   t  t  } t| t| ks"ttd td ks6td S )N)r!   r"   r   r	   r#   )r'   r   r   r   test_identifierq   s    r>   c                 s   t    fdd} t }tdd| d}t   x.t |kr`t   d k sTttd q4W td d	t|  k rd
k sn tt   x.t |krt   d k sttd qW d S )Nc                  s   t   d kS )Ng      ?)r   r   r   )r    r   r   stopz   s    ztest_watch.<locals>.stopZ10msZ50ms)Zintervalcycler?   r1   g{Gz?g      ?r   
   )r   r   r   Zactive_countr
   r#   r   r$   )r?   Zstart_threadslogr   )r    r   
test_watchw   s    
rC   )r!   r   Ztoolzr   r   Zdistributed.compatibilityr   Zdistributedr   Zdistributed.profiler   r   r   r   r	   r
   r+   r4   r5   r9   r>   rC   r   r   r   r   <module>   s    %2