mò Sã¸Ec@scdZdklZdklZdklZlZlZdk Z ddZ dfd„ƒYZ dS( s,Run the basic tests for a storage as described in the official storage API The most complete and most out-of-date description of the interface is: http://www.zope.org/Documentation/Developer/Models/ZODB/ZODB_Architecture_Storage_Interface_Info.html All storages should be able to pass these tests. (s POSException(sMinPO(s zodb_unpickles zodb_pickleshandle_serialsNtit BasicStoragecBstZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z d „Z d „Zd„Zd„ZRS(NcCs_tiƒ}|ii|ƒ|ii|ƒ|ii|ƒ|ii|ƒ|iti |ii ddddtiƒƒy|ii dtiƒƒWnti ti fj onXdp t d‚y |iiddtiƒƒWnti ti fj onXdp t d‚|iti |ii ddddtiƒƒ|ii|ƒdS(Nitdummys(Should have failed, invalid transaction.tdummeriii(t transactiont Transactiontttselft_storaget tpc_begint tpc_abortt assertRaisest POSExceptiontStorageTransactionErrortstoret abortVersiontVersionCommitErrortAssertionErrort commitVersion(RR((t6/data/zmath/zope/lib/python/ZODB/tests/BasicStorage.pyt checkBasics"s.     c CsÝ|i} |iiƒ}tiƒ}|ii |ƒ|ii |dt t dƒƒd|ƒ}|ii|ƒ}|ii|ƒt|||ƒ}|ii|dƒ\}}t|ƒ}| |t dƒƒ| ||ƒdS(Ni t(Rt assertEqualteqRtnew_oidtoidRRttxnR RtNonet zodb_pickletMinPOtr1ttpc_votetr2t tpc_finishthandle_serialstnewrevidtloadtdatatrevidt zodb_unpickletvalue( RRRR R%RR&R(R#R((Rt#checkSerialIsNoneForInitialRevisionHs    cCs,t}|iddƒ}|i||ƒdS(NR&(tZEROR&Rt_dostoreRR#tassertNotEqual(RR&R#((RtcheckNonVersionStoreYscCsá|i}|iiƒ}|id|dtdƒƒ|ii|dƒ\}}t |ƒ}||tdƒƒx8t ddƒD]'}|i|d|dt|ƒƒ}q~W|ii|dƒ\}}|t |ƒtdƒƒdS( NRR%iRi iR&i(RRRRRRR+RR$R%R&R'R(trangeti(RR/RRR&R(R%((RtcheckNonVersionStoreAndLoad_s  %cCs?|iiƒ}|id|ƒ|i|ii|ƒdƒdS(NRR(RRRRR+RtmodifiedInVersion(RR((Rt checkNonVersionModifiedInVersionmsc Csx|iiƒ}|i|dtdƒƒ}|i|d|dtdƒƒ|iti |i|d|dtdƒƒdS(NR%i R&i i ( RRRRR+Rtrevid1R R t ConflictError(RRR3((RtcheckConflictsrs  cCs’|iiƒ}tiƒ}|ii|ƒ|ii|t t t dƒƒd|ƒ|ii |ƒ|iiƒ}|i d|dt dƒƒdS(NiRRR%i(RRRRRRRR RR*RRR R+(RRR((RtcheckWriteAfterAbortzs (cCs%|iiƒ}|id|dtdƒƒ}|iiƒ}ti ƒ}|ii |ƒ|ii |t ttdƒƒd|ƒ|ii|ƒ|ii|ƒ|iiƒ}|id|dtdƒƒ}xQ||f||fgD]7\}}|ii|dƒ\}}|i||ƒqæWdS(NRR%iþÿÿÿiRi(RRRtoid1R+RR3RRRRR RR*RRR R&R$R%t_revidR(RRR7R3R8RR&R%((RtcheckAbortAfterVote…s ( c CsÍ|i}ttdƒ\} }} } |i i ƒ}|i i ƒ}|||ƒ|i |d| ƒ}|i |d| ƒ}|||ƒ|i |d|d|ƒ}|i |d|d| ƒ}|||ƒdS(Nii i3i4R%R&(ii i3i4(RR,tnoteqtmapRtp31tp32tp51tp52RRR7toid2R+R3trevid2trevid3trevid4( RRCR:RAR7R@R3RBR=R<R>R?((RtcheckStoreTwoObjects—s   cCsÇt|idƒpdSn|i}ttdƒ\}}|ii ƒ}|i t |ii |ƒ|i|d|ƒ}|||ii |ƒƒ|i|d|d|ƒ}|||ii |ƒƒdS(Nt getSeriali)i*R%R&(i)i*(thasattrRRRRR;Rtp41tp42RRR tKeyErrorRER+R3RA(RRRAR3RRHRG((RtcheckGetSerial¤s cCs†tiƒ}d}|ii||ƒ|iiƒ}t t dƒƒ}|ii |d|d|ƒ|ii|ƒ|ii|ƒdS(NtpsuiR(RRRttidRRR RRRRR%RRRR!(RRRRLR%((RtcheckTwoArgBegin²s cCsk|it|iƒdƒ|idtdƒƒ|idtdƒƒ|it|iƒddgjƒdS(NiR%iii(RRtlenRR+Rtassert_(R((RtcheckLen½scCs3|idtdƒƒ|iiƒ}t|ƒdS(NR%i(RR+RRtgetSizetsizetstr(RRR((Rt checkGetSizeÈscCs„|iiƒ}tiƒ}|ii|ƒ|idƒ|ii |t t t dƒƒd|ƒ|ii |ƒ|ii|ƒdS(Nsthis is a testiR(RRRRRRRR tnoteRR*RRRR!(RRR((Rt checkNoteÏs  (cCs{|iiƒ}|it|ƒthƒƒxI|iƒD];\}}|i|dƒ|i t t |i|ƒƒƒq8WdS(N( RRtgetExtensionMethodstmRttypetitemstktvRROtcallabletgetattr(RRXR\R[((RtcheckGetExtensionMethodsØs  (t__name__t __module__RR)R-R0R2R5R6R9RDRJRMRPRTRVR_(((RR!s &         ( t__doc__tZODBR tZODB.tests.MinPORtZODB.tests.StorageTestBaseR'RR"RR*R(RRR*RR"R'R R((Rt?s