e2e

package
v1.10.9-rc.1 Latest Latest
Warning

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

Go to latest
Published: Aug 22, 2023 License: BSD-3-Clause Imports: 13 Imported by: 4

README

Avalanche e2e test suites

  • Works with fixture-managed networks.
  • Compiles to a single binary with customizable configurations.

Running tests

go install -v github.com/onsi/ginkgo/v2/ginkgo@v2.0.0
ACK_GINKGO_RC=true ginkgo build ./tests/e2e
./tests/e2e/e2e.test --help

./tests/e2e/e2e.test \
--avalanchego-path=./build/avalanchego

See tests.e2e.sh for an example.

Adding tests

Define any flags/configurations in e2e.go.

Create a new package to implement feature-specific tests, or add tests to an existing package. For example:

.
└── e2e
    ├── README.md
    ├── e2e.go
    ├── e2e_test.go
    └── x
        └── transfer.go
            └── virtuous.go

e2e.go defines common configuration for other test packages. x/transfer/virtuous.go defines X-Chain transfer tests, labeled with x, which can be selected by ./tests/e2e/e2e.test --ginkgo.label-filter "x".

Testing against a persistent network

By default, a new ephemeral test network will be started before each test run. When developing e2e tests, it may be helpful to create a persistent test network to test against. This can increase the speed of iteration by removing the requirement to start a new network for every invocation of the test under development.

To use a persistent network:

# From the root of the avalanchego repo

# Build the testnetctl binary
$ ./scripts/build_testnetctl.sh

# Start a new network
$ ./build/testnetctl start-network --avalanchego-path=/path/to/avalanchego
...
Started network 1000 @ /home/me/.testnetctl/networks/1000

Configure testnetctl to target this network by default with one of the following statements:
 - source /home/me/.testnetctl/networks/1000/network.env
 - export TESTNETCTL_NETWORK_DIR=/home/me/.testnetctl/networks/1000
 - export TESTNETCTL_NETWORK_DIR=/home/me/.testnetctl/networks/latest

# Start a new test run using the persistent network
ginkgo -v ./tests/e2e -- \
    --avalanchego-path=/path/to/avalanchego \
    --ginkgo-focus-file=[name of file containing test] \
    --use-persistent-network \
    --network-dir=/path/to/network

# It is also possible to set the AVALANCHEGO_PATH env var instead of supplying --avalanchego-path
# and to set TESTNETCTL_NETWORK_DIR instead of supplying --network-dir.

See the testnet fixture README for more details.

Documentation

Overview

e2e implements the e2e tests.

Index

Constants

View Source
const (
	// Enough for primary.NewWallet to fetch initial UTXOs.
	DefaultWalletCreationTimeout = 5 * time.Second

	// Defines default tx confirmation timeout.
	// Enough for test/custom networks.
	DefaultConfirmTxTimeout = 20 * time.Second

	// A long default timeout used to timeout failed operations but
	// unlikely to induce flaking due to unexpected resource
	// contention.
	DefaultTimeout = 2 * time.Minute

	// Interval appropriate for network operations that should be
	// retried periodically but not too often.
	DefaultPollingInterval = 500 * time.Millisecond
)

Variables

This section is empty.

Functions

func DescribePChain added in v1.7.17

func DescribePChain(text string, body func()) bool

DescribePChain annotates the tests for P-Chain. Can run with any type of cluster (e.g., local, fuji, mainnet).

func DescribeXChain

func DescribeXChain(text string, body func()) bool

DescribeXChain annotates the tests for X-Chain. Can run with any type of cluster (e.g., local, fuji, mainnet).

func DescribeXChainSerial added in v1.10.9

func DescribeXChainSerial(text string, body func()) bool

DescribeXChainSerial annotates serial tests for X-Chain. Can run with any type of cluster (e.g., local, fuji, mainnet).

func InitTestEnvironment added in v1.10.9

func InitTestEnvironment(envBytes []byte)

Types

type TestEnvironment added in v1.9.9

type TestEnvironment struct {
	// The directory where the test network configuration is stored
	NetworkDir string
	// URIs used to access the API endpoints of nodes of the network
	URIs []string
	// The URI used to access the http server that allocates test data
	TestDataServerURI string
	// contains filtered or unexported fields
}
var Env *TestEnvironment

Env is used to access shared test fixture. Intended to be initialized by SynchronizedBeforeSuite.

func (*TestEnvironment) AllocateFundedKey added in v1.10.9

func (te *TestEnvironment) AllocateFundedKey() *secp256k1.PrivateKey

Retrieve a funded key allocated for the caller's exclusive use.

func (*TestEnvironment) AllocateFundedKeys added in v1.10.9

func (te *TestEnvironment) AllocateFundedKeys(count int) []*secp256k1.PrivateKey

Retrieve the specified number of funded keys allocated for the caller's exclusive use.

func (*TestEnvironment) GetNetwork added in v1.10.9

func (te *TestEnvironment) GetNetwork() testnet.Network

Retrieve the network to target for testing.

func (*TestEnvironment) GetRandomNodeURI added in v1.10.9

func (te *TestEnvironment) GetRandomNodeURI() string

Retrieve a random URI to naively attempt to spread API load across nodes.

func (*TestEnvironment) NewKeychain added in v1.10.9

func (te *TestEnvironment) NewKeychain(count int) *secp256k1fx.Keychain

Create a new keychain with the specified number of test keys.

func (*TestEnvironment) NewWallet added in v1.10.9

func (te *TestEnvironment) NewWallet(keychain *secp256k1fx.Keychain) primary.Wallet

Create a new wallet for the provided keychain.

Directories

Path Synopsis
Implements tests for the banff network upgrade.
Implements tests for the banff network upgrade.
p
Implements static handlers tests for avm and platformvm
Implements static handlers tests for avm and platformvm
x
transfer
Implements X-chain transfer tests.
Implements X-chain transfer tests.

Jump to

Keyboard shortcuts

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