package e2e_test
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
e2e "github.com/tendermint/tendermint/test/e2e/pkg"
|
|
)
|
|
|
|
func init() {
|
|
// This can be used to manually specify a testnet manifest and/or node to
|
|
// run tests against. The testnet must have been started by the runner first.
|
|
//os.Setenv("E2E_MANIFEST", "networks/simple.toml")
|
|
//os.Setenv("E2E_NODE", "validator01")
|
|
}
|
|
|
|
var (
|
|
ctx = context.Background()
|
|
)
|
|
|
|
// testNode runs tests for testnet nodes. The callback function is given a
|
|
// single node to test, running as a subtest in parallel with other subtests.
|
|
//
|
|
// The testnet manifest must be given as the envvar E2E_MANIFEST. If not set,
|
|
// these tests are skipped so that they're not picked up during normal unit
|
|
// test runs. If E2E_NODE is also set, only the specified node is tested,
|
|
// otherwise all nodes are tested.
|
|
func testNode(t *testing.T, testFunc func(*testing.T, e2e.Node)) {
|
|
manifest := os.Getenv("E2E_MANIFEST")
|
|
if manifest == "" {
|
|
t.Skip("E2E_MANIFEST not set, not an end-to-end test run")
|
|
}
|
|
if !filepath.IsAbs(manifest) {
|
|
manifest = filepath.Join("..", manifest)
|
|
}
|
|
|
|
testnet, err := e2e.LoadTestnet(manifest)
|
|
require.NoError(t, err)
|
|
nodes := testnet.Nodes
|
|
|
|
if name := os.Getenv("E2E_NODE"); name != "" {
|
|
node := testnet.LookupNode(name)
|
|
require.NotNil(t, node, "node %q not found in testnet %q", name, testnet.Name)
|
|
nodes = []*e2e.Node{node}
|
|
}
|
|
|
|
for _, node := range nodes {
|
|
node := *node
|
|
t.Run(node.Name, func(t *testing.T) {
|
|
t.Parallel()
|
|
testFunc(t, node)
|
|
})
|
|
}
|
|
}
|