ó
ÐH/\c           @` sB  d  d l  m Z d  d l  m Z d  d l  m Z d  d l Z d  d l Z d  d l j Z 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	 e j f d
 „  ƒ  YZ e j d ƒ d e j f d „  ƒ  Yƒ Z e j d ƒ d e j f d „  ƒ  Yƒ Z d e j f d „  ƒ  YZ e d k r>e j ƒ  n  d S(   i    (   t   absolute_import(   t   division(   t   print_functionN(   t   util(   t   local(   t
   getcurrent(   t   NativeStrIOt   MyLocalc           B` s   e  Z d  „  Z RS(   c         C` s   | |  _  d  S(   N(   t   foo(   t   selfR   (    (    s6   lib/python2.7/site-packages/gevent/tests/test__util.pyt   __init__   s    (   t   __name__t
   __module__R
   (    (    (    s6   lib/python2.7/site-packages/gevent/tests/test__util.pyR      s   s'   5.10.x is *very* slow formatting stackst
   TestFormatc           B` s   e  Z d  „  Z d „  Z RS(   c         C` so   t  j ƒ  } d j | ƒ } |  j d | ƒ |  j d | ƒ |  j d | ƒ |  j d | ƒ |  j d | ƒ d  S(   Ns   
t   Threadst	   Greenletss
   Spawned ats   Parent greenlets   Spawn Tree Locals(   R   t   format_run_infot   joint   assertInt   assertNotIn(   R	   t   linest   value(    (    s6   lib/python2.7/site-packages/gevent/tests/test__util.pyt
   test_basic   s    c         C` s½   t  j  ƒ  } d | _ d „  } t j | ƒ } d | _ | j ƒ  | j } |  j d | ƒ |  j d | ƒ |  j d | ƒ |  j d | ƒ |  j d | ƒ |  j d | ƒ |  j d	 | ƒ d  S(
   Ni   c          S` sx   t  d ƒ }  |  s t ‚ t j ƒ  } | s0 t ‚ d t j ƒ  j d <t ƒ  } t j t j	 d | ƒ} | j
 ƒ  | j ƒ  S(   Ni*   s   a valuet   file(   R   t   AssertionErrorR   t   geventR   t   spawn_tree_localsR   t   spawnR   t   print_run_infoR   t   getvalue(   t   lt   l2t   iot   g(    (    s6   lib/python2.7/site-packages/gevent/tests/test__util.pyt   root+   s    	
t   Printers
   Spawned ats   Parent:s   Spawn Tree Localss   Greenlet Locals:R   s   {}(	   R   R   R   R   t   nameR   R   R   R   (   R	   t   rlR"   R!   R   (    (    s6   lib/python2.7/site-packages/gevent/tests/test__util.pyt   test_with_Greenlet(   s    			
	(   R   R   R   R&   (    (    (    s6   lib/python2.7/site-packages/gevent/tests/test__util.pyR      s   	s   See TestFormatt   TestTreec           B` sb   e  Z d  „  Z d „  Z d „  Z d „  Z e j d „  ƒ Z e j d „  ƒ Z	 e j d „  ƒ Z
 RS(   c         C` s;   t  t |  ƒ j ƒ  t j j |  _ t t j _ d  |  _ d  S(   N(	   t   superR'   t   setUpR   t   configt   track_greenlet_treet   Truet   Nonet   maxDiff(   R	   (    (    s6   lib/python2.7/site-packages/gevent/tests/test__util.pyR)   I   s    c         C` s&   |  j  t j _  t t |  ƒ j ƒ  d  S(   N(   R+   R   R*   R(   R'   t   tearDown(   R	   (    (    s6   lib/python2.7/site-packages/gevent/tests/test__util.pyR/   O   s    c   	      ` s%  x t  d ƒ D] } t j ƒ  q Wg  } t d ƒ } | s? t ‚ d „  ‰  d „  ‰ ‡  ‡ f d †  ‰ ˆ  ˆ ƒ } | j ƒ  | j ˆ  ˆ ƒ ƒ ‡  ‡ f d †  } ˆ  | ƒ } | j d  k	 rÉ d | j d <n  | j ƒ  ˆ  t	 j
 j ƒ } | j ƒ  | j } | t | ƒ | j d	 i t d
 6t d 6ƒ f S(   Ni   i*   c         S` s7   t  t ƒ  ƒ t j |  ƒ } t | d ƒ t  | ƒ | S(   Nt   minimal_ident(   t   strR   R   R   t   getattr(   t   fR!   (    (    s6   lib/python2.7/site-packages/gevent/tests/test__util.pyt   s^   s
    
c           S` s   t  j ƒ  ‚ d  S(   N(   t	   greentestt   ExpectedException(    (    (    s6   lib/python2.7/site-packages/gevent/tests/test__util.pyt   t1g   s    c          ` s>   t  d ƒ }  |  s t ‚ ˆ  ˆ ƒ } d t | j ƒ | _ | S(   Ni   s   CustomName-(   R   R   R1   R0   R$   (   R   R!   (   R4   R7   (    s6   lib/python2.7/site-packages/gevent/tests/test__util.pyt   t2j   s
    c           ` s
   ˆ  ˆ ƒ S(   N(    (    (   R4   R8   (    s6   lib/python2.7/site-packages/gevent/tests/test__util.pyt   t3w   s    t   STLt   stlt   detailst   running_stackst   spawning_stacks(   t   ranget   gct   collectR   R   R   t   appendR   R-   R   t   GreenletTreet   current_treeR   R1   t   formatt   False(	   R	   t   _t   gletsR   t   s1R9   t   s3t   s4t   tree(    (   R4   R7   R8   s6   lib/python2.7/site-packages/gevent/tests/test__util.pyt   _build_treeS   s*    			


	c         C` s¬   d d  l  } | j d | j ƒ } | j d | ƒ } | j d d ƒ } | j d d ƒ } | j d d ƒ } | j d	 ƒ j d
 | ƒ } | j d d ƒ } | j d d ƒ } | S(   Ni    s   0x[0123456789abcdef]+L?t   Xt   epollt   selectt   defaultt
   test__utilt   __main__s	    fileno=.t    s   ref=-1s   ref=0s   type.current_trees   GreenletTree.current_tree(   t   ret   compilet   It   subt   replace(   R	   R   RU   t   hexobj(    (    s6   lib/python2.7/site-packages/gevent/tests/test__util.pyt   _normalize_tree_format‡   s    c         C` sd   |  j  ƒ  \ } } } |  j | j ƒ |  j d | ƒ |  j | ƒ } d j ƒ  } |  j | | ƒ d  S(   Nt   ParentsD  <greenlet.greenlet object at X>
 :    Parent: None
 :    Greenlet Locals:
 :      Local <class '__main__.MyLocal'> at X
 :        {'foo': 42}
 +--- <QuietHub '' at X default default pending=0 ref=0 thread_ident=X>
 :          Parent: <greenlet.greenlet object at X>
 +--- <Greenlet "Greenlet-1" at X: t2>; finished with value <Greenlet "CustomName-0" at 0x
 :          Parent: <QuietHub '' at X default default pending=0 ref=0 thread_ident=X>
 |    +--- <Greenlet "CustomName-0" at X: t1>; finished with exception ExpectedException()
 :                Parent: <QuietHub '' at X default default pending=0 ref=0 thread_ident=X>
 +--- <Greenlet "Greenlet-2" at X: t2>; finished with value <Greenlet "CustomName-4" at 0x
 :          Parent: <QuietHub '' at X default default pending=0 ref=0 thread_ident=X>
 |    +--- <Greenlet "CustomName-4" at X: t1>; finished with exception ExpectedException()
 :                Parent: <QuietHub '' at X default default pending=0 ref=0 thread_ident=X>
 +--- <Greenlet "Greenlet-3" at X: t3>; finished with value <Greenlet "Greenlet-5" at X
 :          Parent: <QuietHub '' at X default default pending=0 ref=0 thread_ident=X>
 :          Spawn Tree Locals
 :          {'stl': 'STL'}
 |    +--- <Greenlet "Greenlet-5" at X: t2>; finished with value <Greenlet "CustomName-6" at 0x
 :                Parent: <QuietHub '' at X default default pending=0 ref=0 thread_ident=X>
 |         +--- <Greenlet "CustomName-6" at X: t1>; finished with exception ExpectedException()
 :                      Parent: <QuietHub '' at X default default pending=0 ref=0 thread_ident=X>
 +--- <Greenlet "Greenlet-7" at X: <bound method GreenletTree.current_tree of <class 'gevent.util.GreenletTree'>>>; finished with value <gevent.util.GreenletTree obje
            Parent: <QuietHub '' at X default default pending=0 ref=0 thread_ident=X>
        (   RM   t
   assertTrueR"   R   R[   t   stript   assertEqual(   R	   RL   t   str_treet   tree_formatR   t   expected(    (    s6   lib/python2.7/site-packages/gevent/tests/test__util.pyt	   test_tree“   s    c         C` s   t  t j _ |  j ƒ  d  S(   N(   RF   R   R*   R+   RM   (   R	   (    (    s6   lib/python2.7/site-packages/gevent/tests/test__util.pyt   test_tree_no_track¹   s    c         ` s†   d d l  m  ‰  ‡  f d †  } ˆ  | ƒ } | j ƒ  } | j d i t d 6t d 6ƒ } |  j | ƒ } d j ƒ  } |  j | | ƒ d  S(   Ni    (   t   greenletc          ` s1   ˆ  t  j j ƒ }  t |  j _ t |  _ |  j ƒ  S(   N(   R   RC   RD   R,   t   parentt   greenlet_tree_is_ignoredt   greenlet_tree_is_roott   switch(   t   c(   t   RawGreenlet(    s6   lib/python2.7/site-packages/gevent/tests/test__util.pyt   t4Ã   s    	R<   R=   R>   sc   <greenlet.greenlet object at X>; not running
 :    Parent: <greenlet.greenlet object at X>
        (   Re   Ri   RE   RF   R[   R^   R_   (   R	   Rl   R!   RL   Ra   R   Rb   (    (   Rk   s6   lib/python2.7/site-packages/gevent/tests/test__util.pyt   test_forest_fake_parent¿   s    	(   R   R   R)   R/   RM   R[   R5   t   ignores_leakcheckRc   Rd   Rm   (    (    (    s6   lib/python2.7/site-packages/gevent/tests/test__util.pyR'   F   s   			4	&t   TestAssertSwitchesc           B` s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C` s:  d d l  m } |  j t j ƒ $ } t j ƒ   | d ƒ Wd  QXWd  QXt | j ƒ } |  j d | ƒ |  j t j ƒ % t j d ƒ  | d ƒ Wd  QXWd  QX|  j t j ƒ - } t j d d t	 ƒ | d ƒ Wd  QXWd  QXt | j ƒ } |  j d | ƒ |  j d | ƒ t j d	 d t
 ƒ | d ƒ Wd  QXd  S(
   Ni    (   t   sleepgü©ñÒMbP?s   To any greenlet ingš™™™™™¹?t   hub_onlys   To the hub ins   (max allowed 0.0010 seconds)g      ð?(   t   timeRp   t   assertRaisesR   t   _FailedToSwitcht   assert_switchesR1   t	   exceptionR   R,   RF   (   R	   Rp   t   exct   message(    (    s6   lib/python2.7/site-packages/gevent/tests/test__util.pyt   test_time_sleepÝ   s"    c      	   C` sO   |  j  t j ƒ  t j ƒ   Wd  QXWd  QXt j d d d t ƒ  Wd  QXd  S(   Nt   max_blocking_timei   Rq   (   Rs   R   Rt   Ru   RF   (   R	   (    (    s6   lib/python2.7/site-packages/gevent/tests/test__util.pyt   test_no_switches_no_function  s
    c      	   C` s6   |  j  t ƒ ! t j ƒ   t ƒ  ‚ Wd  QXWd  QXd  S(   N(   Rs   t	   NameErrorR   Ru   (   R	   (    (    s6   lib/python2.7/site-packages/gevent/tests/test__util.pyt   test_exception_not_supressed  s    c         C` sî   d d l  m } t j ƒ  Ì } |  j | ƒ  | j ƒ |  j | j j ƒ t j ƒ  x } |  j | ƒ  | j ƒ |  j | j j | j ƒ | j d |  |  f ƒ |  j	 |  | j j ƒ |  j	 |  | j j ƒ Wd  QX|  j | ƒ  | j ƒ Wd  QXd  S(   Ni    (   t   gettraceRi   (
   Re   R~   R   Ru   R_   t   tracert   assertIsNotNonet   active_greenlett   previous_trace_functiont   assertIs(   R	   R~   t   outert   inner(    (    s6   lib/python2.7/site-packages/gevent/tests/test__util.pyt   test_nested  s    (   R   R   Ry   R{   R}   R†   (    (    (    s6   lib/python2.7/site-packages/gevent/tests/test__util.pyRo   Û   s   	%	
	RS   (   t
   __future__R    R   R   R@   t   unittestt   gevent.testingt   testingR5   R   R   R   Re   R   t   gevent._compatR   R   t
   skipOnPyPyt   TestCaseR   R'   Ro   R   t   main(    (    (    s6   lib/python2.7/site-packages/gevent/tests/test__util.pyt   <module>   s$   ,”H