Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
aljo242 committed Nov 30, 2023
1 parent 70d9fdc commit e31e3a0
Show file tree
Hide file tree
Showing 5 changed files with 79 additions and 24 deletions.
21 changes: 18 additions & 3 deletions tests/integration/integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import (
"fmt"
"testing"

sdk "github.com/cosmos/cosmos-sdk/types"

"github.com/cosmos/cosmos-sdk/types/module/testutil"
interchaintest "github.com/strangelove-ventures/interchaintest/v7"
"github.com/strangelove-ventures/interchaintest/v7/chain/cosmos"
Expand Down Expand Up @@ -32,8 +34,21 @@ var (

genesisKV = []cosmos.GenesisKV{
{
Key: "app_state.feemarket.params",
Value: feemarkettypes.DefaultParams(),
Key: "app_state.feemarket.params",
Value: feemarkettypes.NewParams(
feemarkettypes.DefaultWindow,
feemarkettypes.DefaultAlpha,
feemarkettypes.DefaultBeta,
feemarkettypes.DefaultTheta,
feemarkettypes.DefaultDelta,
feemarkettypes.DefaultTargetBlockSize,
feemarkettypes.DefaultMaxBlockSize,
sdk.NewInt(1000),
feemarkettypes.DefaultMinLearningRate,
feemarkettypes.DefaultMaxLearningRate,
feemarkettypes.DefaultFeeDenom,
true,
),
},
}

Expand Down Expand Up @@ -62,7 +77,7 @@ var (
Bech32Prefix: "cosmos",
CoinType: "118",
GasAdjustment: gasAdjustment,
GasPrices: fmt.Sprintf("200%s", denom),
GasPrices: fmt.Sprintf("50%s", denom),
TrustingPeriod: "48h",
NoHostMount: noHostMount,
ModifyGenesis: cosmos.ModifyGenesis(genesisKV),
Expand Down
30 changes: 22 additions & 8 deletions tests/integration/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,17 @@ import (
"encoding/hex"
"encoding/json"
"fmt"
"github.com/strangelove-ventures/interchaintest/v7"
"io"
"math/rand"
"os"
"path"
"strconv"
"strings"
"testing"
"time"

"github.com/strangelove-ventures/interchaintest/v7"

rpctypes "github.com/cometbft/cometbft/rpc/core/types"
comettypes "github.com/cometbft/cometbft/types"
"github.com/cosmos/cosmos-sdk/client"
Expand Down Expand Up @@ -352,7 +354,7 @@ func (s *TestSuite) keyringDirFromNode() string {
}

// SendCoins creates a executes a SendCoins message and broadcasts the transaction.
func (s *TestSuite) SendCoins(ctx context.Context, chain *cosmos.CosmosChain, keyName, sender, receiver string, amt, fees sdk.Coins) (string, error) {
func (s *TestSuite) SendCoins(ctx context.Context, chain *cosmos.CosmosChain, keyName, sender, receiver string, amt, fees sdk.Coins, gas int64) (string, error) {
resp, err := s.ExecTx(
ctx,
chain,
Expand All @@ -364,6 +366,8 @@ func (s *TestSuite) SendCoins(ctx context.Context, chain *cosmos.CosmosChain, ke
amt.String(),
"--fees",
fees.String(),
"--gas",
strconv.FormatInt(gas, 10),
)

return resp, err
Expand Down Expand Up @@ -392,12 +396,10 @@ func (s *TestSuite) GetAndFundTestUserWithMnemonic(
interchaintest.FaucetAccountKeyName,
user.FormattedAddress(),
sdk.NewCoins(sdk.NewCoin(chainCfg.Denom, sdk.NewInt(amount))),
sdk.NewCoins(sdk.NewCoin(chainCfg.Denom, sdk.NewInt(200000000000))),
sdk.NewCoins(sdk.NewCoin(chainCfg.Denom, sdk.NewInt(1000000000000))),
1000000,
)

if err != nil {
return nil, fmt.Errorf("failed to get funds from faucet: %w", err)
}
s.Require().NoError(err, "failed to get funds from faucet")
return user, nil
}

Expand Down Expand Up @@ -434,7 +436,19 @@ func (s *TestSuite) GetAndFundTestUsers(

func (s *TestSuite) ExecTx(ctx context.Context, chain *cosmos.CosmosChain, keyName string, command ...string) (string, error) {
node := chain.FullNodes[0]
return node.ExecTx(ctx, keyName, command...)

resp, err := node.ExecTx(ctx, keyName, command...)
s.Require().NoError(err)

height, err := chain.Height(context.Background())
s.Require().NoError(err)
s.WaitForHeight(chain, height+1)

stdout, stderr, err := chain.FullNodes[0].ExecQuery(ctx, "tx", resp, "--type", "hash")
s.Require().NoError(err)
s.Require().Nil(stderr)

return string(stdout), nil
}

// RandLowerCaseLetterString returns a lowercase letter string of given length
Expand Down
32 changes: 21 additions & 11 deletions tests/integration/suite.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package integration

import (
"context"

"github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/crypto/keyring"
sdk "github.com/cosmos/cosmos-sdk/types"
Expand All @@ -13,7 +14,7 @@ import (
)

const (
initBalance = 1000000000000
initBalance = 10000000000000
)

// TestSuite runs the feemarket integration test-suite against a given interchaintest specification
Expand Down Expand Up @@ -137,22 +138,31 @@ func (s *TestSuite) TestQueryState() {
func (s *TestSuite) TestSendTxUpdating() {
s.SetupSubTest()

ctx := context.Background()

// cast chain to cosmos-chain
cosmosChain, ok := s.chain.(*cosmos.CosmosChain)
s.Require().True(ok)
// get nodes
nodes := cosmosChain.Nodes()
s.Require().True(len(nodes) > 0)

// make params query to first node
resp, _, err := nodes[0].ExecQuery(context.Background(), "auth", "account", s.user1.FormattedAddress())
s.Require().NoError(err)

s.T().Log(string(resp))

// make params query to first node
resp, _, err = nodes[0].ExecQuery(context.Background(), "bank", "balances", s.user1.FormattedAddress())
s.Require().NoError(err)
state := s.QueryState()
params := s.QueryParams()

s.T().Log(string(resp))
gas := int64(1000000)
minBaseFee := sdk.NewCoins(sdk.NewCoin(params.FeeDenom, state.MinBaseFee.MulRaw(gas)))

// send with the exact expected fee
_, err := s.SendCoins(
ctx,
cosmosChain,
s.user1.KeyName(),
s.user1.FormattedAddress(),
s.user2.FormattedAddress(),
sdk.NewCoins(sdk.NewCoin(cosmosChain.Config().Denom, sdk.NewInt(10000))),
minBaseFee,
gas,
)
s.Require().NoError(err, s.user1.FormattedAddress(), s.user2.FormattedAddress())
}
10 changes: 8 additions & 2 deletions x/feemarket/ante/fee.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,16 @@ func (dfd FeeMarketCheckDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simula
fee := feeTx.GetFee()
gas := feeTx.GetGas() // use provided gas limit

ctx.Logger().Info("fee deduct ante handle",
"min gas prices", minGasPrices,
"fee", fee,
"gas limit", gas,
)

if !simulate {
fee, _, err = CheckTxFees(minGasPrices, feeTx, gas)
if err != nil {
return ctx, err
return ctx, errorsmod.Wrapf(err, "error checking fee")
}
}

Expand Down Expand Up @@ -82,7 +88,7 @@ func CheckTxFees(minFees sdk.Coins, feeTx sdk.FeeTx, gas uint64) (feeCoins sdk.C
}

if !feeCoins.IsAnyGTE(requiredFees) {
return nil, nil, sdkerrors.ErrInsufficientFee.Wrapf("got: %s required: %s", feeCoins, requiredFees)
return nil, nil, sdkerrors.ErrInsufficientFee.Wrapf("got: %s required: %s, minGasPrices: %s, gas: %d", feeCoins, requiredFees, minGasPrices, gas)
}

tip = feeCoins.Sub(minFees...) // tip is the difference between feeCoins and the min fees
Expand Down
10 changes: 10 additions & 0 deletions x/feemarket/post/fee.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,13 +63,23 @@ func (dfd FeeMarketDeductDecorator) PostHandle(ctx sdk.Context, tx sdk.Tx, simul
fee := feeTx.GetFee()
gas := ctx.GasMeter().GasConsumed() // use context gas consumed

ctx.Logger().Info("fee deduct post handle",
"min gas prices", minGasPrices,
"gas consumed", gas,
)

if !simulate {
fee, tip, err = ante.CheckTxFees(minGasPrices, feeTx, gas)
if err != nil {
return ctx, err
}
}

ctx.Logger().Info("fee deduct post handle",
"fee", fee,
"tip", tip,
)

if err := dfd.DeductFeeAndTip(ctx, tx, fee, tip); err != nil {
return ctx, err
}
Expand Down

0 comments on commit e31e3a0

Please sign in to comment.