Documentation ¶
Index ¶
- Constants
- type Chain
- func (chain *Chain) AddNewSigningAccount(name string, hdPath *hd.BIP44Params, chainId, mnemonic string) *SigningAccount
- func (chain *Chain) AddNewSigningAccountFromPrivKey(name string, privKey cryptotypes.PrivKey, mnemonic string, chainId string) *SigningAccount
- func (chain *Chain) GetAccount(name string) *SigningAccount
- func (chain *Chain) GetBeginBlockEvents(ctx context.Context, height int64) (sdk.StringEvents, error)
- func (chain *Chain) GetBeginBlockEventsFromQuery(ctx context.Context, query string) (sdk.StringEvents, int64, error)
- func (chain *Chain) GetErc20Balance(contract, address common.Address) *big.Int
- func (chain *Chain) GetModuleBalances(moduleName string) sdk.Coins
- func (chain *Chain) NewFundedAccount(name string, funds sdk.Coins) *SigningAccount
- func (chain *Chain) QueryBlock(ctx context.Context, query string) ([]*coretypes.ResultBlock, error)
- func (chain *Chain) QuerySdkForBalances(addr sdk.AccAddress) sdk.Coins
- func (chain *Chain) QuerySdkForBalancesAtHeight(height int64, addr sdk.AccAddress) sdk.Coins
- func (chain *Chain) RegisterErc20(address common.Address)
- func (chain *Chain) ReturnAllFunds()
- func (chain *Chain) Shutdown()
- type DeployedErc20
- type E2eTestSuite
- func (suite *E2eTestSuite) BigIntsEqual(expected *big.Int, actual *big.Int, msg string)
- func (suite *E2eTestSuite) FundKavaErc20Balance(toAddress common.Address, amount *big.Int) EvmTxResponse
- func (suite *E2eTestSuite) InitKavaEvmData()
- func (suite *E2eTestSuite) NewEip712TxBuilder(acc *SigningAccount, chain *Chain, gas uint64, gasAmount sdk.Coins, ...) client.TxBuilder
- func (suite *E2eTestSuite) SetupKvtoolNodeRunner() *runner.KvtoolRunner
- func (suite *E2eTestSuite) SetupLiveNetworkNodeRunner() *runner.LiveNodeRunner
- func (suite *E2eTestSuite) SetupSuite()
- func (suite *E2eTestSuite) SkipIfIbcDisabled()
- func (suite *E2eTestSuite) SkipIfKvtoolDisabled()
- func (suite *E2eTestSuite) SkipIfUpgradeDisabled()
- func (suite *E2eTestSuite) TearDownSuite()
- type EvmTxResponse
- type KvtoolConfig
- type LiveNetworkConfig
- type SigningAccount
- func (a *SigningAccount) BankSend(to sdk.AccAddress, amount sdk.Coins) util.KavaMsgResponse
- func (a *SigningAccount) NextNonce() (uint64, error)
- func (a *SigningAccount) SignAndBroadcastEvmTx(req util.EvmTxRequest) EvmTxResponse
- func (a *SigningAccount) SignAndBroadcastKavaTx(req util.KavaMsgRequest) util.KavaMsgResponse
- func (a *SigningAccount) SignRawEvmData(msg []byte) ([]byte, types.PubKey, error)
- func (a *SigningAccount) TransferErc20(contract, to common.Address, amount *big.Int) (EvmTxResponse, error)
- type SuiteConfig
Constants ¶
const ( FundedAccountName = "whale" // use coin type 60 so we are compatible with accounts from `kava add keys --eth <name>` // these accounts use the ethsecp256k1 signing algorithm that allows the signing client // to manage both sdk & evm txs. Bip44CoinType = 60 IbcPort = "transfer" IbcChannel = "channel-0" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Chain ¶
type Chain struct { StakingDenom string ChainID string Keyring keyring.Keyring EvmClient *ethclient.Client ContractAddrs map[string]common.Address EncodingConfig kavaparams.EncodingConfig Auth authtypes.QueryClient Authz authz.QueryClient Bank banktypes.QueryClient Cdp cdptypes.QueryClient Committee committeetypes.QueryClient Community communitytypes.QueryClient Distribution distrtypes.QueryClient Incentive incentivetypes.QueryClient Kavadist kavadisttypes.QueryClient Earn earntypes.QueryClient Evm evmtypes.QueryClient Evmutil evmutiltypes.QueryClient Gov govv1types.QueryClient Mint minttypes.QueryClient Staking stakingtypes.QueryClient Tm tmservice.ServiceClient Tx txtypes.ServiceClient Upgrade upgradetypes.QueryClient TmSignClient tmclient.SignClient // contains filtered or unexported fields }
Chain wraps query clients & accounts for a network
func NewChain ¶
func NewChain(t *testing.T, details *runner.ChainDetails, fundedAccountMnemonic string) (*Chain, error)
NewChain creates the query clients & signing account management for a chain run on a set of ports. A signing client for the fundedAccountMnemonic is initialized. This account is referred to in the code as "whale" and it is used to supply funds to all new accounts.
func (*Chain) AddNewSigningAccount ¶
func (chain *Chain) AddNewSigningAccount(name string, hdPath *hd.BIP44Params, chainId, mnemonic string) *SigningAccount
AddNewSigningAccount sets up a new account with a signer for SDK and EVM transactions.
func (*Chain) AddNewSigningAccountFromPrivKey ¶ added in v0.25.0
func (chain *Chain) AddNewSigningAccountFromPrivKey( name string, privKey cryptotypes.PrivKey, mnemonic string, chainId string, ) *SigningAccount
AddNewSigningAccountFromPrivKey sets up a new account with a signer for SDK and EVM transactions, using the given private key.
func (*Chain) GetAccount ¶
func (chain *Chain) GetAccount(name string) *SigningAccount
GetAccount returns the account with the given name or fails.
func (*Chain) GetBeginBlockEvents ¶ added in v0.25.0
func (*Chain) GetBeginBlockEventsFromQuery ¶ added in v0.25.0
func (*Chain) GetErc20Balance ¶ added in v0.24.0
GetErc20Balance fetches the ERC20 balance of `contract` for `address`.
func (*Chain) GetModuleBalances ¶ added in v0.24.0
GetModuleBalances returns the balance of a requested module account
func (*Chain) NewFundedAccount ¶
func (chain *Chain) NewFundedAccount(name string, funds sdk.Coins) *SigningAccount
NewFundedAccount creates a SigningAccount for a random account & funds the account from the whale.
func (*Chain) QueryBlock ¶ added in v0.25.0
func (*Chain) QuerySdkForBalances ¶
func (chain *Chain) QuerySdkForBalances(addr sdk.AccAddress) sdk.Coins
QuerySdkForBalances gets the balance of a particular address on this Chain.
func (*Chain) QuerySdkForBalancesAtHeight ¶ added in v0.25.0
QuerySdkForBalancesAtHeight gets the balance of a particular address on this Chain, at the specified height.
func (*Chain) RegisterErc20 ¶ added in v0.25.0
RegisterErc20 is a method to record the address of erc20s on this chain. The full balances of each registered erc20 will be returned to the funded account when ReturnAllFunds is called.
func (*Chain) ReturnAllFunds ¶ added in v0.25.0
func (chain *Chain) ReturnAllFunds()
ReturnAllFunds loops through all SigningAccounts and sends all their funds back to the initially funded account.
type DeployedErc20 ¶ added in v0.25.0
DeployedErc20 is a type that wraps the details of the pre-deployed erc20 used by the e2e test suite. The Address comes from SuiteConfig.KavaErc20Address The CosmosDenom is fetched from the EnabledConversionPairs param of x/evmutil. The tests expect the following: - the funded account has a nonzero balance of the erc20 - the erc20 is enabled for conversion to sdk.Coin - the corresponding sdk.Coin is enabled as a cdp collateral type These requirements are checked in InitKavaEvmData().
type E2eTestSuite ¶
type E2eTestSuite struct { suite.Suite Kava *Chain Ibc *Chain UpgradeHeight int64 DeployedErc20 DeployedErc20 // contains filtered or unexported fields }
E2eTestSuite is a testify test suite for running end-to-end integration tests on Kava.
func (*E2eTestSuite) BigIntsEqual ¶
BigIntsEqual is a helper method for comparing the equality of two big ints
func (*E2eTestSuite) FundKavaErc20Balance ¶
func (suite *E2eTestSuite) FundKavaErc20Balance(toAddress common.Address, amount *big.Int) EvmTxResponse
FundKavaErc20Balance sends the pre-deployed ERC20 token to the `toAddress`.
func (*E2eTestSuite) InitKavaEvmData ¶
func (suite *E2eTestSuite) InitKavaEvmData()
InitKavaEvmData is run after the chain is running, but before the tests are run. It is used to initialize some EVM state, such as deploying contracts.
func (*E2eTestSuite) NewEip712TxBuilder ¶
func (suite *E2eTestSuite) NewEip712TxBuilder( acc *SigningAccount, chain *Chain, gas uint64, gasAmount sdk.Coins, msgs []sdk.Msg, memo string, ) client.TxBuilder
NewEip712TxBuilder is a helper method for creating an EIP712 signed tx A tx like this is what a user signing cosmos messages with Metamask would broadcast.
func (*E2eTestSuite) SetupKvtoolNodeRunner ¶ added in v0.25.0
func (suite *E2eTestSuite) SetupKvtoolNodeRunner() *runner.KvtoolRunner
SetupKvtoolNodeRunner is a helper method for building a KvtoolRunnerConfig from the suite config.
func (*E2eTestSuite) SetupLiveNetworkNodeRunner ¶ added in v0.25.0
func (suite *E2eTestSuite) SetupLiveNetworkNodeRunner() *runner.LiveNodeRunner
SetupLiveNetworkNodeRunner is a helper method for building a LiveNodeRunner from the suite config.
func (*E2eTestSuite) SetupSuite ¶
func (suite *E2eTestSuite) SetupSuite()
SetupSuite is run before all tests. It initializes chain connections and sets up the account used for funding accounts in the tests.
func (*E2eTestSuite) SkipIfIbcDisabled ¶
func (suite *E2eTestSuite) SkipIfIbcDisabled()
SkipIfIbcDisabled should be called at the start of tests that require IBC. It gracefully skips the current test if IBC tests are disabled.
func (*E2eTestSuite) SkipIfKvtoolDisabled ¶ added in v0.25.0
func (suite *E2eTestSuite) SkipIfKvtoolDisabled()
SkipIfKvtoolDisabled should be called at the start of tests that require kvtool.
func (*E2eTestSuite) SkipIfUpgradeDisabled ¶
func (suite *E2eTestSuite) SkipIfUpgradeDisabled()
SkipIfUpgradeDisabled should be called at the start of tests that require automated upgrades. It gracefully skips the current test if upgrades are dissabled. Note: automated upgrade tests are currently only enabled for Kvtool suite runs.
func (*E2eTestSuite) TearDownSuite ¶
func (suite *E2eTestSuite) TearDownSuite()
TearDownSuite is run after all tests have run. In the event of a panic during the tests, it is run after testify recovers.
type EvmTxResponse ¶
type EvmTxResponse struct { util.EvmTxResponse Receipt *ethtypes.Receipt }
EvmTxResponse is util.EvmTxResponse that also includes the Receipt, if available
type KvtoolConfig ¶ added in v0.25.0
type KvtoolConfig struct { // The kava.configTemplate flag to be passed to kvtool, usually "master". // This allows one to change the base genesis used to start the chain. KavaConfigTemplate string // Whether or not to run a chain upgrade & run post-upgrade tests. Use `suite.SkipIfUpgradeDisabled()` in post-upgrade tests. IncludeAutomatedUpgrade bool // Name of the upgrade, if upgrade is enabled. KavaUpgradeName string // Height upgrade will be applied to the test chain, if upgrade is enabled. KavaUpgradeHeight int64 // Tag of kava docker image that will be upgraded to the current image before tests are run, if upgrade is enabled. KavaUpgradeBaseImageTag string }
KvtoolConfig wraps configuration options for running the end-to-end test suite against a locally running chain. This config must be defined if E2E_RUN_KVTOOL_NETWORKS is true.
func ParseKvtoolConfig ¶ added in v0.25.0
func ParseKvtoolConfig() KvtoolConfig
ParseKvtoolConfig builds a KvtoolConfig from environment variables.
type LiveNetworkConfig ¶ added in v0.25.0
type LiveNetworkConfig struct { KavaRpcUrl string KavaGrpcUrl string KavaEvmRpcUrl string UpgradeHeight int64 }
LiveNetworkConfig wraps configuration options for running the end-to-end test suite against a live network. It must be defined if E2E_RUN_KVTOOL_NETWORKS is false.
func ParseLiveNetworkConfig ¶ added in v0.25.0
func ParseLiveNetworkConfig() LiveNetworkConfig
ParseLiveNetworkConfig builds a LiveNetworkConfig from environment variables.
type SigningAccount ¶
type SigningAccount struct { EvmAuth *bind.TransactOpts EvmAddress common.Address SdkAddress sdk.AccAddress // contains filtered or unexported fields }
SigningAccount wraps details about an account and its private keys. It exposes functionality for signing and broadcasting transactions.
func (*SigningAccount) BankSend ¶ added in v0.25.0
func (a *SigningAccount) BankSend(to sdk.AccAddress, amount sdk.Coins) util.KavaMsgResponse
BankSend is a helper method for sending funds via x/bank's MsgSend
func (*SigningAccount) NextNonce ¶ added in v0.24.0
func (a *SigningAccount) NextNonce() (uint64, error)
GetNonce fetches the next nonce / sequence number for the account.
func (*SigningAccount) SignAndBroadcastEvmTx ¶
func (a *SigningAccount) SignAndBroadcastEvmTx(req util.EvmTxRequest) EvmTxResponse
SignAndBroadcastEvmTx sends a request to the signer and awaits its response.
func (*SigningAccount) SignAndBroadcastKavaTx ¶
func (a *SigningAccount) SignAndBroadcastKavaTx(req util.KavaMsgRequest) util.KavaMsgResponse
SignAndBroadcastKavaTx sends a request to the signer and awaits its response.
func (*SigningAccount) SignRawEvmData ¶
SignRawEvmData signs raw evm data with the SigningAccount's private key. It does not broadcast the signed data.
func (*SigningAccount) TransferErc20 ¶ added in v0.25.0
func (a *SigningAccount) TransferErc20(contract, to common.Address, amount *big.Int) (EvmTxResponse, error)
TransferErc20 is a helper method for sending an erc20 token
type SuiteConfig ¶
type SuiteConfig struct { // A funded account used to fnd all other accounts. FundedAccountMnemonic string // A config for using kvtool local networks for the test run Kvtool *KvtoolConfig // A config for connecting to a running network LiveNetwork *LiveNetworkConfig // Whether or not to start an IBC chain. Use `suite.SkipIfIbcDisabled()` in IBC tests in IBC tests. IncludeIbcTests bool // The contract address of a deployed ERC-20 token KavaErc20Address string // When true, the chains will remain running after tests complete (pass or fail) SkipShutdown bool }
SuiteConfig wraps configuration details for running the end-to-end test suite.
func ParseSuiteConfig ¶
func ParseSuiteConfig() SuiteConfig
ParseSuiteConfig builds a SuiteConfig from environment variables.