refactor kit.NewDealHarness to include main miner and market node

This commit is contained in:
Anton Evangelatov 2021-06-23 11:24:55 +02:00
parent 51a4657ef7
commit 7fb93d4585
6 changed files with 26 additions and 28 deletions

View File

@ -49,7 +49,7 @@ func TestMinerAllInfo(t *testing.T) {
t.Run("pre-info-all", run) t.Run("pre-info-all", run)
dh := kit.NewDealHarness(t, client, miner) dh := kit.NewDealHarness(t, client, miner, miner)
deal, res, inPath := dh.MakeOnlineDeal(context.Background(), kit.MakeFullDealParams{Rseed: 6}) deal, res, inPath := dh.MakeOnlineDeal(context.Background(), kit.MakeFullDealParams{Rseed: 6})
outPath := dh.PerformRetrieval(context.Background(), deal, res.Root, false) outPath := dh.PerformRetrieval(context.Background(), deal, res.Root, false)
kit.AssertFilesEqual(t, inPath, outPath) kit.AssertFilesEqual(t, inPath, outPath)

View File

@ -58,7 +58,7 @@ func TestBatchDealInput(t *testing.T) {
)) ))
client, miner, ens := kit.EnsembleMinimal(t, kit.MockProofs(), opts) client, miner, ens := kit.EnsembleMinimal(t, kit.MockProofs(), opts)
ens.InterconnectAll().BeginMining(blockTime) ens.InterconnectAll().BeginMining(blockTime)
dh := kit.NewDealHarness(t, client, miner) dh := kit.NewDealHarness(t, client, miner, miner)
err := miner.MarketSetAsk(ctx, big.Zero(), big.Zero(), 200, 128, 32<<30) err := miner.MarketSetAsk(ctx, big.Zero(), big.Zero(), 200, 128, 32<<30)
require.NoError(t, err) require.NoError(t, err)

View File

@ -61,7 +61,7 @@ func runTestCCUpgrade(t *testing.T, upgradeHeight abi.ChainEpoch) {
err = miner.SectorMarkForUpgrade(ctx, sl[0]) err = miner.SectorMarkForUpgrade(ctx, sl[0])
require.NoError(t, err) require.NoError(t, err)
dh := kit.NewDealHarness(t, client, miner) dh := kit.NewDealHarness(t, client, miner, miner)
deal, res, inPath := dh.MakeOnlineDeal(ctx, kit.MakeFullDealParams{Rseed: 6}) deal, res, inPath := dh.MakeOnlineDeal(ctx, kit.MakeFullDealParams{Rseed: 6})
outPath := dh.PerformRetrieval(context.Background(), deal, res.Root, false) outPath := dh.PerformRetrieval(context.Background(), deal, res.Root, false)
kit.AssertFilesEqual(t, inPath, outPath) kit.AssertFilesEqual(t, inPath, outPath)

View File

@ -47,13 +47,9 @@ func TestDealCyclesConcurrent(t *testing.T) {
runTest := func(t *testing.T, n int, fastRetrieval bool, carExport bool) { runTest := func(t *testing.T, n int, fastRetrieval bool, carExport bool) {
api.RunningNodeType = api.NodeMiner // TODO(anteva): fix me api.RunningNodeType = api.NodeMiner // TODO(anteva): fix me
////TODO: add miner
//client, main, _, _ := kit2.EnsembleWithMarket(t, kit2.MockProofs(), kit2.ThroughRPC())
//dh := kit.NewDealHarness(t, client, main)
client, miner, ens := kit.EnsembleMinimal(t, kit.MockProofs()) client, miner, ens := kit.EnsembleMinimal(t, kit.MockProofs())
ens.InterconnectAll().BeginMining(blockTime) ens.InterconnectAll().BeginMining(blockTime)
dh := kit.NewDealHarness(t, client, miner) dh := kit.NewDealHarness(t, client, miner, miner)
runConcurrentDeals(t, dh, fullDealCyclesOpts{ runConcurrentDeals(t, dh, fullDealCyclesOpts{
n: n, n: n,
@ -68,9 +64,9 @@ func TestDealCyclesConcurrent(t *testing.T) {
for _, n := range cycles { for _, n := range cycles {
n := n n := n
ns := fmt.Sprintf("%d", n) ns := fmt.Sprintf("%d", n)
//t.Run(ns+"-fastretrieval-CAR", func(t *testing.T) { runTest(t, n, true, true) }) t.Run(ns+"-fastretrieval-CAR", func(t *testing.T) { runTest(t, n, true, true) })
//t.Run(ns+"-fastretrieval-NoCAR", func(t *testing.T) { runTest(t, n, true, false) }) t.Run(ns+"-fastretrieval-NoCAR", func(t *testing.T) { runTest(t, n, true, false) })
//t.Run(ns+"-stdretrieval-CAR", func(t *testing.T) { runTest(t, n, true, false) }) t.Run(ns+"-stdretrieval-CAR", func(t *testing.T) { runTest(t, n, true, false) })
t.Run(ns+"-stdretrieval-NoCAR", func(t *testing.T) { runTest(t, n, false, false) }) t.Run(ns+"-stdretrieval-NoCAR", func(t *testing.T) { runTest(t, n, false, false) })
} }
} }
@ -124,7 +120,7 @@ func TestDealsWithSealingAndRPC(t *testing.T) {
client, miner, ens := kit.EnsembleMinimal(t, kit.ThroughRPC(), kit.WithAllSubsystems()) // no mock proofs. client, miner, ens := kit.EnsembleMinimal(t, kit.ThroughRPC(), kit.WithAllSubsystems()) // no mock proofs.
ens.InterconnectAll().BeginMining(blockTime) ens.InterconnectAll().BeginMining(blockTime)
dh := kit.NewDealHarness(t, client, miner) dh := kit.NewDealHarness(t, client, miner, miner)
t.Run("stdretrieval", func(t *testing.T) { t.Run("stdretrieval", func(t *testing.T) {
runConcurrentDeals(t, dh, fullDealCyclesOpts{n: 1}) runConcurrentDeals(t, dh, fullDealCyclesOpts{n: 1})
@ -164,7 +160,7 @@ func TestQuotePriceForUnsealedRetrieval(t *testing.T) {
err = miner.MarketSetRetrievalAsk(ctx, ask) err = miner.MarketSetRetrievalAsk(ctx, ask)
require.NoError(t, err) require.NoError(t, err)
dh := kit.NewDealHarness(t, client, miner) dh := kit.NewDealHarness(t, client, miner, miner)
deal1, res1, _ := dh.MakeOnlineDeal(ctx, kit.MakeFullDealParams{Rseed: 6}) deal1, res1, _ := dh.MakeOnlineDeal(ctx, kit.MakeFullDealParams{Rseed: 6})
@ -255,7 +251,7 @@ func TestPublishDealsBatching(t *testing.T) {
client, miner, ens := kit.EnsembleMinimal(t, kit.MockProofs(), kit.ConstructorOpts(opts)) client, miner, ens := kit.EnsembleMinimal(t, kit.MockProofs(), kit.ConstructorOpts(opts))
ens.InterconnectAll().BeginMining(10 * time.Millisecond) ens.InterconnectAll().BeginMining(10 * time.Millisecond)
dh := kit.NewDealHarness(t, client, miner) dh := kit.NewDealHarness(t, client, miner, miner)
// Starts a deal and waits until it's published // Starts a deal and waits until it's published
runDealTillPublish := func(rseed int) { runDealTillPublish := func(rseed int) {
@ -346,7 +342,7 @@ func TestFirstDealEnablesMining(t *testing.T) {
ctx := context.Background() ctx := context.Background()
dh := kit.NewDealHarness(t, &client, &provider) dh := kit.NewDealHarness(t, &client, &provider, &provider)
ref, _ := client.CreateImportFile(ctx, 5, 0) ref, _ := client.CreateImportFile(ctx, 5, 0)
@ -395,7 +391,7 @@ func TestOfflineDealFlow(t *testing.T) {
client, miner, ens := kit.EnsembleMinimal(t, kit.MockProofs()) client, miner, ens := kit.EnsembleMinimal(t, kit.MockProofs())
ens.InterconnectAll().BeginMining(blocktime) ens.InterconnectAll().BeginMining(blocktime)
dh := kit.NewDealHarness(t, client, miner) dh := kit.NewDealHarness(t, client, miner, miner)
// Create a random file and import on the client. // Create a random file and import on the client.
res, inFile := client.CreateImportFile(ctx, 1, 0) res, inFile := client.CreateImportFile(ctx, 1, 0)
@ -497,7 +493,7 @@ func TestZeroPricePerByteRetrieval(t *testing.T) {
err = miner.MarketSetRetrievalAsk(ctx, ask) err = miner.MarketSetRetrievalAsk(ctx, ask)
require.NoError(t, err) require.NoError(t, err)
dh := kit.NewDealHarness(t, client, miner) dh := kit.NewDealHarness(t, client, miner, miner)
runConcurrentDeals(t, dh, fullDealCyclesOpts{ runConcurrentDeals(t, dh, fullDealCyclesOpts{
n: 1, n: 1,
startEpoch: startEpoch, startEpoch: startEpoch,

View File

@ -192,7 +192,7 @@ func TestGatewayDealFlow(t *testing.T) {
// so that the deal starts sealing in time // so that the deal starts sealing in time
dealStartEpoch := abi.ChainEpoch(2 << 12) dealStartEpoch := abi.ChainEpoch(2 << 12)
dh := kit.NewDealHarness(t, nodes.lite, nodes.miner) dh := kit.NewDealHarness(t, nodes.lite, nodes.miner, nodes.miner)
dealCid, res, _ := dh.MakeOnlineDeal(context.Background(), kit.MakeFullDealParams{ dealCid, res, _ := dh.MakeOnlineDeal(context.Background(), kit.MakeFullDealParams{
Rseed: 6, Rseed: 6,
StartEpoch: dealStartEpoch, StartEpoch: dealStartEpoch,

View File

@ -27,7 +27,8 @@ import (
type DealHarness struct { type DealHarness struct {
t *testing.T t *testing.T
client *TestFullNode client *TestFullNode
miner *TestMiner main *TestMiner
market *TestMiner
} }
type MakeFullDealParams struct { type MakeFullDealParams struct {
@ -37,11 +38,12 @@ type MakeFullDealParams struct {
} }
// NewDealHarness creates a test harness that contains testing utilities for deals. // NewDealHarness creates a test harness that contains testing utilities for deals.
func NewDealHarness(t *testing.T, client *TestFullNode, miner *TestMiner) *DealHarness { func NewDealHarness(t *testing.T, client *TestFullNode, main *TestMiner, market *TestMiner) *DealHarness {
return &DealHarness{ return &DealHarness{
t: t, t: t,
client: client, client: client,
miner: miner, main: main,
market: market,
} }
} }
@ -66,7 +68,7 @@ func (dh *DealHarness) MakeOnlineDeal(ctx context.Context, params MakeFullDealPa
// StartDeal starts a storage deal between the client and the miner. // StartDeal starts a storage deal between the client and the miner.
func (dh *DealHarness) StartDeal(ctx context.Context, fcid cid.Cid, fastRet bool, startEpoch abi.ChainEpoch) *cid.Cid { func (dh *DealHarness) StartDeal(ctx context.Context, fcid cid.Cid, fastRet bool, startEpoch abi.ChainEpoch) *cid.Cid {
maddr, err := dh.miner.ActorAddress(ctx) maddr, err := dh.main.ActorAddress(ctx)
require.NoError(dh.t, err) require.NoError(dh.t, err)
addr, err := dh.client.WalletDefaultAddress(ctx) addr, err := dh.client.WalletDefaultAddress(ctx)
@ -115,7 +117,7 @@ loop:
break loop break loop
} }
mds, err := dh.miner.MarketListIncompleteDeals(ctx) mds, err := dh.market.MarketListIncompleteDeals(ctx)
require.NoError(dh.t, err) require.NoError(dh.t, err)
var minerState storagemarket.StorageDealStatus var minerState storagemarket.StorageDealStatus
@ -139,7 +141,7 @@ func (dh *DealHarness) WaitDealPublished(ctx context.Context, deal *cid.Cid) {
subCtx, cancel := context.WithCancel(ctx) subCtx, cancel := context.WithCancel(ctx)
defer cancel() defer cancel()
updates, err := dh.miner.MarketGetDealUpdates(subCtx) updates, err := dh.market.MarketGetDealUpdates(subCtx)
require.NoError(dh.t, err) require.NoError(dh.t, err)
for { for {
@ -166,19 +168,19 @@ func (dh *DealHarness) WaitDealPublished(ctx context.Context, deal *cid.Cid) {
} }
func (dh *DealHarness) StartSealingWaiting(ctx context.Context) { func (dh *DealHarness) StartSealingWaiting(ctx context.Context) {
snums, err := dh.miner.SectorsList(ctx) snums, err := dh.main.SectorsList(ctx)
require.NoError(dh.t, err) require.NoError(dh.t, err)
for _, snum := range snums { for _, snum := range snums {
si, err := dh.miner.SectorsStatus(ctx, snum, false) si, err := dh.main.SectorsStatus(ctx, snum, false)
require.NoError(dh.t, err) require.NoError(dh.t, err)
dh.t.Logf("Sector state: %s", si.State) dh.t.Logf("Sector state: %s", si.State)
if si.State == api.SectorState(sealing.WaitDeals) { if si.State == api.SectorState(sealing.WaitDeals) {
require.NoError(dh.t, dh.miner.SectorStartSealing(ctx, snum)) require.NoError(dh.t, dh.main.SectorStartSealing(ctx, snum))
} }
dh.miner.FlushSealingBatches(ctx) dh.main.FlushSealingBatches(ctx)
} }
} }