mirror of
https://github.com/vocdoni/arbo.git
synced 2026-01-10 06:17:58 -05:00
122 lines
3.1 KiB
Go
122 lines
3.1 KiB
Go
package arbo
|
|
|
|
// import (
|
|
// "bytes"
|
|
// "io"
|
|
// "os"
|
|
// "testing"
|
|
// "time"
|
|
|
|
// qt "github.com/frankban/quicktest"
|
|
// "go.vocdoni.io/dvote/db"
|
|
// "go.vocdoni.io/dvote/db/pebbledb"
|
|
// )
|
|
|
|
// func checkRoots(c *qt.C, tree1, tree2 *Tree) {
|
|
// root1, err := tree1.Root()
|
|
// c.Assert(err, qt.IsNil)
|
|
// root2, err := tree2.Root()
|
|
// c.Assert(err, qt.IsNil)
|
|
// if !bytes.Equal(root2, root1) {
|
|
// dir := "err-dump"
|
|
// if _, err := os.Stat(dir); os.IsNotExist(err) {
|
|
// err := os.Mkdir(dir, os.ModePerm)
|
|
// c.Assert(err, qt.IsNil)
|
|
// }
|
|
// // store tree1
|
|
// storeTree(c, tree1, dir+"/tree1")
|
|
|
|
// // store tree2
|
|
// storeTree(c, tree2, dir+"/tree2")
|
|
|
|
// root1, err := tree1.Root()
|
|
// c.Assert(err, qt.IsNil)
|
|
// root2, err := tree2.Root()
|
|
// c.Assert(err, qt.IsNil)
|
|
// c.Check(root2, qt.DeepEquals, root1)
|
|
// }
|
|
// }
|
|
|
|
// func storeTree(c *qt.C, tree *Tree, path string) {
|
|
// dump, err := tree.Dump(nil)
|
|
// c.Assert(err, qt.IsNil)
|
|
// err = os.WriteFile(path+"-"+time.Now().String()+".debug", dump, 0600)
|
|
// c.Assert(err, qt.IsNil)
|
|
// }
|
|
|
|
// // nolint:unused
|
|
// func readTree(c *qt.C, tree *Tree, path string) {
|
|
// b, err := os.ReadFile(path) //nolint:gosec
|
|
// c.Assert(err, qt.IsNil)
|
|
// err = tree.ImportDump(b)
|
|
// c.Assert(err, qt.IsNil)
|
|
// }
|
|
|
|
// // nolint:unused
|
|
// func importDumpLoopAdd(tree *Tree, b []byte) error {
|
|
// r := bytes.NewReader(b)
|
|
// var err error
|
|
// for {
|
|
// l := make([]byte, 2)
|
|
// _, err = io.ReadFull(r, l)
|
|
// if err == io.EOF {
|
|
// break
|
|
// } else if err != nil {
|
|
// return err
|
|
// }
|
|
// k := make([]byte, l[0])
|
|
// _, err = io.ReadFull(r, k)
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
// v := make([]byte, l[1])
|
|
// _, err = io.ReadFull(r, v)
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
// err = tree.Add(k, v)
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
// }
|
|
// return nil
|
|
// }
|
|
|
|
// func TestReadTreeDBG(t *testing.T) {
|
|
// t.Skip() // test just for debugging purposes, disabled by default
|
|
|
|
// c := qt.New(t)
|
|
|
|
// database1, err := pebbledb.New(db.Options{Path: c.TempDir()})
|
|
// c.Assert(err, qt.IsNil)
|
|
// tree1, err := NewTree(Config{Database: database1, MaxLevels: 100,
|
|
// HashFunction: HashFunctionMiMC_BN254})
|
|
// c.Assert(err, qt.IsNil)
|
|
|
|
// database2, err := pebbledb.New(db.Options{Path: c.TempDir()})
|
|
// c.Assert(err, qt.IsNil)
|
|
// tree2, err := NewTree(Config{Database: database2, MaxLevels: 100,
|
|
// HashFunction: HashFunctionMiMC_BN254})
|
|
// c.Assert(err, qt.IsNil)
|
|
|
|
// // tree1 is generated by a loop of .Add
|
|
// path := "err-dump/tree1-2021-06-03 16:45:54.104449306 +0200 CEST m=+0.073874545.debug"
|
|
// b, err := os.ReadFile(path)
|
|
// c.Assert(err, qt.IsNil)
|
|
// err = importDumpLoopAdd(tree1, b)
|
|
// c.Assert(err, qt.IsNil)
|
|
|
|
// // tree2 is generated by .AddBatch
|
|
// path = "err-dump/tree2-2021-06-03 16:45:54.104525519 +0200 CEST m=+0.073950756.debug"
|
|
// readTree(c, tree2, path)
|
|
|
|
// // tree1.PrintGraphvizFirstNLevels(nil, 6)
|
|
// // tree2.PrintGraphvizFirstNLevels(nil, 6)
|
|
|
|
// root1, err := tree1.Root()
|
|
// c.Assert(err, qt.IsNil)
|
|
// root2, err := tree2.Root()
|
|
// c.Assert(err, qt.IsNil)
|
|
// c.Check(root2, qt.DeepEquals, root1)
|
|
// }
|