[Zodb-checkins] SVN: ZODB/trunk/src/ZODB/ Added tests for fsdump()
Dmitry Vasiliev
dima at hlabs.spb.ru
Fri Feb 4 09:30:16 EST 2005
Log message for revision 29034:
Added tests for fsdump()
Changed:
U ZODB/trunk/src/ZODB/FileStorage/fsdump.py
A ZODB/trunk/src/ZODB/tests/test_fsdump.py
-=-
Modified: ZODB/trunk/src/ZODB/FileStorage/fsdump.py
===================================================================
--- ZODB/trunk/src/ZODB/FileStorage/fsdump.py 2005-02-04 13:13:33 UTC (rev 29033)
+++ ZODB/trunk/src/ZODB/FileStorage/fsdump.py 2005-02-04 14:30:16 UTC (rev 29034)
@@ -25,12 +25,13 @@
for i, trans in enumerate(iter):
if with_offset:
print >> file, "Trans #%05d tid=%016x time=%s offset=%d" % \
- (i, u64(trans.tid), str(TimeStamp(trans.tid)), trans._pos)
+ (i, u64(trans.tid), TimeStamp(trans.tid), trans._pos)
else:
print >> file, "Trans #%05d tid=%016x time=%s" % \
- (i, u64(trans.tid), str(TimeStamp(trans.tid)))
- print >> file, "\tstatus=%s user=%s description=%s" % \
- (`trans.status`, trans.user, trans.description)
+ (i, u64(trans.tid), TimeStamp(trans.tid))
+ print >> file, " status=%r user=%r description=%r" % \
+ (trans.status, trans.user, trans.description)
+
for j, rec in enumerate(trans):
if rec.data is None:
fullclass = "undo or abort of object creation"
@@ -39,24 +40,21 @@
modname, classname = get_pickle_metadata(rec.data)
size = " size=%d" % len(rec.data)
fullclass = "%s.%s" % (modname, classname)
- # FIXME: Is this used?
- # special case for testing purposes
- if fullclass == "ZODB.tests.MinPO.MinPO":
- obj = zodb_unpickle(rec.data)
- fullclass = "%s %s" % (fullclass, obj.value)
+
if rec.version:
- version = " version=%s" % rec.version
+ version = " version=%r" % rec.version
else:
version = ""
+
if rec.data_txn:
# XXX It would be nice to print the transaction number
# (i) but it would be too expensive to keep track of.
bp = " bp=%016x" % u64(rec.data_txn)
else:
bp = ""
+
print >> file, " data #%05d oid=%016x%s%s class=%s%s" % \
(j, u64(rec.oid), version, size, fullclass, bp)
- print >> file
iter.close()
def fmt(p64):
Added: ZODB/trunk/src/ZODB/tests/test_fsdump.py
===================================================================
--- ZODB/trunk/src/ZODB/tests/test_fsdump.py 2005-02-04 13:13:33 UTC (rev 29033)
+++ ZODB/trunk/src/ZODB/tests/test_fsdump.py 2005-02-04 14:30:16 UTC (rev 29034)
@@ -0,0 +1,78 @@
+##############################################################################
+#
+# Copyright (c) 2005 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+
+r"""
+fsdump test
+===========
+
+Let's get a temp file path to work with first.
+
+>>> import tempfile
+>>> path = tempfile.mktemp('.fs', 'Data')
+>>> print 'path:', path #doctest: +ELLIPSIS
+path: ...Data...fs
+
+More imports.
+
+>>> import ZODB
+>>> from ZODB.FileStorage import FileStorage
+>>> import transaction as txn
+>>> from BTrees.OOBTree import OOBTree
+>>> from ZODB.FileStorage.fsdump import fsdump # we're testing this
+
+Create an empty FileStorage.
+
+>>> st = FileStorage(path)
+
+For empty DB fsdump() output definitely empty:
+
+>>> fsdump(path)
+
+Create a root object and try again:
+
+>>> db = ZODB.DB(st) # yes, that creates a root object!
+>>> fsdump(path) #doctest: +ELLIPSIS
+Trans #00000 tid=... time=... offset=52
+ status=' ' user='' description='initial database creation'
+ data #00000 oid=0000000000000000 size=66 class=persistent.mapping.PersistentMapping
+
+Now we see first transaction with root object.
+
+Let's add a BTree:
+
+>>> root = db.open().root()
+>>> root['tree'] = OOBTree()
+>>> txn.get().note('added an OOBTree')
+>>> txn.get().commit()
+>>> fsdump(path) #doctest: +ELLIPSIS
+Trans #00000 tid=... time=... offset=52
+ status=' ' user='' description='initial database creation'
+ data #00000 oid=0000000000000000 size=66 class=persistent.mapping.PersistentMapping
+Trans #00001 tid=... time=... offset=207
+ status=' ' user='' description='added an OOBTree'
+ data #00000 oid=0000000000000000 size=114 class=persistent.mapping.PersistentMapping
+ data #00001 oid=0000000000000001 size=30 class=BTrees._OOBTree.OOBTree
+
+Now we see two transactions and two changed objects.
+
+Clean up.
+
+>>> st.close()
+>>> st.cleanup() # remove .fs, .index, etc
+"""
+
+from zope.testing import doctest
+
+def test_suite():
+ return doctest.DocTestSuite()
More information about the Zodb-checkins
mailing list