e2e

package
v6.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 7, 2025 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ExecuteCommand

func ExecuteCommand(cmd *exec.Cmd, cmdName string, verbose bool)

func GenerateGovProposalContent

func GenerateGovProposalContent(title, summary, metadata, deposit, description string, expedited bool, msgs ...sdk.Msg) string

GenerateGovProposalContent creates proposal content ready to be used by `gov submit-proposal` command

func GetHermesConfig added in v6.4.0

func GetHermesConfig(hermesVersion, queryNodeIP string, chainCfg ChainConfig, isConsumer bool) string

GetHermesConfig returns a configuration string for a given hermes version

Currently templates for Hermes v1.6.0 and v1.4 are supported. If provided version is before v1.6.0 then a configuration based on template for v1.4.x is returned otherwise the returned configuration is based on template v1.4.

func IntPtr added in v6.4.0

func IntPtr(i int) *int

func UintPtr added in v6.4.0

func UintPtr(i uint) *uint

Types

type ActionCommands added in v6.4.0

type ActionCommands interface {
	SubmitConsumerAdditionProposal(action SubmitConsumerAdditionProposalAction, verbose bool)
	AssignConsumerPubKey(action AssignConsumerPubKeyAction, verbose bool)
	StartChain(action StartChainAction, verbose bool)
	StartConsumerChain(action StartConsumerChainAction, verbose bool)
	SubmitConsumerRemovalProposal(action SubmitConsumerRemovalProposalAction, verbose bool)
	DelegateTokens(action DelegateTokensAction, verbose bool)
	UnbondTokens(action UnbondTokensAction, verbose bool)
}

type ActionHandler added in v6.4.0

type ActionHandler func(action interface{}, verbose bool) error

type AssignConsumerPubKeyAction

type AssignConsumerPubKeyAction struct {
	Chain          ChainID
	Validator      ValidatorID
	ConsumerPubkey string
	// ReconfigureNode will change keys the node uses and restart
	ReconfigureNode bool
	// executing the action should raise an error
	ExpectError   bool
	ExpectedError string
}

type ChainCommands

type ChainCommands interface {
	// State commands - functions use by test driver to get state information
	GetBlockHeight(chain ChainID) uint
	GetBalance(chain ChainID, validator ValidatorID) uint
	GetConsumerChains(chain ChainID) map[ChainID]bool
	GetConsumerAddress(consumerChain ChainID, validator ValidatorID) string
	GetClientFrozenHeight(chain ChainID, clientID string) (RevisionNumber, RevisionHeight uint64)
	GetHasToValidate(validator ValidatorID) []ChainID
	GetIBCTransferParams(chain ChainID) IBCTransferParams
	GetProposal(chain ChainID, proposal uint) Proposal
	GetParam(chain ChainID, param Param) string
	GetProviderAddressFromConsumer(consumerChain ChainID, validator ValidatorID) string
	GetReward(chain ChainID, validator ValidatorID, blockHeight uint, denom string) float64
	GetRegisteredConsumerRewardDenoms(chain ChainID) []string
	GetSlashMeter() int64
	GetPendingPacketQueueSize(chain ChainID) uint
	GetProposedConsumerChains(chain ChainID) []string
	GetQueryNode(chain ChainID) string
	GetQueryNodeRPCAddress(chain ChainID) string
	GetTrustedHeight(chain ChainID, clientID string, index int) (uint64, uint64)
	GetValPower(chain ChainID, validator ValidatorID) uint
	GetValStakedTokens(chain ChainID, validatorAddress string) uint
	GetQueryNodeIP(chain ChainID) string
	GetInflationRate(chain ChainID) float64
	GetConsumerCommissionRate(chain ChainID, validator ValidatorID) float64
	QueryTransaction(chain ChainID, txhash string) ([]byte, error)

	CreateConsumer(providerChain, consumerChain ChainID, validator ValidatorID, metadata types.ConsumerMetadata, initParams *types.ConsumerInitializationParameters, powerShapingParams *types.PowerShapingParameters) ([]byte, error)
	UpdateConsumer(providerChain ChainID, validator ValidatorID, update types.MsgUpdateConsumer, verbose bool) ([]byte, error)
	SubmitGovProposal(chain ChainID, from ValidatorID, command string, proposal string, verbose bool) ([]byte, error)
	AssignConsumerPubKey(identifier string, pubKey string, from ValidatorID, gas, home, node string, verbose bool) ([]byte, error)
}

type ChainConfig

type ChainConfig struct {
	ChainId    ChainID
	ConsumerId ConsumerID
	// The account prefix configured on the chain. For example, on the Hub, this is "cosmos"
	AccountPrefix string
	// Must be unique per chain
	IpPrefix       string
	VotingWaitTime uint
	// Any transformations to apply to the genesis file of all chains instantiated with this chain config, as a jq string.
	// Example: ".app_state.gov.params.voting_period = \"5s\" | .app_state.slashing.params.signed_blocks_window = \"2\" | .app_state.slashing.params.min_signed_per_window = \"0.500000000000000000\""
	GenesisChanges string
	BinaryName     string

	// binary to use after upgrade height
	UpgradeBinary string
}

Attributes that are unique to a chain. Allows us to map (part of) the set of strings defined above to a set of viable chains

type ChainID

type ChainID string

type ChainIF added in v6.4.0

type ChainIF interface {
	ActionCommands
}

type ChainState

type ChainState struct {
	ValBalances                    *map[ValidatorID]uint
	Proposals                      *map[uint]Proposal
	ProposedConsumerChains         *[]string
	ValPowers                      *map[ValidatorID]uint
	StakedTokens                   *map[ValidatorID]uint
	IBCTransferParams              *IBCTransferParams
	Params                         *[]Param
	Rewards                        *Rewards
	ConsumerChains                 *map[ChainID]bool
	AssignedKeys                   *map[ValidatorID]string
	ProviderKeys                   *map[ValidatorID]string // validatorID: validator provider key
	ConsumerPendingPacketQueueSize *uint                   // Only relevant to consumer chains
	RegisteredConsumerRewardDenoms *[]string
	ClientsFrozenHeights           *map[string]clienttypes.Height
	HasToValidate                  *map[ValidatorID][]ChainID // only relevant to provider chain
	InflationRateChange            *int                       // whether the inflation rate between two blocks changes negatively (any negative number), is equal (0), or changes positively (any positive number)
	ConsumerCommissionRates        *map[ValidatorID]float64
}

func (ChainState) MarshalJSON

func (c ChainState) MarshalJSON() ([]byte, error)

MarshalJSON transforms the ChainState into a ChainStateWithProposalTypes by adding type info to the proposals

func (*ChainState) UnmarshalJSON

func (c *ChainState) UnmarshalJSON(data []byte) error

UnmarshalJSON unmarshals the ChainStateWithProposalTypes into a ChainState by removing the type info from the proposals and getting back standard proposals

type ChainStateCopy

type ChainStateCopy ChainState

to have a ChainState object that does not have the overridden Marshal/Unmarshal method

type ChainStateWithProposalTypes

type ChainStateWithProposalTypes struct {
	ChainStateCopy
	Proposals *map[uint]ProposalAndType // the only thing changed from the real ChainState
}

duplicated from the ChainState with a minor change to the Proposals field

type ConsumerAdditionProposal

type ConsumerAdditionProposal struct {
	Deposit       uint
	Chain         ChainID
	SpawnTime     int
	InitialHeight clienttypes.Height
	Status        string
}

type ConsumerID

type ConsumerID string

type ConsumerModificationProposal

type ConsumerModificationProposal struct {
	Deposit uint
	Chain   ChainID
	Status  string
}

type ConsumerRemovalProposal

type ConsumerRemovalProposal struct {
	Deposit uint
	Chain   ChainID
	Status  string
}

type ContainerConfig

type ContainerConfig struct {
	ContainerName string
	CcvVersion    string
	Now           time.Time
}

TODO: this should not be here. mv 'Now' to a better suited type here and then move ContainerConfig back

type DelegateTokensAction added in v6.4.0

type DelegateTokensAction struct {
	Chain  ChainID
	From   ValidatorID
	To     ValidatorID
	Amount uint
}

type GovernanceProposal

type GovernanceProposal struct {
	// Msgs defines an array of sdk.Msgs proto-JSON-encoded as Anys.
	Messages  []json.RawMessage `json:"messages,omitempty"`
	Metadata  string            `json:"metadata"`
	Deposit   string            `json:"deposit"`
	Title     string            `json:"title"`
	Summary   string            `json:"summary"`
	Expedited bool              `json:"expedited"`
}

GovernanceProposal is used to generate content to be used for `gov submit-proposal` command

type IBCTransferParams

type IBCTransferParams struct {
	SendEnabled    bool `json:"send_enabled"`
	ReceiveEnabled bool `json:"receive_enabled"`
}

type IBCTransferParamsProposal

type IBCTransferParamsProposal struct {
	Title   string
	Deposit uint
	Status  string
	Params  IBCTransferParams
}

type Param

type Param struct {
	Subspace string
	Key      string
	Value    string
}

type ParamsProposal

type ParamsProposal struct {
	Deposit  uint
	Status   string
	Subspace string
	Key      string
	Value    string
}

type PlatformDriver

type PlatformDriver interface {
	ExecCommand(name string, arg ...string) *exec.Cmd
	// ExecDetachedCommand: when executed the command will be run in the background and call will return immediately
	ExecDetachedCommand(name string, args ...string) *exec.Cmd
	GetTestScriptPath(isConsumer bool, script string) string
	UseCometMock() bool
}

TODO: replace ExecutionTarget with new TargetDriver interface

type Proposal

type Proposal interface {
	// contains filtered or unexported methods
}

func UnmarshalProposalWithType

func UnmarshalProposalWithType(inputMap json.RawMessage, proposalType string) (Proposal, error)

UnmarshalProposalWithType takes a JSON object and a proposal type and marshals into an object of the corresponding proposal.

type ProposalAndType

type ProposalAndType struct {
	RawProposal json.RawMessage
	Type        string
}

stores a proposal as a raw json, together with its type

type Rewards

type Rewards struct {
	IsRewarded map[ValidatorID]bool
	// if true it will calculate if the validator/delegator is rewarded between 2 successive blocks,
	// otherwise it will calculate if it received any rewards since the 1st block
	IsIncrementalReward bool
	// The reward denom to be checked. This can be either the native "stake" denom or
	// a denom from other chains (e.g. if provider received rewards from a consumer chain)
	Denom string
}

type StartChainAction added in v6.4.0

type StartChainAction struct {
	Chain      ChainID
	Validators []StartChainValidator
	// Genesis changes specific to this action, appended to genesis changes defined in chain config
	GenesisChanges string
	IsConsumer     bool
}

type StartChainValidator added in v6.4.0

type StartChainValidator struct {
	Id         ValidatorID
	Allocation uint
	Stake      uint
}

type StartConsumerChainAction added in v6.4.0

type StartConsumerChainAction struct {
	ConsumerChain  ChainID
	ProviderChain  ChainID
	Validators     []StartChainValidator
	GenesisChanges string
}

type SubmitConsumerAdditionProposalAction added in v6.4.0

type SubmitConsumerAdditionProposalAction struct {
	PreCCV              bool
	Chain               ChainID
	From                ValidatorID
	Deposit             uint
	ConsumerChain       ChainID
	SpawnTime           uint
	InitialHeight       clienttypes.Height
	DistributionChannel string
	TopN                uint32
	ValidatorsPowerCap  uint32
	ValidatorSetCap     uint32
	Allowlist           []string
	Denylist            []string
	MinStake            uint64
	AllowInactiveVals   bool
	Prioritylist        []string
}

type SubmitConsumerRemovalProposalAction added in v6.4.0

type SubmitConsumerRemovalProposalAction struct {
	Chain          ChainID
	From           ValidatorID
	Deposit        uint
	ConsumerChain  ChainID
	StopTimeOffset time.Duration // offset from time.Now()
}

type TargetDriver

type TargetDriver interface {
	// ChainCommands
	ChainCommands
	PlatformDriver
}

type TestConfig added in v6.4.0

type TestConfig struct {
	// These are the non altered values during a typical test run, where multiple test runs can exist
	// to validate different action sequences and corresponding state checks.
	ContainerConfig  ContainerConfig
	ValidatorConfigs map[ValidatorID]ValidatorConfig
	ChainConfigs     map[ChainID]ChainConfig
	ConsumerChains   map[ConsumerID]ChainConfig
	ProviderVersion  string
	ConsumerVersion  string
	// override config.toml parameters
	// usually used to override timeout_commit
	// having shorter timeout_commit reduces the test runtime because blocks are produced faster
	// lengthening the timeout_commit increases the test runtime because blocks are produced slower but the test is more reliable
	TendermintConfigOverride string
	UseCometmock             bool // if false, nodes run CometBFT
	UseGorelayer             bool // if false, Hermes is used as the relayer
	// chains which are running, i.e. producing blocks, at the moment
	RunningChains map[ChainID]bool
	// Used with CometMock. The time by which chains have been advanced. Used to keep chains in sync: when a new chain is started, advance its time by this value to keep chains in sync.
	TimeOffset       time.Duration
	TransformGenesis bool
	Name             string
}

func (*TestConfig) Initialize added in v6.4.0

func (tr *TestConfig) Initialize()

Initialize initializes the TestConfig instance by setting the runningChains field to an empty map.

func (*TestConfig) SetCometMockConfig added in v6.4.0

func (s *TestConfig) SetCometMockConfig(useCometmock bool)

func (*TestConfig) SetRelayerConfig added in v6.4.0

func (s *TestConfig) SetRelayerConfig(useRly bool)

func (*TestConfig) ValidateStringLiterals added in v6.4.0

func (s *TestConfig) ValidateStringLiterals()

ValidateStringLiterals enforces that configs follow the constraints necessary to execute the tests

Note: Network interfaces (name of virtual ethernet interfaces for ip link) within the container will be named as "$CHAIN_ID-$VAL_ID-out" etc. where this name is constrained to 15 bytes or less. Therefore each string literal used as a validatorID or chainID needs to be 5 char or less.

type TextProposal

type TextProposal struct {
	Title       string
	Description string
	Deposit     uint
	Status      string
}

type TxResponse added in v6.4.0

type TxResponse struct {
	TxHash string      `json:"txhash"`
	Code   int         `json:"code"`
	RawLog string      `json:"raw_log"`
	Events []sdk.Event `json:"events"`
}

func GetTxResponse added in v6.4.0

func GetTxResponse(rawResponse []byte) TxResponse

type UnbondTokensAction added in v6.4.0

type UnbondTokensAction struct {
	Chain      ChainID
	Sender     ValidatorID
	UnbondFrom ValidatorID
	Amount     uint
}

type UpgradeProposal

type UpgradeProposal struct {
	Title         string
	Description   string
	UpgradeHeight uint64
	Type          string
	Deposit       uint
	Status        string
}

type ValidatorConfig

type ValidatorConfig struct {
	// Seed phrase to generate a secp256k1 key used by the validator on the provider
	Mnemonic string
	// Validator account address on provider marshaled to string using Bech32
	// with Bech32Prefix = ProviderAccountPrefix
	DelAddress string
	// Validator account address on provider marshaled to string using Bech32
	// with Bech32Prefix = ConsumerAccountPrefix
	DelAddressOnConsumer string
	// Validator operator address on provider marshaled to string using Bech32
	// with Bech32Prefix = ProviderAccountPrefix
	ValoperAddress string
	// Validator operator address on provider marshaled to string using Bech32
	// with Bech32Prefix = ConsumerAccountPrefix
	ValoperAddressOnConsumer string
	// Validator consensus address on provider marshaled to string using Bech32
	// with Bech32Prefix = ProviderAccountPrefix. It matches the PrivValidatorKey below.
	ValconsAddress string
	// Validator consensus address on provider marshaled to string using Bech32
	// with Bech32Prefix = ConsumerAccountPrefix.
	ValconsAddressOnConsumer string
	// Key used for consensus on provider
	PrivValidatorKey string
	NodeKey          string
	// Must be an integer greater than 0 and less than 253
	IpSuffix string

	// Seed phrase to generate a secp256k1 key used by the validator on the consumer
	ConsumerMnemonic string
	// Validator account address on consumer marshaled to string using Bech32
	// with Bech32Prefix = ConsumerAccountPrefix
	ConsumerDelAddress string
	// Validator account address on consumer marshaled to string using Bech32
	// with Bech32Prefix = ProviderAccountPrefix
	ConsumerDelAddressOnProvider string
	// Validator operator address on consumer marshaled to string using Bech32
	// with Bech32Prefix = ConsumerAccountPrefix
	ConsumerValoperAddress string
	// Validator operator address on consumer marshaled to string using Bech32
	// with Bech32Prefix = ProviderAccountPrefix
	ConsumerValoperAddressOnProvider string
	// Validator consensus address on consumer marshaled to string using Bech32
	// with Bech32Prefix = ConsumerAccountPrefix. It matches the PrivValidatorKey below.
	ConsumerValconsAddress string
	// Validator consensus address on consumer marshaled to string using Bech32
	// with Bech32Prefix = ProviderAccountPrefix.
	ConsumerValconsAddressOnProvider string
	ConsumerValPubKey                string
	// Key used for consensus on consumer
	ConsumerPrivValidatorKey string
	ConsumerNodeKey          string
	UseConsumerKey           bool // if true the validator node will start with consumer key
}

Attributes that are unique to a validator. Allows us to map (part of) the set of strings defined above to a set of viable validators

type ValidatorID

type ValidatorID string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL