mò Sã¸Ec@sØdZdkZdkZdklZdkZdklZdklZdk l Z dk l Z dkl Z dklZd klZlZd d Zd efd „ƒYZd„Zd„Zdfd„ƒYZdS(sGCheck undo(). Any storage that supports undo() must pass these tests. N(s Persistent(s Transaction(s POSException(s referencesf(sp64(sDB(sMinPO(s zodb_pickles zodb_unpickletitCcBstZRS(N(t__name__t __module__(((tB/data/zmath/zope/lib/python/ZODB/tests/TransactionalUndoStorage.pyR$scCs8tiƒ}x%|tiƒjotidƒqWdS(Nf0.10000000000000001(ttimetnowtsleep(R((Rtsnooze's cCs,|}|}|iƒ|iƒ||jS(s%Return True if L1.sort() == L2.sort()N(tL1tc1tL2tc2tsort(R R R R ((Rtlisteq0s   tTransactionalUndoStoragecBsétZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z d „Z d „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(NcCs h|_dS(N(tselft"_TransactionalUndoStorage__serials(R((Rt_transaction_begin:scCsx|ii|||||ƒ}|oOt |ƒt i jo||i |Wq1WdS(s,Iterate over the storage in its final state.titeratorN(thasattrRRR-titerttxntrec(RR0R/R1((Rt_iterate]scCs_tƒ}|i|ƒ|ii|ƒ|ii||ƒ}|ii |ƒ|ii |ƒ|S(N( R%R&tnoteRRR'tundottidtoidsR R*(RR5R3R6R&((RR4hs  cCsõ|i}|iiƒ}|i|dtdƒƒ}|i|d|dtdƒƒ}|i|d|dtdƒƒ}|ii ƒ}|i |dd|gdd ƒ|ii |d ƒ\}}|t|ƒtdƒƒ|ii ƒ}|i |d d|gdd ƒ|ii |d ƒ\}}|t|ƒtdƒƒ|ii ƒ}|i |d d|gddƒ|it|ii |d ƒ|ii ƒ}|i |dd|gƒ|ii |d ƒ\}}|t|ƒtdƒƒ|iƒdS(NRitrevidiiitidR3tundo1R#itundo2itundo3(Rt assertEqualteqRtnew_oidRt_dostoretMinPOR7tundoInfotinfot_undotloadRt zodb_unpicklet assertRaisestKeyErrorR2(RRBRRR7R=((RtcheckSimpleTransactionalUndoqs, !!!!! cCs»|iiƒ}|i|dtdƒƒ|iiƒ}|dd}t ƒ}|i dƒ|ii |ƒ|ii ||ƒ|ii|ƒ|ii|ƒ|it|ii|ƒdS(NRiiR8R9(RRR>RR?R@RARBR5R%R&R3R'R4R R*RFRGt getSerial(RRBRR&R5((RtcheckCreationUndoneGetSerial’s  cCs|i}|iiƒ}|i|dtdƒƒ}|i|d|dtdƒƒ}|ii ƒ}|i |dd|gƒ|ii |dƒ\}}|t|ƒtdƒƒ|ii ƒ}|i |dd|gƒ|it|ii |dƒ|iƒdS( NRi R7i iR8R#i(RR<R=RR>RR?R@R7RARBRCRDRRERFRGR2(RRBRRR7R=((RtcheckUndoCreationBranch1£s !cCs|i}|iiƒ}|i|dtdƒƒ}|i|d|dtdƒƒ}|ii ƒ}|i |dd|gƒ|ii |dƒ\}}|t|ƒtdƒƒ|ii ƒ}|i |dd|gƒ|ii |dƒ\}}|t|ƒtdƒƒ|iƒdS(NRi R7i iR8R#(RR<R=RR>RR?R@R7RARBRCRDRRER2(RRBRRR7R=((RtcheckUndoCreationBranch2µs !c Csš|i} ttttdƒƒ\}}} } |i i ƒ}|i i ƒ}t}}tƒ} |i i| ƒ|iƒ|i|||d| ƒ|i||| d| ƒ|i| ƒ|i|ƒ}|i|ƒ}|i i| ƒ| ||ƒtƒ} |i i| ƒ|iƒ|i|||d| ƒ|i||| d| ƒ|i| ƒ|i|ƒ}|i|ƒ}|i i| ƒ| ||ƒ|i i|dƒ\}}| t|ƒtdƒƒ|i i|dƒ\}}| t|ƒtdƒƒ|i iƒ}|i|dd||gƒ|i i|dƒ\}}| t|ƒtdƒƒ|i i|dƒ\}}| t|ƒtdƒƒ|iƒdS( Nii i3i4R#iR8(ii i3i4( RR<R=tmapt zodb_pickleR@tp31tp32tp51tp52RR>toid1toid2tZEROtrevid1trevid2R%R&R'RRR!R"R*RDRRERARBRCR2( RRBRRWRSRTRVRPROR=RQRRR&((RtcheckTwoObjectUndoÇsJ          c Cs¦|i}|i} ttttd ƒƒ\} } } }}}|iiƒ}|iiƒ}t}}|i||| f|||fgƒ}|||||ƒ|i|||| f||||fgƒ}|||||ƒ|i|||| f||||fgƒ}|||||ƒ|i|ƒ}|i|ƒ}|||ƒ|ii|dƒ\}}|t|ƒtdƒƒ|ii|dƒ\}}|t|ƒtdƒƒ|iiƒ}|dd }|d d }tƒ}|ii!|ƒ|ii"||ƒ\}}|ii"||ƒ\}} |ii%|ƒ|ii&|ƒ|t'|ƒd ƒ|t'| ƒd ƒ| ||jƒ| ||jƒ|ii|dƒ\}}|t|ƒtdƒƒ|ii|dƒ\}}|t|ƒtdƒƒ|iiƒ}|i(|dd ||gƒ|ii|dƒ\}}|t|ƒtdƒƒ|ii|dƒ\}}|t|ƒtdƒƒ|i)ƒdS( Niii i2i3i4R#iR8ii(iii i2i3i4(*RR<R=t failUnlesstunlessRMRNR@tp30RORPtp50RQRRRR>RSRTRURVRWR,tdR"RDRRERARBR5ttid1R%R&R'R4R6toids1R R*tlenRCR2(RR^R6R=R\RWRVRRR5R_RZRPR[RORRQRBR]RSRTR&((RtcheckTwoObjectUndoAtOnceösZ   '//  c Cs¸|i}ttttdƒƒ\} }}} }} |i i ƒ}|i i ƒ}|i|d| dd ƒ}|i|d| dd ƒ}tƒ}|i i|ƒ|iƒ|i|||d |ƒ|i|||d |ƒ|i|ƒ|i i|ƒ|i|ƒ}|i|ƒ}|||ƒ|i iƒ} |i| d d ||gƒ|i i|d ƒ\} }|t | ƒtdƒƒ|i i|d ƒ\} }|t | ƒtdƒƒtƒ}|i i|ƒ|iƒ|i|||d |ƒ|i||| d |ƒ|i|ƒ|i i|ƒ|i|ƒ}|i|ƒ}|||ƒ|i|d |dtdƒƒ}|i|d |dtdƒƒ}|i iƒ} | d d }tƒ}|i i|ƒ|i i"||ƒ\}}|i i$|ƒ|i i|ƒ|t%|ƒd ƒ|i&||jƒ|i&||jƒ|i i|d ƒ\} }|t | ƒtdƒƒ|i i|d ƒ\} }|t | ƒtdƒƒ|i'ƒdS(Nii i!i3i4i5Rtalready_picklediR#iR8R7i"i6(ii i!i3i4i5((RR<R=RMRNR@RORPtp33RQRRtp53RR>RSRTR?RVRWR%R&R'RRR!R*R"RARBRCRDRRER5R4R6R R`RYR2(RRVR=RWR6RRR5RPRcRORRQRdRBRSRTR&((RtcheckTwoObjectUndoAgain4sd $        !! cCsò|i}|iiƒ} |i| dtdƒƒ}|i| d|dtdƒƒ}|i| d|dtdƒƒ}|ii ƒ} | dd}tƒ}|ii|ƒ|iti|ii||ƒ|ii|ƒ| }|}|iiƒ}t}ttttd ƒƒ\}}}} tƒ}|ii|ƒ|i!ƒ|i"|||d |ƒ|i"|||d |ƒ|i#|ƒ|ii$|ƒ|i%|ƒ}|i%|ƒ}|||ƒ|ii&|d ƒ\} } |t)| ƒtdƒƒ|ii&|d ƒ\} }|t)| ƒtd ƒƒ|| |ƒ|||ƒ|i|d|dtd ƒƒ}|i+||ƒ|i+||ƒ|ii ƒ} | dd}tƒ}|ii|ƒ|iti|ii||ƒ|ii|ƒ|i,ƒdS(NRi3R7i4i5iR8iQiRi[i\R#(iQiRi[i\(-RR<R=RR>RR?R@trevid_atrevid_btrevid_cRARBR5R%R&R'RFt POSExceptiont UndoErrorR4t tpc_abortRSRVRTRURWRMRNtp81tp82tp91tp92RRR!R*R"RDRtrevid_11REtrevid_22tassertNotEqualR2(RRmRlRqR=RWRVR5RnRoRRpRRBRSRTRgRhRfR&((RtcheckNotUndoablets^ !!          !    c Cs¥|i} |iiƒ}|i|dtdƒƒ}t i ƒ}t ƒ|i|d|dtdƒƒ}|i|d|dtdƒƒ|ii ƒ}| t|ƒdƒ|dd} |ii|tƒ|ii ƒ} | t| ƒd ƒtƒ} |ii| ƒ|ii| | ƒ\} }|ii| ƒ|ii| ƒ| t|ƒd ƒ| |d|ƒ|ii|d ƒ\}}| t|ƒtdƒƒ|iƒdS( NRi3R7i4i5iiR8iiR#( RR<R=RR>RR?R@RVRtpacktimeRRWRARBR`R5tpackt referencesftinfo2R%R&R'R4R6R R*RDRR7RER2( RRBR6RRRWR7RVRtR5R&RwR=((RtcheckTransactionalUndoAfterPack­s.  ! cCso|i} t|iƒ}|iƒ} | iƒ} t ƒ}t ƒ} || d<| |_ t iƒ}|idƒ|iƒtiƒ} }x|| jotiƒ}q‹Wt ƒ}|| _ t iƒ}|idƒ|iƒ||_ t iƒ}|idƒ|iƒ|iiƒ}| t|ƒdƒx0t|d ƒD]}| |dd|d ƒq<W|ii|tƒ|iiƒ}x0t|d ƒD]}| |dd|d ƒq‘W|dd }|i|ƒt iƒ}|id ƒ|iƒ| iƒ|iiƒ}x0t|dƒD]}| |dd|d ƒqW| |i | ƒ| |i i |ƒ|i ƒdS(Ntobjso1 -> o2so1 -> o2 -> o3so1 -> o3isinitial database creationit descriptioniR8R4(so1 -> o3so1 -> o2 -> o3so1 -> o2sinitial database creation(so1 -> o3so1 -> o2 -> o3(sundoso1 -> o3so1 -> o2 -> o3(!RR<R=tDBRtdbtopentconntrootRto1to2Ryt transactiontgetR0R3tcommitRRRtto3tundoLogtlogR`tziptentryRuRvR5R4tsyncR2(RR0R‡R…R|R‰RtR€R5RRR=RR~((Rt7checkTransactionalUndoAfterPackWithObjectUnlinkFromRootÎs^                         c s+t|iƒ}|iƒ}|iƒ} g‰‡d†}t dƒ| dRR@RyRR)RNR7RR R*R?R4R-R/toffsetR<R=R0t_[1]R1tdata_txnR t_tidR R`totidR RFt IndexErrort __getitem__(RR0R R7R«R=R¦R¬R¡R¢R5R1R¥RR4R R¨RyR—R¤R/R©R&((R¡R¢RtcheckTransactionalUndoIteratorlsp     !       3D  F   -A  c Csûtiƒ}|idƒ|iddƒ|idddƒt|iƒ}|i ƒ}|i ƒ}t ƒ}||d @ 9 ! 8 6 +  X  3 (t__doc__RRt persistentt PersistentR‚R%tZODBRitZODB.serializeRvt ZODB.utilsR§R{tZODB.tests.MinPOR@tZODB.tests.StorageTestBaseRNRERURRRR(RRR‚RR§RNRvR{RÍRUR%R@RRRERiR((Rt?s