dealpublisher: Use address selector

This commit is contained in:
Łukasz Magiera
2021-07-07 19:12:03 +02:00
parent 8f5c0c60f5
commit ee97aa0a8a
7 changed files with 131 additions and 22 deletions
+30 -6
View File
@@ -11,9 +11,13 @@ import (
"github.com/filecoin-project/lotus/api"
"github.com/filecoin-project/lotus/chain/actors/builtin/market"
"github.com/filecoin-project/lotus/chain/types"
"github.com/filecoin-project/lotus/chain/wallet"
"github.com/filecoin-project/lotus/itests/kit"
"github.com/filecoin-project/lotus/markets/storageadapter"
"github.com/filecoin-project/lotus/node"
"github.com/filecoin-project/lotus/node/config"
"github.com/filecoin-project/lotus/node/modules"
"github.com/filecoin-project/lotus/storage"
market2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/market"
"github.com/stretchr/testify/require"
)
@@ -28,16 +32,34 @@ func TestPublishDealsBatching(t *testing.T) {
kit.QuietMiningLogs()
opts := node.Override(new(*storageadapter.DealPublisher),
storageadapter.NewDealPublisher(nil, storageadapter.PublishMsgConfig{
Period: publishPeriod,
MaxDealsPerMsg: maxDealsPerMsg,
}),
publisherKey, err := wallet.GenerateKey(types.KTSecp256k1)
require.NoError(t, err)
opts := node.Options(
node.Override(new(*storageadapter.DealPublisher),
storageadapter.NewDealPublisher(nil, storageadapter.PublishMsgConfig{
Period: publishPeriod,
MaxDealsPerMsg: maxDealsPerMsg,
}),
),
node.Override(new(*storage.AddressSelector), modules.AddressSelector(&config.MinerAddressConfig{
DealPublishControl: []string{
publisherKey.Address.String(),
},
DisableOwnerFallback: true,
DisableWorkerFallback: true,
})),
kit.LatestActorsAt(-1),
)
client, miner, ens := kit.EnsembleMinimal(t, kit.MockProofs(), kit.ConstructorOpts(opts))
client, miner, ens := kit.EnsembleMinimal(t, kit.Account(publisherKey, types.FromFil(10)), kit.MockProofs(), kit.ConstructorOpts(opts))
ens.InterconnectAll().BeginMining(10 * time.Millisecond)
_, err = client.WalletImport(ctx, &publisherKey.KeyInfo)
require.NoError(t, err)
kit.SetControlAddresses(t, client, miner, publisherKey.Address)
dh := kit.NewDealHarness(t, client, miner)
// Starts a deal and waits until it's published
@@ -93,6 +115,8 @@ func TestPublishDealsBatching(t *testing.T) {
require.NoError(t, err)
require.Len(t, pubDealsParams.Deals, int(maxDealsPerMsg))
}
require.Equal(t, publisherKey.Address.String(), msg.From.String())
}
require.Equal(t, 1, count)
+43
View File
@@ -0,0 +1,43 @@
package kit
import (
"context"
"testing"
"github.com/stretchr/testify/require"
addr "github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/big"
miner2 "github.com/filecoin-project/specs-actors/v2/actors/builtin/miner"
"github.com/filecoin-project/lotus/chain/actors"
"github.com/filecoin-project/lotus/chain/actors/builtin/miner"
"github.com/filecoin-project/lotus/chain/types"
)
func SetControlAddresses(t *testing.T, client *TestFullNode, w *TestMiner, addrs ...addr.Address) {
ctx := context.TODO()
mi, err := client.StateMinerInfo(ctx, w.ActorAddr, types.EmptyTSK)
require.NoError(t, err)
cwp := &miner2.ChangeWorkerAddressParams{
NewWorker: mi.Worker,
NewControlAddrs: addrs,
}
sp, err := actors.SerializeParams(cwp)
require.NoError(t, err)
smsg, err := client.MpoolPushMessage(ctx, &types.Message{
From: mi.Owner,
To: w.ActorAddr,
Method: miner.Methods.ChangeWorkerAddress,
Value: big.Zero(),
Params: sp,
}, nil)
require.NoError(t, err)
WaitMsg(ctx, t, client, smsg.Cid())
}
+7 -2
View File
@@ -2,6 +2,7 @@ package kit
import (
"context"
"github.com/ipfs/go-cid"
"testing"
"github.com/filecoin-project/go-state-types/abi"
@@ -27,8 +28,12 @@ func SendFunds(ctx context.Context, t *testing.T, sender *TestFullNode, recipien
sm, err := sender.MpoolPushMessage(ctx, msg, nil)
require.NoError(t, err)
res, err := sender.StateWaitMsg(ctx, sm.Cid(), 3, api.LookbackNoLimit, true)
WaitMsg(ctx, t, sender, sm.Cid())
}
func WaitMsg(ctx context.Context, t *testing.T, node *TestFullNode, msg cid.Cid) {
res, err := node.StateWaitMsg(ctx, msg, 3, api.LookbackNoLimit, true)
require.NoError(t, err)
require.EqualValues(t, 0, res.Receipt.ExitCode, "did not successfully send funds")
require.EqualValues(t, 0, res.Receipt.ExitCode, "message did not successfully execute")
}