ó
ßüÚ\c           @   s  d  d l  Z  d  d l Z d  d l Z d  d l m Z d  d l Z d  d l m Z m Z d  d l	 m
 Z
 d  d l m Z m Z m Z m Z m Z m Z m Z m Z m Z d „  Z e  j j e d d ƒd	 „  ƒ Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d S(   iÿÿÿÿN(   t   first(   t   get_thread_identityt   WINDOWS(   t   metrics(	   t   processt   merget   createt
   call_stackt
   identifiert   watcht	   llprocesst   ll_get_stackt	   plot_datac    
         s;  d „  ‰  d „  ‰ ‡  ‡ f d †  }  t  j d |  ƒ } t | _ | j ƒ  t ƒ  } xD t d ƒ D]6 } t j d ƒ t	 j
 ƒ  | j } t | d  | ƒ q_ W| d d k s¯ t ‚ | } x0 t | d ƒ d	 k rç t | d j ƒ  ƒ } q¸ W| d d k sþ t ‚ d
 t | d ƒ k st ‚ g  | d j ƒ  D]" } d t | d ƒ k r+| ^ q+d } g  | d j ƒ  D]" } d t | d ƒ k rh| ^ qhd } | d | d k  s®t ‚ d | d | d k  oÑd k n sÜt ‚ t | ƒ }	 t t t t |	 j ƒ  ƒ ƒ ƒ d	 k st ‚ t t |	 d ƒ ƒ d	 k s7t ‚ d  S(   Nc           S   s   t  j d ƒ d  S(   Ng{®Gáz„?(   t   timet   sleep(    (    (    s=   lib/python2.7/site-packages/distributed/tests/test_profile.pyt   test_g   s    c           S   s   t  j d ƒ d  S(   Ng{®Gáz”?(   R   R   (    (    (    s=   lib/python2.7/site-packages/distributed/tests/test_profile.pyt   test_h   s    c             s)   x" t  d ƒ D] }  ˆ  ƒ  ˆ ƒ  q Wd  S(   Nid   (   t   range(   t   i(   R   R   (    s=   lib/python2.7/site-packages/distributed/tests/test_profile.pyt   test_f   s    t   targetid   g{®Gáz”?t   countt   childreni   R   t   descriptionR   i    R   i_   t   color(   t	   threadingt   Threadt   Truet   daemont   startR   R   R   R   t   syst   _current_framest   identR   t   Nonet   AssertionErrort   lenR    t   valuest   strR   t   sett   map(
   R   t   threadt   stateR   t   framet   dt   ct   gt   ht   pd(    (   R   R   s=   lib/python2.7/site-packages/distributed/tests/test_profile.pyt
   test_basic   s0    			
	==.-t   reasons3   no low-level profiler support for Windows availablec          C   sT  t  j d ƒ t ƒ  }  xŒ t d ƒ D]~ } t j d ƒ t j ƒ  t j	 ƒ  } i t
 t j	 ƒ  ƒ t j	 ƒ  6} x3 | j ƒ  D]% } | d  k	 rx t | d  |  ƒ qx qx Wq# W|  d d k s» t ‚ |  j d ƒ } | sÖ t ‚ d } xq t | j ƒ  | j ƒ  ƒ D]T \ } } | j d ƒ }	 |	 st ‚ |	 j d ƒ }
 | | k rF|
 | k sø t ‚ qø Wd  S(	   Nt
   stacktraceid   g{®Gáz”?R   R   s   <low-level>R   t   filename(   t   pytestt   importorskipR   R   R   R   R   R   R   t	   get_identR   R$   R!   R
   R"   t   gett   zipt   keys(   R)   R   R*   t   llframest   fR   t   expectedt   kt   vt   descR3   (    (    s=   lib/python2.7/site-packages/distributed/tests/test_profile.pyt   test_basic_low_level?   s$    	(c          C   sz  i d d 6d d 6d d 6i i d d 6d d 6d	 d 6i  d
 6d	 6i d d 6d d 6d d 6i  d
 6d 6d
 6}  i d d 6d d 6d d 6i i d d 6d d 6i  d
 6d d 6d 6i d d 6d d 6i  d
 6d d 6d 6d
 6} i d d 6d d 6d d 6i i d d 6d d 6d	 d 6i  d
 6d	 6i d d 6d d 6d d 6i  d
 6d 6i d d 6d d 6d d 6i  d
 6d 6d
 6} t  |  | ƒ | k svt ‚ d  S(   Ni   R   t   rootR   t   aR   i   s   b-funct   bR   i   s   c-funcR,   i   s   d-funcR+   i	   (   R   R"   (   t   a1t   a2R<   (    (    s=   lib/python2.7/site-packages/distributed/tests/test_profile.pyt
   test_mergeZ   sf    c           C   s^   t  ƒ  t ƒ  k s t ‚ t  t ƒ  ƒ t ƒ  k s6 t ‚ t  t ƒ  t ƒ  ƒ t ƒ  k sZ t ‚ d  S(   N(   R   R   R"   (    (    (    s=   lib/python2.7/site-packages/distributed/tests/test_profile.pyt   test_merge_empty    s    c          C   sp   t  j ƒ  t ƒ  }  t |  ƒ } t | t ƒ s4 t ‚ t d „  | Dƒ ƒ sP t ‚ d t | d ƒ k sl t ‚ d  S(   Nc         s   s   |  ] } t  | t ƒ Vq d  S(   N(   t
   isinstanceR%   (   t   .0t   s(    (    s=   lib/python2.7/site-packages/distributed/tests/test_profile.pys	   <genexpr>ª   s    t   test_call_stackiÿÿÿÿ(	   R   R   R   R   RH   t   listR"   t   allR%   (   R*   t   L(    (    s=   lib/python2.7/site-packages/distributed/tests/test_profile.pyRK   ¦   s
    c          C   sS   t  j ƒ  t ƒ  }  t |  ƒ t |  ƒ k s1 t ‚ t d  ƒ t d  ƒ k sO t ‚ d  S(   N(   R   R   R   R   R"   R!   (   R*   (    (    s=   lib/python2.7/site-packages/distributed/tests/test_profile.pyt   test_identifier®   s    c             s  t  j ƒ  ‰  ‡  f d †  }  t j ƒ  } t d d d d d |  ƒ } t  j ƒ  ‰  x? t j ƒ  | k r t  j ƒ  ˆ  d k  s t ‚ t j d ƒ qQ Wt j d	 ƒ d
 t | ƒ k  oº d k  n sÅ t ‚ t  j ƒ  ‰  x? t j ƒ  | k rt  j ƒ  ˆ  d k  st ‚ t j d ƒ qÔ Wd  S(   Nc              s   t  j ƒ  ˆ  d k S(   Ng      à?(   R   R   (    (   R   (    s=   lib/python2.7/site-packages/distributed/tests/test_profile.pyt   stop·   s    t   intervalt   10mst   cyclet   50msRP   i   g{®Gáz„?g      à?i   i
   (   R   R   R   t   active_countR	   R"   R   R#   (   RP   t   start_threadst   log(    (   R   s=   lib/python2.7/site-packages/distributed/tests/test_profile.pyt
   test_watch´   s    ((   R4   R   R   t   toolzR    R   t   distributed.compatibilityR   R   t   distributedR   t   distributed.profileR   R   R   R   R   R	   R
   R   R   R0   t   markt   skipifR@   RF   RG   RK   RO   RX   (    (    (    s=   lib/python2.7/site-packages/distributed/tests/test_profile.pyt   <module>   s   @	)		F			