Fix VirtualTree.addBatch bucket levels
arnaucube root@arnaucube.com
Sun, 29 Aug 2021 23:38:41 +0200
2 files changed,
25 insertions(+),
1 deletions(-)
M
vt.go
→
vt.go
@@ -173,7 +173,7 @@ var wg sync.WaitGroup
wg.Add(nCPU) for i := 0; i < nCPU; i++ { go func(cpu int) { - bucketVT := newVT(t.params.maxLevels-l, t.params.hashFunction) + bucketVT := newVT(t.params.maxLevels, t.params.hashFunction) bucketVT.root = nodesAtL[cpu] for j := 0; j < len(buckets[cpu]); j++ { if err = bucketVT.add(l, buckets[cpu][j].k, buckets[cpu][j].v); err != nil {
M
vt_test.go
→
vt_test.go
@@ -143,6 +143,30 @@ c.Assert(err, qt.IsNil)
c.Assert(vTree.root.h, qt.DeepEquals, root) } +func TestVirtualTreeAddBatchFullyUsed(t *testing.T) { + c := qt.New(t) + + vTree1 := newVT(7, HashFunctionPoseidon) // used for add one by one + vTree2 := newVT(7, HashFunctionPoseidon) // used for addBatch + + var keys, values [][]byte + for i := 0; i < 128; i++ { + k := BigIntToBytes(32, big.NewInt(int64(i))) + v := k + + keys = append(keys, k) + values = append(values, v) + + // add one by one expecting no error + err := vTree1.add(0, k, v) + c.Assert(err, qt.IsNil) + } + + invalids, err := vTree2.addBatch(keys, values) + c.Assert(err, qt.IsNil) + c.Assert(0, qt.Equals, len(invalids)) +} + func TestGetNodesAtLevel(t *testing.T) { c := qt.New(t)