python (3.12.0)

(root)/
lib/
python3.12/
test/
__pycache__/
test_dtrace.cpython-312.opt-2.pyc

͑eddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlmZe
jsejddZdZGddZGd	d
eZGddeZGd
dZGddeej*ZGddeej*ZGddeej*ZGddeej*ZGddej*Zedk(rej8yy)N)support)findfileztest module requires subprocesscVtjjt|dS)N
dtracedata)subdir)ospathabspathr)filenames D/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/test_dtrace.pyr
r
s
77??8H\BCCc	tjdd|}	|jDcgc]&}|r"|jds|j	d(}}|jd|Dcgc]}|d	}}dj
|Scc}wcc}w#ttf$rtd	j|wxYw)
Nz\[[0-9]+ refs\]#	ct|dS)Nr)int)rows r<lambda>z(normalize_trace_output.<locals>.<lambda>&sCAKr
)key
z%tracer produced unparsable output:
{})resub
splitlines
startswithsplitsortjoin
IndexError
ValueErrorAssertionErrorformat)outputrresults   rnormalize_trace_outputr&sAVV&F
3F
((*
3>>#.
IIdO


	/0$*+S#a&++yy  
,
#
4;;FC
	

s(B+BB0B<B
B*Cc>eZdZdZdZgZddZddZddZddZ	dZ
y)TraceBackendNc	<t|jt||jzt|dz|}t	t||jzdz5}|jj
}ddd||fS#1swY|fSxYw)Nz.py)script_filepython_fileoptimize_pythonz	.expected)r&trace_pythonr
	EXTENSIONopenreadrstrip)selfnamer,
actual_outputfexpected_outputs      rrun_casezTraceBackend.run_case4s.t/@/@t~~ 56u-+0A0-.
'$/+=>
?	01ffhoo/O	0 //	0 //s$BBc8|j|gz}|r|d|gz
}|S)Nz-c)COMMAND)r2r*
subcommandcommands    rgenerate_trace_commandz#TraceBackend.generate_trace_command?s),,+.j))Gr
c|j||}tj|tjtjdj\}}|S)NTstdoutstderruniversal_newlines)r<
subprocessPopenPIPESTDOUTcommunicate)r2r*r:r;r?_s      rtracezTraceBackend.traceEsQ--k:F$$W,6OO,6,=,=8<>?Jkm	
r
cg}|r|jdg|zdjtjg|z|gz}|j	||S)Nz-O )extendrsys
executablerH)r2r*r+r,python_flagsr:s      rr-zTraceBackend.trace_pythonMsQ 89XXs~~.=
MN
zz+z22r
c:	|jtd|jz}|j}|dk7r2tjdj|jd|y#tt
tf$r}t|}Yd}~\d}~wwxYw)N
assert_usablezprobe: successz{}(1) failed: {}r)rHr
r.stripFileNotFoundErrorNotADirectoryErrorPermissionErrorstrunittestSkipTestr#r9)r2r$fnfes   rrPzTraceBackend.assert_usableTs	ZZ$..(H IJF\\^F%%##"))$,,q/6B
&"#5G	YF	s7A11BBBN)__name__
__module____qualname__r.r9COMMAND_ARGSr7r<rHr-rPr
rr(r(/s*IGL	03	r
r(ceZdZdZgdZy)
DTraceBackendz.d)dtracez-qz-sNrZr[r\r.r9r^r
rr`r``sI$Gr
r`ceZdZdZddgZy)SystemTapBackendz.stpstapz-gNrbr^r
rrdrdesItnGr
rdcFeZdZdZdZdZedZdZdZ	dZ
dZdZy)	
TraceTestsNrc8|jjyrY)backendrPr2s r
setUpClasszTraceTests.setUpClassrs""$r
c||jj||j\}}|j||y)N)r,)rir7r,assertEqual)r2r3r4r6s    rr7zTraceTests.run_casevs;)-)>)>$"6"6*?*8&
8r
c&|jdy)N
call_stackr7rjs rtest_function_entry_returnz%TraceTests.test_function_entry_return{s

l#r
c&	tgd}ttd5}|jdddfd}|dD]}|j	|j
j
t|y#1swYRxYw)N)
CALL_FUNCTIONCALL_FUNCTION_EXCALL_FUNCTION_KWz
call_stack.pyctddj}|jD]C}t|tj
s|j|k(s.tj|cSgS)Nz<string>exec)sourcermodeoptimize)	compiler,	co_consts
isinstancetypesCodeTypeco_namedisget_instructions)funcnamecodeccode_stringr2s   rget_function_instructionszFTraceTests.test_verify_call_opcodes.<locals>.get_function_instructionssd+$. &$($8$8:D
^^
3a0QYY(5J//22
3Ir
start)setr/r
r0discardopnamerm)r2opcodesr5rinstructionrs`    @rtest_verify_call_opcodesz#TraceTests.test_verify_call_opcodes~sGOP
'/*
+	#q&&(K	#
	5W=	0KOOK../	0	
(%	#	#sBBc&|jdy)Ngcrprjs rtest_gczTraceTests.test_gcs

dr
c&|jdy)Nlinerprjs r	test_linezTraceTests.test_lines

fr
)
rZr[r\maxDiffrir,classmethodrkr7rqrrrr^r
rrgrgjs>GGO%%9
$)2r
rgceZdZeZdZy)DTraceNormalTestsrNrZr[r\r`rir,r^r
rrroGOr
rceZdZeZdZy)DTraceOptimizedTestsNrr^r
rrrrr
rceZdZeZdZy)SystemTapNormalTestsrNrZr[r\rdrir,r^r
rrr GOr
rceZdZeZdZy)SystemTapOptimizedTestsrNrr^r
rrrrr
rc\eZdZedZedZdZdZe	jdZy)CheckDtraceProbesctjdr6|j\}}tjrtd|d|yyt
jd)NWITH_DTRACEzreadelf version: .z9CPython must be configured with the --with-dtrace option.)	sysconfigget_config_varget_readelf_versionrverboseprintrVrW)clsreadelf_major_versionreadelf_minor_versions   rrkzCheckDtraceProbes.setUpClasss_##M2;>;R;R;T8!#8)*?)@BWAXYZ##$_``r
c
P	ddg}tj|tjtjd}|5|j\}}ddd|jr0tddj
|d|jdd		tjd}|tjd|t|jd
t|jdfS#1swYxYw#t$rtjd
wxYw)Nreadelfz	--versionTr>zCommand rJz failed with exit code z	: stdout=z stderr=z!Couldn't find readelf on the pathz!^(?:GNU) readelf.*?\b(\d+)\.(\d+)z!Unable to parse readelf version: rr)rBrCrDrF
returncode	ExceptionrOSErrorrVrWrsearchrgroup)cmdprocversionr@matchs     rrz%CheckDtraceProbes.get_readelf_versions+	Ik*C##!!#'	D
5"&"2"2"4
5sxx}/0&&*oo%67%[
<		>H=##&Gy$QRR5;;q>"CA$777%
5
5	I##$GHH	Is#;DC:AD:D?DD%cddtjg}tj|tjtj
dj
\}}|S)Nrz-nTr>)rLrMrBrCrDrErF)r2r;r?rGs    rget_readelf_outputz$CheckDtraceProbes.get_readelf_outputsOdCNN3$$??$$#	

+-	
r
c|j}gd}|D]/}|j|5|j||ddd1y#1swY<xYw)N)zName: import__find__load__donezName: import__find__load__startzName: auditzName: gc__startzName: gc__done
probe_namersubTestassertIn)r2readelf_outputavailable_probe_namesrs    rtest_check_probesz#CheckDtraceProbes.test_check_probess_002!
0	:J4
:

j.9
:
:	:
:
:A

A	c|j}gd}|D]/}|j|5|j||ddd1y#1swY<xYw)N)zName: function__entryzName: function__returnz
Name: linerr)r2rmissing_probe_namesrs    rtest_missing_probesz%CheckDtraceProbes.test_missing_probess_002
.	:J4
:

j.9
:
:	:
:
:rN)rZr[r\rrkstaticmethodrrrrVexpectedFailurerr^r
rrrsNaa88:
:::r
r__main__)ros.pathrrrBrLrr~rVtestrtest.supportrhas_subprocess_supportrWr
r&r(r`rdrgTestCaserrrrrrZmainr^r
r<module>rs
	
!%%
(

=
>>D
2..b%L%
|
11h
H$5$5
:x'8'8
:x'8'8
j(*;*;O:))O:dzHMMOr