Wire up node API to tests
This commit is contained in:
parent
b843dcb590
commit
ba846e9bfb
@ -10,15 +10,15 @@ import (
|
|||||||
|
|
||||||
// APIBuilder is a function which is invoked in test suite to provide
|
// APIBuilder is a function which is invoked in test suite to provide
|
||||||
// test nodes and networks
|
// test nodes and networks
|
||||||
type APIBuilder func() api.API
|
type APIBuilder func(t *testing.T, n int) []api.API
|
||||||
type testSuite struct {
|
type testSuite struct {
|
||||||
makeNode APIBuilder
|
makeNodes APIBuilder
|
||||||
}
|
}
|
||||||
|
|
||||||
// TestApis is the entry point to API test suite
|
// TestApis is the entry point to API test suite
|
||||||
func TestApis(t *testing.T, b APIBuilder) {
|
func TestApis(t *testing.T, b APIBuilder) {
|
||||||
ts := testSuite{
|
ts := testSuite{
|
||||||
makeNode: b,
|
makeNodes: b,
|
||||||
}
|
}
|
||||||
|
|
||||||
t.Run("version", ts.testVersion)
|
t.Run("version", ts.testVersion)
|
||||||
@ -26,7 +26,7 @@ func TestApis(t *testing.T, b APIBuilder) {
|
|||||||
|
|
||||||
func (ts *testSuite) testVersion(t *testing.T) {
|
func (ts *testSuite) testVersion(t *testing.T) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
fc := ts.makeNode()
|
fc := ts.makeNodes(t, 1)[0]
|
||||||
|
|
||||||
v, err := fc.Version(ctx)
|
v, err := fc.Version(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -2,6 +2,7 @@ package api
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
|
||||||
ma "github.com/multiformats/go-multiaddr"
|
ma "github.com/multiformats/go-multiaddr"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ package node
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
|
mocknet "github.com/libp2p/go-libp2p/p2p/net/mock"
|
||||||
"reflect"
|
"reflect"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -236,6 +237,17 @@ func New(ctx context.Context, opts ...Option) (api.API, error) {
|
|||||||
|
|
||||||
// In-memory / testing
|
// In-memory / testing
|
||||||
|
|
||||||
|
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),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
func randomIdentity() Option {
|
func randomIdentity() Option {
|
||||||
sk, pk, err := ci.GenerateKeyPair(ci.RSA, 512)
|
sk, pk, err := ci.GenerateKeyPair(ci.RSA, 512)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
34
node/node_test.go
Normal file
34
node/node_test.go
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
package node
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/filecoin-project/go-lotus/api/test"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/filecoin-project/go-lotus/api"
|
||||||
|
mocknet "github.com/libp2p/go-libp2p/p2p/net/mock"
|
||||||
|
)
|
||||||
|
|
||||||
|
func builder(t *testing.T, n int) []api.API {
|
||||||
|
ctx := context.Background()
|
||||||
|
mn := mocknet.New(ctx)
|
||||||
|
|
||||||
|
out := make([]api.API, n)
|
||||||
|
|
||||||
|
for i := 0; i < n; i++ {
|
||||||
|
var err error
|
||||||
|
out[i], err = New(ctx,
|
||||||
|
Online(),
|
||||||
|
MockHost(mn),
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestAPI(t *testing.T) {
|
||||||
|
test.TestApis(t, builder)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user