Your IP : 216.73.216.103


Current Path : /lib64/python2.7/test/
Upload Files:
Current File: //lib64/python2.7/test/test_gc.pyc

�
zfc@s1ddlZddlmZmZmZmZmZddlZddlZddl	Z	ddl
Z
ddlZyddlZWne
k
r�eZnXdefd��YZdefd��YZdej�dkZd	ejfd
��YZdejfd��YZd
�Zedkr-e�ndS(i����N(tverbosetrun_unittestt
start_threadstrequires_type_collectingt
import_moduletC1055820cBseZd�ZRS(cCs||_||_dS(N(titloop(tselfR((s$/usr/lib64/python2.7/test/test_gc.pyt__init__s	(t__name__t
__module__R	(((s$/usr/lib64/python2.7/test/test_gc.pyRstGC_DetectorcBseZd�ZRS(cs7t�_�fd�}tjtd�|��_dS(Ncs
t�_dS(N(tTruetgc_happened(tignored(R(s$/usr/lib64/python2.7/test/test_gc.pytit_happened#si�(tFalseRtweakreftrefRtwr(RR((Rs$/usr/lib64/python2.7/test/test_gc.pyR	 s	(R
RR	(((s$/usr/lib64/python2.7/test/test_gc.pyRss-DNDEBUGt	PY_CFLAGStGCTestscBs%eZd�Zd�Zd�Zd�Zd�Zd�Zed��Z	d�Z
d�Zd	�Zd
�Z
d�Zd�Zd
�Zd�Zd�Zd�Zd�Zejed�d��Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zej e!d�d��Z"RS(cCs:g}|j|�tj�~|jtj�d�dS(Ni(tappendtgctcollecttassertEqual(Rtl((s$/usr/lib64/python2.7/test/test_gc.pyt	test_list1s


cCs7i}||d<tj�~|jtj�d�dS(Ni(RRR(Rtd((s$/usr/lib64/python2.7/test/test_gc.pyt	test_dict8s


cCsFg}|f}|j|�tj�~~|jtj�d�dS(Ni(RRRR(RRtt((s$/usr/lib64/python2.7/test/test_gc.pyt
test_tuple?s	

cCsCddd��Y}||_tj�~|jtj�d�dS(NtAcBseZRS((R
R(((s$/usr/lib64/python2.7/test/test_gc.pyR!Jsi((taRRtassertNotEqual(RR!((s$/usr/lib64/python2.7/test/test_gc.pyt
test_classIs
	
cCs=dtfd��Y}tj�~|jtj�d�dS(NR!cBseZRS((R
R(((s$/usr/lib64/python2.7/test/test_gc.pyR!Rsi(tobjectRRR#(RR!((s$/usr/lib64/python2.7/test/test_gc.pyttest_newstyleclassQs
cCsLddd��Y}|�}||_tj�~|jtj�d�dS(NR!cBseZRS((R
R(((s$/usr/lib64/python2.7/test/test_gc.pyR!Ysi((R"RRR#(RR!R"((s$/usr/lib64/python2.7/test/test_gc.pyt
test_instanceXs		
cCs
dtfd��Y}|�}||_tj�~|jtj�d�dtfd��Y}d||fd��Y}|�}||_tj�~|jtj�d�~~|jtj�d�|�|_~|jtj�d�|jtj�d�dS(NR!cBseZRS((R
R(((s$/usr/lib64/python2.7/test/test_gc.pyR!csitBcBseZRS((R
R(((s$/usr/lib64/python2.7/test/test_gc.pyR(jstCcBseZRS((R
R(((s$/usr/lib64/python2.7/test/test_gc.pyR)ls(R%R"RRR#tlistR(RR!R"R(R)((s$/usr/lib64/python2.7/test/test_gc.pyttest_newinstanceas&		
		
cCsCddd��Y}|�}tj�~|jtj�d�dS(NR!cBseZd�ZRS(cSs|j|_dS(N(R	tinit(R((s$/usr/lib64/python2.7/test/test_gc.pyR	}s(R
RR	(((s$/usr/lib64/python2.7/test/test_gc.pyR!|si((RRR#(RR!R"((s$/usr/lib64/python2.7/test/test_gc.pyttest_methodzs
	
cCs�ddd��Y}ddd��Y}|�}||_t|�}|�}||_tj�~~|jtj�d�x:tjD]"}t|�|kr�|`Pq�q�W|jd�tjj|�dS(	NR!cBseZd�ZRS(cSsdS(N((R((s$/usr/lib64/python2.7/test/test_gc.pyt__del__�t(R
RR.(((s$/usr/lib64/python2.7/test/test_gc.pyR!�sR(cBseZRS((R
R(((s$/usr/lib64/python2.7/test/test_gc.pyR(�sis&didn't find obj in garbage (finalizer)(((	R"tidtbRRR#tgarbagetfailtremove(RR!R(R"tid_aR1tobj((s$/usr/lib64/python2.7/test/test_gc.pyttest_finalizer�s"				

cCs�dtfd��Y}dtfd��Y}|�}||_t|�}|�}||_tj�~~|jtj�d�x:tjD]"}t|�|kr�|`Pq�q�W|jd�tjj	|�dS(NR!cBseZd�ZRS(cSsdS(N((R((s$/usr/lib64/python2.7/test/test_gc.pyR.�R/(R
RR.(((s$/usr/lib64/python2.7/test/test_gc.pyR!�sR(cBseZRS((R
R(((s$/usr/lib64/python2.7/test/test_gc.pyR(�sis&didn't find obj in garbage (finalizer)(
R%R"R0R1RRR#R2R3R4(RR!R(R"R5R1R6((s$/usr/lib64/python2.7/test/test_gc.pyttest_finalizer_newclass�s"				

cBs5i}d|Uej�~|jej�d�dS(Nsdef f(): pass
i(RRR(RR((s$/usr/lib64/python2.7/test/test_gc.pyt
test_function�s

cCs4d�}tj�|�|jtj�d�dS(NcSstj�}dS(N(tsyst	_getframe(tframe((s$/usr/lib64/python2.7/test/test_gc.pytf�si(RRR(RR=((s$/usr/lib64/python2.7/test/test_gc.pyt
test_frame�s	
cCs�tj�|jtjg�g}|j|�t|�}tj�}tj|tjB�~tj�tj|�|jt	tj�d�tjj
�}|jt|�|�dS(Ni(RRRR2RR0t	get_debugt	set_debugt
DEBUG_SAVEALLtlentpop(RtLtid_LtdebugR6((s$/usr/lib64/python2.7/test/test_gc.pyttest_saveall�s



cCs]tj�}tj�tjd�ddd��Y}|�}~tj�tj|�dS(NiR!cBseZd�ZRS(cSst|�dS(N(tdir(R((s$/usr/lib64/python2.7/test/test_gc.pyR.�s(R
RR.(((s$/usr/lib64/python2.7/test/test_gc.pyR!�s((Rt
get_thresholdtenablet
set_thresholdtdisable(Rt
thresholdsR!R"((s$/usr/lib64/python2.7/test/test_gc.pyttest_del�s

	
cCs`tj�}tj�tjd�dtfd��Y}|�}~tj�tj|�dS(NiR!cBseZd�ZRS(cSst|�dS(N(RH(R((s$/usr/lib64/python2.7/test/test_gc.pyR.�s(R
RR.(((s$/usr/lib64/python2.7/test/test_gc.pyR!�s(RRIRJRKR%RL(RRMR!R"((s$/usr/lib64/python2.7/test/test_gc.pyttest_del_newclass�s

	
cCsF|j}tj�|tj�d�t�}|tj�d�dS(Nii(iii(iii(t_baseAssertEqualRRt	get_counttdict(RRR"((s$/usr/lib64/python2.7/test/test_gc.pyttest_get_counts
	
	cCs�|j}tj�t�}tjd�|tj�d�tjd�|tj�d�tjd�|tj�d�dS(Niii(iii(iii(iii(RRRRRRQ(RRR"((s$/usr/lib64/python2.7/test/test_gc.pyttest_collect_generations
s	
	


cs�dd�fd��Y�tj�d}x�td�D]�}g}x#t|�D]}|��g}qOWg}x#t|�D]}|��g}q{Wi}x+t|�D]}i|d6��d6}q�Wq6Wtj�dS(NtOuchcseZdZ�fd�ZRS(ics4�jd�_�jddkr0tj�ndS(Niii(tnRR(R(RU(s$/usr/lib64/python2.7/test/test_gc.pyR.s(R
RRVR.((RU(s$/usr/lib64/python2.7/test/test_gc.pyRUsi�ii((RRJtrangeRL(RtNtcountRRtutv((RUs$/usr/lib64/python2.7/test/test_gc.pyt
test_trashcans
s*test meaningless on builds without threadscs$d�d}d��dtf��fd��Y���fd����fd�}tj�}tjd�zrg�g}x3t|�D]%}tjd	|�}|j|�q�Wt|�fd
���t	j
d�WdQXWdtj|�Xtj�|j
t�j�t�j��dS(Ni<icssz	dVWdtjd�XdS(s<A generator that releases the GIL when closed or dealloc'ed.Ng���ư>(ttimetsleep(((s$/usr/lib64/python2.7/test/test_gc.pytsleeper_gen?s	R)cs5eZgZgZ�fd�Z��fd�ZRS(cs||(�jjd�dS(N(tinitsRtNone(Rtalist(R)(s$/usr/lib64/python2.7/test/test_gc.pyR	Jscs'�jjd���}t|�dS(N(tdelsRRatnext(Rtg(R)R_(s$/usr/lib64/python2.7/test/test_gc.pyR.Ms	(R
RR`RcR	R.((R)R_(s$/usr/lib64/python2.7/test/test_gc.pyR)Fscs<�g�}x&t��D]}�|g�g}qW~dS(syCreate a sufficiently nested container object so that the
            trashcan mechanism is invoked when deallocating it.N(RW(txR(R)tNESTING(s$/usr/lib64/python2.7/test/test_gc.pytmake_nestedXscsx�s��qWdS(s!Exercise make_nested() in a loop.N(((texitRh(s$/usr/lib64/python2.7/test/test_gc.pyt
run_thread`s	ittargetcs
�jd�S(Ni(R((Ri(s$/usr/lib64/python2.7/test/test_gc.pyt<lambda>mR/g�?(R*R:tgetcheckintervaltsetcheckintervalRWt	threadingtThreadRRR]R^RRRRBR`Rc(Rt	N_THREADSRjtold_checkintervaltthreadsRR((R)RgRiRhR_s$/usr/lib64/python2.7/test/test_gc.pyttest_trashcan_threads9s&	

cCs�ddd��Y}|�}|�}||_||_tj�ttj�}~~|jtj�d�|jttj�|�dS(NtBoomcBseZd�ZRS(cSs|`t�dS(N(tattrtAttributeError(Rt
someattribute((s$/usr/lib64/python2.7/test/test_gc.pyt__getattr__vs(R
RRy(((s$/usr/lib64/python2.7/test/test_gc.pyRuusi((RvRRRBR2R(RRuR"R1t
garbagelen((s$/usr/lib64/python2.7/test/test_gc.pyt	test_boomts				
cCs�ddd��Y}|�}|�}||_||_tj�ttj�}~~|jtj�d�|jttj�|�dS(NtBoom2cBseZd�Zd�ZRS(cSs
d|_dS(Ni(Rf(R((s$/usr/lib64/python2.7/test/test_gc.pyR	�scSs1|jd7_|jdkr'|`nt�dS(Ni(RfRvRw(RRx((s$/usr/lib64/python2.7/test/test_gc.pyRy�s	(R
RR	Ry(((s$/usr/lib64/python2.7/test/test_gc.pyR|�s	i((RvRRRBR2R(RR|R"R1Rz((s$/usr/lib64/python2.7/test/test_gc.pyt
test_boom2�s
				
cCs�dtfd��Y}|�}|�}||_||_tj�ttj�}~~|jtj�d�|jttj�|�dS(NtBoom_NewcBseZd�ZRS(cSs|`t�dS(N(RvRw(RRx((s$/usr/lib64/python2.7/test/test_gc.pyRy�s(R
RRy(((s$/usr/lib64/python2.7/test/test_gc.pyR~�si(R%RvRRRBR2R(RR~R"R1Rz((s$/usr/lib64/python2.7/test/test_gc.pyt
test_boom_new�s				
cCs�dtfd��Y}|�}|�}||_||_tj�ttj�}~~|jtj�d�|jttj�|�dS(Nt	Boom2_NewcBseZd�Zd�ZRS(cSs
d|_dS(Ni(Rf(R((s$/usr/lib64/python2.7/test/test_gc.pyR	�scSs1|jd7_|jdkr'|`nt�dS(Ni(RfRvRw(RRx((s$/usr/lib64/python2.7/test/test_gc.pyRy�s	(R
RR	Ry(((s$/usr/lib64/python2.7/test/test_gc.pyR��s	i(R%RvRRRBR2R(RR�R"R1Rz((s$/usr/lib64/python2.7/test/test_gc.pyttest_boom2_new�s
				
cCs+dddg}tj|�}|j�|j||�t|�}tj|�}|j�|j||�idd6dd6}ddddg}tj|�}|j�|j||�tjddgidd6d
�}|j�|j|ddgtd��|jtjddd	�g�dS(NiiiiiiiR"y@(iii(Rt
get_referentstsortRttupleRW(RRbtgottatupletadicttexpected((s$/usr/lib64/python2.7/test/test_gc.pyttest_get_referents�s"


"
 cCs�|jtjd��|jtjd��|jtjd��|jtjd
��|jtjt��|jtjt��|jtjd��|jtjd��|jtjtd���|jtjt��|jtjt��|jtjt	��|jtjt	���ddd��Y}dt	fd	��Y}|j
tjt��|j
tj|��|j
tj|���|j
tj|��|j
tj|���|j
tjg��|j
tjt���dS(Nig�?y@R"uatOldStylecBseZRS((R
R(((s$/usr/lib64/python2.7/test/test_gc.pyR��stNewStylecBseZRS((R
R(((s$/usr/lib64/python2.7/test/test_gc.pyR��sy�?@((tassertFalseRt
is_trackedRaR
Rt	bytearrayttypetintR%t
assertTruetset(RR�R�((s$/usr/lib64/python2.7/test/test_gc.pyttest_is_tracked�s,cs�g���fd�}gtd�D]}t|�^q%}g|D]}tj||�^qD�d}tj�|jt��d�d}tj�|jt��d�x�D]}|j|d�q�WdS(Ncs!g�D]}|�^q�(dS(N((RR(tWRstouch(s$/usr/lib64/python2.7/test/test_gc.pytcallbacksii(	RWRRRRaRRRRB(RR�RtCstcRf((R�R�s$/usr/lib64/python2.7/test/test_gc.pyttest_bug1055820bs%%


sbuilt with -NDEBUGcCs�td�ddl}d}|jtjd|gd|jd|j�}|j�\}}|jj�|j	j�|j
|d�|j
|d�|j
|d	�|j
|d
�|j
|d�|j
|d�dS(
Ntctypesi����s�if 1:
        a = []
        b = [a]

        # Simulate the refcount of "a" being too low (compared to the
        # references held on it by live data), but keeping it above zero
        # (to avoid deallocating it):
        import ctypes
        ctypes.pythonapi.Py_DecRef(ctypes.py_object(a))

        # The garbage collector should now have a fatal error when it reaches
        # the broken object:
        import gc
        gc.collect()
        s-ctstdouttstderrsPModules/gcmodule.c:[0-9]+: visit_decref: Assertion "gc->gc.gc_refs != 0" failed.srefcount was too smallsobject  : \[\]stype    : listsrefcount: 1saddress : 0x[0-9a-f]+(Rt
subprocesstPopenR:t
executabletPIPEtcommunicateR�tcloseR�tassertRegexpMatches(RR�tcodetpR�R�((s$/usr/lib64/python2.7/test/test_gc.pyttest_refcount_errorss*
	

						(#R
RRRR R$R&R'RR+R-R7R8R9R>RGRNRORSRTR\tunittestt
skipUnlessRoRtR{R}RR�R�R�R�tskipIftBUILT_WITH_NDEBUGR�(((s$/usr/lib64/python2.7/test/test_gc.pyR0s8			
					
									
		#;								tGCTogglingTestscBs,eZd�Zd�Zd�Zd�ZRS(cCstj�dS(N(RRJ(R((s$/usr/lib64/python2.7/test/test_gc.pytsetUpKscCstj�dS(N(RRL(R((s$/usr/lib64/python2.7/test/test_gc.pyttearDownNsc
s-td�}tj�td�}||_|`td�}tj|��g���fd�}tj||�}d}}}g}d}t�}xV|j	s�|d7}|dkr�|j
d�n|jt��d�|j
g�q�W|jt��d�x�D]}	|j|	d�qWdS(Niiics��g�(dS(N((R(tc2wrR�(s$/usr/lib64/python2.7/test/test_gc.pyR�asi's'gc didn't happen after 10000 iterations(RRRt
keep_c0_aliveRRRRaRRR3RRBR(
Rtc0tc1tc2R�tc0wrtjunkRtdetectorRf((R�R�s$/usr/lib64/python2.7/test/test_gc.pyttest_bug1055820cQs.
	 	

c	s(g�dtf��fd��Y}|d�}tj�td�}||_|`td�}tj|��d}}}t�}g}d}xV|j	s�|d7}|dkr�|j
d�n|jt��d�|j
g�q�W|jt��d�x�D]}|j|d�q
WdS(NtDcseZ��fd�ZRS(cs��g�(dS(N((R(R�R�(s$/usr/lib64/python2.7/test/test_gc.pyR.�s(R
RR.((R�R�(s$/usr/lib64/python2.7/test/test_gc.pyR��siiii's'gc didn't happen after 10000 iterations(RRRt
keep_d0_aliveRRRRaRRR3RRBR(	RR�td0R�R�R�R�RRf((R�R�s$/usr/lib64/python2.7/test/test_gc.pyttest_bug1055820d�s,
		

(R
RR�R�R�R�(((s$/usr/lib64/python2.7/test/test_gc.pyR�Js			FcCs�tj�}tj�tj�s)t�tj�}tj|tj@�ztj�tt	t
�Wdtj|�tr�dGHntj�tj�s�t�|s�tj�nXdS(Nsrestoring automatic collection(
Rt	isenabledRLtAssertionErrorR?R@t
DEBUG_LEAKRRRR�RRJ(tenabledRF((s$/usr/lib64/python2.7/test/test_gc.pyt	test_main�s



t__main__(R�ttest.supportRRRRRR:t	sysconfigR]RRRotImportErrorRaR%RRtget_config_varsR�tTestCaseRR�R�R
(((s$/usr/lib64/python2.7/test/test_gc.pyt<module>s((


���