mò Lã¸Ec@sÚdZdkZdkZdklZdkZdklZlZdk Z dk l Z dk lZddZdfd „ƒYZd efd „ƒYZd fd „ƒYZdefd„ƒYZdefd„ƒYZdS(s%Tests of the distributed commit lock.N(s TimeStamp(s zodb_picklesMinPO(sClientDisconnected(s TestThreadtitDummyDBcBstZd„ZRS(NcOsdS(N((tselftargstkwargs((t8/data/zmath/zope/lib/python/ZEO/tests/CommitLockTests.pyt invalidates(t__name__t __module__R(((RRst WorkerThreadcBs#tZd„Zd„Zd„ZRS(NcCs2||_||_tiƒ|_ti|ƒdS(N(tstorageRttranst threadingtEventtreadyt TestThreadt__init__(RR R ((RR&s  cCsÎy´|ii|iƒ|iiƒ}ttdƒƒ}|ii |t |d|iƒ|iiƒ}ttdƒƒ}|ii |t |d|iƒ|i ƒ|ii |iƒWnt j onXdS(Ntct(RR t tpc_beginR tnew_oidtoidt zodb_pickletMinPOtptstoretZEROtmyvotet tpc_finishtClientDisconnected(RRR((Rttestrun,s cCsU|iii}|idt|iƒƒ}|ii ƒ|i |ƒ|ii ƒdS(Ntvote( RR t_servertrpct_deferred_calltidR tmsgidRtsett_deferred_waitt_check_serials(RR$R!((RR:s   (RRRRR(((RR !s  tCommitLockTestscBsDtZdZd„Zd„Zd„Zd„Zd„Zd„ZRS(NicCs>x.|iD]#\}}|i|ƒ|iƒq Wg|_dS(N(Rt _storagesRR t tpc_aborttclose(RR R((Rt_cleanupYs   cCs]tiƒ}|ii|ƒ|iiƒ}|ii|t t t dƒƒd|ƒ||fS(NiR( t transactiont TransactionttxnRt_storageRRRRRRR(RR/R((Rt _start_txn_s  (cCs»g|_g|_x¢t|iƒD]‘}|iƒ}ti ƒ}|i ƒ}t ||ƒ}|ii|ƒ|iƒ|iiƒ|djo|iƒq"|ii||fƒq"WdS(Ni(RR)t_threadstranget NUM_CLIENTStit_duplicate_clientR R-R.R/t_get_timestampttidR tttappendtstartRtwaitR+(RR/R5R R9R8((Rt_begin_threadsfs        cCs"x|iD]}|iƒq WdS(N(RR2R9tcleanup(RR9((Rt_finish_threads}s cCs;|ii}tii|ddƒ}|itƒdƒ|S(s.Open another ClientStorage to the same server.R<iN( RR0t_addrtaddrtZEOt ClientStoragetnewt registerDBRtNone(RRARD((RR6s  cCs5tiƒ}tti|ƒd |dfŒ}| S(Nii<(ttimeR9t TimeStamptgmtime(RR9((RR7Œs $( RRR4R,R1R=R?R6R7(((RR(Ks     tCommitLockVoteTestscBs#tZd„Zd„Zd„ZRS(NcCsq|iƒ\}}|ii|ƒ|iƒ|ii|ƒ|ii|dƒ|i ƒ|i ƒ|i ƒdS(NR( RR1RR/R0ttpc_voteR=RtloadR?t_dostoreR,(RR/R((RtcheckCommitLockVoteFinish“s   cCs^|iƒ\}}|ii|ƒ|iƒ|ii|ƒ|iƒ|i ƒ|i ƒdS(N( RR1RR/R0RKR=R*R?RMR,(RR/R((RtcheckCommitLockVoteAbort¡s   cCsQ|iƒ\}}|ii|ƒ|iƒ|iiƒ|iƒ|i ƒdS(N( RR1RR/R0RKR=R+R?R,(RR/R((RtcheckCommitLockVoteClose®s    (RRRNRORP(((RRJ‘s  tCommitLockUndoTestscBs>tZd„Zd„Zd„Zd„Zd„Zd„ZRS(NcCs%|iƒ|iiƒ}|ddS(NiR#(RRMR0tundoInfotL(RRS((Rt _get_trans_id»s cCs(|iii}|id|t|ƒƒS(Ntundo(RR0R R!R"ttrans_idR#R/(RRVR/R!((Rt _begin_undoÀscCs|iiii|ƒS(N(RR0R R!R&R$(RR$((Rt _finish_undoÄscCsœ|iƒ}|iƒ\}}|i||ƒ}|iƒ|i |ƒ|i i |ƒ|i i |ƒ|i i |dƒ|iƒ|iƒ|iƒdS(NR(RRTRVR1RR/RWR$R=RXR0RKRRLR?RMR,(RR/RRVR$((RtcheckCommitLockUndoFinishÇs     cCs‰|iƒ}|iƒ\}}|i||ƒ}|iƒ|i |ƒ|i i |ƒ|i i |ƒ|i ƒ|iƒ|iƒdS(N(RRTRVR1RR/RWR$R=RXR0RKR*R?RMR,(RR/RRVR$((RtcheckCommitLockUndoAbortØs     cCs||iƒ}|iƒ\}}|i||ƒ}|iƒ|i |ƒ|i i |ƒ|i i ƒ|i ƒ|iƒdS(N(RRTRVR1RR/RWR$R=RXR0RKR+R?R,(RR/RRVR$((RtcheckCommitLockUndoCloseès     (RRRTRWRXRYRZR[(((RRQ¹s      (t__doc__R RGtpersistent.TimeStampRHR-tZODB.tests.StorageTestBaseRRtZEO.ClientStorageRBtZEO.ExceptionsRtZEO.tests.TestThreadRRRR R(RJRQ(R-R(RRRHRBR R RRRJRGRQRR((Rt?s        *F(