diff --git a/t/neo/storage/fs1/filestorage.go b/t/neo/storage/fs1/filestorage.go
index 0d9f06bec1da69132b4cba460fbed05f9e72dfc6..db727d1341a936ec158cd0d3200522c7ae8c89f3 100644
--- a/t/neo/storage/fs1/filestorage.go
+++ b/t/neo/storage/fs1/filestorage.go
@@ -34,8 +34,7 @@ type FileStorage struct {
 var _ zodb.IStorage = (*FileStorage)(nil)
 
 
-// XXX -> TxnHeader
-type TxnRecHead struct {
+type TxnHeader struct {
 	Tid             zodb.Tid
 	RecLenm8        uint64
 	Status          zodb.TxnStatus
diff --git a/t/neo/storage/fs1/py/gen-testdata b/t/neo/storage/fs1/py/gen-testdata
index 0fd599b312385eb42723b779c3bcf2e2dc70e653..92d27ed170fd2e0dfff173d1e762c30e8153e650 100755
--- a/t/neo/storage/fs1/py/gen-testdata
+++ b/t/neo/storage/fs1/py/gen-testdata
@@ -15,12 +15,15 @@ import random
 import logging
 
 # convert numeric oid to/from str
-def oid(num):
+def p64(num):
     return struct.pack('>Q', num)
 
-def oidN(packed):
+def unpack64(packed):
     return struct.unpack('>Q', packed)[0]
 
+def hex64(packed):
+    return '0x%016x' % unpack64(packed)
+
 # make time.time() predictable
 _xtime = time.mktime(time.strptime("04 Jan 1979", "%d %b %Y"))
 def xtime():
@@ -52,11 +55,13 @@ class Object(Persistent):
 def main():
     logging.basicConfig()
 
-    stor = FileStorage("testdata/1.fs", create=True)
+    outfs = "testdata/1.fs"
+
+    stor = FileStorage(outfs, create=True)
     db   = DB(stor)
     conn = db.open()
     root = conn.root()
-    assert root._p_oid == oid(0), `root._p_oid`
+    assert root._p_oid == p64(0), `root._p_oid`
 
     # generate random changes to objects hooked to top-level root by a/b/c/... key
     random.seed(0)
@@ -83,10 +88,42 @@ def main():
             print >>f, v
         emit("// DO NOT EDIT - AUTOGENERATED (by py/gen-testdata)")
         emit("package fs1\n")
+
+        # index
         emit("const _1fs_indexTopPos = %i" % stor._pos)
         emit("var _1fs_indexEntryv = [...]indexEntry{")
         for k, v in stor._index.iteritems():
-            emit("\t{%8i, %8i}," % (oidN(k), v))
+            emit("\t{%8i, %8i}," % (unpack64(k), v))
+        emit("}")
+
+        # database records
+        stor = FileStorage(outfs, read_only=True)
+        emit("\nvar _1fs_dbEntryv = [...]dbEntry{")
+        for txn in stor.iterator():     # txn is TransactionRecord
+            emit("\tTxnHeader{")
+            emit("\t\tTid:\t%s" % hex64(txn.tid))
+            # -> TxnHeader
+            #txn.tid, txn.status
+            #.user .description .extension
+
+            # txn: ._pos ._tend ._tpos
+
+            # -> DataHeader + payload
+            for drec in txn:            # drec is itemof(TransactionRecordIterator) = Record
+                emit("\t\tDataHeader{")
+                emit("\t\t\tOid:\t%i," % unpack64(drec.oid))
+                emit("\t\t\tTid:\t%s," % hex64(drec.tid))
+                # drec: .data .prev (=prev_txn) .pos
+
+                # PrevDataRecPos
+                emit("\t\t\tTxnPos:\t%i," % txn._tpos)
+                assert drec.version == ''
+                # DataLen
+
+                #.data .data_txn
+                emit("\t\t},")
+
+            emit("\t}")
         emit("}")
 
 
diff --git a/t/neo/storage/fs1/testdata_expect_test.go b/t/neo/storage/fs1/testdata_expect_test.go
index 7074c787809922b2519c132ad56b53d34a81cc54..98e668f7d9c206ffc1b6c0c4f2e5de60cd5ad9cc 100644
--- a/t/neo/storage/fs1/testdata_expect_test.go
+++ b/t/neo/storage/fs1/testdata_expect_test.go
@@ -12,3 +12,449 @@ var _1fs_indexEntryv = [...]indexEntry{
 	{       6,     8839},
 	{       7,     7507},
 }
+
+var _1fs_dbEntryv = [...]dbEntry{
+	TxnHeader{
+		Tid:	0x0285cbac12c5f933
+		DataHeader{
+			Oid:	0,
+			Tid:	0x0285cbac12c5f933,
+			TxnPos:	4,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac2a3d70b3
+		DataHeader{
+			Oid:	0,
+			Tid:	0x0285cbac2a3d70b3,
+			TxnPos:	162,
+		},
+		DataHeader{
+			Oid:	1,
+			Tid:	0x0285cbac2a3d70b3,
+			TxnPos:	162,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac2eeeef00
+		DataHeader{
+			Oid:	1,
+			Tid:	0x0285cbac2eeeef00,
+			TxnPos:	444,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac33a06d4c
+		DataHeader{
+			Oid:	0,
+			Tid:	0x0285cbac33a06d4c,
+			TxnPos:	589,
+		},
+		DataHeader{
+			Oid:	2,
+			Tid:	0x0285cbac33a06d4c,
+			TxnPos:	589,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac3851eb99
+		DataHeader{
+			Oid:	0,
+			Tid:	0x0285cbac3851eb99,
+			TxnPos:	892,
+		},
+		DataHeader{
+			Oid:	3,
+			Tid:	0x0285cbac3851eb99,
+			TxnPos:	892,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac3d0369e6
+		DataHeader{
+			Oid:	0,
+			Tid:	0x0285cbac3d0369e6,
+			TxnPos:	1215,
+		},
+		DataHeader{
+			Oid:	4,
+			Tid:	0x0285cbac3d0369e6,
+			TxnPos:	1215,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac41b4e833
+		DataHeader{
+			Oid:	2,
+			Tid:	0x0285cbac41b4e833,
+			TxnPos:	1558,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac46666680
+		DataHeader{
+			Oid:	1,
+			Tid:	0x0285cbac46666680,
+			TxnPos:	1703,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac4b17e4cc
+		DataHeader{
+			Oid:	2,
+			Tid:	0x0285cbac4b17e4cc,
+			TxnPos:	1848,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac4fc96319
+		DataHeader{
+			Oid:	4,
+			Tid:	0x0285cbac4fc96319,
+			TxnPos:	1993,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac547ae166
+		DataHeader{
+			Oid:	0,
+			Tid:	0x0285cbac547ae166,
+			TxnPos:	2138,
+		},
+		DataHeader{
+			Oid:	5,
+			Tid:	0x0285cbac547ae166,
+			TxnPos:	2138,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac592c5fb3
+		DataHeader{
+			Oid:	0,
+			Tid:	0x0285cbac592c5fb3,
+			TxnPos:	2501,
+		},
+		DataHeader{
+			Oid:	6,
+			Tid:	0x0285cbac592c5fb3,
+			TxnPos:	2501,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac5dddde00
+		DataHeader{
+			Oid:	4,
+			Tid:	0x0285cbac5dddde00,
+			TxnPos:	2887,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac628f5c4c
+		DataHeader{
+			Oid:	3,
+			Tid:	0x0285cbac628f5c4c,
+			TxnPos:	3035,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac6740da99
+		DataHeader{
+			Oid:	1,
+			Tid:	0x0285cbac6740da99,
+			TxnPos:	3183,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac6bf258e6
+		DataHeader{
+			Oid:	5,
+			Tid:	0x0285cbac6bf258e6,
+			TxnPos:	3331,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac70a3d733
+		DataHeader{
+			Oid:	3,
+			Tid:	0x0285cbac70a3d733,
+			TxnPos:	3479,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac75555580
+		DataHeader{
+			Oid:	6,
+			Tid:	0x0285cbac75555580,
+			TxnPos:	3627,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac7a06d3cc
+		DataHeader{
+			Oid:	6,
+			Tid:	0x0285cbac7a06d3cc,
+			TxnPos:	3775,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac7eb85219
+		DataHeader{
+			Oid:	1,
+			Tid:	0x0285cbac7eb85219,
+			TxnPos:	3923,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac8369d066
+		DataHeader{
+			Oid:	6,
+			Tid:	0x0285cbac8369d066,
+			TxnPos:	4071,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac881b4eb3
+		DataHeader{
+			Oid:	2,
+			Tid:	0x0285cbac881b4eb3,
+			TxnPos:	4219,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac8ccccd00
+		DataHeader{
+			Oid:	1,
+			Tid:	0x0285cbac8ccccd00,
+			TxnPos:	4367,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac917e4b4c
+		DataHeader{
+			Oid:	6,
+			Tid:	0x0285cbac917e4b4c,
+			TxnPos:	4515,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac962fc999
+		DataHeader{
+			Oid:	5,
+			Tid:	0x0285cbac962fc999,
+			TxnPos:	4663,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac9ae147e6
+		DataHeader{
+			Oid:	4,
+			Tid:	0x0285cbac9ae147e6,
+			TxnPos:	4811,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbac9f92c633
+		DataHeader{
+			Oid:	0,
+			Tid:	0x0285cbac9f92c633,
+			TxnPos:	4959,
+		},
+		DataHeader{
+			Oid:	7,
+			Tid:	0x0285cbac9f92c633,
+			TxnPos:	4959,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbaca4444480
+		DataHeader{
+			Oid:	4,
+			Tid:	0x0285cbaca4444480,
+			TxnPos:	5365,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbaca8f5c2cc
+		DataHeader{
+			Oid:	5,
+			Tid:	0x0285cbaca8f5c2cc,
+			TxnPos:	5513,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbacada74119
+		DataHeader{
+			Oid:	6,
+			Tid:	0x0285cbacada74119,
+			TxnPos:	5661,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbacb258bf66
+		DataHeader{
+			Oid:	6,
+			Tid:	0x0285cbacb258bf66,
+			TxnPos:	5809,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbacb70a3db3
+		DataHeader{
+			Oid:	4,
+			Tid:	0x0285cbacb70a3db3,
+			TxnPos:	5957,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbacbbbbbc00
+		DataHeader{
+			Oid:	6,
+			Tid:	0x0285cbacbbbbbc00,
+			TxnPos:	6105,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbacc06d3a4c
+		DataHeader{
+			Oid:	3,
+			Tid:	0x0285cbacc06d3a4c,
+			TxnPos:	6253,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbacc51eb899
+		DataHeader{
+			Oid:	1,
+			Tid:	0x0285cbacc51eb899,
+			TxnPos:	6401,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbacc9d036e6
+		DataHeader{
+			Oid:	4,
+			Tid:	0x0285cbacc9d036e6,
+			TxnPos:	6549,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbacce81b533
+		DataHeader{
+			Oid:	7,
+			Tid:	0x0285cbacce81b533,
+			TxnPos:	6697,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbacd3333380
+		DataHeader{
+			Oid:	1,
+			Tid:	0x0285cbacd3333380,
+			TxnPos:	6845,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbacd7e4b1cc
+		DataHeader{
+			Oid:	2,
+			Tid:	0x0285cbacd7e4b1cc,
+			TxnPos:	6993,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbacdc963019
+		DataHeader{
+			Oid:	1,
+			Tid:	0x0285cbacdc963019,
+			TxnPos:	7141,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbace147ae66
+		DataHeader{
+			Oid:	5,
+			Tid:	0x0285cbace147ae66,
+			TxnPos:	7289,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbace5f92cb3
+		DataHeader{
+			Oid:	7,
+			Tid:	0x0285cbace5f92cb3,
+			TxnPos:	7437,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbaceaaaab00
+		DataHeader{
+			Oid:	4,
+			Tid:	0x0285cbaceaaaab00,
+			TxnPos:	7585,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbacef5c294c
+		DataHeader{
+			Oid:	6,
+			Tid:	0x0285cbacef5c294c,
+			TxnPos:	7733,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbacf40da799
+		DataHeader{
+			Oid:	3,
+			Tid:	0x0285cbacf40da799,
+			TxnPos:	7881,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbacf8bf25e6
+		DataHeader{
+			Oid:	2,
+			Tid:	0x0285cbacf8bf25e6,
+			TxnPos:	8029,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbacfd70a433
+		DataHeader{
+			Oid:	6,
+			Tid:	0x0285cbacfd70a433,
+			TxnPos:	8177,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbad02222280
+		DataHeader{
+			Oid:	3,
+			Tid:	0x0285cbad02222280,
+			TxnPos:	8325,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbad06d3a0cc
+		DataHeader{
+			Oid:	4,
+			Tid:	0x0285cbad06d3a0cc,
+			TxnPos:	8473,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbad0b851f19
+		DataHeader{
+			Oid:	3,
+			Tid:	0x0285cbad0b851f19,
+			TxnPos:	8621,
+		},
+	}
+	TxnHeader{
+		Tid:	0x0285cbad10369d66
+		DataHeader{
+			Oid:	6,
+			Tid:	0x0285cbad10369d66,
+			TxnPos:	8769,
+		},
+	}
+}