From 8abb50457a84b1ca08fdd5c6b5f0f21c0958d8ee Mon Sep 17 00:00:00 2001 From: Tyler <48813565+technicallyty@users.noreply.github.com> Date: Mon, 1 Jul 2024 09:58:56 -0700 Subject: [PATCH 1/6] preblock fix --- tests/simapp/app.go | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/tests/simapp/app.go b/tests/simapp/app.go index 65d3c17d8..385885eb7 100644 --- a/tests/simapp/app.go +++ b/tests/simapp/app.go @@ -2,6 +2,7 @@ package simapp import ( "context" + "github.com/cometbft/cometbft/abci/types" "io" "os" "path/filepath" @@ -366,7 +367,7 @@ func NewSimApp( ), ) - app.SetPreBlocker(oraclePreBlockHandler.PreBlocker()) + app.wrapAndSetPreBlocker(oraclePreBlockHandler.PreBlocker()) // Create the vote extensions handler that will be used to extend and verify // vote extensions (i.e. oracle data). @@ -530,6 +531,28 @@ func (app *SimApp) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APICon } } +// wrapAndSetPreBlocker sets the application's PreBlocker while still calling the originals. +// This is needed to set custom PreBlock logic, but still allow things like x/upgrade to function. +func (app *SimApp) wrapAndSetPreBlocker(pb sdk.PreBlocker) { + app.SetPreBlocker(func(ctx sdk.Context, block *types.RequestFinalizeBlock) (*sdk.ResponsePreBlock, error) { + // call app's preblocker first in case there is changes made on upgrades + // that can modify state and lead to serialization/deserialization issues + resp, err := app.ModuleManager.PreBlock(ctx) + if err != nil { + return resp, err + } + + // call the extra PreBlocker. + _, err = pb(ctx, block) + if err != nil { + return &sdk.ResponsePreBlock{}, err + } + + // return resp from app's preblocker which can return consensus param changed flag + return resp, nil + }) +} + // GetMaccPerms returns a copy of the module account permissions // // NOTE: This is solely to be used for testing purposes. From cfc939f7d7a243648e613a04e0eaef05b16b9cc1 Mon Sep 17 00:00:00 2001 From: Tyler <48813565+technicallyty@users.noreply.github.com> Date: Mon, 1 Jul 2024 10:07:38 -0700 Subject: [PATCH 2/6] linter --- tests/simapp/app.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/simapp/app.go b/tests/simapp/app.go index 385885eb7..34cf3dab0 100644 --- a/tests/simapp/app.go +++ b/tests/simapp/app.go @@ -2,7 +2,6 @@ package simapp import ( "context" - "github.com/cometbft/cometbft/abci/types" "io" "os" "path/filepath" @@ -14,6 +13,7 @@ import ( circuitkeeper "cosmossdk.io/x/circuit/keeper" "cosmossdk.io/x/upgrade" upgradekeeper "cosmossdk.io/x/upgrade/keeper" + "github.com/cometbft/cometbft/abci/types" dbm "github.com/cosmos/cosmos-db" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" From bb85d4c65e06e858a29d335d24fb9486f18f095d Mon Sep 17 00:00:00 2001 From: Tyler <48813565+technicallyty@users.noreply.github.com> Date: Mon, 1 Jul 2024 10:38:58 -0700 Subject: [PATCH 3/6] make PreBlocker take module manager and call PreBlock --- abci/preblock/oracle/preblock.go | 17 +++++++++++---- abci/preblock/oracle/preblock_test.go | 30 ++++++++++++++------------- tests/simapp/app.go | 25 +--------------------- 3 files changed, 30 insertions(+), 42 deletions(-) diff --git a/abci/preblock/oracle/preblock.go b/abci/preblock/oracle/preblock.go index 845e7b53e..7fb7429a0 100644 --- a/abci/preblock/oracle/preblock.go +++ b/abci/preblock/oracle/preblock.go @@ -5,6 +5,8 @@ import ( "math/big" "time" + "github.com/cosmos/cosmos-sdk/types/module" + "cosmossdk.io/log" cometabci "github.com/cometbft/cometbft/abci/types" sdk "github.com/cosmos/cosmos-sdk/types" @@ -70,9 +72,9 @@ func NewOraclePreBlockHandler( } // PreBlocker is called by the base app before the block is finalized. It -// is responsible for aggregating oracle data from each validator and writing -// the oracle data to the store. -func (h *PreBlockHandler) PreBlocker() sdk.PreBlocker { +// is responsible for running the module manager's PreBlock function (in case of upgrades), +// aggregating oracle data from each validator, and writing the oracle data to the store. +func (h *PreBlockHandler) PreBlocker(mm *module.Manager) sdk.PreBlocker { return func(ctx sdk.Context, req *cometabci.RequestFinalizeBlock) (_ *sdk.ResponsePreBlock, err error) { if req == nil { ctx.Logger().Error( @@ -83,6 +85,13 @@ func (h *PreBlockHandler) PreBlocker() sdk.PreBlocker { return &sdk.ResponsePreBlock{}, fmt.Errorf("received nil RequestFinalizeBlock in oracle preblocker: height %d", ctx.BlockHeight()) } + // call module manager's PreBlocker first in case there is changes made on upgrades + // that can modify state and lead to serialization/deserialization issues + response, err := mm.PreBlock(ctx) + if err != nil { + return nil, err + } + start := time.Now() var prices map[slinkytypes.CurrencyPair]*big.Int defer func() { @@ -134,6 +143,6 @@ func (h *PreBlockHandler) PreBlocker() sdk.PreBlocker { return &sdk.ResponsePreBlock{}, err } - return &sdk.ResponsePreBlock{}, nil + return response, nil } } diff --git a/abci/preblock/oracle/preblock_test.go b/abci/preblock/oracle/preblock_test.go index 364b8d38f..98aed6052 100644 --- a/abci/preblock/oracle/preblock_test.go +++ b/abci/preblock/oracle/preblock_test.go @@ -1,6 +1,7 @@ package oracle_test import ( + "github.com/cosmos/cosmos-sdk/types/module" "math/big" "testing" @@ -50,6 +51,7 @@ type PreBlockTestSuite struct { veCodec compression.VoteExtensionCodec commitCodec compression.ExtendedCommitCodec mockMetrics *metricmock.Metrics + mm *module.Manager } func TestPreBlockTestSuite(t *testing.T) { @@ -57,8 +59,8 @@ func TestPreBlockTestSuite(t *testing.T) { } func (s *PreBlockTestSuite) SetupTest() { + s.mm = &module.Manager{} s.myVal = sdk.ConsAddress("myVal") - s.currencyPairs = []slinkytypes.CurrencyPair{ { Base: "BTC", @@ -157,7 +159,7 @@ func (s *PreBlockTestSuite) TestPreBlocker() { s.commitCodec, ) - _, err := s.handler.PreBlocker()(s.ctx, nil) + _, err := s.handler.PreBlocker(s.mm)(s.ctx, nil) s.Require().Error(err) // require no updates @@ -183,7 +185,7 @@ func (s *PreBlockTestSuite) TestPreBlocker() { s.commitCodec, ) - _, err := s.handler.PreBlocker()(s.ctx, &cometabci.RequestFinalizeBlock{}) + _, err := s.handler.PreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{}) s.Require().NoError(err) // require no updates @@ -264,7 +266,7 @@ func (s *PreBlockTestSuite) TestPreBlocker() { mockValidatorStore.On("TotalBondedTokens", s.ctx).Return(math.NewInt(2), nil) - _, err = s.handler.PreBlocker()(s.ctx, &cometabci.RequestFinalizeBlock{ + _, err = s.handler.PreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{ Txs: [][]byte{extCommitBz}, }) s.Require().NoError(err) @@ -347,7 +349,7 @@ func (s *PreBlockTestSuite) TestPreBlocker() { mockValidatorStore.On("TotalBondedTokens", s.ctx).Return(math.NewInt(2), nil) - _, err = s.handler.PreBlocker()(s.ctx, &cometabci.RequestFinalizeBlock{ + _, err = s.handler.PreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{ Txs: [][]byte{extCommitBz}, }) s.Require().NoError(err) @@ -376,7 +378,7 @@ func (s *PreBlockTestSuite) TestPreblockLatency() { ) // run preblocker - _, err := s.handler.PreBlocker()(s.ctx, &cometabci.RequestFinalizeBlock{}) + _, err := s.handler.PreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{}) s.Require().NoError(err) }) @@ -394,7 +396,7 @@ func (s *PreBlockTestSuite) TestPreblockLatency() { s.mockMetrics.On("ObserveABCIMethodLatency", servicemetrics.PreBlock, mock.Anything).Return() s.mockMetrics.On("AddABCIRequest", servicemetrics.PreBlock, mock.Anything) // run preblocker - _, err := s.handler.PreBlocker()(s.ctx, &cometabci.RequestFinalizeBlock{ + _, err := s.handler.PreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{ Height: 1, }) s.Require().NoError(err) @@ -419,7 +421,7 @@ func (s *PreBlockTestSuite) TestPreBlockStatus() { ) // run preblocker - _, err := handler.PreBlocker()(s.ctx, nil) + _, err := handler.PreBlocker(s.mm)(s.ctx, nil) s.Require().Error(err) }) @@ -442,7 +444,7 @@ func (s *PreBlockTestSuite) TestPreBlockStatus() { metrics.On("ObserveABCIMethodLatency", servicemetrics.PreBlock, mock.Anything).Return() metrics.On("AddABCIRequest", servicemetrics.PreBlock, servicemetrics.Success{}).Return() // run preblocker - _, err := handler.PreBlocker()(s.ctx, &cometabci.RequestFinalizeBlock{}) + _, err := handler.PreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{}) s.Require().NoError(err) }) @@ -470,7 +472,7 @@ func (s *PreBlockTestSuite) TestPreBlockStatus() { s.ctx = testutils.UpdateContextWithVEHeight(s.ctx, 2) s.ctx = s.ctx.WithBlockHeight(4) // run preblocker - _, err := handler.PreBlocker()(s.ctx, &cometabci.RequestFinalizeBlock{ + _, err := handler.PreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{ Txs: [][]byte{}, }) s.Require().Error(err, expErr) @@ -520,7 +522,7 @@ func (s *PreBlockTestSuite) TestPreBlockStatus() { mockOracleKeeper.On("GetAllCurrencyPairs", s.ctx).Return(nil) // run preblocker - _, err := handler.PreBlocker()(s.ctx, &cometabci.RequestFinalizeBlock{ + _, err := handler.PreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{ Txs: [][]byte{ []byte("abc"), }, @@ -553,7 +555,7 @@ func (s *PreBlockTestSuite) TestValidatorReports() { // enable vote-extensions s.ctx = testutils.UpdateContextWithVEHeight(s.ctx, 2) req := &cometabci.RequestFinalizeBlock{} - _, err := handler.PreBlocker()(s.ctx, req) + _, err := handler.PreBlocker(s.mm)(s.ctx, req) s.Require().NoError(err) }) @@ -584,7 +586,7 @@ func (s *PreBlockTestSuite) TestValidatorReports() { s.ctx = s.ctx.WithBlockHeight(4) s.ctx = s.ctx.WithExecMode(sdk.ExecModeFinalize) // run preblocker - _, err := handler.PreBlocker()(s.ctx, &cometabci.RequestFinalizeBlock{}) + _, err := handler.PreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{}) s.Require().Error(err, types.MissingCommitInfoError{}) }) @@ -678,7 +680,7 @@ func (s *PreBlockTestSuite) TestValidatorReports() { metrics.On("AddValidatorReportForTicker", val3.String(), mogUsd, servicemetrics.Absent) // run preblocker - _, err = handler.PreBlocker()(s.ctx, &cometabci.RequestFinalizeBlock{ + _, err = handler.PreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{ Txs: [][]byte{extCommitBz}, DecidedLastCommit: cometabci.CommitInfo{ Votes: []cometabci.VoteInfo{ diff --git a/tests/simapp/app.go b/tests/simapp/app.go index 34cf3dab0..6bae52a93 100644 --- a/tests/simapp/app.go +++ b/tests/simapp/app.go @@ -13,7 +13,6 @@ import ( circuitkeeper "cosmossdk.io/x/circuit/keeper" "cosmossdk.io/x/upgrade" upgradekeeper "cosmossdk.io/x/upgrade/keeper" - "github.com/cometbft/cometbft/abci/types" dbm "github.com/cosmos/cosmos-db" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" @@ -367,7 +366,7 @@ func NewSimApp( ), ) - app.wrapAndSetPreBlocker(oraclePreBlockHandler.PreBlocker()) + app.SetPreBlocker(oraclePreBlockHandler.PreBlocker(app.ModuleManager)) // Create the vote extensions handler that will be used to extend and verify // vote extensions (i.e. oracle data). @@ -531,28 +530,6 @@ func (app *SimApp) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APICon } } -// wrapAndSetPreBlocker sets the application's PreBlocker while still calling the originals. -// This is needed to set custom PreBlock logic, but still allow things like x/upgrade to function. -func (app *SimApp) wrapAndSetPreBlocker(pb sdk.PreBlocker) { - app.SetPreBlocker(func(ctx sdk.Context, block *types.RequestFinalizeBlock) (*sdk.ResponsePreBlock, error) { - // call app's preblocker first in case there is changes made on upgrades - // that can modify state and lead to serialization/deserialization issues - resp, err := app.ModuleManager.PreBlock(ctx) - if err != nil { - return resp, err - } - - // call the extra PreBlocker. - _, err = pb(ctx, block) - if err != nil { - return &sdk.ResponsePreBlock{}, err - } - - // return resp from app's preblocker which can return consensus param changed flag - return resp, nil - }) -} - // GetMaccPerms returns a copy of the module account permissions // // NOTE: This is solely to be used for testing purposes. From 716c03726089a309a857de63a574caab2a99d4bc Mon Sep 17 00:00:00 2001 From: Tyler <48813565+technicallyty@users.noreply.github.com> Date: Mon, 1 Jul 2024 10:42:16 -0700 Subject: [PATCH 4/6] linter --- abci/preblock/oracle/preblock_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/abci/preblock/oracle/preblock_test.go b/abci/preblock/oracle/preblock_test.go index 98aed6052..d24857620 100644 --- a/abci/preblock/oracle/preblock_test.go +++ b/abci/preblock/oracle/preblock_test.go @@ -1,7 +1,6 @@ package oracle_test import ( - "github.com/cosmos/cosmos-sdk/types/module" "math/big" "testing" @@ -11,6 +10,7 @@ import ( cometabci "github.com/cometbft/cometbft/abci/types" cometproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" From 9bea23be65cad3b88ad5972e86c6e447e9a1d3cd Mon Sep 17 00:00:00 2001 From: Tyler <48813565+technicallyty@users.noreply.github.com> Date: Mon, 1 Jul 2024 13:10:49 -0700 Subject: [PATCH 5/6] make new method, add deprecate comment, add test for module manager preblocker --- abci/preblock/oracle/preblock.go | 88 ++++++++++++++++++++++++--- abci/preblock/oracle/preblock_test.go | 69 ++++++++++++++++----- tests/simapp/app.go | 2 +- 3 files changed, 136 insertions(+), 23 deletions(-) diff --git a/abci/preblock/oracle/preblock.go b/abci/preblock/oracle/preblock.go index 7fb7429a0..e9ebac803 100644 --- a/abci/preblock/oracle/preblock.go +++ b/abci/preblock/oracle/preblock.go @@ -71,11 +71,11 @@ func NewOraclePreBlockHandler( } } -// PreBlocker is called by the base app before the block is finalized. It -// is responsible for running the module manager's PreBlock function (in case of upgrades), -// aggregating oracle data from each validator, and writing the oracle data to the store. -func (h *PreBlockHandler) PreBlocker(mm *module.Manager) sdk.PreBlocker { - return func(ctx sdk.Context, req *cometabci.RequestFinalizeBlock) (_ *sdk.ResponsePreBlock, err error) { +// WrappedPreBlocker is called by the base app before the block is finalized. It +// is responsible for calling the module manager's PreBlock method, aggregating oracle data from each validator and +// writing the oracle data to the store. +func (h *PreBlockHandler) WrappedPreBlocker(mm *module.Manager) sdk.PreBlocker { + return func(ctx sdk.Context, req *cometabci.RequestFinalizeBlock) (response *sdk.ResponsePreBlock, err error) { if req == nil { ctx.Logger().Error( "received nil RequestFinalizeBlock in oracle preblocker", @@ -87,9 +87,81 @@ func (h *PreBlockHandler) PreBlocker(mm *module.Manager) sdk.PreBlocker { // call module manager's PreBlocker first in case there is changes made on upgrades // that can modify state and lead to serialization/deserialization issues - response, err := mm.PreBlock(ctx) + response, err = mm.PreBlock(ctx) if err != nil { - return nil, err + return response, err + } + + start := time.Now() + var prices map[slinkytypes.CurrencyPair]*big.Int + defer func() { + // only measure latency in Finalize + if ctx.ExecMode() == sdk.ExecModeFinalize { + latency := time.Since(start) + h.logger.Debug( + "finished executing the pre-block hook", + "height", ctx.BlockHeight(), + "latency (seconds)", latency.Seconds(), + ) + slinkyabcitypes.RecordLatencyAndStatus(h.metrics, latency, err, servicemetrics.PreBlock) + + // record prices + ticker metrics per validator (only do so if there was no error writing the prices) + if err == nil && prices != nil { + // record price metrics + h.recordPrices(prices) + + // record validator report metrics + h.recordValidatorReports(ctx, req.DecidedLastCommit) + } + } + }() + + // If vote extensions are not enabled, then we don't need to do anything. + if !ve.VoteExtensionsEnabled(ctx) { + h.logger.Info( + "vote extensions are not enabled", + "height", ctx.BlockHeight(), + ) + + return response, nil + } + + h.logger.Debug( + "executing the pre-finalize block hook", + "height", req.Height, + ) + + // decode vote-extensions + apply prices to state + prices, err = h.pa.ApplyPricesFromVoteExtensions(ctx, req) + if err != nil { + h.logger.Error( + "failed to apply prices from vote extensions", + "height", req.Height, + "error", err, + ) + + return response, err + } + + return response, nil + } +} + +// PreBlocker is called by the base app before the block is finalized. It +// is responsible for aggregating oracle data from each validator and writing +// the oracle data to the store. +// +// Deprecated: using PreBlocker requires wrapping module Manager's PreBlock call. This method should no longer be used. +// Use WrappedPreBlocker instead to handle this functionality automatically. +func (h *PreBlockHandler) PreBlocker() sdk.PreBlocker { + return func(ctx sdk.Context, req *cometabci.RequestFinalizeBlock) (_ *sdk.ResponsePreBlock, err error) { + if req == nil { + ctx.Logger().Error( + "received nil RequestFinalizeBlock in oracle preblocker", + "height", ctx.BlockHeight(), + ) + + return &sdk.ResponsePreBlock{}, fmt.Errorf("received nil RequestFinalizeBlock in oracle preblocker: height %d", ctx.BlockHeight()) } start := time.Now() @@ -143,6 +215,6 @@ func (h *PreBlockHandler) PreBlocker(mm *module.Manager) sdk.PreBlocker { return &sdk.ResponsePreBlock{}, err } - return response, nil + return &sdk.ResponsePreBlock{}, nil } } diff --git a/abci/preblock/oracle/preblock_test.go b/abci/preblock/oracle/preblock_test.go index d24857620..fc3f3ce56 100644 --- a/abci/preblock/oracle/preblock_test.go +++ b/abci/preblock/oracle/preblock_test.go @@ -1,9 +1,11 @@ package oracle_test import ( + "context" "math/big" "testing" + "cosmossdk.io/core/appmodule" "cosmossdk.io/log" "cosmossdk.io/math" storetypes "cosmossdk.io/store/types" @@ -59,7 +61,7 @@ func TestPreBlockTestSuite(t *testing.T) { } func (s *PreBlockTestSuite) SetupTest() { - s.mm = &module.Manager{} + s.mm = &module.Manager{Modules: map[string]interface{}{}, OrderPreBlockers: make([]string, 0)} s.myVal = sdk.ConsAddress("myVal") s.currencyPairs = []slinkytypes.CurrencyPair{ { @@ -140,6 +142,23 @@ func (s *PreBlockTestSuite) SetupSubTest() { ) } +type fakeModule struct{ called int } + +func (f *fakeModule) IsOnePerModuleType() {} + +func (f *fakeModule) IsAppModule() {} + +func (f *fakeModule) Name() string { return "fake" } + +type response struct{} + +func (r response) IsConsensusParamsChanged() bool { return true } + +func (f *fakeModule) PreBlock(ctx context.Context) (appmodule.ResponsePreBlock, error) { + f.called++ + return &response{}, nil +} + func (s *PreBlockTestSuite) TestPreBlocker() { mockValidatorStore := voteweightedmocks.NewValidatorStore(s.T()) aggregationFn := voteweighted.MedianFromContext( @@ -159,7 +178,7 @@ func (s *PreBlockTestSuite) TestPreBlocker() { s.commitCodec, ) - _, err := s.handler.PreBlocker(s.mm)(s.ctx, nil) + _, err := s.handler.WrappedPreBlocker(s.mm)(s.ctx, nil) s.Require().Error(err) // require no updates @@ -185,7 +204,7 @@ func (s *PreBlockTestSuite) TestPreBlocker() { s.commitCodec, ) - _, err := s.handler.PreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{}) + _, err := s.handler.WrappedPreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{}) s.Require().NoError(err) // require no updates @@ -198,6 +217,28 @@ func (s *PreBlockTestSuite) TestPreBlocker() { } }) + s.Run("manager PreBlock is called", func() { + s.ctx = testutils.UpdateContextWithVEHeight(s.ctx, 2).WithBlockHeight(1) + + s.handler = preblock.NewOraclePreBlockHandler( + log.NewTestLogger(s.T()), + aggregationFn, + &s.oracleKeeper, + servicemetrics.NewNopMetrics(), + s.cpID, + s.veCodec, + s.commitCodec, + ) + // setup fake module. + fake := &fakeModule{} + s.mm.OrderPreBlockers = []string{fake.Name()} + s.mm.Modules[fake.Name()] = fake + res, err := s.handler.WrappedPreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{}) + s.Require().NoError(err) + s.Require().Equal(fake.called, 1) + s.Require().True(res.IsConsensusParamsChanged()) // should return the response set above the fake module def. + }) + // update ctx to enable ves s.ctx = s.ctx.WithBlockHeight(3) @@ -266,7 +307,7 @@ func (s *PreBlockTestSuite) TestPreBlocker() { mockValidatorStore.On("TotalBondedTokens", s.ctx).Return(math.NewInt(2), nil) - _, err = s.handler.PreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{ + _, err = s.handler.WrappedPreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{ Txs: [][]byte{extCommitBz}, }) s.Require().NoError(err) @@ -349,7 +390,7 @@ func (s *PreBlockTestSuite) TestPreBlocker() { mockValidatorStore.On("TotalBondedTokens", s.ctx).Return(math.NewInt(2), nil) - _, err = s.handler.PreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{ + _, err = s.handler.WrappedPreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{ Txs: [][]byte{extCommitBz}, }) s.Require().NoError(err) @@ -378,7 +419,7 @@ func (s *PreBlockTestSuite) TestPreblockLatency() { ) // run preblocker - _, err := s.handler.PreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{}) + _, err := s.handler.WrappedPreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{}) s.Require().NoError(err) }) @@ -396,7 +437,7 @@ func (s *PreBlockTestSuite) TestPreblockLatency() { s.mockMetrics.On("ObserveABCIMethodLatency", servicemetrics.PreBlock, mock.Anything).Return() s.mockMetrics.On("AddABCIRequest", servicemetrics.PreBlock, mock.Anything) // run preblocker - _, err := s.handler.PreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{ + _, err := s.handler.WrappedPreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{ Height: 1, }) s.Require().NoError(err) @@ -421,7 +462,7 @@ func (s *PreBlockTestSuite) TestPreBlockStatus() { ) // run preblocker - _, err := handler.PreBlocker(s.mm)(s.ctx, nil) + _, err := handler.WrappedPreBlocker(s.mm)(s.ctx, nil) s.Require().Error(err) }) @@ -444,7 +485,7 @@ func (s *PreBlockTestSuite) TestPreBlockStatus() { metrics.On("ObserveABCIMethodLatency", servicemetrics.PreBlock, mock.Anything).Return() metrics.On("AddABCIRequest", servicemetrics.PreBlock, servicemetrics.Success{}).Return() // run preblocker - _, err := handler.PreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{}) + _, err := handler.WrappedPreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{}) s.Require().NoError(err) }) @@ -472,7 +513,7 @@ func (s *PreBlockTestSuite) TestPreBlockStatus() { s.ctx = testutils.UpdateContextWithVEHeight(s.ctx, 2) s.ctx = s.ctx.WithBlockHeight(4) // run preblocker - _, err := handler.PreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{ + _, err := handler.WrappedPreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{ Txs: [][]byte{}, }) s.Require().Error(err, expErr) @@ -522,7 +563,7 @@ func (s *PreBlockTestSuite) TestPreBlockStatus() { mockOracleKeeper.On("GetAllCurrencyPairs", s.ctx).Return(nil) // run preblocker - _, err := handler.PreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{ + _, err := handler.WrappedPreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{ Txs: [][]byte{ []byte("abc"), }, @@ -555,7 +596,7 @@ func (s *PreBlockTestSuite) TestValidatorReports() { // enable vote-extensions s.ctx = testutils.UpdateContextWithVEHeight(s.ctx, 2) req := &cometabci.RequestFinalizeBlock{} - _, err := handler.PreBlocker(s.mm)(s.ctx, req) + _, err := handler.WrappedPreBlocker(s.mm)(s.ctx, req) s.Require().NoError(err) }) @@ -586,7 +627,7 @@ func (s *PreBlockTestSuite) TestValidatorReports() { s.ctx = s.ctx.WithBlockHeight(4) s.ctx = s.ctx.WithExecMode(sdk.ExecModeFinalize) // run preblocker - _, err := handler.PreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{}) + _, err := handler.WrappedPreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{}) s.Require().Error(err, types.MissingCommitInfoError{}) }) @@ -680,7 +721,7 @@ func (s *PreBlockTestSuite) TestValidatorReports() { metrics.On("AddValidatorReportForTicker", val3.String(), mogUsd, servicemetrics.Absent) // run preblocker - _, err = handler.PreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{ + _, err = handler.WrappedPreBlocker(s.mm)(s.ctx, &cometabci.RequestFinalizeBlock{ Txs: [][]byte{extCommitBz}, DecidedLastCommit: cometabci.CommitInfo{ Votes: []cometabci.VoteInfo{ diff --git a/tests/simapp/app.go b/tests/simapp/app.go index 6bae52a93..29961b4a3 100644 --- a/tests/simapp/app.go +++ b/tests/simapp/app.go @@ -366,7 +366,7 @@ func NewSimApp( ), ) - app.SetPreBlocker(oraclePreBlockHandler.PreBlocker(app.ModuleManager)) + app.SetPreBlocker(oraclePreBlockHandler.WrappedPreBlocker(app.ModuleManager)) // Create the vote extensions handler that will be used to extend and verify // vote extensions (i.e. oracle data). From 316a952b2530266f0ffe077e19837d541fadc4bc Mon Sep 17 00:00:00 2001 From: Tyler <48813565+technicallyty@users.noreply.github.com> Date: Mon, 1 Jul 2024 13:14:05 -0700 Subject: [PATCH 6/6] linter --- abci/preblock/oracle/preblock_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/abci/preblock/oracle/preblock_test.go b/abci/preblock/oracle/preblock_test.go index fc3f3ce56..06cf3663e 100644 --- a/abci/preblock/oracle/preblock_test.go +++ b/abci/preblock/oracle/preblock_test.go @@ -154,7 +154,7 @@ type response struct{} func (r response) IsConsensusParamsChanged() bool { return true } -func (f *fakeModule) PreBlock(ctx context.Context) (appmodule.ResponsePreBlock, error) { +func (f *fakeModule) PreBlock(_ context.Context) (appmodule.ResponsePreBlock, error) { f.called++ return &response{}, nil }