Documentation ¶
Overview ¶
This file contains the variables, constants, and default values used in the testing package and commonly defined in tests.
Index ¶
- Constants
- Variables
- func CreateSortedSignerArray(altPrivVal, suitePrivVal tmtypes.PrivValidator, ...) []tmtypes.PrivValidator
- func GenerateKeys(t *testing.T, n uint64) ([]crypto.PrivKey, []crypto.PubKey, crypto.PubKey)
- func GetChainID(index int) string
- func GetMockRecvCanaryCapabilityName(packet channeltypes.Packet) string
- func GetOKChainID(index int) string
- func MakeBlockID(hash []byte, partSetSize uint32, partSetHash []byte) tmtypes.BlockID
- func ParseAckFromEvents(events sdk.Events) ([]byte, error)
- func ParseChannelIDFromEvents(events sdk.Events) (string, error)
- func ParseClientIDFromEvents(events sdk.Events) (string, error)
- func ParseConnectionIDFromEvents(events sdk.Events) (string, error)
- func ParsePacketFromEvents(events sdk.Events) (channeltypes.Packet, error)
- type ChannelConfig
- type ClientConfig
- type ConnectionConfig
- type Coordinator
- func (coord *Coordinator) ChanOpenInitOnBothChains(path *Path) error
- func (coord *Coordinator) CommitBlock(chains ...TestChainI)
- func (coord *Coordinator) CommitNBlocks(chain TestChainI, n uint64)
- func (coord *Coordinator) ConnOpenInitOnBothChains(path *Path) error
- func (coord *Coordinator) CreateChannels(path *Path)
- func (coord *Coordinator) CreateConnections(path *Path)
- func (coord *Coordinator) CreateMockChannels(path *Path)
- func (coord *Coordinator) CreateTransferChannels(path *Path)
- func (coord *Coordinator) GetChain(chainID string) TestChainI
- func (coord *Coordinator) IncrementTime()
- func (coord *Coordinator) IncrementTimeBy(increment time.Duration)
- func (coord *Coordinator) Setup(path *Path)
- func (coord *Coordinator) SetupClients(path *Path)
- func (coord *Coordinator) SetupConnections(path *Path)
- func (coord *Coordinator) UpdateNextBlock(chains ...TestChainI)
- func (coord *Coordinator) UpdateTime()
- func (coord *Coordinator) UpdateTimeForChain(chain TestChainI)
- type Endpoint
- func (endpoint *Endpoint) AcknowledgePacket(packet channeltypes.Packet, ack []byte) error
- func (endpoint *Endpoint) ChanCloseInit() error
- func (endpoint *Endpoint) ChanOpenAck() error
- func (endpoint *Endpoint) ChanOpenConfirm() error
- func (endpoint *Endpoint) ChanOpenInit() error
- func (endpoint *Endpoint) ChanOpenTry() error
- func (endpoint *Endpoint) ConnOpenAck() error
- func (endpoint *Endpoint) ConnOpenConfirm() error
- func (endpoint *Endpoint) ConnOpenInit() error
- func (endpoint *Endpoint) ConnOpenTry() error
- func (endpoint *Endpoint) CreateClient() (err error)
- func (endpoint *Endpoint) GetChannel() channeltypes.Channel
- func (endpoint *Endpoint) GetClientState() exported.ClientState
- func (endpoint *Endpoint) GetConnection() connectiontypes.ConnectionEnd
- func (endpoint *Endpoint) GetConsensusState(height exported.Height) exported.ConsensusState
- func (endpoint *Endpoint) QueryClientStateProof() (exported.ClientState, []byte)
- func (endpoint *Endpoint) QueryConnectionHandshakeProof() (clientState exported.ClientState, proofClient, proofConsensus []byte, ...)
- func (endpoint *Endpoint) QueryProof(key []byte) ([]byte, clienttypes.Height)
- func (endpoint *Endpoint) QueryProofAtHeight(key []byte, height uint64) ([]byte, clienttypes.Height)
- func (endpoint *Endpoint) RecvPacket(packet channeltypes.Packet) error
- func (endpoint *Endpoint) RecvPacketWithResult(packet channeltypes.Packet) (*sdk.Result, error)
- func (endpoint *Endpoint) SendPacket(packet exported.PacketI) error
- func (endpoint *Endpoint) SetChannel(channel channeltypes.Channel)
- func (endpoint *Endpoint) SetChannelClosed() error
- func (endpoint *Endpoint) SetClientState(clientState exported.ClientState)
- func (endpoint *Endpoint) SetConnection(connection connectiontypes.ConnectionEnd)
- func (endpoint *Endpoint) SetConsensusState(consensusState exported.ConsensusState, height exported.Height)
- func (endpoint *Endpoint) TimeoutPacket(packet channeltypes.Packet) error
- func (endpoint *Endpoint) UpdateClient() (err error)
- func (endpoint *Endpoint) WriteAcknowledgement(ack exported.Acknowledgement, packet exported.PacketI) error
- type Path
- type SenderAccount
- type Solomachine
- func (solo *Solomachine) ClientState() *solomachinetypes.ClientState
- func (solo *Solomachine) ConsensusState() *solomachinetypes.ConsensusState
- func (solo *Solomachine) CreateHeader() *solomachinetypes.Header
- func (solo *Solomachine) CreateMisbehaviour() *solomachinetypes.Misbehaviour
- func (solo *Solomachine) GenerateSignature(signBytes []byte) []byte
- func (solo *Solomachine) GetChannelStatePath(portID, channelID string) commitmenttypes.MerklePath
- func (solo *Solomachine) GetClientStatePath(counterpartyClientIdentifier string) commitmenttypes.MerklePath
- func (solo *Solomachine) GetConnectionStatePath(connID string) commitmenttypes.MerklePath
- func (solo *Solomachine) GetConsensusStatePath(counterpartyClientIdentifier string, consensusHeight exported.Height) commitmenttypes.MerklePath
- func (solo *Solomachine) GetHeight() exported.Height
- func (solo *Solomachine) GetNextSequenceRecvPath(portID, channelID string) commitmenttypes.MerklePath
- func (solo *Solomachine) GetPacketAcknowledgementPath(portID, channelID string) commitmenttypes.MerklePath
- func (solo *Solomachine) GetPacketCommitmentPath(portID, channelID string) commitmenttypes.MerklePath
- func (solo *Solomachine) GetPacketReceiptPath(portID, channelID string) commitmenttypes.MerklePath
- type TendermintConfig
- type TestChain
- func (chain *TestChain) App() TestingApp
- func (chain *TestChain) BeginBlock()
- func (chain *TestChain) ChainID() string
- func (chain *TestChain) Codec() *codec.CodecProxy
- func (chain *TestChain) ConstructUpdateTMClientHeader(counterparty TestChainI, clientID string) (*ibctmtypes.Header, error)
- func (chain *TestChain) ConstructUpdateTMClientHeaderWithTrustedHeight(counterparty TestChainI, clientID string, trustedHeight clienttypes.Height) (*ibctmtypes.Header, error)
- func (chain *TestChain) Coordinator() *Coordinator
- func (chain *TestChain) CreateChannelCapability(scopedKeeper capabilitykeeper.ScopedKeeper, portID, channelID string)
- func (chain *TestChain) CreatePortCapability(scopedKeeper capabilitykeeper.ScopedKeeper, portID string)
- func (chain *TestChain) CreateTMClientHeader(chainID string, blockHeight int64, trustedHeight clienttypes.Height, ...) *ibctmtypes.Header
- func (chain *TestChain) CurrentHeader() tmproto.Header
- func (chain *TestChain) CurrentHeaderTime(t time.Time)
- func (chain *TestChain) CurrentTMClientHeader() *ibctmtypes.Header
- func (chain *TestChain) ExpireClient(amount time.Duration)
- func (chain *TestChain) GetAcknowledgement(packet exported.PacketI) []byte
- func (chain *TestChain) GetChannelCapability(portID, channelID string) *capabilitytypes.Capability
- func (chain *TestChain) GetClientState(clientID string) exported.ClientState
- func (chain *TestChain) GetConsensusState(clientID string, height exported.Height) (exported.ConsensusState, bool)
- func (chain *TestChain) GetContext() sdk.Context
- func (chain *TestChain) GetContextPointer() *sdk.Context
- func (chain *TestChain) GetPortCapability(portID string) *capabilitytypes.Capability
- func (chain *TestChain) GetPrefix() commitmenttypes.MerklePrefix
- func (chain *TestChain) GetSimApp() *simapp.SimApp
- func (chain *TestChain) GetValsAtHeight(height int64) (*tmtypes.ValidatorSet, bool)
- func (chain *TestChain) LastHeader() *ibctmtypes.Header
- func (chain *TestChain) NextBlock()
- func (chain *TestChain) QueryConsensusStateProof(clientID string) ([]byte, clienttypes.Height)
- func (chain *TestChain) QueryProof(key []byte) ([]byte, clienttypes.Height)
- func (chain *TestChain) QueryProofAtHeight(key []byte, height int64) ([]byte, clienttypes.Height)
- func (chain *TestChain) QueryServer() types.QueryService
- func (chain *TestChain) QueryUpgradeProof(key []byte, height uint64) ([]byte, clienttypes.Height)
- func (chain *TestChain) SendMsgs(msgs ...ibcmsg.Msg) (*sdk.Result, error)
- func (chain *TestChain) SenderAccount() sdk.Account
- func (chain *TestChain) SenderAccountPV() crypto.PrivKey
- func (chain *TestChain) SenderAccountPVBZ() []byte
- func (chain *TestChain) SenderAccounts() []SenderAccount
- func (chain *TestChain) SetCurrentHeader(h tmproto.Header)
- func (chain *TestChain) SetLastHeader(lh *ibctmtypes.Header)
- func (chain *TestChain) Signers() []tmtypes.PrivValidator
- func (chain *TestChain) T() *testing.T
- func (chain *TestChain) TxConfig() client.TxConfig
- func (chain *TestChain) UpdateNextBlock()
- func (chain *TestChain) Vals() *tmtypes.ValidatorSet
- type TestChainI
- type TestingApp
Constants ¶
const ( FirstClientID = "07-tendermint-0" FirstChannelID = "channel-0" FirstConnectionID = "connection-0" // Default params constants used to create a TM client TrustingPeriod time.Duration = time.Hour * 24 * 7 * 2 UnbondingPeriod time.Duration = time.Hour * 24 * 7 * 3 MaxClockDrift time.Duration = time.Second * 10 DefaultDelayPeriod uint64 = 0 DefaultChannelVersion = ibctransfertypes.Version InvalidID = "IDisInvalid" // Application Ports TransferPort = ibctransfertypes.ModuleName MockPort = mock.ModuleName // used for testing proposals Title = "title" Description = "description" LongString = "" /* 346-byte string literal not displayed */ MockFeePort = mock.ModuleName + ibcfeetypes.ModuleName )
const ChainIDPrefix = "testchain"
Variables ¶
var ( DefaultOpenInitVersion *connectiontypes.Version // Default params variables used to create a TM client DefaultTrustLevel ibctmtypes.Fraction = ibctmtypes.DefaultTrustLevel TestCoin = sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100)) UpgradePath = []string{"upgrade", "upgradedIBCState"} ConnectionVersion = connectiontypes.ExportedVersionsToProto(connectiontypes.GetCompatibleVersions())[0] MockAcknowledgement = mock.MockAcknowledgement.Acknowledgement() MockPacketData = mock.MockPacketData MockFailPacketData = mock.MockFailPacketData MockRecvCanaryCapabilityName = mock.MockRecvCanaryCapabilityName )
var DefaultTestingAppInit func() (TestingApp, map[string]json.RawMessage) = SetupTestingApp
var MaxAccounts = 10
var (
TimeIncrement = time.Second * 5
)
Functions ¶
func CreateSortedSignerArray ¶
func CreateSortedSignerArray(altPrivVal, suitePrivVal tmtypes.PrivValidator, altVal, suiteVal *tmtypes.Validator) []tmtypes.PrivValidator
CreateSortedSignerArray takes two PrivValidators, and the corresponding Validator structs (including voting power). It returns a signer array of PrivValidators that matches the sorting of ValidatorSet. The sorting is first by .VotingPower (descending), with secondary index of .Address (ascending).
func GenerateKeys ¶
GenerateKeys generates a new set of secp256k1 private keys and public keys. If the number of keys is greater than one then the public key returned represents a multisig public key. The private keys are used for signing, the public keys are used for generating the public key and the public key is used for solo machine verification. The usage of secp256k1 is entirely arbitrary. The key type can be swapped for any key type supported by the PublicKey interface, if needed. The same is true for the amino based Multisignature public key.
func GetChainID ¶
GetChainID returns the chainID used for the provided index.
func GetMockRecvCanaryCapabilityName ¶
func GetMockRecvCanaryCapabilityName(packet channeltypes.Packet) string
func GetOKChainID ¶
GetChainID returns the chainID used for the provided index.
func MakeBlockID ¶
MakeBlockID copied unimported test functions from tmtypes to use them here
func ParseAckFromEvents ¶
ParseAckFromEvents parses events emitted from a MsgRecvPacket and returns the acknowledgement.
func ParseChannelIDFromEvents ¶
ParseChannelIDFromEvents parses events emitted from a MsgChannelOpenInit or MsgChannelOpenTry and returns the channel identifier.
func ParseClientIDFromEvents ¶
ParseClientIDFromEvents parses events emitted from a MsgCreateClient and returns the client identifier.
func ParseConnectionIDFromEvents ¶
ParseConnectionIDFromEvents parses events emitted from a MsgConnectionOpenInit or MsgConnectionOpenTry and returns the connection identifier.
func ParsePacketFromEvents ¶
func ParsePacketFromEvents(events sdk.Events) (channeltypes.Packet, error)
Types ¶
type ChannelConfig ¶
type ChannelConfig struct { PortID string Version string Order channeltypes.Order }
func NewChannelConfig ¶
func NewChannelConfig() *ChannelConfig
type ClientConfig ¶
type ClientConfig interface {
GetClientType() string
}
type ConnectionConfig ¶
type ConnectionConfig struct { DelayPeriod uint64 Version *connectiontypes.Version }
func NewConnectionConfig ¶
func NewConnectionConfig() *ConnectionConfig
type Coordinator ¶
type Coordinator struct { CurrentTime time.Time Chains map[string]TestChainI // contains filtered or unexported fields }
Coordinator is a testing struct which contains N TestChain's. It handles keeping all chains in sync with regards to time.
func NewCoordinator ¶
func NewCoordinator(t *testing.T, n int) *Coordinator
NewCoordinator initializes Coordinator with N TestChain's
func NewEthCoordinator ¶
func NewEthCoordinator(t *testing.T, n int) *Coordinator
func (*Coordinator) ChanOpenInitOnBothChains ¶
func (coord *Coordinator) ChanOpenInitOnBothChains(path *Path) error
ChanOpenInitOnBothChains initializes a channel on the source chain and counterparty chain with the state INIT using the OpenInit handshake call.
func (*Coordinator) CommitBlock ¶
func (coord *Coordinator) CommitBlock(chains ...TestChainI)
CommitBlock commits a block on the provided indexes and then increments the global time.
CONTRACT: the passed in list of indexes must not contain duplicates
func (*Coordinator) CommitNBlocks ¶
func (coord *Coordinator) CommitNBlocks(chain TestChainI, n uint64)
CommitNBlocks commits n blocks to state and updates the block height by 1 for each commit.
func (*Coordinator) ConnOpenInitOnBothChains ¶
func (coord *Coordinator) ConnOpenInitOnBothChains(path *Path) error
ConnOpenInitOnBothChains initializes a connection on both endpoints with the state INIT using the OpenInit handshake call.
func (*Coordinator) CreateChannels ¶
func (coord *Coordinator) CreateChannels(path *Path)
CreateChannel constructs and executes channel handshake messages in order to create OPEN channels on chainA and chainB. The function expects the channels to be successfully opened otherwise testing will fail.
func (*Coordinator) CreateConnections ¶
func (coord *Coordinator) CreateConnections(path *Path)
CreateConnection constructs and executes connection handshake messages in order to create OPEN channels on chainA and chainB. The connection information of for chainA and chainB are returned within a TestConnection struct. The function expects the connections to be successfully opened otherwise testing will fail.
func (*Coordinator) CreateMockChannels ¶
func (coord *Coordinator) CreateMockChannels(path *Path)
CreateMockChannels constructs and executes channel handshake messages to create OPEN channels that use a mock application module that returns nil on all callbacks. This function is expects the channels to be successfully opened otherwise testing will fail.
func (*Coordinator) CreateTransferChannels ¶
func (coord *Coordinator) CreateTransferChannels(path *Path)
CreateTransferChannels constructs and executes channel handshake messages to create OPEN ibc-transfer channels on chainA and chainB. The function expects the channels to be successfully opened otherwise testing will fail.
func (*Coordinator) GetChain ¶
func (coord *Coordinator) GetChain(chainID string) TestChainI
GetChain returns the TestChain using the given chainID and returns an error if it does not exist.
func (*Coordinator) IncrementTime ¶
func (coord *Coordinator) IncrementTime()
IncrementTime iterates through all the TestChain's and increments their current header time by 5 seconds.
CONTRACT: this function must be called after every Commit on any TestChain.
func (*Coordinator) IncrementTimeBy ¶
func (coord *Coordinator) IncrementTimeBy(increment time.Duration)
IncrementTimeBy iterates through all the TestChain's and increments their current header time by specified time.
func (*Coordinator) Setup ¶
func (coord *Coordinator) Setup(path *Path)
Setup constructs a TM client, connection, and channel on both chains provided. It will fail if any error occurs. The clientID's, TestConnections, and TestChannels are returned for both chains. The channels created are connected to the ibc-transfer application.
func (*Coordinator) SetupClients ¶
func (coord *Coordinator) SetupClients(path *Path)
SetupClients is a helper function to create clients on both chains. It assumes the caller does not anticipate any errors.
func (*Coordinator) SetupConnections ¶
func (coord *Coordinator) SetupConnections(path *Path)
SetupClientConnections is a helper function to create clients and the appropriate connections on both the source and counterparty chain. It assumes the caller does not anticipate any errors.
func (*Coordinator) UpdateNextBlock ¶
func (coord *Coordinator) UpdateNextBlock(chains ...TestChainI)
func (*Coordinator) UpdateTime ¶
func (coord *Coordinator) UpdateTime()
UpdateTime updates all clocks for the TestChains to the current global time.
func (*Coordinator) UpdateTimeForChain ¶
func (coord *Coordinator) UpdateTimeForChain(chain TestChainI)
UpdateTimeForChain updates the clock for a specific chain.
type Endpoint ¶
type Endpoint struct { Chain TestChainI Counterparty *Endpoint ClientID string ConnectionID string ChannelID string ClientConfig ClientConfig ConnectionConfig *ConnectionConfig ChannelConfig *ChannelConfig }
Endpoint is a which represents a channel endpoint and its associated client and connections. It contains client, connection, and channel configuration parameters. Endpoint functions will utilize the parameters set in the configuration structs when executing IBC messages.
func NewDefaultEndpoint ¶
func NewDefaultEndpoint(chain TestChainI) *Endpoint
NewDefaultEndpoint constructs a new endpoint using default values. CONTRACT: the counterparty endpoitn must be set by the caller.
func NewEndpoint ¶
func NewEndpoint( chain TestChainI, clientConfig ClientConfig, connectionConfig *ConnectionConfig, channelConfig *ChannelConfig, ) *Endpoint
NewEndpoint constructs a new endpoint without the counterparty. CONTRACT: the counterparty endpoint must be set by the caller.
func (*Endpoint) AcknowledgePacket ¶
func (endpoint *Endpoint) AcknowledgePacket(packet channeltypes.Packet, ack []byte) error
AcknowledgePacket sends a MsgAcknowledgement to the channel associated with the endpoint.
func (*Endpoint) ChanCloseInit ¶
ChanCloseInit will construct and execute a MsgChannelCloseInit on the associated endpoint.
NOTE: does not work with ibc-transfer module
func (*Endpoint) ChanOpenAck ¶
ChanOpenAck will construct and execute a MsgChannelOpenAck on the associated endpoint.
func (*Endpoint) ChanOpenConfirm ¶
ChanOpenConfirm will construct and execute a MsgChannelOpenConfirm on the associated endpoint.
func (*Endpoint) ChanOpenInit ¶
ChanOpenInit will construct and execute a MsgChannelOpenInit on the associated endpoint.
func (*Endpoint) ChanOpenTry ¶
ChanOpenTry will construct and execute a MsgChannelOpenTry on the associated endpoint.
func (*Endpoint) ConnOpenAck ¶
ConnOpenAck will construct and execute a MsgConnectionOpenAck on the associated endpoint.
func (*Endpoint) ConnOpenConfirm ¶
ConnOpenConfirm will construct and execute a MsgConnectionOpenConfirm on the associated endpoint.
func (*Endpoint) ConnOpenInit ¶
ConnOpenInit will construct and execute a MsgConnectionOpenInit on the associated endpoint.
func (*Endpoint) ConnOpenTry ¶
ConnOpenTry will construct and execute a MsgConnectionOpenTry on the associated endpoint.
func (*Endpoint) CreateClient ¶
CreateClient creates an IBC client on the endpoint. It will update the clientID for the endpoint if the message is successfully executed. NOTE: a solo machine client will be created with an empty diversifier.
func (*Endpoint) GetChannel ¶
func (endpoint *Endpoint) GetChannel() channeltypes.Channel
GetChannel retrieves an IBC Channel for the endpoint. The channel is expected to exist otherwise testing will fail.
func (*Endpoint) GetClientState ¶
func (endpoint *Endpoint) GetClientState() exported.ClientState
GetClientState retrieves the Client State for this endpoint. The client state is expected to exist otherwise testing will fail.
func (*Endpoint) GetConnection ¶
func (endpoint *Endpoint) GetConnection() connectiontypes.ConnectionEnd
GetConnection retrieves an IBC Connection for the endpoint. The connection is expected to exist otherwise testing will fail.
func (*Endpoint) GetConsensusState ¶
func (endpoint *Endpoint) GetConsensusState(height exported.Height) exported.ConsensusState
GetConsensusState retrieves the Consensus State for this endpoint at the provided height. The consensus state is expected to exist otherwise testing will fail.
func (*Endpoint) QueryClientStateProof ¶
func (endpoint *Endpoint) QueryClientStateProof() (exported.ClientState, []byte)
QueryClientStateProof performs and abci query for a client stat associated with this endpoint and returns the ClientState along with the proof.
func (*Endpoint) QueryConnectionHandshakeProof ¶
func (endpoint *Endpoint) QueryConnectionHandshakeProof() ( clientState exported.ClientState, proofClient, proofConsensus []byte, consensusHeight clienttypes.Height, proofConnection []byte, proofHeight clienttypes.Height, )
QueryConnectionHandshakeProof returns all the proofs necessary to execute OpenTry or Open Ack of the connection handshakes. It returns the counterparty client state, proof of the counterparty client state, proof of the counterparty consensus state, the consensus state height, proof of the counterparty connection, and the proof height for all the proofs returned.
func (*Endpoint) QueryProof ¶
func (endpoint *Endpoint) QueryProof(key []byte) ([]byte, clienttypes.Height)
QueryProof queries proof associated with this endpoint using the lastest client state height on the counterparty chain.
func (*Endpoint) QueryProofAtHeight ¶
func (endpoint *Endpoint) QueryProofAtHeight(key []byte, height uint64) ([]byte, clienttypes.Height)
QueryProofAtHeight queries proof associated with this endpoint using the proof height providied
func (*Endpoint) RecvPacket ¶
func (endpoint *Endpoint) RecvPacket(packet channeltypes.Packet) error
RecvPacket receives a packet on the associated endpoint. The counterparty client is updated.
func (*Endpoint) RecvPacketWithResult ¶
RecvPacketWithResult receives a packet on the associated endpoint and the result of the transaction is returned. The counterparty client is updated.
func (*Endpoint) SendPacket ¶
SendPacket sends a packet through the channel keeper using the associated endpoint The counterparty client is updated so proofs can be sent to the counterparty chain.
func (*Endpoint) SetChannel ¶
func (endpoint *Endpoint) SetChannel(channel channeltypes.Channel)
SetChannel sets the channel for this endpoint.
func (*Endpoint) SetChannelClosed ¶
SetChannelClosed sets a channel state to CLOSED.
func (*Endpoint) SetClientState ¶
func (endpoint *Endpoint) SetClientState(clientState exported.ClientState)
SetClientState sets the client state for this endpoint.
func (*Endpoint) SetConnection ¶
func (endpoint *Endpoint) SetConnection(connection connectiontypes.ConnectionEnd)
SetConnection sets the connection for this endpoint.
func (*Endpoint) SetConsensusState ¶
func (endpoint *Endpoint) SetConsensusState(consensusState exported.ConsensusState, height exported.Height)
SetConsensusState sets the consensus state for this endpoint.
func (*Endpoint) TimeoutPacket ¶
func (endpoint *Endpoint) TimeoutPacket(packet channeltypes.Packet) error
TimeoutPacket sends a MsgTimeout to the channel associated with the endpoint.
func (*Endpoint) UpdateClient ¶
UpdateClient updates the IBC client associated with the endpoint.
func (*Endpoint) WriteAcknowledgement ¶
func (endpoint *Endpoint) WriteAcknowledgement(ack exported.Acknowledgement, packet exported.PacketI) error
WriteAcknowledgement writes an acknowledgement on the channel associated with the endpoint. The counterparty client is updated.
type Path ¶
Path contains two endpoints representing two chains connected over IBC
func NewPath ¶
func NewPath(chainA, chainB TestChainI) *Path
NewPath constructs an endpoint for each chain using the default values for the endpoints. Each endpoint is updated to have a pointer to the counterparty endpoint.
func (*Path) RelayPacket ¶
func (path *Path) RelayPacket(packet channeltypes.Packet, ack []byte) error
RelayPacket attempts to relay the packet first on EndpointA and then on EndpointB if EndpointA does not contain a packet commitment for that packet. An error is returned if a relay step fails or the packet commitment does not exist on either endpoint.
func (*Path) RelayPacketV4 ¶
func (path *Path) RelayPacketV4(packet channeltypes.Packet) error
func (*Path) SetChannelOrdered ¶
func (path *Path) SetChannelOrdered()
SetChannelOrdered sets the channel order for both endpoints to ORDERED.
type SenderAccount ¶
type Solomachine ¶
type Solomachine struct { ClientID string PrivateKeys []crypto.PrivKey // keys used for signing PublicKeys []crypto.PubKey // keys used for generating solo machine pub key PublicKey crypto.PubKey // key used for verification Sequence uint64 Time uint64 Diversifier string // contains filtered or unexported fields }
Solomachine is a testing helper used to simulate a counterparty solo machine client.
func NewSolomachine ¶
func NewSolomachine(t *testing.T, cdc *codec.CodecProxy, clientID, diversifier string, nKeys uint64) *Solomachine
// NewSolomachine returns a new solomachine instance with an `nKeys` amount of // generated private/public key pairs and a sequence starting at 1. If nKeys // is greater than 1 then a multisig public key is used.
func (*Solomachine) ClientState ¶
func (solo *Solomachine) ClientState() *solomachinetypes.ClientState
ClientState returns a new solo machine ClientState instance. Default usage does not allow update after governance proposal
func (*Solomachine) ConsensusState ¶
func (solo *Solomachine) ConsensusState() *solomachinetypes.ConsensusState
ConsensusState returns a new solo machine ConsensusState instance
func (*Solomachine) CreateHeader ¶
func (solo *Solomachine) CreateHeader() *solomachinetypes.Header
CreateHeader generates a new private/public key pair and creates the necessary signature to construct a valid solo machine header.
func (*Solomachine) CreateMisbehaviour ¶
func (solo *Solomachine) CreateMisbehaviour() *solomachinetypes.Misbehaviour
CreateMisbehaviour constructs testing misbehaviour for the solo machine client by signing over two different data bytes at the same sequence.
func (*Solomachine) GenerateSignature ¶
func (solo *Solomachine) GenerateSignature(signBytes []byte) []byte
GenerateSignature uses the stored private keys to generate a signature over the sign bytes with each key. If the amount of keys is greater than 1 then a multisig data type is returned.
func (*Solomachine) GetChannelStatePath ¶
func (solo *Solomachine) GetChannelStatePath(portID, channelID string) commitmenttypes.MerklePath
GetChannelStatePath returns the commitment path for that channel state.
func (*Solomachine) GetClientStatePath ¶
func (solo *Solomachine) GetClientStatePath(counterpartyClientIdentifier string) commitmenttypes.MerklePath
GetClientStatePath returns the commitment path for the client state.
func (*Solomachine) GetConnectionStatePath ¶
func (solo *Solomachine) GetConnectionStatePath(connID string) commitmenttypes.MerklePath
GetConnectionStatePath returns the commitment path for the connection state.
func (*Solomachine) GetConsensusStatePath ¶
func (solo *Solomachine) GetConsensusStatePath(counterpartyClientIdentifier string, consensusHeight exported.Height) commitmenttypes.MerklePath
GetConsensusStatePath returns the commitment path for the consensus state.
func (*Solomachine) GetHeight ¶
func (solo *Solomachine) GetHeight() exported.Height
GetHeight returns an exported.Height with Sequence as RevisionHeight
func (*Solomachine) GetNextSequenceRecvPath ¶
func (solo *Solomachine) GetNextSequenceRecvPath(portID, channelID string) commitmenttypes.MerklePath
GetNextSequenceRecvPath returns the commitment path for the next sequence recv counter.
func (*Solomachine) GetPacketAcknowledgementPath ¶
func (solo *Solomachine) GetPacketAcknowledgementPath(portID, channelID string) commitmenttypes.MerklePath
GetPacketAcknowledgementPath returns the commitment path for a packet acknowledgement.
func (*Solomachine) GetPacketCommitmentPath ¶
func (solo *Solomachine) GetPacketCommitmentPath(portID, channelID string) commitmenttypes.MerklePath
GetPacketCommitmentPath returns the commitment path for a packet commitment.
func (*Solomachine) GetPacketReceiptPath ¶
func (solo *Solomachine) GetPacketReceiptPath(portID, channelID string) commitmenttypes.MerklePath
GetPacketReceiptPath returns the commitment path for a packet receipt and an absent receipts.
type TendermintConfig ¶
type TendermintConfig struct { TrustLevel ibctmtypes.Fraction TrustingPeriod time.Duration UnbondingPeriod time.Duration MaxClockDrift time.Duration AllowUpdateAfterExpiry bool AllowUpdateAfterMisbehaviour bool }
func NewTendermintConfig ¶
func NewTendermintConfig() *TendermintConfig
func (*TendermintConfig) GetClientType ¶
func (tmcfg *TendermintConfig) GetClientType() string
type TestChain ¶
type TestChain struct { TApp TestingApp // contains filtered or unexported fields }
TestChain is a testing struct that wraps a simapp with the last TM Header, the current ABCI header and the validators of the TestChain. It also contains a field called ChainID. This is the clientID that *other* chains use to refer to this TestChain. The SenderAccount is used for delivering transactions through the application state. NOTE: the actual application uses an empty chain-id for ease of testing.
func NewTestEthChain ¶
func NewTestEthChain(t *testing.T, coord *Coordinator, chainID string) *TestChain
func (*TestChain) App ¶
func (chain *TestChain) App() TestingApp
func (*TestChain) BeginBlock ¶
func (chain *TestChain) BeginBlock()
func (*TestChain) Codec ¶
func (chain *TestChain) Codec() *codec.CodecProxy
func (*TestChain) ConstructUpdateTMClientHeader ¶
func (chain *TestChain) ConstructUpdateTMClientHeader(counterparty TestChainI, clientID string) (*ibctmtypes.Header, error)
ConstructUpdateTMClientHeader will construct a valid 07-tendermint Header to update the light client on the source chain.
func (*TestChain) ConstructUpdateTMClientHeaderWithTrustedHeight ¶
func (chain *TestChain) ConstructUpdateTMClientHeaderWithTrustedHeight(counterparty TestChainI, clientID string, trustedHeight clienttypes.Height) (*ibctmtypes.Header, error)
ConstructUpdateTMClientHeader will construct a valid 07-tendermint Header to update the light client on the source chain.
func (*TestChain) Coordinator ¶
func (chain *TestChain) Coordinator() *Coordinator
func GetSimApp() *simapp.SimApp {} func GetChannelCapability(portID, channelID string) *capabilitytypes.Capability {} func CreateChannelCapability(scopedKeeper capabilitykeeper.ScopedKeeper, portID, channelID string) {} func SendMsgs(msgs ...sdk.Msg) (*sdk.Result, error) {} func QueryUpgradeProof(key []byte, height uint64) ([]byte, clienttypes.Height) {}
func (*TestChain) CreateChannelCapability ¶
func (chain *TestChain) CreateChannelCapability(scopedKeeper capabilitykeeper.ScopedKeeper, portID, channelID string)
CreateChannelCapability binds and claims a capability for the given portID and channelID if it does not already exist. This function will fail testing on any resulting error. The scoped keeper passed in will claim the new capability.
func (*TestChain) CreatePortCapability ¶
func (chain *TestChain) CreatePortCapability(scopedKeeper capabilitykeeper.ScopedKeeper, portID string)
CreatePortCapability binds and claims a capability for the given portID if it does not already exist. This function will fail testing on any resulting error. NOTE: only creation of a capbility for a transfer or mock port is supported Other applications must bind to the port in InitGenesis or modify this code.
func (*TestChain) CreateTMClientHeader ¶
func (chain *TestChain) CreateTMClientHeader(chainID string, blockHeight int64, trustedHeight clienttypes.Height, timestamp time.Time, tmValSet, tmTrustedVals *tmtypes.ValidatorSet, signers []tmtypes.PrivValidator) *ibctmtypes.Header
CreateTMClientHeader creates a TM header to update the TM client. Args are passed in to allow caller flexibility to use params that differ from the chain.
func (*TestChain) CurrentHeader ¶
func (chain *TestChain) CurrentTMClientHeader() *ibctmtypes.Header {}
func (*TestChain) CurrentHeaderTime ¶
func (*TestChain) CurrentTMClientHeader ¶
func (chain *TestChain) CurrentTMClientHeader() *ibctmtypes.Header
CurrentTMClientHeader creates a TM header using the current header parameters on the chain. The trusted fields in the header are set to nil.
func (*TestChain) ExpireClient ¶
ExpireClient fast forwards the chain's block time by the provided amount of time which will expire any clients with a trusting period less than or equal to this amount of time.
func (*TestChain) GetAcknowledgement ¶
GetAcknowledgement retrieves an acknowledgement for the provided packet. If the acknowledgement does not exist then testing will fail.
func (*TestChain) GetChannelCapability ¶
func (chain *TestChain) GetChannelCapability(portID, channelID string) *capabilitytypes.Capability
GetChannelCapability returns the channel capability for the given portID and channelID. The capability must exist, otherwise testing will fail.
func (*TestChain) GetClientState ¶
func (chain *TestChain) GetClientState(clientID string) exported.ClientState
GetClientState retrieves the client state for the provided clientID. The client is expected to exist otherwise testing will fail.
func (*TestChain) GetConsensusState ¶
func (chain *TestChain) GetConsensusState(clientID string, height exported.Height) (exported.ConsensusState, bool)
GetConsensusState retrieves the consensus state for the provided clientID and height. It will return a success boolean depending on if consensus state exists or not.
func (*TestChain) GetContext ¶
GetContext returns the current context for the application.
func (*TestChain) GetContextPointer ¶
func (*TestChain) GetPortCapability ¶
func (chain *TestChain) GetPortCapability(portID string) *capabilitytypes.Capability
GetPortCapability returns the port capability for the given portID. The capability must exist, otherwise testing will fail.
func (*TestChain) GetPrefix ¶
func (chain *TestChain) GetPrefix() commitmenttypes.MerklePrefix
GetPrefix returns the prefix for used by a chain in connection creation
func (*TestChain) GetSimApp ¶
GetSimApp returns the SimApp to allow usage ofnon-interface fields. CONTRACT: This function should not be called by third parties implementing their own SimApp.
func (*TestChain) GetValsAtHeight ¶
func (chain *TestChain) GetValsAtHeight(height int64) (*tmtypes.ValidatorSet, bool)
GetValsAtHeight will return the validator set of the chain at a given height. It will return a success boolean depending on if the validator set exists or not at that height.
func (*TestChain) LastHeader ¶
func (chain *TestChain) LastHeader() *ibctmtypes.Header
func (chain *TestChain) QueryProof(key []byte) ([]byte, clienttypes.Height) {} func (chain *TestChain) GetConsensusState(clientID string, height exported.Height) (exported.ConsensusState, bool) { } func (chain *TestChain) GetPrefix() commitmenttypes.MerklePrefix {}
func (*TestChain) NextBlock ¶
func (chain *TestChain) NextBlock()
NextBlock sets the last header to the current header and increments the current header to be at the next block height. It does not update the time as that is handled by the Coordinator.
CONTRACT: this function must only be called after app.Commit() occurs
func (*TestChain) QueryConsensusStateProof ¶
func (chain *TestChain) QueryConsensusStateProof(clientID string) ([]byte, clienttypes.Height)
QueryConsensusStateProof performs an abci query for a consensus state stored on the given clientID. The proof and consensusHeight are returned.
func (*TestChain) QueryProof ¶
func (chain *TestChain) QueryProof(key []byte) ([]byte, clienttypes.Height)
QueryProof performs an abci query with the given key and returns the proto encoded merkle proof for the query and the height at which the proof will succeed on a tendermint verifier.
func (*TestChain) QueryProofAtHeight ¶
QueryProof performs an abci query with the given key and returns the proto encoded merkle proof for the query and the height at which the proof will succeed on a tendermint verifier.
func (*TestChain) QueryServer ¶
func (chain *TestChain) QueryServer() types.QueryService
func (*TestChain) QueryUpgradeProof ¶
QueryUpgradeProof performs an abci query with the given key and returns the proto encoded merkle proof for the query and the height at which the proof will succeed on a tendermint verifier.
func (*TestChain) SendMsgs ¶
SendMsgs delivers a transaction through the application. It updates the senders sequence number and updates the TestChain's headers. It returns the result and error if one occurred.
func (*TestChain) SenderAccount ¶
func (*TestChain) SenderAccountPV ¶
func (*TestChain) SenderAccountPVBZ ¶
func (*TestChain) SenderAccounts ¶
func (chain *TestChain) SenderAccounts() []SenderAccount
func (*TestChain) SetCurrentHeader ¶
func (*TestChain) SetLastHeader ¶
func (chain *TestChain) SetLastHeader(lh *ibctmtypes.Header)
func (*TestChain) Signers ¶
func (chain *TestChain) Signers() []tmtypes.PrivValidator
func (*TestChain) UpdateNextBlock ¶
func (chain *TestChain) UpdateNextBlock()
func (*TestChain) Vals ¶
func (chain *TestChain) Vals() *tmtypes.ValidatorSet
func (chain *TestChain) NextBlock() {}
func CreateTMClientHeader(chainID string, blockHeight int64, trustedHeight clienttypes.Height, timestamp time.Time, tmValSet, tmTrustedVals *tmtypes.ValidatorSet, signers []tmtypes.PrivValidator) *ibctmtypes.Header { }
type TestChainI ¶
type TestChainI interface { TxConfig() client.TxConfig T() *testing.T App() TestingApp GetContext() sdk.Context GetContextPointer() *sdk.Context GetClientState(clientID string) exported.ClientState QueryProof(key []byte) ([]byte, clienttypes.Height) QueryConsensusStateProof(clientID string) ([]byte, clienttypes.Height) GetConsensusState(clientID string, height exported.Height) (exported.ConsensusState, bool) GetPrefix() commitmenttypes.MerklePrefix LastHeader() *ibctmtypes.Header QueryServer() types.QueryService ChainID() string Codec() *codec.CodecProxy SenderAccount() sdk.Account SenderAccountPV() crypto.PrivKey SenderAccountPVBZ() []byte CurrentTMClientHeader() *ibctmtypes.Header ExpireClient(amount time.Duration) CurrentHeader() tmproto.Header CurrentHeaderTime(time.Time) NextBlock() BeginBlock() UpdateNextBlock() CreateTMClientHeader(chainID string, blockHeight int64, trustedHeight clienttypes.Height, timestamp time.Time, tmValSet, tmTrustedVals *tmtypes.ValidatorSet, signers []tmtypes.PrivValidator) *ibctmtypes.Header Vals() *tmtypes.ValidatorSet Signers() []tmtypes.PrivValidator GetSimApp() *simapp.SimApp GetChannelCapability(portID, channelID string) *capabilitytypes.Capability CreateChannelCapability(scopedKeeper capabilitykeeper.ScopedKeeper, portID, channelID string) SendMsgs(msgs ...ibcmsg.Msg) (*sdk.Result, error) QueryUpgradeProof(key []byte, height uint64) ([]byte, clienttypes.Height) Coordinator() *Coordinator QueryProofAtHeight(key []byte, height int64) ([]byte, clienttypes.Height) ConstructUpdateTMClientHeaderWithTrustedHeight(counterparty TestChainI, clientID string, trustedHeight clienttypes.Height) (*ibctmtypes.Header, error) ConstructUpdateTMClientHeader(counterparty TestChainI, clientID string) (*ibctmtypes.Header, error) GetValsAtHeight(height int64) (*tmtypes.ValidatorSet, bool) CreatePortCapability(scopedKeeper capabilitykeeper.ScopedKeeper, portID string) GetPortCapability(portID string) *capabilitytypes.Capability SenderAccounts() []SenderAccount // contains filtered or unexported methods }
func NewTestChain ¶
func NewTestChain(t *testing.T, coord *Coordinator, chainID string) TestChainI
NewTestChain initializes a new TestChain instance with a single validator set using a generated private key. It also creates a sender account to be used for delivering transactions.
The first block height is committed to state in order to allow for client creations on counterparty chains. The TestChain will return with a block height starting at 2.
Time management is handled by the Coordinator in order to ensure synchrony between chains. Each update of any chain increments the block header time for all chains by 5 seconds.
type TestingApp ¶
type TestingApp interface { abci.Application TxConfig() client.TxConfig // ibc-go additions GetBaseApp() *bam.BaseApp GetStakingKeeper() stakingkeeper.Keeper GetIBCKeeper() *keeper.Keeper GetFacadedKeeper() *ibc.Keeper GetScopedIBCKeeper() capabilitykeeper.ScopedKeeper // Implemented by SimApp AppCodec() *codec.CodecProxy // Implemented by BaseApp LastCommitID() sdk.CommitID LastBlockHeight() int64 }
func SetupTestingApp ¶
func SetupTestingApp() (TestingApp, map[string]json.RawMessage)
func SetupWithGenesisValSet ¶
func SetupWithGenesisValSet(t *testing.T, chainId string, valSet *tmtypes.ValidatorSet, genAccs []authexported.GenesisAccount, balances ...sdk.Coins) TestingApp
SetupWithGenesisValSet initializes a new SimApp with a validator set and genesis accounts that also act as delegators. For simplicity, each validator is bonded with a delegation of one consensus engine unit (10^6) in the default token of the simapp from first genesis account. A Nop logger is set in SimApp.