ó n®¸Qc@sìdZddlZddlZddlmZmZmZmZmZm Z er§ddl m Z ddl Z e j ddkr”ddl mZq§ddl mZnd ejfd „ƒYZd „Zed krèejd dƒndS(s/ TestCases for testing the locking sub-system. iÿÿÿÿN(tdbt test_supporttverboset have_threadstget_new_environment_pathtget_new_database_path(tThreadii(t currentThread(tcurrent_threadtLockingTestCasecBs>eZd„Zd„Zd„Zd„Zd„Zd„ZRS(cCsMtƒ|_tjƒ|_|jj|jtjtjBtjBtj BƒdS(N( RthomeDirRtDBEnvtenvtopent DB_THREADt DB_INIT_MPOOLt DB_INIT_LOCKt DB_CREATE(tself((s*/sys/lib/python2.7/bsddb/test/test_lock.pytsetUps cCs!|jjƒtj|jƒdS(N(R tcloseRtrmtreeR (R((s*/sys/lib/python2.7/bsddb/test/test_lock.pyttearDowns cCs©tr%dGddGHd|jjGHn|jjƒ}trFd|GHn|jj|dtjƒ}trsd|GHn|jj|ƒtr•d|GHn|jj |ƒdS( Ns s-=isRunning %s.test01_simple...s locker ID: %sssome locked thingsAquired lock: %ssReleased lock: %s( Rt __class__t__name__R tlock_idtlock_getRt DB_LOCK_WRITEtlock_putt lock_id_free(RtanIDtlock((s*/sys/lib/python2.7/bsddb/test/test_lock.pyt test01_simple"s    cCsótr%dGddGHd|jjGHng}|jtd|jdtjfƒƒ|jtd|jdtjfƒƒ|jtd|jdtjfƒƒ|jtd|jdtjfƒƒ|jtd|jdtjfƒƒ|jtd|jdtjfƒƒ|jtd|jdtjfƒƒ|jtd|jdtjfƒƒ|jtd|jdtjfƒƒxP|D]H}ddl }|j dd kr´|j t ƒn t |_ |jƒqWx|D]}|jƒqÒWd „}dS( Ns s-=isRunning %s.test02_threaded...ttargettargsiÿÿÿÿiicSsØ|jjdtjƒ|j|jjtjƒdƒ|jjdtjƒ|j|jjtjƒdƒ|jjdtjƒ|j|jjtjƒdƒ|jjdtjƒ|j|jjtjƒdƒdS(Nii@âiËdx(R t set_timeoutRtDB_SET_LOCK_TIMEOUTt assertEqualt get_timeouttDB_SET_TXN_TIMEOUT(R((s*/sys/lib/python2.7/bsddb/test/test_lock.pyttest03_lock_timeoutVs(RRRtappendRt theThreadRRt DB_LOCK_READtsyst version_infot setDaemontTruetdaemontstarttjoin(RtthreadsttR,R(((s*/sys/lib/python2.7/bsddb/test/test_lock.pyttest02_threaded3s>     csòˆjjdtjƒˆjjdtjƒˆjjdtjƒˆjjdtjƒ‡‡fd†‰tˆ_dˆ_tdˆƒ}ddl }|j ddkrº|j t ƒn t |_ |jƒˆjjdtjƒˆjjƒ}ˆjjƒ}ˆj||ƒˆjj|d tjƒ}tjƒ}ˆjtjˆjj|d tjƒtjƒ}t ˆ_ˆj||d kƒˆjj|ƒ|jƒˆjj|ƒˆjj|ƒtjƒd krîˆjˆjdkƒndS(Nii@âiËdxcsVxOˆjsQˆjjtjƒˆ_ˆjrAx ˆjs<q0WPntjdƒqWdS(Ngz®Gáz„?(tendR t lock_detectRtDB_LOCK_EXPIREtcountttimetsleep((tdeadlock_detectionR(s*/sys/lib/python2.7/bsddb/test/test_lock.pyR<fs   R!iÿÿÿÿii †s shared lockgˆÒÞà “¹?ii(ii(R R#RR$R'tFalseR6R9RR,R-R.R/R0R1RtassertNotEqualRRR:t assertRaisestDBLockNotGrantedErrorR+t assertTrueRR2Rtversion(RR4R,RtanID2Rt start_timetend_time((R<Rs*/sys/lib/python2.7/bsddb/test/test_lock.pyttest04_lock_timeout2`s<          cCs ddl}|jddkr1tƒjƒ}n tƒj}|tjkrUd}nd}|jjƒ}t r‚d||fGHnxrt dƒD]d}|jj |d|ƒ}t rÈd |||fGHn|jj |ƒt rd |||fGHqqW|jj |ƒdS( Niÿÿÿÿiitwritetreads%s: locker ID: %sièssome locked things%s: Aquired %s lock: %ss%s: Released %s lock: %s(R,R-RtgetNametnameRRR RRtxrangeRRR(RtlockTypeR,RJtltRtiR((s*/sys/lib/python2.7/bsddb/test/test_lock.pyR*Žs$   (Rt __module__RRR R5RFR*(((s*/sys/lib/python2.7/bsddb/test/test_lock.pyR s     - .cCsHtjƒ}tr+|jtjtƒƒn|jtjtdƒƒ|S(Nttest01(tunittestt TestSuiteRtaddTestt makeSuiteR (tsuite((s*/sys/lib/python2.7/bsddb/test/test_lock.pyt test_suite¬s  t__main__t defaultTestRV(t__doc__R:RQttest_allRRRRRRt threadingRR,R-RRtTestCaseR RVRtmain(((s*/sys/lib/python2.7/bsddb/test/test_lock.pyts  . —