Commit 057ec71c authored by Kirill Smelkov's avatar Kirill Smelkov

.

parent 7f4143fc
......@@ -19,6 +19,8 @@
package main
// XXX doc (2 ways of testing: explicit + allstructs), treegen py helper
import (
"bufio"
"context"
......@@ -108,11 +110,10 @@ func StartTreeGen(zurl string) (_ *TreeGen, err error) {
return nil, fmt.Errorf("root: %s", err)
}
//fmt.Printf("XXX started @%s root=%s\n", tg.head, tg.treeRoot)
return tg, nil
}
// Close shutdowns the generator.
// Close shutdowns treegen server.
func (tg *TreeGen) Close() (err error) {
defer xerr.Contextf(&err, "treegen %s: close", tg.zurl)
......@@ -125,7 +126,6 @@ func (tg *TreeGen) Close() (err error) {
// Commit creates new commit with underlying tree changed to tree topology.
func (tg *TreeGen) Commit(tree string) (_ zodb.Tid, err error) {
defer xerr.Contextf(&err, "treegen %s: commit %s", tg.zurl, tree)
fmt.Printf("commit %s ...\n", tree)
_, err = io.WriteString(tg.pyin, tree + "\n")
if err != nil {
......@@ -147,11 +147,10 @@ func (tg *TreeGen) Commit(tree string) (_ zodb.Tid, err error) {
}
// XGetTree loads LOBtree from zurl@at->obj<root>.
// Tree values must be ZBlk whose data is returned instead of references to ZBlk.
// XGetTree loads Tree from zurl@at->obj<root>.
// Tree values must be ZBlk whose data is returned instead of references to ZBlk objects.
func XGetTree(db *zodb.DB, at zodb.Tid, root zodb.Oid) map[Key]string {
defer exc.Contextf("%s: @%s: get tree %s", db.Storage().URL(), at, root)
X := exc.Raiseif
txn, ctx := transaction.New(context.Background())
......@@ -164,6 +163,8 @@ func XGetTree(db *zodb.DB, at zodb.Tid, root zodb.Oid) map[Key]string {
exc.Raisef("expected %s, got %s", typeOf(ztree), typeOf(xztree))
}
// XXX better load through direct nodes traversal, not via bucket.next?
// (firstbucket and .next might be broken)
err = ztree.PActivate(ctx); X(err)
defer ztree.PDeactivate()
zbucket := ztree.FirstBucket()
......@@ -288,6 +289,28 @@ func TestΔBTail(t *testing.T) {
err := db.Close(); X(err)
}()
// XCommitTree calls tg.Commit and returns δZ corresponding to made transaction.
XCommitTree := func(tree string) *zodb.EventCommit {
defer exc.Contextf("commit %s", tree)
watchq := make(chan zodb.Event)
at0 := zstor.AddWatch(watchq)
defer zstor.DelWatch(watchq)
tid, err := tg.Commit(tree); X(err)
if !(tid > at0) {
exc.Raisef("treegen -> %s ; want > %s", tid, at0)
}
zevent := <-watchq
δZ := zevent.(*zodb.EventCommit)
if δZ.Tid != tid {
exc.Raisef("treegen -> %s ; watchq -> %s", tid, δZ)
}
return δZ
}
/*
XXX := func(tree1, tree2 string) {
// XXX commit tree1
......@@ -320,11 +343,11 @@ func TestΔBTail(t *testing.T) {
at1 := tg.head
kv1 := XGetTree(db, at1, tg.treeRoot)
for _, tree := range testv {
at2, err := tg.Commit(tree); X(err) // tree2
δZ := XCommitTree(tree) // tree2
at2 := δZ.Tid
//at2, err := tg.Commit(tree); X(err) // tree2
kv2 := XGetTree(db, at2, tg.treeRoot)
var δZ *zodb.EventCommit // XXX
verifyΔBTail(t, db, tg.treeRoot, at1,at2, kv1,kv2, δZ)
at1 = at2
......
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