ó
­«Y]c           @   sá   d  Z  d d l Z d d l Z d d l Z d d l m Z d d l m Z d d l Z d d l m	 Z	 m
 Z
 d e j f d „  ƒ  YZ d „  Z d	 „  Z d
 „  Z d e j d <d e j d <d e j d <e d k rÝ e ƒ  n  d S(   s"   Test suite for the profile module.iÿÿÿÿN(   t   StringIO(   t   run_unittest(   t   testfunct   timert   ProfileTestc           B   sM   e  Z e j Z d  d d g Z i  Z d Z e d „  ƒ Z	 d „  Z
 d „  Z RS(   t   print_statst   print_callerst   print_calleess   :0(sort)c         C   sº   g  } |  j  t d ƒ } t ƒ  } | j d t ƒ  t ƒ  ƒ | j t ƒ  | ƒ xe |  j D]Z } t ƒ  } t j	 | d | ƒ} | j
 ƒ  j d ƒ t | | ƒ ƒ  | j | j ƒ  ƒ qX W| S(   Ngü©ñÒMbP?s
   testfunc()t   streamt   stdname(   t   profilerclassR   t   runctxt   globalst   localst   appendt   methodnamesR    t   pstatst   Statst
   strip_dirst
   sort_statst   getattrt   getvalue(   t   clst   resultst   proft   start_timert
   methodnamet   st   stats(    (    s"   lib/python2.7/test/test_profile.pyt   do_profiling   s    		c         C   sv   |  j  ƒ  } |  j | d d ƒ xO t |  j ƒ D]> \ } } |  j | | d |  j | d | |  j j f ƒ q0 Wd  S(   Ni    iè  i   s/   Stats.%s output for %s doesn't fit expectation!(   R   t   assertEqualt	   enumerateR   t   expected_outputR
   t   __name__(   t   selfR   t   it   method(    (    s"   lib/python2.7/test/test_profile.pyt   test_cprofile#   s    c         C   s¨   d d d d g } x | D]‡ } t  ƒ  } |  j t d ƒ } | j | t ƒ  t ƒ  ƒ t j | d | ƒ} | j ƒ  | j	 ƒ  } |  j
 |  j | d j | | ƒ ƒ q Wd  S(   Ns	   [].sort()s   [].sort(reverse=True)s   [].sort(*(None, None, True))s   [].sort(**dict(reverse=True))gü©ñÒMbP?R   s,   Profiling {0!r} didn't report list.sort:
{1}(   R    R
   R   R   R   R   R   R   R   R   t   assertInt   expected_list_sort_outputt   format(   R"   t   stmtst   stmtR   R   R   t   res(    (    s"   lib/python2.7/test/test_profile.pyt   test_calling_conventions+   s    		
(   R!   t
   __module__t   profilet   ProfileR
   R   R    R'   t   classmethodR   R%   R,   (    (    (    s"   lib/python2.7/test/test_profile.pyR      s   		c         C   sï   |  j  d ƒ }  d |  GH| j ƒ  } g  } t |  d ƒ 9 } x/ | D]' } | j | ƒ | d  d k rC PqC qC WWd  QXt |  d ƒ f } | j | ƒ xB t | j ƒ D]1 \ } } | j d | j | | | d f ƒ q£ W| j d	 ƒ Wd  QXd  S(
   Nt   cos   Regenerating %s...t   ri   s   #--cutt   ws$   %s.expected_output[%r] = """\
%s"""
i   s'   
if __name__ == "__main__":
    main()
(	   t   rstripR   t   openR   t
   writelinesR   R   t   writeR!   (   t   filenameR   R   t   newfilet   ft   lineR#   R$   (    (    s"   lib/python2.7/test/test_profile.pyt   regenerate_expected_output?   s    		 c           C   s   t  t ƒ d  S(   N(   R   R   (    (    (    s"   lib/python2.7/test/test_profile.pyt	   test_mainS   s    c           C   s*   d t  j k r t ƒ  n t t t ƒ d  S(   Ns   -r(   t   syst   argvR=   R<   t   __file__R   (    (    (    s"   lib/python2.7/test/test_profile.pyt   mainV   s    
s           127 function calls (107 primitive calls) in 999.749 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        4   -0.004   -0.001   -0.004   -0.001 :0(append)
        4   -0.004   -0.001   -0.004   -0.001 :0(exc_info)
       12   -0.024   -0.002   11.964    0.997 :0(hasattr)
        8   -0.008   -0.001   -0.008   -0.001 :0(range)
        1    0.000    0.000    0.000    0.000 :0(setprofile)
        1   -0.002   -0.002  999.751  999.751 <string>:1(<module>)
        0    0.000             0.000          profile:0(profiler)
        1   -0.002   -0.002  999.749  999.749 profile:0(testfunc())
       28   27.972    0.999   27.972    0.999 profilee.py:110(__getattr__)
        1  269.996  269.996  999.753  999.753 profilee.py:25(testfunc)
     23/3  149.937    6.519  169.917   56.639 profilee.py:35(factorial)
       20   19.980    0.999   19.980    0.999 profilee.py:48(mul)
        2   39.986   19.993  599.814  299.907 profilee.py:55(helper)
        4  115.984   28.996  119.964   29.991 profilee.py:73(helper1)
        2   -0.006   -0.003  139.942   69.971 profilee.py:84(helper2_indirect)
        8  311.976   38.997  399.896   49.987 profilee.py:88(helper2)
        8   63.968    7.996   79.944    9.993 profilee.py:98(subhelper)


R   s{     Ordered by: standard name

Function                          was called by...
:0(append)                        <- profilee.py:73(helper1)(4)  119.964
:0(exc_info)                      <- profilee.py:73(helper1)(4)  119.964
:0(hasattr)                       <- profilee.py:73(helper1)(4)  119.964
                                     profilee.py:88(helper2)(8)  399.896
:0(range)                         <- profilee.py:98(subhelper)(8)   79.944
:0(setprofile)                    <- profile:0(testfunc())(1)  999.749
<string>:1(<module>)              <- profile:0(testfunc())(1)  999.749
profile:0(profiler)               <-
profile:0(testfunc())             <- profile:0(profiler)(1)    0.000
profilee.py:110(__getattr__)      <- :0(hasattr)(12)   11.964
                                     profilee.py:98(subhelper)(16)   79.944
profilee.py:25(testfunc)          <- <string>:1(<module>)(1)  999.751
profilee.py:35(factorial)         <- profilee.py:25(testfunc)(1)  999.753
                                     profilee.py:35(factorial)(20)  169.917
                                     profilee.py:84(helper2_indirect)(2)  139.942
profilee.py:48(mul)               <- profilee.py:35(factorial)(20)  169.917
profilee.py:55(helper)            <- profilee.py:25(testfunc)(2)  999.753
profilee.py:73(helper1)           <- profilee.py:55(helper)(4)  599.814
profilee.py:84(helper2_indirect)  <- profilee.py:55(helper)(2)  599.814
profilee.py:88(helper2)           <- profilee.py:55(helper)(6)  599.814
                                     profilee.py:84(helper2_indirect)(2)  139.942
profilee.py:98(subhelper)         <- profilee.py:88(helper2)(8)  399.896


R   sö     Ordered by: standard name

Function                          called...
:0(append)                        ->
:0(exc_info)                      ->
:0(hasattr)                       -> profilee.py:110(__getattr__)(12)   27.972
:0(range)                         ->
:0(setprofile)                    ->
<string>:1(<module>)              -> profilee.py:25(testfunc)(1)  999.753
profile:0(profiler)               -> profile:0(testfunc())(1)  999.749
profile:0(testfunc())             -> :0(setprofile)(1)    0.000
                                     <string>:1(<module>)(1)  999.751
profilee.py:110(__getattr__)      ->
profilee.py:25(testfunc)          -> profilee.py:35(factorial)(1)  169.917
                                     profilee.py:55(helper)(2)  599.814
profilee.py:35(factorial)         -> profilee.py:35(factorial)(20)  169.917
                                     profilee.py:48(mul)(20)   19.980
profilee.py:48(mul)               ->
profilee.py:55(helper)            -> profilee.py:73(helper1)(4)  119.964
                                     profilee.py:84(helper2_indirect)(2)  139.942
                                     profilee.py:88(helper2)(6)  399.896
profilee.py:73(helper1)           -> :0(append)(4)   -0.004
                                     :0(exc_info)(4)   -0.004
                                     :0(hasattr)(4)   11.964
profilee.py:84(helper2_indirect)  -> profilee.py:35(factorial)(2)  169.917
                                     profilee.py:88(helper2)(2)  399.896
profilee.py:88(helper2)           -> :0(hasattr)(8)   11.964
                                     profilee.py:98(subhelper)(8)   79.944
profilee.py:98(subhelper)         -> :0(range)(8)   -0.008
                                     profilee.py:110(__getattr__)(16)   27.972


R   t   __main__(   t   __doc__R>   R   t   unittestR    t   test.test_supportR   R.   t   test.profileeR   R   t   TestCaseR   R<   R=   RA   R    R!   (    (    (    s"   lib/python2.7/test/test_profile.pyt   <module>   s    2			""