2019-12-16 19:22:56 +00:00
|
|
|
package store_test
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/filecoin-project/lotus/build"
|
|
|
|
"github.com/filecoin-project/lotus/chain/gen"
|
|
|
|
"github.com/filecoin-project/lotus/chain/store"
|
|
|
|
"github.com/filecoin-project/lotus/chain/types"
|
|
|
|
"github.com/filecoin-project/lotus/node/repo"
|
2020-02-10 19:16:36 +00:00
|
|
|
"github.com/filecoin-project/specs-actors/actors/abi"
|
2020-02-26 09:05:22 +00:00
|
|
|
"github.com/filecoin-project/specs-actors/actors/crypto"
|
2019-12-16 19:22:56 +00:00
|
|
|
blockstore "github.com/ipfs/go-ipfs-blockstore"
|
|
|
|
)
|
|
|
|
|
|
|
|
func init() {
|
2020-02-10 19:16:36 +00:00
|
|
|
build.SectorSizes = []abi.SectorSize{1024}
|
2019-12-16 19:22:56 +00:00
|
|
|
build.MinimumMinerPower = 1024
|
|
|
|
}
|
|
|
|
|
|
|
|
func BenchmarkGetRandomness(b *testing.B) {
|
|
|
|
cg, err := gen.NewGenerator()
|
|
|
|
if err != nil {
|
|
|
|
b.Fatal(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
var last *types.TipSet
|
|
|
|
for i := 0; i < 2000; i++ {
|
|
|
|
ts, err := cg.NextTipSet()
|
|
|
|
if err != nil {
|
|
|
|
b.Fatal(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
last = ts.TipSet.TipSet()
|
|
|
|
}
|
|
|
|
|
|
|
|
r, err := cg.YieldRepo()
|
|
|
|
if err != nil {
|
|
|
|
b.Fatal(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
lr, err := r.Lock(repo.FullNode)
|
|
|
|
if err != nil {
|
|
|
|
b.Fatal(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
bds, err := lr.Datastore("/blocks")
|
|
|
|
if err != nil {
|
|
|
|
b.Fatal(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
mds, err := lr.Datastore("/metadata")
|
|
|
|
if err != nil {
|
|
|
|
b.Fatal(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
bs := blockstore.NewBlockstore(bds)
|
|
|
|
|
2020-01-13 20:47:27 +00:00
|
|
|
cs := store.NewChainStore(bs, mds, nil)
|
2019-12-16 19:22:56 +00:00
|
|
|
|
|
|
|
b.ResetTimer()
|
|
|
|
|
|
|
|
for i := 0; i < b.N; i++ {
|
2020-02-26 09:05:22 +00:00
|
|
|
_, err := cs.GetRandomness(context.TODO(), last.Cids(), crypto.DomainSeparationTag_SealRandomness, 500, nil)
|
2019-12-16 19:22:56 +00:00
|
|
|
if err != nil {
|
|
|
|
b.Fatal(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|