403Webshell
Server IP : 118.27.122.248  /  Your IP : 216.73.216.238
Web Server : Apache
System : Linux web0264.sh.tyo1 4.18.0-553.79.1.lve.el7h.x86_64 #1 SMP Wed Oct 15 16:34:46 UTC 2025 x86_64
User : c9415830 ( 11735)
PHP Version : 8.4.17
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/alt/python36/lib64/python3.6/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/alt/python36/lib64/python3.6/test/__pycache__/test_tracemalloc.cpython-36.pyc
3

x2_���@shddlZddlZddlZddlZddlZddlmZddlmZm	Z	m
Z
ddlmZyddl
Z
Wnek
rxdZ
YnXyddlZWnek
r�dZYnXejd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Zdd�Zdd�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�Zejedkd�Gdd�dej��Zdd �Z e!d!k�rde �dS)"�N)�patch)�assert_python_ok�assert_python_failure� interpreter_requires_environment)�support�cCs\g}tjd�}xDt|�D]8}|j}|j|}|j|j|f�d}|j}|dkrPqWt|�S)N�r)	�sys�	_getframe�range�f_code�f_lineno�append�co_filename�f_back�tuple)�nframeZlineno_delta�frames�frame�index�code�lineno�r�:/opt/alt/python36/lib64/python3.6/test/test_tracemalloc.py�
get_framess

rcCs0tj�}|t}t|d�}d|}|tj|�fS)Nr�x)�tracemalloc�get_traceback_limit�EMPTY_STRING_SIZEr�	Traceback)�sizerZ	bytes_lenr�datarrr�allocate_bytes$s

r"c	CsDd}dddd d#d&g}tj||�}d*d.d2d6d:d=g}tj||�}||fS)>N�r�
�a.py�b.py�r��B���	<unknown>���c.py�B�r%r#�r&r'�r1r2)rr$r3�r%r#�r&r'�r4r5)rr$r6�r%r#�r&r'�r7r8)rr$r9�r%r(�r&r'�r:r;)rr#r<�r&r�r=)r#r)r>�r,r�r?)r*r+r@�r%r#�r&r'�rArB)rr$rC�r%r#�r&r'�rDrE)rr$rF�r%r#�r&r'�rGrH)rr$rI�r%r(�r&r'�rJrK)r#r#rL�r%r(�r&r'�rMrN)r#r-rO�r/r0�rP)r'r.rQ)r�Snapshot)�traceback_limit�
raw_traces�snapshotZraw_traces2�	snapshot2rrr�create_snapshots+s rWcCstj||f�S)N)rZ_Frame)�filenamerrrrrLsrcGs
tj|�S)N)rr)rrrr�	tracebackOsrYcCst||f�S)N)rY)rXrrrr�traceback_linenoRsrZcCs
t|d�S)Nr)rZ)rXrrr�traceback_filenameUsr[c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zejeed�d�dd ��Zd!S)"�TestTracemallocEnabledcCs tj�r|jd�tjd�dS)Nz+tracemalloc must be stopped before the testr)r�
is_tracing�skipTest�start)�selfrrr�setUpZs
zTestTracemallocEnabled.setUpcCstj�dS)N)r�stop)r`rrr�tearDown`szTestTracemallocEnabled.tearDowncCsRdd�td�D�}tj�}|j|d�tj�tj�}|j|d�|j||�dS)NcSsg|]}td��qS)�{)r")�.0�countrrr�
<listcomp>dszFTestTracemallocEnabled.test_get_tracemalloc_memory.<locals>.<listcomp>i�r)rrZget_tracemalloc_memory�assertGreaterEqual�clear_traces�assertLessEqual)r`r!r �size2rrr�test_get_tracemalloc_memorycsz2TestTracemallocEnabled.test_get_tracemalloc_memorycCs2tj�d}t|�\}}tj|�}|j||�dS)Ni90)rrir"�get_object_traceback�assertEqual)r`�obj_size�obj�
obj_tracebackrYrrr�test_get_object_tracebackms

z0TestTracemallocEnabled.test_get_object_tracebackcCs�d}tj�|jttjd�tj�tjd�t|�\}}tj|�}|jt|�d�|j||�tj�tjd�t|�\}}tj|�}|jt|�d�|j||�dS)Nr$r���)	rrb�assertRaises�
ValueErrorr_r"rmrn�len)r`ro�obj2�obj2_tracebackrYrprqrrr�test_set_traceback_limitts



z/TestTracemallocEnabled.test_set_traceback_limitcCs.x|D]}|d|jkr|SqW|jd�dS)Nr#ztrace not found)�_framesZfail)r`�tracesrY�tracerrr�
find_trace�s
z!TestTracemallocEnabled.find_tracec	Csxtj�d}t|�\}}tj�}|j||�}|j|t�|\}}}|j||�|j||j�tj	�|jtj�g�dS)Ni90)
rrir"�_get_tracesr}ZassertIsInstancerrnrzrb)	r`rorprqr{r|�domainr rYrrr�test_get_traces�s
z&TestTracemallocEnabled.test_get_tracescs�dd���fdd���fdd�}tj�tjd�d}||�\}}||�\}}tj�}|j||�}|j||�}	|\}
}}|	\}
}}|j||�dS)	NcSst|�S)N)r")r rrr�allocate_bytes2�szPTestTracemallocEnabled.test_get_traces_intern_traceback.<locals>.allocate_bytes2cs�|�S)Nr)r )r�rr�allocate_bytes3�szPTestTracemallocEnabled.test_get_traces_intern_traceback.<locals>.allocate_bytes3cs�|�S)Nr)r )r�rr�allocate_bytes4�szPTestTracemallocEnabled.test_get_traces_intern_traceback.<locals>.allocate_bytes4r'rd)rrbr_r~r}ZassertIs)r`r�roZobj1Zobj1_tracebackrwrxr{Ztrace1Ztrace2Zdomain1Zsize1Z
traceback1Zdomain2rk�
traceback2r)r�r�r� test_get_traces_intern_traceback�s


z7TestTracemallocEnabled.test_get_traces_intern_tracebackc	Cs�d}d}tj�t|�\}}tj�\}}|j||�|j||�|j|||�|j|||�d}tj�\}}|j||�|j||||�|j||�tj�|jtj�d�t|�\}}tj�\}}|j||�tj�|jtj�d�dS)Niiri)rr)rr)	rrir"�get_traced_memoryrhrjZ
assertLessrnrb)	r`Z	max_errorrorprqr Z	peak_sizerkZ
peak_size2rrr�test_get_traced_memory�s*z-TestTracemallocEnabled.test_get_traced_memorycCs@td�\}}tj|�}|j|�tj�tj|�}|j|�dS)Nrd)r"rrm�assertIsNotNoneri�assertIsNone)r`rprqrYr�rrr�test_clear_traces�s


z(TestTracemallocEnabled.test_clear_tracescCs0tj�|jtj��tj�|jtj��dS)N)rrb�assertFalser]r_�
assertTrue)r`rrr�test_is_tracing�sz&TestTracemallocEnabled.test_is_tracingc
Cs�td�\}}tj�}|jtj�|jtjtj�tjj	tj�}|j
|j|j�tj�|j
t��}tj�WdQRX|j
t|j�d�dS)NrdzLthe tracemalloc module must be tracing memory allocations to take a snapshot)r"r�
take_snapshot�dumpr�TESTFN�
addCleanup�unlinkrR�loadrnr{rbrt�RuntimeError�strZ	exception)r`rp�sourcerUrV�cmrrr�
test_snapshot�sz$TestTracemallocEnabled.test_snapshotcCsJtj�}d|_|jtj�|jtjtj�tjj	tj�}|j
|jd�dS)N�new)rr�Z	test_attrr�rr�r�r�rRr�rn)r`rUrVrrr�test_snapshot_save_attrsz.TestTracemallocEnabled.test_snapshot_save_attrcCs6tj�sdSd}t|�\}}tj|�}|dkr2dSdS)Nr#i90r*r)rr]r"rm)r`rorprqrYrrr�
fork_childs
z!TestTracemallocEnabled.fork_child�forkzneed os.fork()cCsftj�}|s,d}z|j�}Wdtj|�Xn6tj|d�\}}|jtj|��tj|�}|j|d�dS)Nrr)	�osr�r��_exit�waitpidr��	WIFEXITED�WEXITSTATUSrn)r`�pidZexitcodeZpid2Zstatusrrr�	test_forks
z TestTracemallocEnabled.test_forkN)�__name__�
__module__�__qualname__rarcrlrrryr}r�r�r�r�r�r�r�r��unittestZ
skipUnless�hasattrr�r�rrrrr\Ys
$	
r\c@sxeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�TestSnapshoti�c
Cs�d
g}tj���}|jtjtddd��|jtjtddd��|jtjtd	|d��tj�}|j|jd�|jt	|j
�d
�|j
d}|j|jd�|jt	|j�d
�|j|jdj
d�|j|jdjd�WdQRXdS)Nrr(�a.pyr#r]T)Zreturn_valuerr~r�r�r#�r�)rr(r�)�
contextlib�	ExitStack�
enter_contextr�objectrr�rnrSrvr{r rYrXr)r`rT�stackrUr|rrr�test_create_snapshot.s 




z!TestSnapshot.test_create_snapshotc

Cs�t�\}}tjdd�}tjddd�}tjddd�}t|jj�}|j|f�}|j|jjddddd g�|j|jj|�|j||f�}|j|jjd$d(d,d0g�|jf�}	|j|	|�|j|	j|j�|j|	j|j�|j	t
|j|�dS)1NF�b.pyT�a.pyr#r(rr$r'rr*r+�	<unknown>�r�r#�r�r'�r�r�)rr$r��r�r#�r�r'�r�r�)rr$r��r�r#�r�r'�r�r�)rr$r��r�r(�r�r'�r�r�)rr#r��r�r�r�)r*r+r��r�r#�r�r'�r�r�)rr$r��r�r#�r�r'�r�r�)rr$r��r�r#�r�r'�r�r�)rr$r��r�r(�r�r'�r�r�)rr#r�)rWr�Filter�listr{�_traces�
filter_tracesrnZassertIsNotrt�	TypeError)
r`rUrV�filter1�filter2Zfilter3�original_traces�	snapshot3Z	snapshot4Z	snapshot5rrr�test_filter_tracesBs0



zTestSnapshot.test_filter_tracesc
Cs�t�\}}tjdddd�}tjdddd�}t|jj�}|j|f�}|j|jjddddd g�|j|f�}|j|jjd$d(d,d/d2g�dS)3NF�a.pyr)rTrr$r#�b.pyr'r)r*r+�	<unknown>�r�r#�r�r'�r�r�)rr$r��r�r#�r�r'�r�r�)rr$r��r�r#�r�r'�r�r�)rr$r��r�r�r�)r#r)r��r�r�r�)r*r+r��r�r#�r�r'�r�r�)rr$r��r�r#�r�r'�r�r�)rr$r��r�r#�r�r'�r�r�)rr$r��r�r�r�)r#r)r��r�r�r�)r*r+r�)rWrr�r�r{r�r�rn)r`rUrVr�r�r�r�rrr�test_filter_traces_domainhs$


z&TestSnapshot.test_filter_traces_domainc
Csnt�\}}tjddd�}tjddd�}|j|f�}|j|jjddddd"g�|j|f�}|j|jjd%g�dS)&NFr*)rTrr$�a.pyr#�b.pyr'rr(r)r+�	<unknown>�r�r#�r�r'�r�r�)rr$r��r�r#�r�r'�r�r�)rr$r�r�r#�r�r'�rr)rr$r�r�r(�r�r'�rr)rr#r�r�r�r)r#r)r�r�r�r	)r*r+r
)rWr�DomainFilterr�rnr{r�)r`rUrVr�r�r�rrr� test_filter_traces_domain_filter�s


z-TestSnapshot.test_filter_traces_domain_filtercCs(t�\}}tdd�}tdd�}tdd�}tdd�}tdd	�}|jd
�}|j|tj|dd�tj|dd
�tj|dd�tj|dd�g�|jd
�}	|j|	tj|dd�tj|dd�tj|dd
�g�|j|d
�}
|j|
tj|dddd�tj|dddd�tj|dddd�tj|dddd�tj|ddd
d�g�dS)Nz	<unknown>rza.pyr#r(zb.pyrzc.pyiBrr)�r*r+i�i�i�i����rsi����rs)rWrZ�
statisticsrnr�	Statistic�
compare_to�
StatisticDiff)r`rUrV�tb_0�tb_a_2�tb_a_5�tb_b_1Ztb_c_578�stats1�stats2rrrr�test_snapshot_group_by_line�s0







z(TestSnapshot.test_snapshot_group_by_linec
Cs�t�\}}td�}td�}td�}td�}|jd�}|j|tj|dd�tj|dd	�tj|d
d�g�|jd�}|j|tj|dd�tj|d
d�g�|j|d�}	|j|	tj|dddd�tj|d
d
dd�tj|dddd�tj|dddd�g�dS)Nz	<unknown>za.pyzb.pyzc.pyrXr)r� r'r+i�r(i�i�ri����rsi����rs)rWr[rrnrrrr)
r`rUrVr�tb_a�tb_bZtb_crr�diffrrr�test_snapshot_group_by_file�s(


z(TestSnapshot.test_snapshot_group_by_filecCs6t�\}}tdd�}tdd�}td�}td�}|jd	�}|j|tj|d
d�tj|dd�tj|d
d�tj|dd�g�td�}|jd	�}	|j|	tj|dd�tj|dd�tj|dd�g�|j|d	�}
|j|
tj|dddd�tj|dddd�tj|dddd�tj|dddd�tj|dddd�g�|jt	|jd	dd�dS) N�a.pyr#�b.pyr'r(r�	<unknown>rrYr)r
r*r+�c.py�Bi�i�i�T)Z
cumulative)rr#)rr')rr()rr')rr)r r)r!r"i����rsi����rs)
rWrYrrnrrrrrtru)r`rUrVZtb1Ztb2Ztb3Ztb4rZtb5rrrrr� test_snapshot_group_by_traceback�s4




z-TestSnapshot.test_snapshot_group_by_tracebackc
Cs�t�\}}td�}td�}td�}tdd�}tdd�}tdd�}tdd�}	|jdd	�}
|j|
tj|d
d�tj|dd�tj|dd�g�|jd
d	�}
|j|
tj|dd�tj|	dd�tj|dd�tj|dd�tj|dd�g�dS)Nz	<unknown>za.pyzb.pyr#r(rr'rXT�brr+rr)r
r*)rWr[rZrrnrr)r`rUrVrrrrrrZtb_b_4�statsrrr�!test_snapshot_group_by_cumulatives(




z.TestSnapshot.test_snapshot_group_by_cumulativecCsVt�\}}|jd}|jt|�d�|j}|jt|�d�|d}|jt|�d�dS)Nrza.py:2: 10 Bza.py:2)rWr{rnr�rY)r`rUrVr|rYrrrr�test_trace_formats

zTestSnapshot.test_trace_formatcCs0t�\}}|jd�}|d}|jt|�d�dS)Nrrz(b.py:1: size=66 B, count=1, average=66 B)rWrrnr�)r`rUrVr%�statrrr�test_statistic_format%s



z"TestSnapshot.test_statistic_formatcCs2t�\}}|j|d�}|d}|jt|�d�dS)Nrrz;a.py:5: size=5002 B (+5000 B), count=2 (+1), average=2501 B)rWrrnr�)r`rUrVr%r(rrr�test_statistic_diff_format,s


z'TestSnapshot.test_statistic_diff_formatcCs`t�\}}|j|jdd�|jd|jdf�|jdj}|j|dd�|d|df�dS)Nr#rr)rWrnr{rY)r`rUrVrYrrr�test_slices3s
zTestSnapshot.test_slicesc
Cs�t�\}}dd�}tjjd|d��V|jdj}|j|j�dddd	g�|j|jd
d�ddg�|j|jdd�g�WdQRXdS)
NcSsd||fS)Nz
  <%s, %s>r)rXrrrr�getline>sz3TestSnapshot.test_format_traceback.<locals>.getlineztracemalloc.linecache.getline)Zside_effectrz  File "a.py", line 2z
    <a.py, 2>z  File "b.py", line 4z
    <b.py, 4>r)�limitrs)rWr�Zmockrr{rYrn�format)r`rUrVr,�tbrrr�test_format_traceback<s


z"TestSnapshot.test_format_tracebackN)r�r�r��maxDiffr�r�r�rrrr#r&r'r)r*r+r0rrrrr�+s&#&		r�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�TestFiltersicCs�tjdd�}|j|jd�|j|jd�|j|j�|j|jd�tjdddd�}|j|jd�|j|jd�|j|jd�|j|jd�tjddddd�}|j|jd�|j|jd�|j|jd�|j|jd�|jt	t
|dd�dS)NT�abcFztest.pyrd)�	inclusive�filename_patternr�
all_framesr5)rr�rnr4r5r�rr6rt�AttributeError�setattr)r`�frrr�test_filter_attributesTs z"TestFilters.test_filter_attributescCs�tjdd�}|j|jdd��|j|jdd��|j|jdd��|j|jdd��|j|jdd��|j|jdd��tjdd�}|j|jdd��|j|jdd��|j|jdd��|j|jdd��|j|jdd��|j|jdd��tjddd�}|j|jdd��|j|jdd��|j|jdd��|j|jdd��|j|jdd��|j|jdd��tjddd�}|j|jdd��|j|jdd��|j|jdd��|j|jdd��|j|jdd��|j|jdd��tjddd�}|j|jdd��|j|jdd��|j|jdd��|j|jdd��|j|jdd��|j|jdd��tjddd�}|j|jdd��|j|jdd��|j|jdd��|j|jdd��|j|jdd��|j|jdd��dS)NTr3rr(r$�12356F)rr�r��_match_framer�)r`r9rrr�test_filter_matchmsTzTestFilters.test_filter_matchcCsxdd�}|j|ddd��|j|ddd��|j|ddd��|j|ddd��|j|ddd��|j|ddd��dS)NcSstj||�}|j|d�S)Nr)rr�r<)r4rX�patternr9rrr�fnmatch�sz7TestFilters.test_filter_match_filename.<locals>.fnmatchTr3r;z	<unknown>F)r�r�)r`r?rrr�test_filter_match_filename�sz&TestFilters.test_filter_match_filenamecCs�dd�}|j|dd��|j|dd��|j|dd��|j|dd��|j|dd��|j|dd��|j|dd��|j|dd��|j|dd	��|j|dd
��|j|dd��|j|dd��|j|d
d��|j|dd��|j|dd��|j|dd��|j|dd��|j|dd��|j|dd��|j|dd��|j|dd��tjdk�r�|j|dd��|j|dd��|j|dd��|j|dd��n@|j|dd��|j|dd��|j|dd��|j|dd��tjdk�r4|j|d d!��|j|d!d ��|j|d"d#��|j|d$d%��n@|j|d d!��|j|d!d ��|j|d"d#��|j|d$d%��|j|d&d��dS)'NcSstjd|�}|j|d�S)NTr)rr�r<)rXr>�filterrrrr?�sz=TestFilters.test_filter_match_filename_joker.<locals>.fnmatchr3��*Zabcd�defza*zabc*zb*zabcd*za*cZabcdcxza*cxZabbZabcdceZabcdeza*c*eZ	abcbdefegza*bd*egZabcddZ	abcbdefefza.pycza.py�ntZaBCZABcZaBcDezAb*dEza.PYza.PYCza/bza\bza/b\cza\b/cza/b/cza\b\cza.pyo)r�r�r��name)r`r?rrr� test_filter_match_filename_joker�sRz,TestFilters.test_filter_match_filename_jokercCsDd}d}d}d}tjd
dd
d�}|j|j|��|j|j|��|j|j|��|j|j|��tjd
ddd�}|j|j|��|j|j|��|j|j|��|j|j|��tjddd
d�}|j|j|��|j|j|��|j|j|��|j|j|��tjdddd�}|j|j|��|j|j|��|j|j|��|j|j|��tjdddd�}|j|j|��|j|j|��|j|j|��|j|j|��tjd
dd
d�}|j|j|��|j|j|��|j|j|��|j|j|��tjddd
d�}|j|j|��|j|j|��|j|j|��|j|j|��dS)N�a.pyr#�b.pyr*r'r(�c.py�	<unknown>rT)r6F�rHr#�rIr*)rLrM�rIr'�rIr()rNrO�rJr(�rKr)rPrQ�rKr)rR)rr�r�Z_match_tracebackr�)r`Zt1Zt2Zt3�unknownr9rrr�test_filter_match_trace�sNz#TestFilters.test_filter_match_traceN)	r�r�r�r1r:r=r@rGrTrrrrr2Qs4
Er2c@sjeZdZdd�Zeje�d�dd��Zdd�Zdd	�Z	d
d�Z
dd
�Zdd�Zeje
dkd�dd��ZdS)�TestCommandLinecCs,d}td|�\}}}|j�}|j|d�dS)Nz3import tracemalloc; print(tracemalloc.is_tracing())z-csFalse)r�rstriprn)r`r�ok�stdout�stderrrrr� test_env_var_disabled_by_default%sz0TestCommandLine.test_env_var_disabled_by_defaultz6Cannot run -E tests when PYTHON env vars are required.cCs2d}tdd|dd�\}}}|j�}|j|d�dS)zAPYTHON* environment variables must be ignored when -E is present.z3import tracemalloc; print(tracemalloc.is_tracing())z-Ez-c�1)�PYTHONTRACEMALLOCsFalseN)rrVrn)r`rrWrXrYrrr�test_env_var_ignored_with_E,sz+TestCommandLine.test_env_var_ignored_with_EcCs0d}td|dd�\}}}|j�}|j|d�dS)Nz3import tracemalloc; print(tracemalloc.is_tracing())z-cr[)r\sTrue)rrVrn)r`rrWrXrYrrr�test_env_var_enabled_at_startup5sz/TestCommandLine.test_env_var_enabled_at_startupcCs0d}td|dd�\}}}|j�}|j|d�dS)Nz<import tracemalloc; print(tracemalloc.get_traceback_limit())z-cZ10)r\s10)rrVrn)r`rrWrXrYrrr�test_env_limit<szTestCommandLine.test_env_limitcCsbx\dD]T}|j|d��>tj��*tddt|�d�\}}}|jd	|�WdQRXWdQRXqWdS)
Nrrr#r
)rz-c�pass)r\s+PYTHONTRACEMALLOC: invalid number of framesrs�@)rsrra)�subTestr�SuppressCrashReportrr��assertIn)r`rrWrXrYrrr�test_env_var_invalidCs

z$TestCommandLine.test_env_var_invalidc
Csfx`dD]X\}}|j||d��<d}td|d	|�\}}}|j�}|j|t|�jd
��WdQRXqWdS)Nrr�
tracemalloc=1�tracemalloc=15�)�xoptionsrz<import tracemalloc; print(tracemalloc.get_traceback_limit())z-Xz-c�ascii�rr�rfr�rgrh)rkrlrm)rbrrVrnr��encode)r`rirrrWrXrYrrr�test_sys_xoptionsNsz!TestCommandLine.test_sys_xoptionscCshxbd
D]Z}|j|d��Dtj��0dd|dd	f}t|�\}}}|jd
|�WdQRXWdQRXqWdS)Nrrr#r
)rz-Xztracemalloc=%sz-cr`s/-X tracemalloc=NFRAME: invalid number of framesrs�@)rsrrp)rbrrcrrd)r`r�argsrWrXrYrrr�test_sys_xoptions_invalidZs

z)TestCommandLine.test_sys_xoptions_invalidNzneed _testcapicCsd}tddd|�dS)Nz2import _testcapi; _testcapi.test_pymem_alloc0(); 1z-Xrz-c)r)r`rrrr�test_pymem_alloc0dsz!TestCommandLine.test_pymem_alloc0)r�r�r�rZr��skipIfrr]r^r_rerorr�	_testcapirsrrrrrU$s
rUzneed _testcapic@szeZdZd Zdd�Zdd�Zdd�Zd!dd�Zd
d�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)"�TestCAPI�P�cCs>tj�r|jd�d|_d|_t|j�d|_t|j�|_dS)Nz+tracemalloc must be stopped before the testr(rdr)	rr]r^rr r"rp�id�ptr)r`rrrraps
zTestCAPI.setUpcCstj�dS)N)rrb)r`rrrrc|szTestCAPI.tearDowncCs*tj|j|j�}|dk	r"tj|�SdSdS)N)ruZtracemalloc_get_tracebackrrzrr)r`rrrr�
get_tracebacks
zTestCAPI.get_tracebackFrcCs$t|d�}tj|j|j|j|�|S)Nr#)rruZtracemalloc_trackrrzr )r`�release_gilrrrrr�track�s
zTestCAPI.trackcCstj|j|j�dS)N)ruZtracemalloc_untrackrrz)r`rrr�untrack�szTestCAPI.untrackcCs6tj�}tjd|j�}|j|g�}tdd�|jD��S)NTcss|]}|jVqdS)N)r )rer|rrr�	<genexpr>�sz-TestCAPI.get_traced_memory.<locals>.<genexpr>)rr�rrr��sumr{)r`rUZ
domain_filterrrrr��szTestCAPI.get_traced_memorycCsRd}tj|�tj�d}|j||�}|j|j�tj|��|j|j�|j�dS)Nr(r)rr_r�r}rnr{rr )r`r|rr rrrr�check_track�s

zTestCAPI.check_trackcCs|jd�dS)NF)r�)r`rrr�
test_track�szTestCAPI.test_trackcCs|jd�dS)NT)r�)r`rrr�test_track_without_gil�szTestCAPI.test_track_without_gilcCs<d}tj|�|j�|j|d�}|j|j�tj|��dS)Nr()r)rr_r}rnr{r)r`rrrrr�test_track_already_tracked�s

z#TestCAPI.test_track_already_trackedcCsjtj�|j�|j|j��|j|j�|j�|j�|j	|j��|j|j�d�|j�|j�dS)Nr)
rr_r}r�r{rnr�r r~r�)r`rrr�test_untrack�szTestCAPI.test_untrackc	Cs@tj�tj�|jt��|j�WdQRX|j|j��dS)N)rr_rbrtr�r}r�r{)r`rrr�test_stop_track�s
zTestCAPI.test_stop_trackc	Cs:tj�|j�tj�|jt��|j�WdQRXdS)N)rr_r}rbrtr�r~)r`rrr�test_stop_untrack�s
zTestCAPI.test_stop_untrackNi@)Fr)r�r�r�r1rarcr{r}r~r�r�r�r�r�r�r�r�rrrrrvls

rvcCstjttttt�dS)N)rZrun_unittestr\r�r2rUrvrrrr�	test_main�sr��__main__)"r�r�r	rr�Z
unittest.mockrZtest.support.script_helperrrrZtestrZ	threading�ImportErrorru�	getsizeofrrr"rWrrYrZr[ZTestCaser\r�r2rUrtrvr�r�rrrr�<module>sH



!S(TH
k	


Youez - 2016 - github.com/yon3zu
LinuXploit