framework

package
v1.3.2 Latest Latest
Warning

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

Go to latest
Published: Nov 6, 2023 License: Apache-2.0 Imports: 42 Imported by: 0

Documentation

Index

Constants

View Source
const (

	// NativeTokenMintableTestCfg is the test native token config for Supernets originated native tokens
	NativeTokenMintableTestCfg = "Mintable Edge Coin:MEC:18:true:%s" //nolint:gosec
)

Variables

View Source
var (
	ProxyContractAdminAddr = "0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed"
)

Functions

func CopyDir

func CopyDir(source, destination string) error

func RunEdgeCommand

func RunEdgeCommand(args []string, stdout io.Writer) error

RunEdgeCommand - calls a command line edge function

Types

type ClusterOption

type ClusterOption func(*TestClusterConfig)

func WithBlockGasLimit

func WithBlockGasLimit(blockGasLimit uint64) ClusterOption

func WithBlockTime added in v1.1.1

func WithBlockTime(blockTime time.Duration) ClusterOption

func WithBootnodeCount

func WithBootnodeCount(cnt int) ClusterOption

func WithBridgeAllowListAdmin added in v0.9.0

func WithBridgeAllowListAdmin(addr types.Address) ClusterOption

func WithBridgeAllowListEnabled added in v0.9.0

func WithBridgeAllowListEnabled(addr types.Address) ClusterOption

func WithBridgeBlockListAdmin added in v0.9.0

func WithBridgeBlockListAdmin(addr types.Address) ClusterOption

func WithBridgeBlockListEnabled added in v0.9.0

func WithBridgeBlockListEnabled(addr types.Address) ClusterOption

func WithBurnContract added in v0.9.0

func WithBurnContract(burnContract *polybft.BurnContractInfo) ClusterOption

func WithContractDeployerAllowListAdmin

func WithContractDeployerAllowListAdmin(addr types.Address) ClusterOption

func WithContractDeployerAllowListEnabled

func WithContractDeployerAllowListEnabled(addr types.Address) ClusterOption

func WithContractDeployerBlockListAdmin added in v0.9.0

func WithContractDeployerBlockListAdmin(addr types.Address) ClusterOption

func WithContractDeployerBlockListEnabled added in v0.9.0

func WithContractDeployerBlockListEnabled(addr types.Address) ClusterOption

func WithEpochReward

func WithEpochReward(epochReward int) ClusterOption

func WithEpochSize

func WithEpochSize(epochSize int) ClusterOption

func WithGenesisState

func WithGenesisState(databasePath string, stateRoot types.Hash) ClusterOption

func WithNativeTokenConfig added in v0.9.0

func WithNativeTokenConfig(tokenConfigRaw string) ClusterOption

func WithNonValidators

func WithNonValidators(num int) ClusterOption

func WithNumBlockConfirmations

func WithNumBlockConfirmations(numBlockConfirmations uint64) ClusterOption

func WithPremine

func WithPremine(addresses ...types.Address) ClusterOption

func WithPropertyTestLogging added in v0.9.0

func WithPropertyTestLogging() ClusterOption

func WithProxyContractsAdmin added in v1.3.0

func WithProxyContractsAdmin(address string) ClusterOption

func WithRootTrackerPollInterval added in v1.1.1

func WithRootTrackerPollInterval(pollInterval time.Duration) ClusterOption

func WithSecretsCallback

func WithSecretsCallback(fn func([]types.Address, *TestClusterConfig)) ClusterOption

func WithTestRewardToken added in v0.9.0

func WithTestRewardToken() ClusterOption

func WithTransactionsAllowListAdmin added in v0.9.0

func WithTransactionsAllowListAdmin(addr types.Address) ClusterOption

func WithTransactionsAllowListEnabled added in v0.9.0

func WithTransactionsAllowListEnabled(addr types.Address) ClusterOption

func WithTransactionsBlockListAdmin added in v0.9.0

func WithTransactionsBlockListAdmin(addr types.Address) ClusterOption

func WithTransactionsBlockListEnabled added in v0.9.0

func WithTransactionsBlockListEnabled(addr types.Address) ClusterOption

func WithValidatorSnapshot

func WithValidatorSnapshot(validatorsLen uint64) ClusterOption

type NodeType added in v1.3.1

type NodeType int
const (
	None      NodeType = 0
	Validator NodeType = 1
	Relayer   NodeType = 2
)

func (*NodeType) Append added in v1.3.1

func (nt *NodeType) Append(value NodeType)

func (NodeType) IsSet added in v1.3.1

func (nt NodeType) IsSet(value NodeType) bool

type TestBridge

type TestBridge struct {
	// contains filtered or unexported fields
}

func NewTestBridge

func NewTestBridge(t *testing.T, clusterConfig *TestClusterConfig) (*TestBridge, error)

func (*TestBridge) Deposit added in v0.9.0

func (t *TestBridge) Deposit(token bridgeCommon.TokenType, rootTokenAddr, rootPredicateAddr types.Address,
	senderKey, receivers, amounts, tokenIDs, jsonRPCAddr, minterKey string, childChainMintable bool) error

Deposit function invokes bridge deposit of ERC tokens (from the root to the child chain) with given receivers, amounts and/or token ids

func (*TestBridge) FundValidators added in v1.0.0

func (t *TestBridge) FundValidators(tokenAddress types.Address, secretsPaths []string, amounts []*big.Int) error

FundValidators sends tokens to a rootchain validators

func (*TestBridge) JSONRPCAddr

func (t *TestBridge) JSONRPCAddr() string

func (*TestBridge) SendExitTransaction

func (t *TestBridge) SendExitTransaction(exitHelper types.Address, exitID uint64, childJSONRPCAddr string) error

SendExitTransaction sends exit transaction to the root chain

func (*TestBridge) Start

func (t *TestBridge) Start() error

func (*TestBridge) Stop

func (t *TestBridge) Stop()

func (*TestBridge) WaitUntil

func (t *TestBridge) WaitUntil(pollFrequency, timeout time.Duration, handler func() (bool, error)) error

func (*TestBridge) Withdraw added in v0.9.0

func (t *TestBridge) Withdraw(token bridgeCommon.TokenType,
	senderKey, receivers, amounts, tokenIDs, jsonRPCAddr string,
	childPredicate, childToken types.Address, childChainMintable bool) error

Withdraw function is used to invoke bridge withdrawals for any kind of ERC tokens (from the child to the root chain) with given receivers, amounts and/or token ids

type TestCluster

type TestCluster struct {
	Config  *TestClusterConfig
	Servers []*TestServer
	Bridge  *TestBridge
	// contains filtered or unexported fields
}

func NewPropertyTestCluster added in v0.9.0

func NewPropertyTestCluster(t *testing.T, validatorsCount int, opts ...ClusterOption) *TestCluster

func NewTestCluster

func NewTestCluster(t *testing.T, validatorsCount int, opts ...ClusterOption) *TestCluster

func (*TestCluster) Call

func (c *TestCluster) Call(t *testing.T, to types.Address, method *abi.Method,
	args ...interface{}) map[string]interface{}

func (*TestCluster) Deploy

func (c *TestCluster) Deploy(t *testing.T, sender ethgo.Key, bytecode []byte) *TestTxn

func (*TestCluster) ExistsCode

func (c *TestCluster) ExistsCode(t *testing.T, addr ethgo.Address) bool

func (*TestCluster) Fail

func (c *TestCluster) Fail(err error)

func (*TestCluster) InitSecrets

func (c *TestCluster) InitSecrets(prefix string, count int) ([]types.Address, error)

InitSecrets initializes account(s) secrets with given prefix. (secrets are being stored in the temp directory created by given e2e test execution)

func (*TestCluster) InitTestServer

func (c *TestCluster) InitTestServer(t *testing.T,
	dataDir string, bridgeJSONRPC string, nodeType NodeType)

func (*TestCluster) MethodTxn

func (c *TestCluster) MethodTxn(t *testing.T, sender ethgo.Key, target types.Address, input []byte) *TestTxn

func (*TestCluster) SendTxn

func (c *TestCluster) SendTxn(t *testing.T, sender ethgo.Key, txn *ethgo.Transaction) *TestTxn

SendTxn sends a transaction

func (*TestCluster) Stats

func (c *TestCluster) Stats(t *testing.T)

func (*TestCluster) Stop

func (c *TestCluster) Stop()

func (*TestCluster) Transfer

func (c *TestCluster) Transfer(t *testing.T, sender ethgo.Key, target types.Address, value *big.Int) *TestTxn

func (*TestCluster) WaitForBlock

func (c *TestCluster) WaitForBlock(n uint64, timeout time.Duration) error

func (*TestCluster) WaitForGeneric

func (c *TestCluster) WaitForGeneric(dur time.Duration, fn func(*TestServer) bool) error

WaitForGeneric waits until all running servers returns true from fn callback or timeout defined by dur occurs

func (*TestCluster) WaitForReady

func (c *TestCluster) WaitForReady(t *testing.T)

func (*TestCluster) WaitUntil

func (c *TestCluster) WaitUntil(timeout, pollFrequency time.Duration, handler func() bool) error

type TestClusterConfig

type TestClusterConfig struct {
	Name                 string
	Premine              []string // address[:amount]
	StakeAmounts         []*big.Int
	BootnodeCount        int
	NonValidatorCount    int
	WithLogs             bool
	WithStdout           bool
	LogsDir              string
	TmpDir               string
	BlockGasLimit        uint64
	BlockTime            time.Duration
	BurnContract         *polybft.BurnContractInfo
	ValidatorPrefix      string
	Binary               string
	ValidatorSetSize     uint64
	EpochSize            int
	EpochReward          int
	NativeTokenConfigRaw string
	SecretsCallback      func([]types.Address, *TestClusterConfig)

	ContractDeployerAllowListAdmin   []types.Address
	ContractDeployerAllowListEnabled []types.Address
	ContractDeployerBlockListAdmin   []types.Address
	ContractDeployerBlockListEnabled []types.Address
	TransactionsAllowListAdmin       []types.Address
	TransactionsAllowListEnabled     []types.Address
	TransactionsBlockListAdmin       []types.Address
	TransactionsBlockListEnabled     []types.Address
	BridgeAllowListAdmin             []types.Address
	BridgeAllowListEnabled           []types.Address
	BridgeBlockListAdmin             []types.Address
	BridgeBlockListEnabled           []types.Address

	NumBlockConfirmations uint64

	InitialTrieDB    string
	InitialStateRoot types.Hash

	IsPropertyTest  bool
	TestRewardToken string

	RootTrackerPollInterval time.Duration

	ProxyContractsAdmin string
	// contains filtered or unexported fields
}

func (*TestClusterConfig) Dir

func (c *TestClusterConfig) Dir(name string) string

func (*TestClusterConfig) GetProxyContractsAdmin added in v1.3.0

func (c *TestClusterConfig) GetProxyContractsAdmin() string

func (*TestClusterConfig) GetStdout

func (c *TestClusterConfig) GetStdout(name string, custom ...io.Writer) io.Writer

type TestServer

type TestServer struct {
	// contains filtered or unexported fields
}

func NewTestServer

func NewTestServer(t *testing.T, clusterConfig *TestClusterConfig,
	bridgeJSONRPC string, callback TestServerConfigCallback) *TestServer

func (*TestServer) BridgeJSONRPCAddr added in v0.9.0

func (t *TestServer) BridgeJSONRPCAddr() string

func (*TestServer) Conn

func (t *TestServer) Conn() proto.SystemClient

func (*TestServer) DataDir

func (t *TestServer) DataDir() string

func (*TestServer) GrpcAddr

func (t *TestServer) GrpcAddr() string

func (*TestServer) HasValidatorSealed

func (t *TestServer) HasValidatorSealed(firstBlock, lastBlock uint64, validators validator.AccountSet,
	validatorAddr ethgo.Address) (bool, error)

HasValidatorSealed checks whether given validator has signed at least single block for the given range of blocks

func (*TestServer) JSONRPC

func (t *TestServer) JSONRPC() *jsonrpc.Client

func (*TestServer) JSONRPCAddr

func (t *TestServer) JSONRPCAddr() string

func (*TestServer) RegisterValidator

func (t *TestServer) RegisterValidator(supernetManagerAddr types.Address) error

RegisterValidator is a wrapper function which registers new validator on a root chain

func (*TestServer) RootchainFund added in v0.9.0

func (t *TestServer) RootchainFund(stakeToken types.Address, amount *big.Int) error

RootchainFund funds given validator account on the rootchain

func (*TestServer) RootchainFundFor added in v1.0.0

func (t *TestServer) RootchainFundFor(accounts []types.Address, amounts []*big.Int, stakeToken types.Address) error

RootchainFundFor funds given account on the rootchain

func (*TestServer) Stake

func (t *TestServer) Stake(polybftConfig polybft.PolyBFTConfig, amount *big.Int) error

Stake stakes given amount to validator account encapsulated by given server instance

func (*TestServer) Start

func (t *TestServer) Start()

func (*TestServer) Stop

func (t *TestServer) Stop()

func (*TestServer) TxnPoolOperator

func (t *TestServer) TxnPoolOperator() txpoolProto.TxnPoolOperatorClient

func (*TestServer) Unstake

func (t *TestServer) Unstake(amount *big.Int) error

Unstake unstakes given amount from validator account encapsulated by given server instance

func (*TestServer) WaitForNonZeroBalance

func (t *TestServer) WaitForNonZeroBalance(address ethgo.Address, dur time.Duration) (*big.Int, error)

func (*TestServer) WhitelistValidators added in v0.9.0

func (t *TestServer) WhitelistValidators(addresses []string, supernetManager types.Address) error

WhitelistValidators invokes whitelist-validators helper CLI command, that whitelists validators on the root chain

func (*TestServer) WithdrawChildChain added in v0.9.0

func (t *TestServer) WithdrawChildChain() error

WithdrawChildChain withdraws available balance from child chain

func (*TestServer) WithdrawRewards added in v0.9.0

func (t *TestServer) WithdrawRewards() error

WithdrawRewards withdraws pending rewards for given validator on RewardPool contract

func (*TestServer) WithdrawRootChain added in v0.9.0

func (t *TestServer) WithdrawRootChain(recipient string, amount *big.Int,
	stakeManager ethgo.Address, bridgeJSONRPC string) error

WithdrawRootChain withdraws available balance from root chain

type TestServerConfig

type TestServerConfig struct {
	Name                  string
	JSONRPCPort           int64
	GRPCPort              int64
	P2PPort               int64
	Validator             bool
	DataDir               string
	Chain                 string
	LogLevel              string
	Relayer               bool
	NumBlockConfirmations uint64
	BridgeJSONRPC         string
}

type TestServerConfigCallback

type TestServerConfigCallback func(*TestServerConfig)

type TestTxn

type TestTxn struct {
	// contains filtered or unexported fields
}

func (*TestTxn) Failed

func (t *TestTxn) Failed() bool

Failed returns whether the transaction failed

func (*TestTxn) Receipt

func (t *TestTxn) Receipt() *ethgo.Receipt

Receipt returns the receipt of the transaction

func (*TestTxn) Reverted

func (t *TestTxn) Reverted() bool

Reverted returns whether the transaction failed and was reverted consuming all the gas from the call

func (*TestTxn) Succeed

func (t *TestTxn) Succeed() bool

Succeed returns whether the transaction succeed and it was not reverted

func (*TestTxn) Txn

func (t *TestTxn) Txn() *ethgo.Transaction

Txn returns the raw transaction that was sent

func (*TestTxn) Wait

func (t *TestTxn) Wait() error

Wait waits for the transaction to be executed

Jump to

Keyboard shortcuts

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