Sindbad~EG File Manager

Current Path : /proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/
Upload File :
Current File : //proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/test_dtrace.cpython-312.pyc

�

'Μg����ddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlmZe
jsejd��d�Zd�ZGd�d�ZGd	�d
e�ZGd�de�ZGd
�d�ZGd�deej*�ZGd�deej*�ZGd�deej*�ZGd�deej*�ZGd�dej*�Zedk(rej8�yy)�N)�support)�findfileztest module requires subprocessc�V�tjjt|d���S)N�
dtracedata)�subdir)�os�path�abspathr)�filenames �-/usr/local/lib/python3.12/test/test_dtrace.pyr
r
s��
�7�7�?�?�8�H�\�B�C�C�c��tjdd|�}	|j�D�cgc]&}|r"|jd�s|j	d���(}}|jd���|D�cgc]}|d��	}}dj
|�Scc}wcc}w#ttf$rtd	j|���wxYw)
aMNormalize DTrace output for comparison.

    DTrace keeps a per-CPU buffer, and when showing the fired probes, buffers
    are concatenated. So if the operating system moves our thread around, the
    straight result can be "non-causal". So we add timestamps to the probe
    firing, sort by that field, then strip it from the outputz\[[0-9]+ refs\]��#�	c��t|d�S)Nr)�int)�rows r�<lambda>z(normalize_trace_output.<locals>.<lambda>&s��C��A��Kr
)�key��
z%tracer produced unparsable output:
{})�re�sub�
splitlines�
startswith�split�sort�join�
IndexError�
ValueError�AssertionError�format)�outputr�results   r�normalize_trace_outputr&s����V�V�&��F�
3�F�
��(�(�*�
�*���3�>�>�#�.�
�I�I�d�O�*�	�
�
	���/��0�$*�+�F�S�#�a�&�F��+��y�y�� � ��
��,���
�#�
��4�;�;�F�C�
�	
�
�s(�B�+B�B�/B�;B�
B�*Cc�>�eZdZdZdZgZdd�Zdd�Zdd�Zdd�Z	d�Z
y)�TraceBackendNc	�<�t|jt||jz�t|dz�|���}t	t||jzdz��5}|j�j
�}ddd�||fS#1swY|fSxYw)Nz.py)�script_file�python_file�optimize_pythonz	.expected)r&�trace_pythonr
�	EXTENSION�open�read�rstrip)�self�namer,�
actual_output�f�expected_outputs      r�run_casezTraceBackend.run_case4s���.�t�/@�/@���t�~�~� 5�6���u��-�+�0A�0-�.�
�
�'�$����/�+�=�>�
?�1��f�f�h�o�o�/�O�@� ��/�/�@� ��/�/�s�$B�Bc�8�|j|gz}|r|d|gz
}|S)Nz-c)�COMMAND)r2r*�
subcommand�commands    r�generate_trace_commandz#TraceBackend.generate_trace_command?s)���,�,�+��.�����j�)�)�G��r
c��|j||�}tj|tjtjd��j�\}}|S)NT��stdout�stderr�universal_newlines)r<�
subprocess�Popen�PIPE�STDOUT�communicate)r2r*r:r;r?�_s      r�tracezTraceBackend.traceEsQ���-�-�k�:�F���$�$�W�,6�O�O�,6�,=�,=�8<�>�?J�k�m�	����
r
c��g}|r|jdg|z�djtjg|z|gz�}|j	||�S)Nz-O� )�extendr�sys�
executablerH)r2r*r+r,�python_flagsr:s      rr-zTraceBackend.trace_pythonMsQ����������� 8�9��X�X�s�~�~�.��=��
�M�N�
��z�z�+�z�2�2r
c�:�	|jtd|jz��}|j�}|dk7r2tjdj|jd|���y#tt
tf$r}t|�}Yd}~�\d}~wwxYw)N�
assert_usablezprobe: successz{}(1) failed: {}r)rHr
r.�strip�FileNotFoundError�NotADirectoryError�PermissionError�str�unittest�SkipTestr#r9)r2r$�fnfes   rrPzTraceBackend.assert_usableTs���	��Z�Z���$�.�.�(H� I�J�F��\�\�^�F��%�%��#�#�"�)�)�$�,�,�q�/�6�B��
�&��"�#5��G�	���Y�F��	�s�7A1�1B�B�B�N)�__name__�
__module__�__qualname__r.r9�COMMAND_ARGSr7r<rHr-rP�r
rr(r(/s*���I��G��L�	0���3�	r
r(c��eZdZdZgd�Zy)�
DTraceBackendz.d)�dtracez-qz-sN�rZr[r\r.r9r^r
rr`r``s���I�$�Gr
r`c��eZdZdZddgZy)�SystemTapBackendz.stp�stapz-gNrbr^r
rrdrdes���I��t�n�Gr
rdc�F�eZdZdZdZdZed��Zd�Zd�Z	d�Z
d�Zd�Zy)	�
TraceTestsNrc�8�|jj�yrY)�backendrP�r2s r�
setUpClasszTraceTests.setUpClassrs�����"�"�$r
c�|�|jj||j��\}}|j||�y)N)r,)rir7r,�assertEqual)r2r3r4r6s    rr7zTraceTests.run_casevs;��)-���)>�)>��$�"6�"6�*?�*8�&�
�������8r
c�&�|jd�y)N�
call_stack�r7rjs r�test_function_entry_returnz%TraceTests.test_function_entry_return{s���
�
�l�#r
c�$���tgd��}ttd��5}|j��ddd���fd�}|d�D]}|j	|j
���j
t�|�y#1swY�RxYw)z9Ensure our call stack test hits all function call opcodes)�
CALL_FUNCTION�CALL_FUNCTION_EX�CALL_FUNCTION_KWz
call_stack.pyNc����t�dd�j��}|jD]C}t|tj
�s�|j|k(s�.tj|�cSgS)Nz<string>�exec)�sourcer�mode�optimize)	�compiler,�	co_consts�
isinstance�types�CodeType�co_name�dis�get_instructions)�funcname�code�c�code_stringr2s   ��r�get_function_instructionszFTraceTests.test_verify_call_opcodes.<locals>.get_function_instructions�s_����+�$.� &�$(�$8�$8�:�D�
�^�^���a����0�Q�Y�Y�(�5J��/�/��2�2�$��Ir
�start)�setr/r
r0�discard�opnamerm)r2�opcodesr5r��instructionr�s`    @r�test_verify_call_opcodesz#TraceTests.test_verify_call_opcodes~st����O�P��
�'�/�*�
+�q��&�&�(�K�,�
	�5�W�=�K��O�O�K�.�.�/�>�	
������(�%,�
+�s�B�Bc�&�|jd�y)N�gcrprjs r�test_gczTraceTests.test_gc�s���
�
�d�r
c�&�|jd�y)N�linerprjs r�	test_linezTraceTests.test_line�s���
�
�f�r
)
rZr[r\�maxDiffrir,�classmethodrkr7rqr�r�r�r^r
rrgrgjs>���G��G��O��%��%�9�
$�)�2�r
rgc��eZdZe�ZdZy)�DTraceNormalTestsrN�rZr[r\r`rir,r^r
rr�r������o�G��Or
r�c��eZdZe�ZdZy)�DTraceOptimizedTests�Nr�r^r
rr�r��r�r
r�c��eZdZe�ZdZy)�SystemTapNormalTestsrN�rZr[r\rdrir,r^r
rr�r������ �G��Or
r�c��eZdZe�ZdZy)�SystemTapOptimizedTestsr�Nr�r^r
rr�r��r�r
r�c�\�eZdZed��Zed��Zd�Zd�Ze	jd��Zy)�CheckDtraceProbesc���tjd�r6|j�\}}tjrtd|�d|���yyt
jd��)N�WITH_DTRACEzreadelf version: �.z9CPython must be configured with the --with-dtrace option.)�	sysconfig�get_config_var�get_readelf_versionr�verbose�printrVrW)�cls�readelf_major_version�readelf_minor_versions   rrkzCheckDtraceProbes.setUpClass�s_���#�#�M�2�;>�;R�;R�;T�8�!�#8�����)�*?�)@��BW�AX�Y�Z���#�#�$_�`�`r
c
�P�	ddg}tj|tjtjd��}|5|j�\}}ddd�|jr0tddj
|��d|j�d�d	����	tjd�}|�tjd|����t|jd
��t|jd��fS#1swY��xYw#t$rtjd
��wxYw)N�readelfz	--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�	Exceptionr�OSErrorrVrWr�searchr�group)�cmd�proc�versionr@�matchs     rr�z%CheckDtraceProbes.get_readelf_version�s#��	I��k�*�C��#�#��!���!���#'�	�D��"&�"2�"2�"4����������s�x�x��}�/�0&�&*�o�o�%6�7�%�[���
�<�����	�	�>��H���=��#�#�&G��y�$Q�R�R��5�;�;�q�>�"�C����A��$7�7�7�%����	I��#�#�$G�H�H�	I�s#�;D�C:�AD�:D�?D�D%c��ddtjg}tj|tjtj
d��j
�\}}|S)Nr�z-nTr>)rLrMrBrCrDrErF)r2r;r?rGs    r�get_readelf_outputz$CheckDtraceProbes.get_readelf_output�sO���d�C�N�N�3���$�$���?�?��$�$�#�	
�
�+�-�	����
r
c��|j�}gd�}|D]/}|j|��5|j||�ddd��1y#1swY�<xYw)N)zName: import__find__load__donezName: import__find__load__startzName: auditzName: gc__startzName: gc__done��
probe_name�r��subTest�assertIn)r2�readelf_output�available_probe_namesr�s    r�test_check_probesz#CheckDtraceProbes.test_check_probes�sO���0�0�2��!
��0�J������4��
�
�j�.�9�5�4�0�4�4���A
�
A	c��|j�}gd�}|D]/}|j|��5|j||�ddd��1y#1swY�<xYw)N)zName: function__entryzName: function__returnz
Name: liner�r�)r2r��missing_probe_namesr�s    r�test_missing_probesz%CheckDtraceProbes.test_missing_probes�sO���0�0�2��
��.�J������4��
�
�j�.�9�5�4�.�4�4�r�N)rZr[r\r�rk�staticmethodr�r�r�rV�expectedFailurer�r^r
rr�r��sN���a��a��8��8�:�
:����:��:r
r��__main__)r��os.pathrrrBrLr�r~rV�testr�test.supportr�has_subprocess_supportrWr
r&r(r`rdrg�TestCaser�r�r�r�r�rZ�mainr^r
r�<module>r�s���
��	��
�����!��%�%�
�(�
�
�=�
>�>�D�
�2.�.�b%�L�%�
�|��
1�1�h�
�H�$5�$5��
�:�x�'8�'8��
�:�x�'8�'8��
�j�(�*;�*;��O:��)�)�O:�d�z���H�M�M�O�r

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists