mirror of
https://github.com/onsonr/sonr.git
synced 2025-03-10 21:09:11 +00:00
176 lines
5.7 KiB
Go
176 lines
5.7 KiB
Go
package e2e
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
|
|
"github.com/cosmos/cosmos-sdk/crypto/keyring"
|
|
moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
|
|
"github.com/strangelove-ventures/interchaintest/v8"
|
|
"github.com/strangelove-ventures/interchaintest/v8/chain/cosmos"
|
|
"github.com/strangelove-ventures/interchaintest/v8/ibc"
|
|
"github.com/strangelove-ventures/interchaintest/v8/testutil"
|
|
|
|
sdkmath "cosmossdk.io/math"
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
|
|
globalfee "github.com/strangelove-ventures/globalfee/x/globalfee/types"
|
|
poa "github.com/strangelove-ventures/poa"
|
|
tokenfactory "github.com/strangelove-ventures/tokenfactory/x/tokenfactory/types"
|
|
)
|
|
|
|
var (
|
|
VotingPeriod = "15s"
|
|
MaxDepositPeriod = "10s"
|
|
|
|
Denom = "usnr"
|
|
Name = "sonr"
|
|
ChainID = "chainid-1"
|
|
Binary = "sonrd"
|
|
|
|
Bech32 = "idx"
|
|
|
|
NumberVals = 1
|
|
NumberFullNodes = 0
|
|
GenesisFundsAmount = sdkmath.NewInt(1000_000000) // 1k tokens
|
|
|
|
ChainImage = ibc.NewDockerImage("core", "local", "1025:1025")
|
|
|
|
DefaultGenesis = []cosmos.GenesisKV{
|
|
// default
|
|
cosmos.NewGenesisKV("app_state.gov.params.voting_period", VotingPeriod),
|
|
cosmos.NewGenesisKV("app_state.gov.params.max_deposit_period", MaxDepositPeriod),
|
|
cosmos.NewGenesisKV("app_state.gov.params.min_deposit.0.denom", Denom),
|
|
cosmos.NewGenesisKV("app_state.gov.params.min_deposit.0.amount", "1"),
|
|
// poa: gov & testing account
|
|
cosmos.NewGenesisKV("app_state.poa.params.admins", []string{"idx10d07y265gmmuvt4z0w9aw880jnsr700j9kqcfa", "idx1hj5fveer5cjtn4wd6wstzugjfdxzl0xpecp0nd"}),
|
|
// globalfee: set minimum fee requirements
|
|
cosmos.NewGenesisKV("app_state.globalfee.params.minimum_gas_prices", sdk.DecCoins{sdk.NewDecCoinFromDec(Denom, sdkmath.LegacyMustNewDecFromStr("0.0"))}),
|
|
// tokenfactory: set create cost in set denom or in gas usage.
|
|
cosmos.NewGenesisKV("app_state.tokenfactory.params.denom_creation_fee", nil),
|
|
cosmos.NewGenesisKV("app_state.tokenfactory.params.denom_creation_gas_consume", 1), // cost 1 gas to create a new denom
|
|
|
|
}
|
|
|
|
DefaultChainConfig = ibc.ChainConfig{
|
|
Images: []ibc.DockerImage{
|
|
ChainImage,
|
|
},
|
|
GasAdjustment: 1.5,
|
|
ModifyGenesis: cosmos.ModifyGenesis(DefaultGenesis),
|
|
EncodingConfig: func() *moduletestutil.TestEncodingConfig {
|
|
cfg := cosmos.DefaultEncoding()
|
|
// TODO: add encoding types here for the modules you want to use
|
|
tokenfactory.RegisterInterfaces(cfg.InterfaceRegistry)
|
|
globalfee.RegisterInterfaces(cfg.InterfaceRegistry)
|
|
poa.RegisterInterfaces(cfg.InterfaceRegistry)
|
|
return &cfg
|
|
}(),
|
|
Type: "cosmos",
|
|
Name: Name,
|
|
ChainID: ChainID,
|
|
Bin: Binary,
|
|
Bech32Prefix: Bech32,
|
|
Denom: Denom,
|
|
CoinType: "118",
|
|
GasPrices: "0" + Denom,
|
|
TrustingPeriod: "336h",
|
|
}
|
|
|
|
DefaultChainSpec = interchaintest.ChainSpec{
|
|
Name: Name,
|
|
ChainName: Name,
|
|
Version: ChainImage.Version,
|
|
ChainConfig: DefaultChainConfig,
|
|
NumValidators: &NumberVals,
|
|
NumFullNodes: &NumberFullNodes,
|
|
}
|
|
|
|
// cosmos1hj5fveer5cjtn4wd6wstzugjfdxzl0xpxvjjvr - test_node.sh
|
|
AccMnemonic = "decorate bright ozone fork gallery riot bus exhaust worth way bone indoor calm squirrel merry zero scheme cotton until shop any excess stage laundry"
|
|
Acc1Mnemonic = "wealth flavor believe regret funny network recall kiss grape useless pepper cram hint member few certain unveil rather brick bargain curious require crowd raise"
|
|
|
|
RelayerRepo = "ghcr.io/cosmos/relayer"
|
|
RelayerVersion = "main"
|
|
)
|
|
|
|
// Other Helpers
|
|
func ExecuteQuery(ctx context.Context, chain *cosmos.CosmosChain, cmd []string, i interface{}, extraFlags ...string) {
|
|
flags := []string{
|
|
"--node", chain.GetRPCAddress(),
|
|
"--output=json",
|
|
}
|
|
flags = append(flags, extraFlags...)
|
|
|
|
ExecuteExec(ctx, chain, cmd, i, flags...)
|
|
}
|
|
func ExecuteExec(ctx context.Context, chain *cosmos.CosmosChain, cmd []string, i interface{}, extraFlags ...string) {
|
|
command := []string{chain.Config().Bin}
|
|
command = append(command, cmd...)
|
|
command = append(command, extraFlags...)
|
|
fmt.Println(command)
|
|
|
|
stdout, _, err := chain.Exec(ctx, command, nil)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
|
|
fmt.Println(string(stdout))
|
|
if err := json.Unmarshal(stdout, &i); err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
}
|
|
|
|
// Executes a command from CommandBuilder
|
|
func ExecuteTransaction(ctx context.Context, chain *cosmos.CosmosChain, cmd []string) (sdk.TxResponse, error) {
|
|
var err error
|
|
var stdout []byte
|
|
|
|
stdout, _, err = chain.Exec(ctx, cmd, nil)
|
|
if err != nil {
|
|
return sdk.TxResponse{}, err
|
|
}
|
|
|
|
if err := testutil.WaitForBlocks(ctx, 2, chain); err != nil {
|
|
return sdk.TxResponse{}, err
|
|
}
|
|
|
|
var res sdk.TxResponse
|
|
if err := json.Unmarshal(stdout, &res); err != nil {
|
|
return res, err
|
|
}
|
|
|
|
return res, err
|
|
}
|
|
|
|
func TxCommandBuilder(ctx context.Context, chain *cosmos.CosmosChain, cmd []string, fromUser string, extraFlags ...string) []string {
|
|
return TxCommandBuilderNode(ctx, chain.GetNode(), cmd, fromUser, extraFlags...)
|
|
}
|
|
|
|
func TxCommandBuilderNode(ctx context.Context, node *cosmos.ChainNode, cmd []string, fromUser string, extraFlags ...string) []string {
|
|
command := []string{node.Chain.Config().Bin}
|
|
command = append(command, cmd...)
|
|
command = append(command, "--node", node.Chain.GetRPCAddress())
|
|
command = append(command, "--home", node.HomeDir())
|
|
command = append(command, "--chain-id", node.Chain.Config().ChainID)
|
|
command = append(command, "--from", fromUser)
|
|
command = append(command, "--keyring-backend", keyring.BackendTest)
|
|
command = append(command, "--output=json")
|
|
command = append(command, "--yes")
|
|
|
|
gasFlag := false
|
|
for _, flag := range extraFlags {
|
|
if flag == "--gas" {
|
|
gasFlag = true
|
|
}
|
|
}
|
|
|
|
if !gasFlag {
|
|
command = append(command, "--gas", "500000")
|
|
}
|
|
|
|
command = append(command, extraFlags...)
|
|
return command
|
|
}
|