From 55c92716950c37bde2484d4098bcf60a22aa007f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Magiera?= Date: Fri, 21 Jan 2022 13:33:47 +0100 Subject: [PATCH] post workers: Test skips --- itests/kit/ensemble.go | 2 ++ itests/kit/node_miner.go | 2 ++ itests/worker_test.go | 45 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+) diff --git a/itests/kit/ensemble.go b/itests/kit/ensemble.go index 636072462..cdc3cdc31 100644 --- a/itests/kit/ensemble.go +++ b/itests/kit/ensemble.go @@ -635,6 +635,8 @@ func (n *Ensemble) Start() *Ensemble { n.t.Cleanup(func() { _ = stop(context.Background()) }) + m.BaseAPI = m.StorageMiner + // Are we hitting this node through its RPC? if m.options.rpc { withRPC := minerRpc(n.t, m) diff --git a/itests/kit/node_miner.go b/itests/kit/node_miner.go index e5c4bb2f0..a6c68af20 100644 --- a/itests/kit/node_miner.go +++ b/itests/kit/node_miner.go @@ -62,6 +62,8 @@ func (ms MinerSubsystem) All() [MinerSubsystems]bool { type TestMiner struct { api.StorageMiner + BaseAPI api.StorageMiner + t *testing.T // ListenAddr is the address on which an API server is listening, if an diff --git a/itests/worker_test.go b/itests/worker_test.go index 3bc136b5e..d895738e8 100644 --- a/itests/worker_test.go +++ b/itests/worker_test.go @@ -8,11 +8,15 @@ import ( logging "github.com/ipfs/go-log/v2" "github.com/stretchr/testify/require" + "github.com/filecoin-project/go-address" + "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/lotus/build" "github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/extern/sector-storage/sealtasks" "github.com/filecoin-project/lotus/itests/kit" + "github.com/filecoin-project/lotus/node/impl" "github.com/filecoin-project/lotus/storage" + storage2 "github.com/filecoin-project/specs-storage/storage" ) func TestWorkerPledge(t *testing.T) { @@ -111,4 +115,45 @@ func TestWindowPostWorker(t *testing.T) { require.Equal(t, p.MinerPower, p.TotalPower) require.Equal(t, p.MinerPower.RawBytePower, types.NewInt(uint64(ssz)*uint64(sectors))) + + mid, err := address.IDFromAddress(maddr) + require.NoError(t, err) + + di, err = client.StateMinerProvingDeadline(ctx, maddr, types.EmptyTSK) + require.NoError(t, err) + + // Remove one sector in the next deadline (so it's skipped) + { + parts, err := client.StateMinerPartitions(ctx, maddr, di.Index+1, types.EmptyTSK) + require.NoError(t, err) + require.Greater(t, len(parts), 0) + + secs := parts[0].AllSectors + n, err := secs.Count() + require.NoError(t, err) + require.Equal(t, uint64(2), n) + + // Drop the sector + sid, err := secs.First() + + t.Logf("Drop sector %d; dl %d part %d", sid, di.Index+1, 0) + + err = miner.BaseAPI.(*impl.StorageMinerAPI).IStorageMgr.Remove(ctx, storage2.SectorRef{ + ID: abi.SectorID{ + Miner: abi.ActorID(mid), + Number: abi.SectorNumber(sid), + }, + }) + require.NoError(t, err) + } + + waitUntil = di.Close + di.WPoStChallengeWindow + ts = client.WaitTillChain(ctx, kit.HeightAtLeast(waitUntil)) + t.Logf("Now head.Height = %d", ts.Height()) + + p, err = client.StateMinerPower(ctx, maddr, types.EmptyTSK) + require.NoError(t, err) + + require.Equal(t, p.MinerPower, p.TotalPower) + require.Equal(t, p.MinerPower.RawBytePower, types.NewInt(uint64(ssz)*uint64(sectors-1))) }