chain: WIP Generated node sync test
This commit is contained in:
parent
7f5cba1749
commit
a656aea7fe
81
chain/sync_test.go
Normal file
81
chain/sync_test.go
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
package chain_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
mocknet "github.com/libp2p/go-libp2p/p2p/net/mock"
|
||||||
|
|
||||||
|
"github.com/filecoin-project/go-lotus/api"
|
||||||
|
"github.com/filecoin-project/go-lotus/chain/gen"
|
||||||
|
"github.com/filecoin-project/go-lotus/node"
|
||||||
|
"github.com/filecoin-project/go-lotus/node/modules"
|
||||||
|
modtest "github.com/filecoin-project/go-lotus/node/modules/testing"
|
||||||
|
"github.com/filecoin-project/go-lotus/node/repo"
|
||||||
|
)
|
||||||
|
|
||||||
|
func repoWithChain(t *testing.T, h int) repo.Repo {
|
||||||
|
g, err := gen.NewGenerator()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := 0; i < h; i++ {
|
||||||
|
b, err := g.NextBlock()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("error at H:%d, %s", i, err)
|
||||||
|
}
|
||||||
|
if b.Header.Height != uint64(i+1) {
|
||||||
|
t.Fatal("wrong height")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
r, err := g.YieldRepo()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSyncSimple(t *testing.T) {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
var genbuf bytes.Buffer
|
||||||
|
var source api.FullNode
|
||||||
|
var client api.FullNode
|
||||||
|
|
||||||
|
mn := mocknet.New(ctx)
|
||||||
|
|
||||||
|
err := node.New(ctx,
|
||||||
|
node.FullAPI(&source),
|
||||||
|
node.Online(),
|
||||||
|
node.Repo(repoWithChain(t, 20)),
|
||||||
|
node.MockHost(mn),
|
||||||
|
|
||||||
|
node.Override(new(modules.Genesis), modtest.MakeGenesisMem(&genbuf)),
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
b, err := source.ChainHead(ctx)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
fmt.Println(b.Height())
|
||||||
|
|
||||||
|
err = node.New(ctx,
|
||||||
|
node.FullAPI(&client),
|
||||||
|
node.Online(),
|
||||||
|
node.Repo(repo.NewMemory(nil)),
|
||||||
|
node.MockHost(mn),
|
||||||
|
|
||||||
|
node.Override(new(modules.Genesis), modules.LoadGenesis(genbuf.Bytes())),
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -40,7 +40,7 @@ func builder(t *testing.T, n int) []api.FullNode {
|
|||||||
node.FullAPI(&out[i]),
|
node.FullAPI(&out[i]),
|
||||||
node.Online(),
|
node.Online(),
|
||||||
node.Repo(repo.NewMemory(nil)),
|
node.Repo(repo.NewMemory(nil)),
|
||||||
MockHost(mn),
|
node.MockHost(mn),
|
||||||
|
|
||||||
genesis,
|
genesis,
|
||||||
)
|
)
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
package node_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"errors"
|
|
||||||
|
|
||||||
"github.com/filecoin-project/go-lotus/node"
|
|
||||||
|
|
||||||
"github.com/filecoin-project/go-lotus/node/modules/lp2p"
|
|
||||||
mocknet "github.com/libp2p/go-libp2p/p2p/net/mock"
|
|
||||||
)
|
|
||||||
|
|
||||||
func MockHost(mn mocknet.Mocknet) node.Option {
|
|
||||||
return node.Options(
|
|
||||||
node.ApplyIf(func(s *node.Settings) bool { return !s.Online },
|
|
||||||
node.Error(errors.New("MockHost must be specified after Online")),
|
|
||||||
),
|
|
||||||
|
|
||||||
node.Override(new(lp2p.RawHost), lp2p.MockHost),
|
|
||||||
node.Override(new(mocknet.Mocknet), mn),
|
|
||||||
)
|
|
||||||
}
|
|
20
node/testopts.go
Normal file
20
node/testopts.go
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
package node
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
mocknet "github.com/libp2p/go-libp2p/p2p/net/mock"
|
||||||
|
|
||||||
|
"github.com/filecoin-project/go-lotus/node/modules/lp2p"
|
||||||
|
)
|
||||||
|
|
||||||
|
func MockHost(mn mocknet.Mocknet) Option {
|
||||||
|
return Options(
|
||||||
|
ApplyIf(func(s *Settings) bool { return !s.Online },
|
||||||
|
Error(errors.New("MockHost must be specified after Online")),
|
||||||
|
),
|
||||||
|
|
||||||
|
Override(new(lp2p.RawHost), lp2p.MockHost),
|
||||||
|
Override(new(mocknet.Mocknet), mn),
|
||||||
|
)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user