a 5dg@sddlZddlZddlZddlZddlZddlZddlZddlm Z m Z ddZ ddZ GdddZ Gd d d e ZGd d d e ZGd ddejZGdddeZGdddeZGdddeZGdddeZddZedkredS)N)findfile run_unittestcCstjt|ddS)NZ dtracedata)Zsubdir)ospathabspathr)filenamer,/usr/local/lib/python3.9/test/test_dtrace.pyr src Csttdd|}zsz*normalize_trace_output..cSs t|dS)Nr)int)rrrr  z(normalize_trace_output..)keycSsg|] }|dqS)rrrrr r!r z&tracer produced unparseable output: {}) resub splitlinessortjoin IndexError ValueErrorAssertionErrorformat)outputresultrrr normalize_trace_outputs  r$c@sHeZdZdZdZgZd ddZd ddZdddZddd Z d d Z dS) TraceBackendNcCspt|jt||jt|d|d}tt||jd}|}Wdn1s^0Y||fS)Nz.py) script_file python_fileoptimize_pythonz .expected)r$ trace_pythonr EXTENSIONopenreadrstrip)selfnamer( actual_outputfexpected_outputrrr run_case.s  *zTraceBackend.run_casecCs |j|g}|r|d|g7}|S)Nz-c)COMMAND)r.r& subcommandcommandrrr generate_trace_command9s  z#TraceBackend.generate_trace_commandcCs.|||}tj|tjtjdd\}}|S)NT)stdoutstderruniversal_newlines)r7 subprocessPopenPIPESTDOUT communicate)r.r&r5r6r8_rrr trace?s zTraceBackend.tracecCs<g}|r|dg|dtjg||g}|||S)Nz-O )extendrsys executablerA)r.r&r'r(Z python_flagsr5rrr r)Gs zTraceBackend.trace_pythonc Csxz |td|j}|}Wn2tttfyR}zt|}WYd}~n d}~00|dkrtt d |j d|dS)N assert_usablezprobe: successz{}(1) failed: {}r) rArr*stripFileNotFoundErrorNotADirectoryErrorPermissionErrorstrunittestZSkipTestr!r4)r.r"Zfnferrr rFNs zTraceBackend.assert_usable)N)N)N)N) __name__ __module__ __qualname__r*r4Z COMMAND_ARGSr3r7rAr)rFrrrr r%)s   r%c@seZdZdZgdZdS) DTraceBackendz.d)Zdtracez-qz-sNrMrNrOr*r4rrrr rPZsrPc@seZdZdZddgZdS)SystemTapBackendz.stpZstapz-gNrQrrrr rR_srRc@sLeZdZdZdZdZeddZddZddZ d d Z d d Z d dZ dS) TraceTestsNrcCs|jdSN)backendrFr.rrr setUpClasslszTraceTests.setUpClasscCs&|jj||jd\}}|||dS)N)r()rUr3r( assertEqual)r.r/r0r2rrr r3ps zTraceTests.run_casecCs|ddS)NZ call_stackr3rVrrr test_function_entry_returnusz%TraceTests.test_function_entry_returncsztgd}ttd}|Wdn1s60Yfdd}|dD]}||jqVt|dS)N)Z CALL_FUNCTIONZCALL_FUNCTION_EXZCALL_FUNCTION_KWz call_stack.pycsFtddjd}|jD](}t|tjr|j|krt|SqgS)Nzexec)sourcermodeoptimize) compiler( co_consts isinstancetypesCodeTypeco_namedisZget_instructions)funcnamecodecZ code_stringr.rr get_function_instructionss zFTraceTests.test_verify_call_opcodes..get_function_instructionsstart)setr+rr,discardopnamerX)r.Zopcodesr1rjZ instructionrrir test_verify_call_opcodesxs & z#TraceTests.test_verify_call_opcodescCs|ddS)NgcrYrVrrr test_gcszTraceTests.test_gccCs|ddS)NlinerYrVrrr test_lineszTraceTests.test_line) rMrNrOZmaxDiffrUr( classmethodrWr3rZrorqrsrrrr rSds rSc@seZdZeZdZdS)DTraceNormalTestsrNrMrNrOrPrUr(rrrr rusruc@seZdZeZdZdS)DTraceOptimizedTestsNrvrrrr rwsrwc@seZdZeZdZdS)SystemTapNormalTestsrNrMrNrOrRrUr(rrrr rysryc@seZdZeZdZdS)SystemTapOptimizedTestsrxNrzrrrr r{sr{cCstttttdSrT)rrurwryr{rrrr test_mainsr|__main__)reZos.pathrrr;rDrbrLZ test.supportrrrr$r%rPrRZTestCaserSrurwryr{r|rMrrrr s(14