ó {G_Tc@sHdZddlZddlZddlmZmZddlZddlZddlm Z d„Z de fd„ƒYZ dejfd „ƒYZd efd „ƒYZd efd „ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdS(s/ Various tests for synchronization primitives. iÿÿÿÿN(tstart_new_threadt get_ident(t test_supportcCstjdƒdS(Ng{®Gáz„?(ttimetsleep(((s+/usr/local/lib/python2.7/test/lock_tests.pyt_waitstBunchcBs5eZdZed„Zd„Zd„Zd„ZRS(s A bunch of threads. cshˆˆ_|ˆ_gˆ_gˆ_| ˆ_‡‡fd†}x!t|ƒD]}t|dƒqMWdS(s¹ Construct a bunch of `n` threads running the same function `f`. If `wait_before_exit` is True, the threads won't terminate until do_finish() is called. csStƒ}ˆjj|ƒz ˆƒWdˆjj|ƒxˆjsMtƒq:WXdS(N(Rtstartedtappendtfinishedt _can_exitR(ttid(tftself(s+/usr/local/lib/python2.7/test/lock_tests.pyttask!s   N((R tnRR R trangeR(R R Rtwait_before_exitRti((R R s+/usr/local/lib/python2.7/test/lock_tests.pyt__init__s      cCs*x#t|jƒ|jkr%tƒqWdS(N(tlenRRR(R ((s+/usr/local/lib/python2.7/test/lock_tests.pytwait_for_started-scCs*x#t|jƒ|jkr%tƒqWdS(N(RR RR(R ((s+/usr/local/lib/python2.7/test/lock_tests.pytwait_for_finished1scCs t|_dS(N(tTrueR (R ((s+/usr/local/lib/python2.7/test/lock_tests.pyt do_finish5s(t__name__t __module__t__doc__tFalseRRRR(((s+/usr/local/lib/python2.7/test/lock_tests.pyRs    t BaseTestCasecBseZd„Zd„ZRS(cCstjƒ|_dS(N(tsupporttthreading_setupt_threads(R ((s+/usr/local/lib/python2.7/test/lock_tests.pytsetUp:scCstj|jŒtjƒdS(N(Rtthreading_cleanupR t reap_children(R ((s+/usr/local/lib/python2.7/test/lock_tests.pyttearDown=s(RRR!R$(((s+/usr/local/lib/python2.7/test/lock_tests.pyR9s t BaseLockTestscBsVeZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z RS( s; Tests for both recursive and non-recursive locks. cCs|jƒ}~dS(N(tlocktype(R tlock((s+/usr/local/lib/python2.7/test/lock_tests.pyttest_constructorGs cCs|jƒ}|jƒ~dS(N(R&tacquire(R R'((s+/usr/local/lib/python2.7/test/lock_tests.pyttest_acquire_destroyKs  cCs'|jƒ}|jƒ|jƒ~dS(N(R&R)trelease(R R'((s+/usr/local/lib/python2.7/test/lock_tests.pyttest_acquire_releasePs   cCs0|jƒ}|j|jtƒƒ|jƒdS(N(R&t assertTrueR)RR+(R R'((s+/usr/local/lib/python2.7/test/lock_tests.pyttest_try_acquireVs cs`|jƒ‰ˆjƒg‰‡‡fd†}t|dƒjƒ|jˆdƒˆjƒdS(NcsˆjˆjtƒƒdS(N(RR)R((R'tresult(s+/usr/local/lib/python2.7/test/lock_tests.pyR _sii(R&R)RRt assertFalseR+(R R ((R'R/s+/usr/local/lib/python2.7/test/lock_tests.pyttest_try_acquire_contended[s  cs•|jƒ‰ˆjƒd}‡fd†}t||ƒ}|jƒtƒ|jt|jƒdƒˆjƒ|j ƒ|jt|jƒ|ƒdS(NicsˆjƒˆjƒdS(N(R)R+((R'(s+/usr/local/lib/python2.7/test/lock_tests.pyR is i( R&R)RRRt assertEqualRR R+R(R tNR tb((R's+/usr/local/lib/python2.7/test/lock_tests.pyttest_acquire_contendedes     csq|jƒ‰‡fd†}d‡fd†}|ƒt|dƒjƒ|jt|tƒt|dƒjƒdS(NcsˆjƒˆjƒdS(N(R)R+((R'(s+/usr/local/lib/python2.7/test/lock_tests.pyR ws cs&ˆ|dk r|‚nWdQXdS(N(tNone(terr(R'(s+/usr/local/lib/python2.7/test/lock_tests.pyt_withzs i(R&R6RRt assertRaisest TypeError(R R R8((R's+/usr/local/lib/python2.7/test/lock_tests.pyt test_withus cs`|jƒ‰‡fd†}ttjƒƒ}t|dƒjƒ|j|ttjƒƒƒdS(NcsˆjƒˆjƒdS(N(R)R+((R'(s+/usr/local/lib/python2.7/test/lock_tests.pyR ‰s i(R&Rt threadingt enumerateRRR2(R R R((R's+/usr/local/lib/python2.7/test/lock_tests.pyttest_thread_leak…s  ( RRRR(R*R,R.R1R5R;R>(((s+/usr/local/lib/python2.7/test/lock_tests.pyR%Bs      t LockTestscBs eZdZd„Zd„ZRS(sn Tests for non-recursive, weak locks (which can be acquired and released from different threads). cs²|jƒ‰g‰‡‡fd†}t|dƒxtˆƒdkrPtƒq4Wtƒ|jtˆƒdƒˆjƒxtˆƒdkr—tƒq{W|jtˆƒdƒdS(Ncs2ˆjƒˆjdƒˆjƒˆjdƒdS(N(R)RR6((R'tphase(s+/usr/local/lib/python2.7/test/lock_tests.pyR œs   iii((R&RRRR2R+(R R ((R'R@s+/usr/local/lib/python2.7/test/lock_tests.pyttest_reacquire˜s     csV|jƒ‰ˆjƒ‡fd†}t|dƒ}|jƒˆjƒˆjƒdS(NcsˆjƒdS(N(R+((R'(s+/usr/local/lib/python2.7/test/lock_tests.pyR ¯si(R&R)RRR+(R R R4((R's+/usr/local/lib/python2.7/test/lock_tests.pyttest_different_thread«s    (RRRRARB(((s+/usr/local/lib/python2.7/test/lock_tests.pyR?“s t RLockTestscBs2eZdZd„Zd„Zd„Zd„ZRS(s$ Tests for recursive locks. cCsL|jƒ}|jƒ|jƒ|jƒ|jƒ|jƒ|jƒdS(N(R&R)R+(R R'((s+/usr/local/lib/python2.7/test/lock_tests.pyRA»s      cCsr|jƒ}|jt|jƒ|jƒ|jƒ|jƒ|jƒ|jƒ|jƒ|jt|jƒdS(N(R&R9t RuntimeErrorR+R)(R R'((s+/usr/local/lib/python2.7/test/lock_tests.pyttest_release_unacquiredÄs       csV|jƒ‰‡fd†}t|dtƒ}z|jtˆjƒWd|jƒXdS(NcsˆjƒdS(N(R)((R'(s+/usr/local/lib/python2.7/test/lock_tests.pyR Ósi(R&RRR9RDR+R(R R R4((R's+/usr/local/lib/python2.7/test/lock_tests.pyRBÐs  csÓ|jƒ‰|jˆjƒƒˆjƒ|jˆjƒƒˆjƒ|jˆjƒƒg‰‡‡fd†}t|dƒjƒ|jˆdƒˆjƒ|jˆjƒƒˆjƒ|jˆjƒƒdS(NcsˆjˆjƒƒdS(N(Rt _is_owned((R'R/(s+/usr/local/lib/python2.7/test/lock_tests.pyR ãsii(R&R0RFR)R-RRR+(R R ((R'R/s+/usr/local/lib/python2.7/test/lock_tests.pyttest__is_ownedÛs     (RRRRARERBRG(((s+/usr/local/lib/python2.7/test/lock_tests.pyRC·s  t EventTestscBs2eZdZd„Zd„Zd„Zd„ZRS(s" Tests for Event objects. cCs—|jƒ}|j|jƒƒ|jƒ|j|jƒƒ|jƒ|j|jƒƒ|jƒ|j|jƒƒ|jƒ|j|jƒƒdS(N(t eventtypeR0tis_settsetR-tclear(R tevt((s+/usr/local/lib/python2.7/test/lock_tests.pyt test_is_setòs     cs£d}g‰g‰‡‡‡fd†}t||ƒ}|jƒtƒ|jtˆƒdƒˆjƒ|jƒ|jˆtg|ƒ|jˆtg|ƒdS(Nics*ˆjˆjƒƒˆjˆjƒƒdS(N(Rtwait((RMtresults1tresults2(s+/usr/local/lib/python2.7/test/lock_tests.pyR si(RRRR2RRKRR(R RMR3R R4((RMRPRQs+/usr/local/lib/python2.7/test/lock_tests.pyt _check_notifyþs   cCs>|jƒ}|j|ƒ|jƒ|jƒ|j|ƒdS(N(RIRRRKRL(R RM((s+/usr/local/lib/python2.7/test/lock_tests.pyt test_notifys     csÿ|jƒ‰g‰g‰d}‡‡‡fd†}t||ƒjƒ|jˆtg|ƒx7ˆD]/\}}|j|ƒ|j|dk|ƒqdWg‰g‰ˆjƒt||ƒjƒ|jˆtg|ƒx!ˆD]\}}|j|ƒqÞWdS(NicsXˆjˆjdƒƒtjƒ}ˆjdƒ}tjƒ}ˆj|||fƒdS(Nggš™™™™™É?(RROR(tt1trtt2(RMRPRQ(s+/usr/local/lib/python2.7/test/lock_tests.pyR s   gš™™™™™É?( RIRRR2RR0R-RKR(R R3R RUtdt((RMRPRQs+/usr/local/lib/python2.7/test/lock_tests.pyt test_timeouts"   (RRRRNRRRSRX(((s+/usr/local/lib/python2.7/test/lock_tests.pyRHís   tConditionTestscBsDeZdZd„Zd„Zd„Zd„Zd„Zd„ZRS(s( Tests for condition variables. cCsÖ|jƒ}|jƒ|jƒ|jƒ|jƒtjƒ}|j|ƒ}|jƒ|j|jtƒƒ|jƒ|j|jtƒƒ|j|jtƒƒ|jƒ||j|jtƒƒWdQXdS(N(tcondtypeR)R+R<tLockR0RR-(R tcondR'((s+/usr/local/lib/python2.7/test/lock_tests.pyt test_acquire6s         cCs#|jƒ}|jt|jƒdS(N(RZR9RDRO(R R\((s+/usr/local/lib/python2.7/test/lock_tests.pyttest_unacquired_waitIs cCs#|jƒ}|jt|jƒdS(N(RZR9RDtnotify(R R\((s+/usr/local/lib/python2.7/test/lock_tests.pyttest_unacquired_notifyMs csd}g‰g‰d‰‡‡‡‡fd†}t||ƒ}|jƒtƒ|jˆgƒˆjƒˆjdƒtƒd‰ˆjƒxtˆƒdkr­tƒq‘W|jˆdgdƒ|jˆgƒˆjƒˆjdƒtƒd‰ˆjƒx'tˆƒtˆƒdkr,tƒqW|jˆdgddgdƒ|jˆdgdƒˆjƒˆjƒtƒd‰ˆjƒxtˆƒdkr°tƒq”W|jˆdgddgdƒ|jˆdgddgdƒ|j ƒdS(NiicsZˆjƒˆjƒˆjƒˆjˆƒˆjƒˆjƒˆjƒˆjˆƒdS(N(R)ROR+R((R\t phase_numRPRQ(s+/usr/local/lib/python2.7/test/lock_tests.pyR Vs       iiii( RRRR2R)R_R+Rt notify_allR(R R\R3R R4((R\RaRPRQs+/usr/local/lib/python2.7/test/lock_tests.pyRRQsJ          "    ""cCs*|jƒ}|j|ƒ|j|ƒdS(N(RZRR(R R\((s+/usr/local/lib/python2.7/test/lock_tests.pyRSƒs  cs~|jƒ‰g‰d}‡‡fd†}t||ƒjƒ|jtˆƒdƒx$ˆD]}|j|dk|ƒqZWdS(NicsNˆjƒtjƒ}ˆjdƒtjƒ}ˆjƒˆj||ƒdS(Ngš™™™™™É?(R)RROR+R(RTRV(R\tresults(s+/usr/local/lib/python2.7/test/lock_tests.pyR s      gš™™™™™É?(RZRRR2RR-(R R3R RW((R\Rcs+/usr/local/lib/python2.7/test/lock_tests.pyRX‰s  ( RRRR]R^R`RRRSRX(((s+/usr/local/lib/python2.7/test/lock_tests.pyRY1s    2 tBaseSemaphoreTestscBsVeZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z RS( sB Common tests for {bounded, unbounded} semaphore objects. cCs:|jt|jddƒ|jt|jdtj ƒdS(Ntvalueiÿÿÿÿ(R9t ValueErrortsemtypetsystmaxint(R ((s+/usr/local/lib/python2.7/test/lock_tests.pyR(ŸscCs^|jdƒ}|jƒ|jƒ|jdƒ}|jƒ|jƒ|jƒ|jƒdS(Nii(RgR)R+(R tsem((s+/usr/local/lib/python2.7/test/lock_tests.pyR]£s     cCs|jƒ}|jƒ~dS(N(RgR)(R Rj((s+/usr/local/lib/python2.7/test/lock_tests.pyR*­s  csÚ|jdƒ‰ˆjƒd}g‰g‰d‰‡‡‡‡fd†}t|dƒ}|jƒx'tˆƒtˆƒdkr‹tƒqeW|jˆˆdgdƒd‰xtdƒD]}ˆjƒqºWx'tˆƒtˆƒdkr÷tƒqÑW|jt ˆˆƒdgddgdƒd‰xtdƒD]}ˆjƒq7Wx'tˆƒtˆƒd krttƒqNW|jt ˆˆƒdgddgddgdƒ|j ˆjt ƒƒˆjƒ|j ƒdS( Nii ics2ˆjƒˆjˆƒˆjƒˆjˆƒdS(N(R)R((RaRPRQRj(s+/usr/local/lib/python2.7/test/lock_tests.pyR ¹s   iii ii( RgR)RRRRR2RR+tsortedR0RR(R R3R R4R((RaRPRQRjs+/usr/local/lib/python2.7/test/lock_tests.pyR5²s6    , 7 cCsu|jdƒ}|j|jtƒƒ|j|jtƒƒ|j|jtƒƒ|jƒ|j|jtƒƒdS(Ni(RgR-R)RR0R+(R Rj((s+/usr/local/lib/python2.7/test/lock_tests.pyR.Õs  csp|jdƒ‰ˆjƒg‰‡‡fd†}t|dƒjƒ|jtˆƒtgdtgdƒdS(Nics0ˆjˆjtƒƒˆjˆjtƒƒdS(N(RR)R((RcRj(s+/usr/local/lib/python2.7/test/lock_tests.pyR ásiii(RgR)RRR2RkRR(R R ((RcRjs+/usr/local/lib/python2.7/test/lock_tests.pyR1Ýs  csm|jƒ‰ˆjƒ‡fd†}t|dƒ}|jƒtƒ|j|jƒˆjƒ|jƒdS(NcsˆjƒˆjƒdS(N(R)R+((Rj(s+/usr/local/lib/python2.7/test/lock_tests.pyR îs i( RgR)RRRR0R R+R(R R R4((Rjs+/usr/local/lib/python2.7/test/lock_tests.pyttest_default_valueês    cs‚ˆjdƒ‰d‡‡fd†}|ƒˆjˆjtƒƒˆjƒˆjt|tƒˆjˆjtƒƒˆjƒdS(Nic scˆWˆjˆjtƒƒˆjƒˆ*ˆjˆjtƒƒ|rS|‚nWdQXWdQXdS(N(R-R)RR+R0(R7(R Rj(s+/usr/local/lib/python2.7/test/lock_tests.pyR8ús (RgR6R-R)RR+R9R:(R R8((R Rjs+/usr/local/lib/python2.7/test/lock_tests.pyR;øs ( RRRR(R]R*R5R.R1RlR;(((s+/usr/local/lib/python2.7/test/lock_tests.pyRdšs   #  tSemaphoreTestscBseZdZd„ZRS(s) Tests for unbounded semaphores. cCs;|jdƒ}|jƒ|jƒ|jƒ|jƒdS(Ni(RgR+R)(R Rj((s+/usr/local/lib/python2.7/test/lock_tests.pyREs    (RRRRE(((s+/usr/local/lib/python2.7/test/lock_tests.pyRm stBoundedSemaphoreTestscBseZdZd„ZRS(s' Tests for bounded semaphores. cCsJ|jƒ}|jt|jƒ|jƒ|jƒ|jt|jƒdS(N(RgR9RfR+R)(R Rj((s+/usr/local/lib/python2.7/test/lock_tests.pyREs    (RRRRE(((s+/usr/local/lib/python2.7/test/lock_tests.pyRns(RRhRtthreadRRR<tunittestttestRRRtobjectRtTestCaseRR%R?RCRHRYRdRmRn(((s+/usr/local/lib/python2.7/test/lock_tests.pyts"     ' Q$6Dio