67 lines
2.0 KiB
Go
67 lines
2.0 KiB
Go
package itests
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
|
|
logging "github.com/ipfs/go-log/v2"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/filecoin-project/lotus/chain/types"
|
|
"github.com/filecoin-project/lotus/itests/kit"
|
|
"github.com/filecoin-project/lotus/storage/sealer/sealtasks"
|
|
)
|
|
|
|
func TestWindowPostNoMinerStorage(t *testing.T) {
|
|
ctx, cancel := context.WithCancel(context.Background())
|
|
defer cancel()
|
|
|
|
_ = logging.SetLogLevel("storageminer", "INFO")
|
|
|
|
sealSectors := 2
|
|
presealSectors := 2*48*2 - sealSectors
|
|
|
|
sectors := presealSectors + sealSectors
|
|
|
|
var (
|
|
client kit.TestFullNode
|
|
miner kit.TestMiner
|
|
wiw, wdw, sealw kit.TestWorker
|
|
)
|
|
ens := kit.NewEnsemble(t, kit.LatestActorsAt(-1)).
|
|
FullNode(&client, kit.ThroughRPC()).
|
|
Miner(&miner, &client, kit.WithAllSubsystems(), kit.ThroughRPC(), kit.PresealSectors(presealSectors), kit.NoStorage()).
|
|
Worker(&miner, &wiw, kit.ThroughRPC(), kit.WithTaskTypes([]sealtasks.TaskType{sealtasks.TTGenerateWinningPoSt})).
|
|
Worker(&miner, &wdw, kit.ThroughRPC(), kit.WithTaskTypes([]sealtasks.TaskType{sealtasks.TTGenerateWindowPoSt})).
|
|
Worker(&miner, &sealw, kit.ThroughRPC(), kit.WithSealWorkerTasks).
|
|
Start()
|
|
|
|
ens.InterconnectAll().BeginMiningMustPost(10 * time.Millisecond)
|
|
|
|
miner.PledgeSectors(ctx, sealSectors, 0, nil)
|
|
|
|
maddr, err := miner.ActorAddress(ctx)
|
|
require.NoError(t, err)
|
|
|
|
di, err := client.StateMinerProvingDeadline(ctx, maddr, types.EmptyTSK)
|
|
require.NoError(t, err)
|
|
di = di.NextNotElapsed()
|
|
|
|
// wait for new sectors to become active
|
|
waitUntil := di.Close + di.WPoStChallengeWindow*2 + di.WPoStProvingPeriod
|
|
t.Logf("Wait Height > %d", waitUntil)
|
|
|
|
ts := client.WaitTillChain(ctx, kit.HeightAtLeast(waitUntil))
|
|
t.Logf("Now Height = %d", ts.Height())
|
|
|
|
p, err := client.StateMinerPower(ctx, maddr, types.EmptyTSK)
|
|
require.NoError(t, err)
|
|
|
|
ssz, err := miner.ActorSectorSize(ctx, maddr)
|
|
require.NoError(t, err)
|
|
|
|
require.Equal(t, p.MinerPower, p.TotalPower)
|
|
require.Equal(t, p.MinerPower.RawBytePower, types.NewInt(uint64(ssz)*uint64(sectors)))
|
|
}
|