From 726aa6fdacfdb372252c183b0ce2337d78c8ccd4 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Sat, 16 Dec 2023 19:38:37 +0900 Subject: [PATCH] test: fix tests(finalize block, commit) --- app/ante/utils_test.go | 7 +++++++ x/evm/keeper/grpc_query_test.go | 21 --------------------- x/evm/keeper/keeper_test.go | 10 ++++++++-- x/feemarket/keeper/integration_test.go | 11 ++++++++++- 4 files changed, 25 insertions(+), 24 deletions(-) diff --git a/app/ante/utils_test.go b/app/ante/utils_test.go index 6a761af237..3024c0ab1a 100644 --- a/app/ante/utils_test.go +++ b/app/ante/utils_test.go @@ -24,6 +24,7 @@ import ( "github.com/ethereum/go-ethereum/common" ethtypes "github.com/ethereum/go-ethereum/core/types" + ethparams "github.com/ethereum/go-ethereum/params" signingv1beta1 "cosmossdk.io/api/cosmos/tx/signing/v1beta1" sdkmath "cosmossdk.io/math" @@ -179,6 +180,12 @@ func (suite *AnteTestSuite) SetupTest() { suite.ctx, err = testutil.Commit(suite.ctx, suite.app, time.Second*0, nil) suite.Require().NoError(err) + // The BeginBlock, DeliverTx, and EndBlock logic has been combined into one FinalizeBlock logic. + // Compared to the old logic, the BaseFee has changed because testutil.commit() returns a + // ctx in the state in which BeginBlock was called, so we force it to be set to the + // initial state and proceed with the test. + suite.app.FeeMarketKeeper.SetBaseFee(suite.ctx, sdkmath.NewInt(ethparams.InitialBaseFee).BigInt()) + legacytx.RegressionTestingAminoCodec = encodingConfig.Amino } diff --git a/x/evm/keeper/grpc_query_test.go b/x/evm/keeper/grpc_query_test.go index 73713d4a24..c36559733b 100644 --- a/x/evm/keeper/grpc_query_test.go +++ b/x/evm/keeper/grpc_query_test.go @@ -7,7 +7,6 @@ import ( sdkmath "cosmossdk.io/math" - abci "github.com/cometbft/cometbft/abci/types" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/core/vm" @@ -578,8 +577,6 @@ func (suite *KeeperTestSuite) TestEstimateGas() { "erc20 transfer", func() { contractAddr := suite.DeployTestContract(suite.T(), suite.address, sdkmath.NewIntWithDecimal(1000, 18).BigInt()) - _, err := suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{Height: suite.ctx.BlockHeight()}) - suite.Require().NoError(err) suite.Commit() transferData, err := types.ERC20Contract.ABI.Pack("transfer", common.HexToAddress("0x378c50D9264C63F3F92B806d4ee56E9D86FfB3Ec"), big.NewInt(1000)) suite.Require().NoError(err) @@ -655,8 +652,6 @@ func (suite *KeeperTestSuite) TestEstimateGas() { "erc20 transfer w/ enableFeemarket", func() { contractAddr := suite.DeployTestContract(suite.T(), suite.address, sdkmath.NewIntWithDecimal(1000, 18).BigInt()) - _, err := suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{Height: suite.ctx.BlockHeight()}) - suite.Require().NoError(err) suite.Commit() transferData, err := types.ERC20Contract.ABI.Pack("transfer", common.HexToAddress("0x378c50D9264C63F3F92B806d4ee56E9D86FfB3Ec"), big.NewInt(1000)) suite.Require().NoError(err) @@ -838,14 +833,10 @@ func (suite *KeeperTestSuite) TestTraceTx() { suite.Require().NoError(vmdb.Commit()) contractAddr := suite.DeployTestContract(suite.T(), suite.address, sdkmath.NewIntWithDecimal(1000, 18).BigInt()) - _, err := suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{Height: suite.ctx.BlockHeight()}) - suite.Require().NoError(err) suite.Commit() // Generate token transfer transaction firstTx := suite.TransferERC20Token(suite.T(), contractAddr, suite.address, common.HexToAddress("0x378c50D9264C63F3F92B806d4ee56E9D86FfB3Ec"), sdkmath.NewIntWithDecimal(1, 18).BigInt()) txMsg = suite.TransferERC20Token(suite.T(), contractAddr, suite.address, common.HexToAddress("0x378c50D9264C63F3F92B806d4ee56E9D86FfB3Ec"), sdkmath.NewIntWithDecimal(1, 18).BigInt()) - _, err = suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{Height: suite.ctx.BlockHeight()}) - suite.Require().NoError(err) predecessors = append(predecessors, firstTx) }, @@ -941,13 +932,9 @@ func (suite *KeeperTestSuite) TestTraceTx() { suite.SetupTest() // Deploy contract contractAddr := suite.DeployTestContract(suite.T(), suite.address, sdkmath.NewIntWithDecimal(1000, 18).BigInt()) - _, err := suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{Height: suite.ctx.BlockHeight()}) - suite.Require().NoError(err) suite.Commit() // Generate token transfer transaction txMsg = suite.TransferERC20Token(suite.T(), contractAddr, suite.address, common.HexToAddress("0x378c50D9264C63F3F92B806d4ee56E9D86FfB3Ec"), sdkmath.NewIntWithDecimal(1, 18).BigInt()) - _, err = suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{Height: suite.ctx.BlockHeight()}) - suite.Require().NoError(err) suite.Commit() tc.malleate() @@ -1065,14 +1052,10 @@ func (suite *KeeperTestSuite) TestTraceBlock() { suite.Require().NoError(vmdb.Commit()) contractAddr := suite.DeployTestContract(suite.T(), suite.address, sdkmath.NewIntWithDecimal(1000, 18).BigInt()) - _, err := suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{Height: suite.ctx.BlockHeight()}) - suite.Require().NoError(err) suite.Commit() // create multiple transactions in the same block firstTx := suite.TransferERC20Token(suite.T(), contractAddr, suite.address, common.HexToAddress("0x378c50D9264C63F3F92B806d4ee56E9D86FfB3Ec"), sdkmath.NewIntWithDecimal(1, 18).BigInt()) secondTx := suite.TransferERC20Token(suite.T(), contractAddr, suite.address, common.HexToAddress("0x378c50D9264C63F3F92B806d4ee56E9D86FfB3Ec"), sdkmath.NewIntWithDecimal(1, 18).BigInt()) - _, err = suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{Height: suite.ctx.BlockHeight()}) - suite.Require().NoError(err) // overwrite txs to include only the ones on new block txs = append([]*types.MsgEthereumTx{}, firstTx, secondTx) }, @@ -1124,13 +1107,9 @@ func (suite *KeeperTestSuite) TestTraceBlock() { suite.SetupTest() // Deploy contract contractAddr := suite.DeployTestContract(suite.T(), suite.address, sdkmath.NewIntWithDecimal(1000, 18).BigInt()) - _, err := suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{Height: suite.ctx.BlockHeight()}) - suite.Require().NoError(err) suite.Commit() // Generate token transfer transaction txMsg := suite.TransferERC20Token(suite.T(), contractAddr, suite.address, common.HexToAddress("0x378c50D9264C63F3F92B806d4ee56E9D86FfB3Ec"), sdkmath.NewIntWithDecimal(1, 18).BigInt()) - _, err = suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{Height: suite.ctx.BlockHeight()}) - suite.Require().NoError(err) suite.Commit() txs = append(txs, txMsg) diff --git a/x/evm/keeper/keeper_test.go b/x/evm/keeper/keeper_test.go index 8f36752a05..e4b3eb5c85 100644 --- a/x/evm/keeper/keeper_test.go +++ b/x/evm/keeper/keeper_test.go @@ -234,9 +234,15 @@ func (suite *KeeperTestSuite) EvmDenom() string { } func (suite *KeeperTestSuite) Commit() { - _, err := suite.app.Commit() - suite.Require().NoError(err) header := suite.ctx.BlockHeader() + _, err := suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: header.Height, + }) + suite.Require().NoError(err) + + _, err = suite.app.Commit() + suite.Require().NoError(err) + header.Height += 1 suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ Height: header.Height, diff --git a/x/feemarket/keeper/integration_test.go b/x/feemarket/keeper/integration_test.go index 7f40a06d2b..29a3c2ae00 100644 --- a/x/feemarket/keeper/integration_test.go +++ b/x/feemarket/keeper/integration_test.go @@ -446,11 +446,20 @@ var _ = Describe("Feemarket", func() { // given a local (validator config) and a gloabl (feemarket param) minGasPrice func setupTestWithContext(valMinGasPrice string, minGasPrice sdkmath.LegacyDec, baseFee sdkmath.Int) (*ethsecp256k1.PrivKey, banktypes.MsgSend) { privKey, msg := setupTest(valMinGasPrice + s.denom) + // The BeginBlock, DeliverTx, and EndBlock logic has been combined into a single FinalizeBlock logic. + // Because the SetBaseFee is called in BeginBlock and Commit synchronizes the check state with + // the finalize state being committed, the SetBaseFee call in setupTestWithContext becomes meaningless. + // Therefore, s.Commit() should not be called. Also, for tests that use FinalizeEthBlock, + // we explicitly change it to call SetBaseFee in the finalize state as well. params := types.DefaultParams() params.MinGasPrice = minGasPrice + header := s.ctx.BlockHeader() + s.ctx = s.app.NewContextLegacy(true, header) + s.app.FeeMarketKeeper.SetParams(s.ctx, params) + s.app.FeeMarketKeeper.SetBaseFee(s.ctx, baseFee.BigInt()) + s.ctx = s.app.NewContextLegacy(false, header) s.app.FeeMarketKeeper.SetParams(s.ctx, params) s.app.FeeMarketKeeper.SetBaseFee(s.ctx, baseFee.BigInt()) - s.Commit() return privKey, msg }