Merge pull request #4608 from filecoin-project/fix/flaky-TestCLIDealFlow
Fix flaky TestCLIDealFlow
This commit is contained in:
commit
1db69acbc0
@ -48,7 +48,7 @@ func TestPaymentChannels(t *testing.T) {
|
|||||||
receiverAddr := addrs[1]
|
receiverAddr := addrs[1]
|
||||||
|
|
||||||
// Create mock CLI
|
// Create mock CLI
|
||||||
mockCLI := clitest.NewMockCLI(t, Commands)
|
mockCLI := clitest.NewMockCLI(ctx, t, Commands)
|
||||||
creatorCLI := mockCLI.Client(paymentCreator.ListenAddr)
|
creatorCLI := mockCLI.Client(paymentCreator.ListenAddr)
|
||||||
receiverCLI := mockCLI.Client(paymentReceiver.ListenAddr)
|
receiverCLI := mockCLI.Client(paymentReceiver.ListenAddr)
|
||||||
|
|
||||||
@ -99,7 +99,7 @@ func TestPaymentChannelStatus(t *testing.T) {
|
|||||||
receiverAddr := addrs[1]
|
receiverAddr := addrs[1]
|
||||||
|
|
||||||
// Create mock CLI
|
// Create mock CLI
|
||||||
mockCLI := clitest.NewMockCLI(t, Commands)
|
mockCLI := clitest.NewMockCLI(ctx, t, Commands)
|
||||||
creatorCLI := mockCLI.Client(paymentCreator.ListenAddr)
|
creatorCLI := mockCLI.Client(paymentCreator.ListenAddr)
|
||||||
|
|
||||||
// creator: paych status-by-from-to <creator> <receiver>
|
// creator: paych status-by-from-to <creator> <receiver>
|
||||||
@ -179,7 +179,7 @@ func TestPaymentChannelVouchers(t *testing.T) {
|
|||||||
receiverAddr := addrs[1]
|
receiverAddr := addrs[1]
|
||||||
|
|
||||||
// Create mock CLI
|
// Create mock CLI
|
||||||
mockCLI := clitest.NewMockCLI(t, Commands)
|
mockCLI := clitest.NewMockCLI(ctx, t, Commands)
|
||||||
creatorCLI := mockCLI.Client(paymentCreator.ListenAddr)
|
creatorCLI := mockCLI.Client(paymentCreator.ListenAddr)
|
||||||
receiverCLI := mockCLI.Client(paymentReceiver.ListenAddr)
|
receiverCLI := mockCLI.Client(paymentReceiver.ListenAddr)
|
||||||
|
|
||||||
@ -310,7 +310,7 @@ func TestPaymentChannelVoucherCreateShortfall(t *testing.T) {
|
|||||||
receiverAddr := addrs[1]
|
receiverAddr := addrs[1]
|
||||||
|
|
||||||
// Create mock CLI
|
// Create mock CLI
|
||||||
mockCLI := clitest.NewMockCLI(t, Commands)
|
mockCLI := clitest.NewMockCLI(ctx, t, Commands)
|
||||||
creatorCLI := mockCLI.Client(paymentCreator.ListenAddr)
|
creatorCLI := mockCLI.Client(paymentCreator.ListenAddr)
|
||||||
|
|
||||||
// creator: paych add-funds <creator> <receiver> <amount>
|
// creator: paych add-funds <creator> <receiver> <amount>
|
||||||
|
@ -11,6 +11,8 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"golang.org/x/xerrors"
|
||||||
|
|
||||||
"github.com/filecoin-project/lotus/api/test"
|
"github.com/filecoin-project/lotus/api/test"
|
||||||
"github.com/filecoin-project/lotus/build"
|
"github.com/filecoin-project/lotus/build"
|
||||||
"github.com/filecoin-project/lotus/chain/types"
|
"github.com/filecoin-project/lotus/chain/types"
|
||||||
@ -25,7 +27,7 @@ func RunClientTest(t *testing.T, cmds []*lcli.Command, clientNode test.TestNode)
|
|||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
// Create mock CLI
|
// Create mock CLI
|
||||||
mockCLI := NewMockCLI(t, cmds)
|
mockCLI := NewMockCLI(ctx, t, cmds)
|
||||||
clientCLI := mockCLI.Client(clientNode.ListenAddr)
|
clientCLI := mockCLI.Client(clientNode.ListenAddr)
|
||||||
|
|
||||||
// Get the miner address
|
// Get the miner address
|
||||||
@ -74,7 +76,7 @@ func RunClientTest(t *testing.T, cmds []*lcli.Command, clientNode test.TestNode)
|
|||||||
|
|
||||||
// Wait for provider to start sealing deal
|
// Wait for provider to start sealing deal
|
||||||
dealStatus := ""
|
dealStatus := ""
|
||||||
for dealStatus != "StorageDealSealing" {
|
for {
|
||||||
// client list-deals
|
// client list-deals
|
||||||
out = clientCLI.RunCmd("client", "list-deals")
|
out = clientCLI.RunCmd("client", "list-deals")
|
||||||
fmt.Println("list-deals:\n", out)
|
fmt.Println("list-deals:\n", out)
|
||||||
@ -88,6 +90,9 @@ func RunClientTest(t *testing.T, cmds []*lcli.Command, clientNode test.TestNode)
|
|||||||
}
|
}
|
||||||
dealStatus = parts[3]
|
dealStatus = parts[3]
|
||||||
fmt.Println(" Deal status:", dealStatus)
|
fmt.Println(" Deal status:", dealStatus)
|
||||||
|
if dealComplete(t, dealStatus) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
time.Sleep(time.Second)
|
time.Sleep(time.Second)
|
||||||
}
|
}
|
||||||
@ -101,3 +106,14 @@ func RunClientTest(t *testing.T, cmds []*lcli.Command, clientNode test.TestNode)
|
|||||||
fmt.Println("retrieve:\n", out)
|
fmt.Println("retrieve:\n", out)
|
||||||
require.Regexp(t, regexp.MustCompile("Success"), out)
|
require.Regexp(t, regexp.MustCompile("Success"), out)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func dealComplete(t *testing.T, dealStatus string) bool {
|
||||||
|
switch dealStatus {
|
||||||
|
case "StorageDealFailing", "StorageDealError":
|
||||||
|
t.Fatal(xerrors.Errorf("Storage deal failed with status: " + dealStatus))
|
||||||
|
case "StorageDealStaged", "StorageDealSealing", "StorageDealActive", "StorageDealExpired", "StorageDealSlashed":
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
@ -2,6 +2,7 @@ package test
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"context"
|
||||||
"flag"
|
"flag"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
@ -18,7 +19,7 @@ type MockCLI struct {
|
|||||||
out *bytes.Buffer
|
out *bytes.Buffer
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewMockCLI(t *testing.T, cmds []*lcli.Command) *MockCLI {
|
func NewMockCLI(ctx context.Context, t *testing.T, cmds []*lcli.Command) *MockCLI {
|
||||||
// Create a CLI App with an --api-url flag so that we can specify which node
|
// Create a CLI App with an --api-url flag so that we can specify which node
|
||||||
// the command should be executed against
|
// the command should be executed against
|
||||||
app := &lcli.App{
|
app := &lcli.App{
|
||||||
@ -36,6 +37,7 @@ func NewMockCLI(t *testing.T, cmds []*lcli.Command) *MockCLI {
|
|||||||
app.Setup()
|
app.Setup()
|
||||||
|
|
||||||
cctx := lcli.NewContext(app, &flag.FlagSet{}, nil)
|
cctx := lcli.NewContext(app, &flag.FlagSet{}, nil)
|
||||||
|
cctx.Context = ctx
|
||||||
return &MockCLI{t: t, cmds: cmds, cctx: cctx, out: &out}
|
return &MockCLI{t: t, cmds: cmds, cctx: cctx, out: &out}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ func RunMultisigTest(t *testing.T, cmds []*lcli.Command, clientNode test.TestNod
|
|||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
// Create mock CLI
|
// Create mock CLI
|
||||||
mockCLI := NewMockCLI(t, cmds)
|
mockCLI := NewMockCLI(ctx, t, cmds)
|
||||||
clientCLI := mockCLI.Client(clientNode.ListenAddr)
|
clientCLI := mockCLI.Client(clientNode.ListenAddr)
|
||||||
|
|
||||||
// Create some wallets on the node to use for testing multisig
|
// Create some wallets on the node to use for testing multisig
|
||||||
|
Loading…
Reference in New Issue
Block a user