ó {G_Tc@sýddlZddlmZmZddlZddlZddlZddlZyddlZWne k r{e ZnXde fd„ƒYZ de fd„ƒYZ dejfd„ƒYZd ejfd „ƒYZd „Zed krùeƒndS( iÿÿÿÿN(tverboset run_unittesttC1055820cBseZd„ZRS(cCs||_||_dS(N(titloop(tselfR((s(/usr/local/lib/python2.7/test/test_gc.pyt__init__s (t__name__t __module__R(((s(/usr/local/lib/python2.7/test/test_gc.pyRst GC_DetectorcBseZd„ZRS(cs7tˆ_‡fd†}tjtdƒ|ƒˆ_dS(Ncs tˆ_dS(N(tTruet gc_happened(tignored(R(s(/usr/local/lib/python2.7/test/test_gc.pyt it_happened!siš(tFalseR tweakreftrefRtwr(RR ((Rs(/usr/local/lib/python2.7/test/test_gc.pyRs (RRR(((s(/usr/local/lib/python2.7/test/test_gc.pyR stGCTestscBseZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„Zd„Zd„Zd„Zejedƒd„ƒZd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(cCs:g}|j|ƒtjƒ~|jtjƒdƒdS(Ni(tappendtgctcollectt assertEqual(Rtl((s(/usr/local/lib/python2.7/test/test_gc.pyt test_list-s   cCs7i}||d(ttimetsleep(((s(/usr/local/lib/python2.7/test/test_gc.pyt sleeper_gen:s R%cs5eZgZgZ‡fd†Z‡‡fd†ZRS(cs||(ˆjjdƒdS(N(tinitsRtNone(Rtalist(R%(s(/usr/local/lib/python2.7/test/test_gc.pyREscs'ˆjjdƒˆƒ}t|ƒdS(N(tdelsRR\tnext(Rtg(R%RZ(s(/usr/local/lib/python2.7/test/test_gc.pyR*Hs (RRR[R^RR*((R%RZ(s(/usr/local/lib/python2.7/test/test_gc.pyR%Ascs<ˆ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(RR(txR(R%tNESTING(s(/usr/local/lib/python2.7/test/test_gc.pyt make_nestedSs csxˆsˆƒqWdS(s!Exercise make_nested() in a loop.N(((texitRc(s(/usr/local/lib/python2.7/test/test_gc.pyt run_thread[s ittargetgð?(R&R5tgetcheckintervaltsetcheckintervalRRRt threadingtThreadRtstartRXRYR tjoinRRRR=R[R^(Rt N_THREADSRetold_checkintervaltthreadsRR((R%RbRdRcRZs(/usr/local/lib/python2.7/test/test_gc.pyttest_trashcan_threads4s.       cCs‰ddd„ƒY}|ƒ}|ƒ}||_||_tjƒttjƒ}~~|jtjƒdƒ|jttjƒ|ƒdS(NtBoomcBseZd„ZRS(cSs|`t‚dS(N(tattrtAttributeError(Rt someattribute((s(/usr/local/lib/python2.7/test/test_gc.pyt __getattr__us(RRRu(((s(/usr/local/lib/python2.7/test/test_gc.pyRqtsi((RrRRR=R-R(RRqRR,t garbagelen((s(/usr/local/lib/python2.7/test/test_gc.pyt test_boomss     cCs‰ddd„ƒY}|ƒ}|ƒ}||_||_tjƒttjƒ}~~|jtjƒdƒ|jttjƒ|ƒdS(NtBoom2cBseZd„Zd„ZRS(cSs d|_dS(Ni(Ra(R((s(/usr/local/lib/python2.7/test/test_gc.pyRscSs1|jd7_|jdkr'|`nt‚dS(Ni(RaRrRs(RRt((s(/usr/local/lib/python2.7/test/test_gc.pyRus (RRRRu(((s(/usr/local/lib/python2.7/test/test_gc.pyRxŒs i((RrRRR=R-R(RRxRR,Rv((s(/usr/local/lib/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(RrRs(RRt((s(/usr/local/lib/python2.7/test/test_gc.pyRu«s(RRRu(((s(/usr/local/lib/python2.7/test/test_gc.pyRzªsi(R!RrRRR=R-R(RRzRR,Rv((s(/usr/local/lib/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(Ra(R((s(/usr/local/lib/python2.7/test/test_gc.pyR¼scSs1|jd7_|jdkr'|`nt‚dS(Ni(RaRrRs(RRt((s(/usr/local/lib/python2.7/test/test_gc.pyRu¿s (RRRRu(((s(/usr/local/lib/python2.7/test/test_gc.pyR|»s i(R!RrRRR=R-R(RR|RR,Rv((s(/usr/local/lib/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( NiiiiiiiRy@(iii(Rt get_referentstsortRttupleRR(RR]tgottatupletadicttexpected((s(/usr/local/lib/python2.7/test/test_gc.pyttest_get_referentsÐs"    "  cCs÷|jtjdƒƒ|jtjdƒƒ|jtjdƒƒ|jtjd ƒƒ|jtjtƒƒ|jtjtƒƒ|jtjdƒƒ|jtjdƒƒ|jtjtdƒƒƒ|jtjtƒƒ|jtjtƒƒ|jtjt ƒƒ|jtjt ƒƒƒdd d„ƒY}dt fd „ƒY}|j tjtƒƒ|j tj|ƒƒ|j tj|ƒƒƒ|j tj|ƒƒ|j tj|ƒƒƒ|j tjgƒƒ|j tjt ƒƒƒdS( Nigð?y@RuatOldStylecBseZRS((RR(((s(/usr/local/lib/python2.7/test/test_gc.pyR†ústNewStylecBseZRS((RR(((s(/usr/local/lib/python2.7/test/test_gc.pyR‡üsyð?@(( t assertFalseRt is_trackedR\R Rt bytearrayttypetintR!t assertTruetset(RR†R‡((s(/usr/local/lib/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((R R(tWRstouch(s(/usr/local/lib/python2.7/test/test_gc.pytcallback sii( RRRRRR\RRRR=(RR’RtCstcRa((RR‘s(/usr/local/lib/python2.7/test/test_gc.pyttest_bug1055820bs%%   (RRRRRR R"R#R'R)R2R3R4R9RBRIRJRNRORWtunittestt skipUnlessRiRpRwRyR{R}R…RR•(((s(/usr/local/lib/python2.7/test/test_gc.pyR,s4            #?      tGCTogglingTestscBs,eZd„Zd„Zd„Zd„ZRS(cCstjƒdS(N(RRE(R((s(/usr/local/lib/python2.7/test/test_gc.pytsetUpscCstjƒdS(N(RRG(R((s(/usr/local/lib/python2.7/test/test_gc.pyttearDown"sc s-tdƒ}tjƒtdƒ}||_|`tdƒ}tj|ƒ‰g‰‡‡fd†}tj||ƒ}d}}}g}d}tƒ}xV|j sñ|d7}|dkrË|j dƒn|j t ˆƒdƒ|j gƒqœW|j t ˆƒdƒxˆD]} |j | dƒqWdS(Niiicsˆƒgˆ(dS(N((R (tc2wrR‘(s(/usr/local/lib/python2.7/test/test_gc.pyR’5si's'gc didn't happen after 10000 iterations(RRRt keep_c0_aliveRRRR\R R R.RR=R( Rtc0tc1tc2R’tc0wrtjunkRtdetectorRa((R›R‘s(/usr/local/lib/python2.7/test/test_gc.pyttest_bug1055820c%s.           c s(g‰dtf‡‡fd†ƒY}|dƒ}tjƒtdƒ}||_|`tdƒ}tj|ƒ‰d}}}tƒ}g}d}xV|j sì|d7}|dkrÆ|j dƒn|j t ˆƒdƒ|j gƒq—W|j t ˆƒdƒxˆD]}|j |dƒq WdS(NtDcseZ‡‡fd†ZRS(csˆƒgˆ(dS(N((R(R›R‘(s(/usr/local/lib/python2.7/test/test_gc.pyR*rs(RRR*((R›R‘(s(/usr/local/lib/python2.7/test/test_gc.pyR¤qsiiii's'gc didn't happen after 10000 iterations(RRRt keep_d0_aliveRRRR\R R R.RR=R( RR¤td0RžRŸR¢R¡RRa((R›R‘s(/usr/local/lib/python2.7/test/test_gc.pyttest_bug1055820dks,          (RRR™RšR£R§(((s(/usr/local/lib/python2.7/test/test_gc.pyR˜s   FcCs’tjƒ}tjƒtjƒ}tj|tj@ƒztjƒttt ƒWdtj|ƒt rpdGHntj ƒ|stjƒnXdS(Nsrestoring automatic collection( Rt isenabledRGR:R;t DEBUG_LEAKRRRR˜RRE(tenabledRA((s(/usr/local/lib/python2.7/test/test_gc.pyt test_main®s      t__main__(R–ttest.test_supportRRR5RXRRRit ImportErrorR\R!RR tTestCaseRR˜R«R(((s(/usr/local/lib/python2.7/test/test_gc.pyts"       ÿó