f757d7ab15
* 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> |
||
---|---|---|
.. | ||
contracts | ||
kvtool@af9629a2b9 | ||
runner | ||
scripts | ||
testutil | ||
.env | ||
e2e_evm_contracts_test.go | ||
e2e_min_fees_test.go | ||
e2e_test.go | ||
e2e_upgrade_handler_test.go | ||
readme.md |
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
- Ensure latest
kvtool
is installed:make update-kvtool
- Run the test suite:
make test-e2e
This will build a docker image taggedkava/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
.
Chain
s
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.
SigningAccount
s
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 totrue
.E2E_KAVA_UPGRADE_NAME
- the named upgrade, likely defined inapp/upgrades.go
E2E_KAVA_UPGRADE_HEIGHT
- the height at which to run the upgradeE2E_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.