0g-chain/tests/e2e
drklee3 f757d7ab15
feat: upgrade to Cosmos v0.46 (#1477)
* Update cosmos-sdk to v0.45.10-kava

* Add RegisterNodeService to app

* Update cosmos proto files

* Update cosmos proto files

* Use tagged v0.45.10-kava-v0.19-0.21 cosmos version

* update x/auth/legacy to x/auth/migrations

* Delete rest packages and registration

* Remove rest from proposal handlers

* Remove legacy types referencing removed sdk types

* Remove legacy tx broadcast handler

* Update incentive staking hooks to return error

* Remove grpc replace directive, use new grpc version

* Fix storetypes import

* Update tally_handler with updated gov types

* Delete legacy types

* Use new gov default config

* Update RegisterTendermintService params

Signed-off-by: drklee3 <derrick@dlee.dev>

* Replace sdk.StoreKey with storetypes.StoreKey

* Replace sdk.Int#ToDec with sdk.NewDecFromInt

* Replace sdk.NewUintFromBigInt with sdkmath.NewUintFromBigInt

Signed-off-by: drklee3 <derrick@dlee.dev>

* Update most intances of govtypes to govv1beta1

* Unpack coin slice for Coins#Sub and Coins#SafeSub

Signed-off-by: drklee3 <derrick@dlee.dev>

* Update committee gov codec registration

Signed-off-by: drklee3 <derrick@dlee.dev>

* Update migrate utils period_vesting Coins#Sub

Signed-off-by: drklee3 <derrick@dlee.dev>

* Update Coin#Sub in community proposal handler

Signed-off-by: drklee3 <derrick@dlee.dev>

* Update Coin#Sub, FundModuleAccount/FundAccount in banktestutil

Signed-off-by: drklee3 <derrick@dlee.dev>

* Update community, earn, kavadist proposal gov registration

* Update evm cli client EthSecp256k1Type check

* AccAddressFromHex to AccAddressFromHexUnsafe

* Add mint DefaultInflationCalculationFn to earn test

* Update use of removed staking.NewHandler

* Rename FlagIAVLFastNode -> FlagDisableIAVLFastNode

* cmd: Update new snapshot app option

Signed-off-by: drklee3 <derrick@dlee.dev>

* cmd: Add tendermint default config, use cosmos rpc status command

Signed-off-by: drklee3 <derrick@dlee.dev>

* Update ethermint import path

github.com/tharsis/ethermint -> github.com/evmos/ethermint

* Upgrade ibc-go to v6

* Update proto dependencies

Signed-off-by: drklee3 <derrick@dlee.dev>

* Update Tally handler test with new gov types

* Update helpers.GenTx -> helpers.GenSignedMockTx

* Update evmkeeper.NewKeeper params

Signed-off-by: drklee3 <derrick@dlee.dev>

* Update ante authz, tests

* Add feemarket transient key, pass subspaces to evm/feemarket keepers

* Update new ante decorators

* Add new addModuleInitFlags to server commands

* Pass codec to keyring.New in genaccounts

* Pass codec to client keys add

* Add SendCoins to evmutil bank_keeper

* Use github.com/cosmos/iavl@v0.19.5

* Add ante HandlerOptions

* Add unimplemented SendCoins to evmutil bank keeper

Ethermint x/evm does not use this method

* Update init-new-chain script to disable post-london blocks

* Modify test genesis states to append 1 validator

* Update tally handler test to use string values

* Prevent querying balance for empty sdk.AccAddress in auction bidding test

* Set default bond denom to ukava

* Remove overwritten bank genesis total supply in committee proposal test

Signed-off-by: drklee3 <derrick@dlee.dev>

* Use ukava for testing staked balance

* Disable minting in community proposal handler test

Previously stake denom is used, which resulted in 0 minted coins

* Update hard APYToSPY test expected value

Increased iterations in sdk.ApproxRoot, updated closer to real value

* Fix NewDecCoinsFromCoins bug in incentive collectDerivativeStakingRewards

* Allow bkava earn incentive test values to match within small margin for rounding

Signed-off-by: drklee3 <derrick@dlee.dev>

* Update invalid denom in issuance message coin validation

Colons are now valid in denoms

Signed-off-by: drklee3 <derrick@dlee.dev>

* Remove genesis validator in incentive delegation tests

* Update pricefeed market test for invalid denom

Signed-off-by: drklee3 <derrick@dlee.dev>

* Update incentive delegator rewards test without genesis validator

Signed-off-by: drklee3 <derrick@dlee.dev>

* Add validator to export test

* Clear bank state in minting tests

Signed-off-by: drklee3 <derrick@dlee.dev>

* Remove validator for no stake tally test

Signed-off-by: drklee3 <derrick@dlee.dev>

* Clear incentive state before InitGenesis in incentive genesis export test

* Update swagger

Signed-off-by: drklee3 <derrick@dlee.dev>

* Update ethermint version to match replaced version

* Remove legacy swagger

* Add NewEthEmitEventDecorator

* Remove redundant func for AddModuleInitFlags

* Remove unused addBankBalanceForAddress func

* Add SetIAVLLazyLoading option to app cmd

* Use legacy.RegisterAminoMsg for committee msg concrete registration

* Remove unnecessary Amino field

* Add evm_util bankkeeper SendCoins comment

* Update test method ResetBankState to DeleteGenesisValidatorCoins to be more clear

* Validate incentive params.RewardsPerSecond to be non-zero

* Validate swap pools to disallow colons in token denoms

* Register all legacy amino types on gov modulecdc

* Remove redundant Comittee interface registration

* Pin goleveldb to v1.0.1-0.20210819022825-2ae1ddf74ef7

Causes failed to load state at height errors

* Update ethermint to new pinned version with minGasPrices parse error fix

* Update cosmos fork dependcy commit to include reverted account constructor patch

* Update Cosmos v0.46.11 and cometbft v0.34.27

* Bump minimum go version to 1.19

* Update tendermint proto

* Update internal testnet genesis

* Move NewCanTransferDecorator before NewEthGasConsumeDecorator

* Add hard borrow store tests (#1514)

* add store tests for Borrow type

* refactor Deposit tests to match

* Fix old bep3 tests (#1515)

* Update Ethermint to 1b17445 to fix duplicate proto registration

* Add custom status command to use snake_case and stdout

* Add SetInflation helper

* Reduce ambiguity with evm CanSignEthTx error

* Remove init genesis validator claim in test

* Add disabled evmante.NewMinGasPriceDecorator with x/feemarket note

* chore: use tagged versions for Cosmos and Ethermint forks

* update kvtool & increase wait for ibc transfer test

---------

Signed-off-by: drklee3 <derrick@dlee.dev>
Co-authored-by: Ruaridh <rhuairahrighairidh@users.noreply.github.com>
Co-authored-by: Robert Pirtle <astropirtle@gmail.com>
2023-04-03 20:08:45 -04:00
..
contracts support initialization of evm state in e2e tests (#1524) 2023-04-03 09:58:45 -07:00
kvtool@af9629a2b9 support initialization of evm state in e2e tests (#1524) 2023-04-03 09:58:45 -07:00
runner support chian upgrades in e2e tests (#1513) 2023-03-28 15:32:36 -07:00
scripts Add IBC chain to E2E test suite (#1486) 2023-03-07 14:37:45 -08:00
testutil feat: upgrade to Cosmos v0.46 (#1477) 2023-04-03 20:08:45 -04:00
.env support chian upgrades in e2e tests (#1513) 2023-03-28 15:32:36 -07:00
e2e_evm_contracts_test.go support initialization of evm state in e2e tests (#1524) 2023-04-03 09:58:45 -07:00
e2e_min_fees_test.go add evm min fee e2e tests (#1521) 2023-03-31 10:30:37 -07:00
e2e_test.go feat: upgrade to Cosmos v0.46 (#1477) 2023-04-03 20:08:45 -04:00
e2e_upgrade_handler_test.go support chian upgrades in e2e tests (#1513) 2023-03-28 15:32:36 -07:00
readme.md support chian upgrades in e2e tests (#1513) 2023-03-28 15:32:36 -07:00

end-2-end tests for kava

These tests use kvtool to spin up a kava node configuration and then runs tests against the running network. It is a git sub-repository in this directory. If not present, you must initialize the subrepo: git submodule update --init.

Steps to run

  1. Ensure latest kvtool is installed: make update-kvtool
  2. Run the test suite: make test-e2e This will build a docker image tagged kava/kava:local that will be run by kvtool.

Note: The suite will use your locally installed kvtool if present. If not present, it will be installed. If the kvtool repo is updated, you must manually update your existing local binary: make update-kvtool

Configuration

The test suite uses env variables that can be set in .env. See that file for a complete list of options. The variables are parsed and imported into a SuiteConfig in testutil/config.go.

The variables in .env will not override variables that are already present in the environment. ie. Running E2E_INCLUDE_IBC_TESTS=false make test-e2e will disable the ibc tests regardless of how the variable is set in .env.

Chains

A testutil.Chain is the abstraction around details, query clients, & signing accounts for interacting with a network. After networks are running, a Chain is initialized & attached to the main test suite testutil.E2eTestSuite.

The primary Kava network is accessible via suite.Kava.

Details about the chains can be found here.

SigningAccounts

Each Chain wraps a map of signing clients for that network. The SigningAccount contains clients for both the Kava EVM and Cosmos-Sdk co-chains.

The methods SignAndBroadcastKavaTx and SignAndBroadcastEvmTx are used to submit transactions to the sdk and evm chains, respectively.

Creating a new account

// create an account on the Kava network, initially funded with 10 KAVA
acc := suite.Kava.NewFundedAccount("account-name", sdk.NewCoins(sdk.NewCoin("ukava", 10e6)))

// you can also access accounts by the name with which they were registered to the suite
acc := suite.Kava.GetAccount("account-name")

Funds for new accounts are distributed from the account with the mnemonic from the E2E_KAVA_FUNDED_ACCOUNT_MNEMONIC env variable. The account will be generated with HD coin type 60 & the ethsecp256k1 private key signing algorithm. The initial funding account is registered with the name "whale".

IBC tests

When IBC tests are enabled, an additional network is spun up with a different chain id & an IBC channel is opened between it and the primary Kava network.

The IBC network runs kava with a different chain id and staking denom (see runner/chain.go).

The IBC chain queriers & accounts are accessible via suite.Ibc.

IBC tests can be disabled by setting E2E_INCLUDE_IBC_TESTS to false.

Chain Upgrades

When a named upgrade handler is included in the current working repo of Kava, the e2e test suite can be configured to run all the tests on the upgraded chain. This includes the ability to add additional tests to verify and do acceptance on the post-upgrade chain.

This configuration is controlled by the following env variables:

  • E2E_INCLUDE_AUTOMATED_UPGRADE - toggles on the upgrade functionality. Must be set to true.
  • E2E_KAVA_UPGRADE_NAME - the named upgrade, likely defined in app/upgrades.go
  • E2E_KAVA_UPGRADE_HEIGHT - the height at which to run the upgrade
  • E2E_KAVA_UPGRADE_BASE_IMAGE_TAG - the kava docker image tag to base the upgrade on

When all these are set, the chain is started with the binary contained in the docker image tagged E2E_KAVA_UPGRADE_BASE_IMAGE_TAG. Then an upgrade proposal is submitted with the desired name and height. The chain runs until that height and then is shutdown due to needing the upgrade. The chain is restarted with the local repo's Kava code and the upgrade is run. Once completed, the whole test suite is run.

For a full example of how this looks, see this commit on the example/e2e-test-upgrade-handler branch.