Commit ddd5fd03 authored by Kirill Smelkov's avatar Kirill Smelkov

*: Zodbdump format is semi text-binary: Mark it as such + handle zdump output as binary

Zodbdump format is already described as semi text-binary in top-level
zodbdump.py documentation. However zdump() docstring was referring to it
as "text". Fix it and use binary to handle places where zdump is
loaded/saved.
parent bc608aea
...@@ -276,7 +276,7 @@ def main(): ...@@ -276,7 +276,7 @@ def main():
dbname += "_!zext" dbname += "_!zext"
gen_testdb("%s.fs" % dbname, zext=zext) gen_testdb("%s.fs" % dbname, zext=zext)
stor = FileStorage("%s.fs" % dbname, read_only=True) stor = FileStorage("%s.fs" % dbname, read_only=True)
with open("%s.zdump.ok" % dbname, "w") as f: with open("%s.zdump.ok" % dbname, "wb") as f:
zodbdump(stor, None, None, out=f) zodbdump(stor, None, None, out=f)
if __name__ == '__main__': if __name__ == '__main__':
......
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Copyright (C) 2018-2019 Nexedi SA and Contributors. # Copyright (C) 2018-2020 Nexedi SA and Contributors.
# Kirill Smelkov <kirr@nexedi.com> # Kirill Smelkov <kirr@nexedi.com>
# Jérome Perrin <jerome@nexedi.com> # Jérome Perrin <jerome@nexedi.com>
# #
...@@ -58,7 +58,7 @@ def test_zodbcommit(zext): ...@@ -58,7 +58,7 @@ def test_zodbcommit(zext):
zodbdump(stor, p64(u64(head)+1), None, out=buf) zodbdump(stor, p64(u64(head)+1), None, out=buf)
dumped = buf.getvalue() dumped = buf.getvalue()
assert dumped == ''.join([_.zdump() for _ in (t1, t2)]) assert dumped == b''.join([_.zdump() for _ in (t1, t2)])
# ObjectCopy. XXX zodbcommit handled ObjectCopy by actually copying data, # ObjectCopy. XXX zodbcommit handled ObjectCopy by actually copying data,
# not referencing previous transaction via backpointer. # not referencing previous transaction via backpointer.
......
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Copyright (C) 2017-2019 Nexedi SA and Contributors. # Copyright (C) 2017-2020 Nexedi SA and Contributors.
# Kirill Smelkov <kirr@nexedi.com> # Kirill Smelkov <kirr@nexedi.com>
# Jérome Perrin <jerome@nexedi.com> # Jérome Perrin <jerome@nexedi.com>
# #
...@@ -39,7 +39,7 @@ def test_zodbdump(zext): ...@@ -39,7 +39,7 @@ def test_zodbdump(zext):
zkind = '_!zext' if zext.disabled else '' zkind = '_!zext' if zext.disabled else ''
stor = FileStorage('%s/testdata/1%s.fs' % (tdir, zkind), read_only=True) stor = FileStorage('%s/testdata/1%s.fs' % (tdir, zkind), read_only=True)
with open('%s/testdata/1%s.zdump.ok' % (tdir, zkind)) as f: with open('%s/testdata/1%s.zdump.ok' % (tdir, zkind), 'rb') as f:
dumpok = f.read() dumpok = f.read()
out = BytesIO() out = BytesIO()
...@@ -116,7 +116,7 @@ extension "qqq" ...@@ -116,7 +116,7 @@ extension "qqq"
assert r.readtxn() == None assert r.readtxn() == None
z = ''.join([_.zdump() for _ in (t1, t2)]) z = b''.join([_.zdump() for _ in (t1, t2)])
assert z == in_ assert z == in_
# unknown hash function # unknown hash function
......
...@@ -452,8 +452,8 @@ class Transaction(object): ...@@ -452,8 +452,8 @@ class Transaction(object):
def _extension(self): def _extension(self):
return self.extension return self.extension
# zdump returns text representation of a record in zodbdump format. # zdump returns semi text-binary representation of a record in zodbdump format.
def zdump(self): def zdump(self): # -> bytes
z = 'txn %s %s\n' % (ashex(self.tid), qq(self.status)) z = 'txn %s %s\n' % (ashex(self.tid), qq(self.status))
z += 'user %s\n' % qq(self.user) z += 'user %s\n' % qq(self.user)
z += 'description %s\n' % qq(self.description) z += 'description %s\n' % qq(self.description)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment