mò Sã¸Ec@s°dZydkZeZWnej odkZnXydklZWn ej odklZnXdkZdklZdk l Z dk Z dk l Z dklZdklZdklZd klZlZd klZd d Zd fd„ƒYZdfd„ƒYZdefd„ƒYZd„Zd„Zdfd„ƒYZdefd„ƒYZ defd„ƒYZ!defd„ƒYZ"dfd„ƒYZ#dS(s9Run some tests relevant for storages that support pack().N(sStringIO(s Persistent(sPersistentMapping(sDB(s referencesf(sMinPO(ssnooze(s ConflictErrors StorageError(s TestThreadtitRootcBstZRS(N(t__name__t __module__(((t9/data/zmath/zope/lib/python/ZODB/tests/PackableStorage.pyR3stObjectcBstZd„Zd„ZRS(NcCs ||_dS(N(toidtselft_oid(RR((Rt__init__<scCs|iS(N(RR(R((Rtgetoid?s(RRR R (((RR;s tCcBstZRS(N(RR(((RR CscCsNd„}tƒ}ti|ƒ}||_|i|ƒ|idƒ|i ƒS(NcCs"t|dƒo|iƒSndS(NR (thasattrtobjR tNone(R ((Rt getpersidQs( RtStringIOtstpickletPicklertpt persistent_idtdumpR Rtgetvalue(R RRR((RtdumpsPs     cCs<tƒ}ti|ƒ}|i|ƒ|idƒ|iƒS(N( RRRRRRR RR(R RR((Rtpdumps\s    tPackableStorageBasecBs)tZhZd„Zd„Zd„ZRS(NcCs2|iiƒ}t|ƒ}||i|iƒ<|S(N(Rt_storagetnew_oidRRR t_cacheR (RRR ((Rt_newobjis cCs|iid„}|S(NcCs.t|ƒ}ti|ƒ}||_|iƒS(N( RtstrtfpRt Unpicklertutpersfunctpersistent_loadtload(RR#R R"((Rtloadss  (RRtgetR&(RR&((Rt _makeloaderss cCsæy|iitdƒWnÈtj o¼dkl}tƒ}t i |dƒ}|i t dfƒ|i hdh<ƒ|ƒ}d|_|ii|ƒ|iitd|iƒd|ƒ|ii|ƒ|ii|ƒnXdS(Nt(s Transactionit _containersinitial database creation(RRR%tZEROtKeyErrort transactiont TransactionRtfiletcPickleRRRtPersistentMappingRttt descriptiont tpc_begintstoreRttpc_votet tpc_finish(RR.RR2R/((Rt _initroot†s    "(RRRRR(R8(((RRds tPackableStoragecBsGtZd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(NcCs|iitiƒtƒdS(N(RRtpackttimet referencesf(R((RtcheckPackEmptyStorage˜scCs+|iƒ|iitiƒdtƒdS(Ni'(RR8RR:R;R<(R((RtcheckPackTomorrow›s cCs+|iƒ|iitiƒdtƒdS(Ni'(RR8RR:R;R<(R((RtcheckPackYesterdayŸs c Csit|iƒ} | iƒ}|iƒ}x$tdƒD]}t |ƒ||R?RmRoRpRr(((RR9–s    f  tPackableUndoStoragecBsGtZd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(Nc Cs|iƒ|i} |i} |iƒ}|iƒ}d|_ |i |dt |ƒƒ}d|_ |i |d|dt |ƒƒ}d|_ |i |d|dt |ƒƒ}|ii||ƒ}ti|ƒ}| |iƒ|ƒ| |i dƒ|ii||ƒ}ti|ƒ}| |iƒ|ƒ| |i dƒ|ii||ƒ}ti|ƒ}| |iƒ|ƒ| |i dƒtiƒ} }x|| jotiƒ}q”W|ii|tƒ| t|ii||ƒ| t|ii||ƒ| t|ii||ƒdS(NiRkitrevidi(RR8t assertEqualteqt assertRaisestraisesRR R RRRt _dostoreNPRtrevid1trevid2trevid3Rt loadSerialRkRR&tpobjR;tnowtpacktimeR:R<R,( RR RkRR{R|RzR€R~RxRRv((RtcheckPackAllRevisions<s>       ! ! cCsP|i}|i}|iƒ}tƒ} |i ƒ} | i ƒ} | | _ d| _ |itdt| ƒƒ}|iitdƒ\}}|||ƒ|||ƒi dƒd| _ |i| dt| ƒƒ}d| _ |i| d|dt| ƒƒ}d| _ |i| d|dt| ƒƒ}|ii| |ƒ}ti|ƒ}||i ƒ| ƒ||i dƒ|ii| |ƒ}ti|ƒ}||i ƒ| ƒ||i dƒ|ii| |ƒ}ti|ƒ}||i ƒ| ƒ||i dƒtiƒ} } x| | jotiƒ} q W|ii | t!ƒ|iitdƒ\}}|||ƒ|||ƒi dƒ|t"|ii| |ƒ|t"|ii| |ƒ|ii| |ƒ}ti|ƒ}||i ƒ| ƒ||i dƒ|ii| dƒ\}}|||ƒti|ƒ}||i ƒ| ƒ||i dƒdS(NiRkR)iiRti(#RRuRvRwRxR(R&RRIRR R RRRRyR+Rtrevid0RR%RkRtRRzR{R|R}RR~R;RR€R:R<R,(RRtRxRvRkR{R|R‚RzR€RRR RIR~R&((RtcheckPackJustOldRevisionscsb           ! !   cCst|i}|i}|iƒ}tƒ} |i ƒ} | i ƒ}|i ƒ} | i ƒ}|i||jƒ| | _ | | _ d| _|itdt| ƒƒ}|iitdƒ\}}|||ƒ|||ƒidƒd| _|i|dt| ƒƒ}d| _|i|d|dt| ƒƒ}d| _|i|d|dt| ƒƒ}|ii||ƒ}ti|ƒ}||i ƒ|ƒ||idƒ|ii||ƒ}ti|ƒ}||i ƒ|ƒ||idƒ|ii||ƒ}ti|ƒ}||i ƒ|ƒ||idƒd| _|i|dt| ƒƒ}|ii||ƒ}ti|ƒ}||i ƒ|ƒ||idƒt!i!ƒ} } x| | jot!i!ƒ} q©W|ii$| t%ƒ|iitdƒ\}}|||ƒ|||ƒidƒ|t&|ii||ƒ|t&|ii||ƒ|ii||ƒ}ti|ƒ}||i ƒ|ƒ||idƒ|ii|dƒ\}}|||ƒti|ƒ}||i ƒ|ƒ||idƒ|ii|dƒ\}}|||ƒ|||ƒidƒ|ii||ƒ}ti|ƒ}||i ƒ|ƒ||idƒdS( NiRkR)iiRtii ('RRuRvRwRxR(R&RRIRtobj1R toid1tobj2toid2t failUnlessRRRyR+RR‚RR%RkRtRRzR{R|R}RR~trevid4R;RR€R:R<R,(RRtRxRvRkR{R|R‚RzR€R„R†RRIR…R‡R~R&R‰((RtcheckPackOnlyOneObject£s„              ! !     c Cso|i} t|iƒ}|iƒ} | iƒ}t i ƒ}|i dƒ|i ƒtiƒ}}x||jotiƒ}qfWtƒ}d|_||d o1s root -x-> o1itidsundo root -x-> o1(RRuRvRERRFRGRHRIR-R'RjtnoteRMR;RR€R R RRR:R<tundoLogtlogRgtundotsync( RRjR RŽRFR€RgRIRRvRH((RtcheckPackUnlinkedFromRootùs<                     c Cs|iƒt|iƒ}|iƒ}|iƒ}tƒ|d<}t i ƒt ƒt ƒ}|d             2¤ÿ[*