%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/
Upload File :
Create Path :
Current File : //opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/profiling.pyc

�
��4]c@sdZddlZddlZddlZddlZddlZddlmZddlm	Z	ddlm
Z
ddlmZdd	lmZdd
lm
Z
yddlZWnek
r�dZnXdZdZdefd��YZd
d�Zejd
d��ZdS(s�Profiling support for unit and performance tests.

These are special purpose profiling methods which operate
in a more fine-grained way than nose's profiling plugin.

i����Ni(tconfig(t
gc_collecti(tjython(tpypy(tupdate_wrapper(twin32tProfileStatsFilecBs\eZdZd�Zed��Zd�Zd�Zd�Zd�Z	d�Z
d�ZRS(	s�"Store per-platform/fn profiling results in a file.

    We're still targeting Py2.5, 2.4 on 0.7 with no dependencies,
    so no json lib :(  need to roll something silly

    cCs�tjdk	otjj|_|jp?tjdk	o?tjj|_tjj	|�|_
tjj|j
�d|_t
jd��|_|j�|jr�|j�ndS(Ni����cSs
tjt�S(N(tcollectionstdefaultdicttdict(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/profiling.pyt<lambda>:t(RtoptionstNonetforce_write_profilestforce_writetwrite_profilestwritetostpathtabspathtfnametsplittshort_fnameRRtdatat_readt_write(tselftfilename((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/profiling.pyt__init__0s	
	cCs�tjjdtjj}djgtjdd!D]}t|�^q1�}|g}|j|�t	rx|jd�nt
r�|jd�ntr�|jd�n|jtjjj
r�dnd	�tjj�}|j|r�d
p�d�dj|�S(Nt_t.iiRRtwint
nativeunicodetdbapiunicodetcextensionst
nocextensions(Rtdbtnametdrivertjointsystversion_infotstrtappendRRRtdialecttconvert_unicodetrequirementst_has_cextensions(Rt	dbapi_keytvt
py_versiontplatform_tokenst	_has_cext((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/profiling.pytplatform_keyBs 2	
cCs)t}||jko(|j|j|kS(N(t
_current_testRR6(Rttest_key((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/profiling.pyt	has_stats[sc	Cs�t}|j|}||j}d|kr=g|d<}n
|d}d|krdd|d<}n
|d}t|�|k}|s�|j|�|jr�|j�nd}n|d||f}|dcd7<|S(Ntcountst
current_countitlinenoi(R7RR6tlenR,RRR
(	Rt	callcountR8tper_fntper_platformR:R;t	has_counttresult((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/profiling.pyRBas$




	
	cCs{t}|j|}||j}|d}|d}|t|�krW|||d<n
||d<|jrw|j�ndS(NR:R;ii����(R7RR6R=RR(RR>R8R?R@R:R;((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/profiling.pytreplace|s




	cCsd|jS(Ns
# %s
# This file is written out on a per-environment basis.
# For each test in aaa_profiling, the corresponding function and 
# environment is located within this file.  If it doesn't exist,
# the test is skipped.
# If a callcount does exist, it is compared to what we received. 
# assertions are raised if the counts do not match.
# 
# To add a new callcount test, apply the function_call_count 
# decorator and re-run the tests using the --write-profiles 
# option - this file will be rewritten including the new count.
# 
(R(R((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/profiling.pyt_header�scCs�yt|j�}Wntk
r'dSXx�t|�D]�\}}|j�}|s5|jd�riq5n|j�\}}}|j|}||}g|jd�D]}	t|	�^q�}
|
|d<|d|d<d|d<q5W|j	�dS(Nt#t,R:iR<iR;(
topenRtIOErrort	enumeratetstript
startswithRRtinttclose(Rt	profile_fR<tlineR8R6R:R?R@tcounttc((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/profiling.pyR�s 


(
cCs�d|jGHt|jd�}|j|j��x�t|j�D]|}|j|}|jd|�xUt|�D]G}||}djd�|dD��}|jd|||f�qrWqAW|j�dS(NsWriting profile file %stws

# TEST: %s

RFcss|]}t|�VqdS(N(R+(t.0RP((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/profiling.pys	<genexpr>�sR:s	%s %s %s
(RRGRRDtsortedRR(RM(RRNR8R?R6R@RQ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/profiling.pyR�s

"(t__name__t
__module__t__doc__RtpropertyR6R9RBRCRDRR(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/profiling.pyR(s				
		g�������?cs�fd�}|S(s�Assert a target for a test case's function call count.

    The main purpose of this assertion is to detect changes in
    callcounts for various functions - the actual number is not as important.
    Callcounts are stored in a file keyed to Python version and OS platform
    information.  This file is generated automatically for new tests,
    and versioned so that unexpected changes in callcounts will be detected.

    cs��fd�}t|��S(Ncs'td����||�SWdQXdS(Ntvariance(tcount_functions(targstkw(tfnRY(sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/profiling.pytwrap�s(R(R]R^(RY(R]sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/profiling.pytdecorate�s((RYR_((RYsO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/profiling.pytfunction_call_count�sc	csptdkrtjd��ntj�rLtjrLtjdtj�nt	�tj
�}|j�dV|j�t
j|dtj�}|j}tj|�}|dkr�d}n|\}}d||fGH|jd�|j�|rlt||�}t||�|k}|s*tjrltjrCtj|�qitd||d|tjf��qlndS(NscProfile is not installeds�No profiling stats available on this platform for this function.  Run tests with --write-profiles to add statistics to %s for this platform.tstreamsPstats calls: %d Expected %st
cumulatives�Adjusted function call count %s not within %s%% of expected %s, platform %s. Rerun with --write-profiles to regenerate this callcount.id(tcProfileR
Rt_skip_test_exceptiont_profile_statsR9Rt	skip_testRRtProfiletenabletdisabletpstatstStatsR)tstdoutttotal_callsRBt
sort_statstprint_statsRLtabsRRCtAssertionErrorR6(	RYtprtstatsR>texpectedtexpected_counttline_notdeviancetfailed((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/profiling.pyRZ�s@

		

	(RWRt
contextlibRRjR)RRtutilRRRRRRctImportErrorR
R7RetobjectRR`tcontextmanagerRZ(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/testing/profiling.pyt<module>
s*

�

Zerion Mini Shell 1.0