coldset test
This commit is contained in:
parent
4b8369c071
commit
a4f720d866
99
blockstore/splitstore/coldset_test.go
Normal file
99
blockstore/splitstore/coldset_test.go
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
package splitstore
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/ipfs/go-cid"
|
||||||
|
"github.com/multiformats/go-multihash"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestColdSet(t *testing.T) {
|
||||||
|
dir, err := ioutil.TempDir("", "coldset.*")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Cleanup(func() {
|
||||||
|
_ = os.RemoveAll(dir)
|
||||||
|
})
|
||||||
|
|
||||||
|
path := filepath.Join(dir, "coldset")
|
||||||
|
|
||||||
|
makeCid := func(i int) cid.Cid {
|
||||||
|
h, err := multihash.Sum([]byte(fmt.Sprintf("cid.%d", i)), multihash.SHA2_256, -1)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return cid.NewCidV1(cid.Raw, h)
|
||||||
|
}
|
||||||
|
|
||||||
|
const count = 1000
|
||||||
|
cids := make([]cid.Cid, 0, count)
|
||||||
|
for i := 0; i < count; i++ {
|
||||||
|
cids = append(cids, makeCid(i))
|
||||||
|
}
|
||||||
|
|
||||||
|
cw, err := NewColdSetWriter(path)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, c := range cids {
|
||||||
|
if err := cw.Write(c); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := cw.Close(); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
cr, err := NewColdSetReader(path)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
index := 0
|
||||||
|
err = cr.ForEach(func(c cid.Cid) error {
|
||||||
|
if index >= count {
|
||||||
|
t.Fatal("too many cids")
|
||||||
|
}
|
||||||
|
|
||||||
|
if !c.Equals(cids[index]) {
|
||||||
|
t.Fatalf("wrong cid %d; expected %s but got %s", index, cids[index], c)
|
||||||
|
}
|
||||||
|
|
||||||
|
index++
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := cr.Reset(); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
index = 0
|
||||||
|
err = cr.ForEach(func(c cid.Cid) error {
|
||||||
|
if index >= count {
|
||||||
|
t.Fatal("too many cids")
|
||||||
|
}
|
||||||
|
|
||||||
|
if !c.Equals(cids[index]) {
|
||||||
|
t.Fatalf("wrong cid; expected %s but got %s", cids[index], c)
|
||||||
|
}
|
||||||
|
|
||||||
|
index++
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user