python (3.12.0)

(root)/
lib/
python3.12/
test/
__pycache__/
test_perf_profiler.cpython-312.pyc

Αea,ddlZddlZddlZddlZddlZddlZddlZddlmZddl	m
Z
mZmZddl
mZejsej ddZesej dGdd	ej$Zd
ZdZdZej.ed
ej.edej0dddGddej$Zedk(rej6yy)N)support)make_scriptassert_python_failureassert_python_ok)temp_dirztest module requires subprocesscNtjd}|syt|dk(S)NPY_HAVE_PERF_TRAMPOLINEF)	sysconfigget_config_varint)perf_trampolines K/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/test_perf_profiler.pysupports_trampoline_profilingrs)../HIO1$$z'perf trampoline profiling not supportedcNeZdZfdZd	fdZdZdZdZdZdZ	dZ
xZS)
TestPerfTrampolinect|ttjdjd|_yNz/tmp/z
perf-*.mapsupersetUpsetpathlibPathglob
perf_filesself	__class__s rrzTestPerfTrampoline.setUp!,

gll7388FGrct|ttjdjd|jz
}|D]}|jyrrtearDownrrrrrunlinkrfiles_to_deletefiler s   rr$zTestPerfTrampoline.tearDown%R
W%**<89DOOK	$	DKKM	rc
d}t5}t|d|}tjtj
d|gdtjtj5}|j\}}dddddd|jd|jdtjdjd}|j|j|j}|j}	d	d
|d|g}
|
D]
t!
fd|	Dd}|j#|d

d|j%dd}|j'|j)dd|jt+|j-t.j0dy#1swYFxYw#1swYKxYw)Nzif 1:
                def foo():
                    pass

                def bar():
                    foo()

                def baz():
                    bar()

                baz()
                perftest-XperfTtextstderrstdout
/tmp/perf-.mappy::foo:py::bar:py::baz:c3,K|]}|vs|
yw)N).0lineexpected_symbols  r	<genexpr>z;TestPerfTrampoline.test_trampoline_works.<locals>.<genexpr>MsUt_PT=TdUs	zCould not find z
 in perf file r0xz&Address should not be prefixed with 0xz*Address should contain only hex characters)rr
subprocessPopensys
executablePIPEcommunicateassertEqualrrpid
assertTrueexists	read_text
splitlinesnextassertIsNotNonesplitassertFalse
startswithrissubsetstring	hexdigits)rcode
script_dirscriptprocessr0r/	perf_fileperf_file_contents
perf_linesexpected_symbols	perf_line	perf_addrr;s             @rtest_trampoline_worksz(TestPerfTrampoline.test_trampoline_works-sZ	7: Z>F!!62!!	
7
!(!4!4!6

7	7	
$$LL:gkk]$!?@		((*+&002'224
&vh/8F81DQWPXFYZ/	uOUzUW[\I  oo=Nm,\]!,Q/IY11$79abOOC	N33F4D4DEGst	u!
7
7	7	7s$AG"F:6G:G	?GGcd}t5}t|d|}tjtj
d|gdtjtj5}|j\}}dddddd|jjd|jdtj}tjd|jd	}tjd|d	}	|j|j!|j|	j!|j#}
|j%d
|
|j%d||
|j%d||
|	j#}|j%d
|||j%d|||j%d||y#1swYrxYw#1swYwxYw)Naif 1:
                import os, sys

                def foo_fork():
                    pass

                def bar_fork():
                    foo_fork()

                def baz_fork():
                    bar_fork()

                def foo():
                    pid = os.fork()
                    if pid == 0:
                        print(os.getpid())
                        baz_fork()
                    else:
                        _, status = os.waitpid(-1, 0)
                        sys.exit(status)

                def bar():
                    foo()

                def baz():
                    bar()

                baz()
                r+r,Tr-rr1r2r3r4r5r6z
py::foo_fork:z
py::bar_fork:z
py::baz_fork:)rrr?r@rArBrCrDrE
returncoder
striprrrFrGrHrIassertIn)rrSrTrUrVr0r/	child_pidrWperf_child_filerXchild_perf_file_contentss            r test_trampoline_works_with_forksz3TestPerfTrampoline.test_trampoline_works_with_forksSs:Z	7: Z>F!!62!!	
7
!(!4!4!6

7	7	
++Q/$'	LL:gkk]$!?@	!,,I;d'CD	((*+..01&002

)+=>

)+=>

)+=>#2#<#<#> 


fX.0HI


fX.0HI


fX.0HI1
7
7	7	7s$AG2!G%5G2%G/	*G22G<cd}t5}t|d|}tjtj
|gdtjtj5}|j\}}dddddd|jd|jdtjdjd}|j|j|j}|jd||j!d	|||j!d
|||j!d||y#1swYxYw#1swYxYw)Naif 1:
                import sys
                def foo():
                    pass

                def spam():
                    pass

                def bar():
                    sys.deactivate_stack_trampoline()
                    foo()
                    sys.activate_stack_trampoline("perf")
                    spam()

                def baz():
                    bar()

                sys.activate_stack_trampoline("perf")
                baz()
                r+Tr-r1r2r3r4z	py::spam:r5r6)rrr?r@rArBrCrDrErrrFrGrHrIassertNotInra)	rrSrTrUrVr0r/rWrXs	         rtest_sys_apizTestPerfTrampoline.test_sys_apisG(Z	7: Z>F!!(!!	
7
!(!4!4!6

7	7	
$$LL:gkk]$!?@		((*+&0028F8,.@A

	&*,>?

)+=>

)+=>#
7
7	7	7s$AE E4EE	EE$c d}td|y)Nzif 1:
                import sys
                sys.activate_stack_trampoline("perf")
                sys.activate_stack_trampoline("perf")
                -crrrSs  r%test_sys_api_with_existing_trampolinez8TestPerfTrampoline.test_sys_api_with_existing_trampolines
	t$rchd}td|\}}}|jd|jy)Nzjif 1:
                import sys
                sys.activate_stack_trampoline("invalid")
                rjzinvalid backend: invalid)rradecode)rrSrcouterrs     r$test_sys_api_with_invalid_trampolinez7TestPerfTrampoline.test_sys_api_with_invalid_trampolines2-T48C

0#**,?rc d}td|y)Naif 1:
                import sys
                sys.activate_stack_trampoline("perf")
                assert sys.is_stack_trampoline_active() is True
                sys.deactivate_stack_trampoline()
                assert sys.is_stack_trampoline_active() is False
                rjrkrls  rtest_sys_api_get_statusz*TestPerfTrampoline.test_sys_api_get_statuss	t$rreturnN)__name__
__module____qualname__rr$r]rerhrmrsru
__classcell__r s@rrr s2H$uL8Jt(?T%@%rrc:tjd}|syd|vS)NPY_CORE_CFLAGSFzno-omit-frame-pointer)rr)cflagss ris_unwinding_reliablers$

%
%&6
7F"f,,rc	ddg}tj|d}d|vryt	5}	|dz}ddd	d
d|dt
jd
df
}tj||dtj}d|vr
	dddy	dddy#tjtf$rYywxYw#tjtf$rYdddywxYw#1swYyxYw)Nperfz--helpT)r.Fz	perf.data/perf_output.perfrecord-g--call-graph=fp-o--rjzprint("hello"))cwdr.r/hello)r?check_outputSubprocessErrorOSErrorrrArBSTDOUT)cmdr0rToutput_files    rperf_command_worksrsx ((48& 
z	$'::K! C ,,$z7H7HF& -*!+0C
&&06**G4	'$	%0s@BCAB+4CB('B(+CCCCCcP|r0tjj}|j|nd}|dz}ddddd|df}t	j
||ztjtj|}|jr-t|jtd	|jd
}t	j
ddd|ftjtj|d
}|jjdd|jjddfS)Nrrrrrrr)r0r/envzPerf failed with return code )rrUrUz-iT)r0r/rcheckzutf-8replace)
osenvironcopyupdater?runrCr_printr/
ValueErrorr0ro)rargsenv_varsrrbase_cmdprocs       rrun_perfrsjjoo

8++K$(94dSH>>4	D
dkk88IJKK!H>>	4-D;;gy14;;3E3E4rzperf command doesn't workzUnwinding is unreliableT)addressmemoryubc6eZdZfdZdfdZdZdZxZS)TestPerfProfilerct|ttjdjd|_yrrrs rrzTestPerfProfiler.setUp$r!rct|ttjdjd|jz
}|D]}|jyrr#r&s   rr$zTestPerfProfiler.tearDown(r)rc@t5}d}t|d|}t|tjd|\}}|j|d|j
d|||j
d|||j
d||dddy#1swYyxYw)N!if 1:
                def foo(n):
                    x = 0
                    for i in range(n):
                        x += i

                def bar(n):
                    foo(n)

                def baz(n):
                    bar(n)

                baz(10000000)
                r+r,r1r4r5r6)rrrrArBrErarrTrSrUr0r/s      r7test_python_calls_appear_in_the_stack_if_perf_activatedzHTestPerfProfiler.test_python_calls_appear_in_the_stack_if_perf_activated0s
Z	7:
D!Z>F%j#..(FSNFFVR(MMHVH-v6MMHVH-v6MMHVH-v6+	7	7	7sBBBc>t5}d}t|d|}t|tj|\}}|j|d|j
d|||j
d|||j
d||dddy#1swYyxYw)Nrr+r1r4r5r6)rrrrArBrErgrs      r>test_python_calls_do_not_appear_in_the_stack_if_perf_activatedzOTestPerfProfiler.test_python_calls_do_not_appear_in_the_stack_if_perf_activatedHs
Z	::
D!Z>F%j#..&INFFVR(xx0&9xx0&9xx0&9+	:	:	:sA?BBrv)rxryrzrr$rrr{r|s@rrr sH70:rr__main__)unittestrQr?rArrrtestrtest.support.script_helperrrrtest.support.os_helperrhas_subprocess_supportSkipTestrTestCaserrrr
skipUnlessskip_if_sanitizerrrxmainr8rr<module>rs

	
,%%
(

=
>>%%&
(

E
FFo%**o%d-%P>')+FG*,.GH4>;:x((;:?IH;:|zHMMOr