UNPKG

@zombienet/orchestrator

Version:

ZombieNet aim to be a testing framework for substrate based blockchains, providing a simple cli tool that allow users to spawn and test ephemeral Substrate based networks

184 lines (183 loc) 9.79 kB
"use strict"; // CONSTANTS Object.defineProperty(exports, "__esModule", { value: true }); exports.TOKEN_PLACEHOLDER = exports.TMP_DONE = exports.RPC_WS_PORT = exports.RPC_HTTP_PORT = exports.REGULAR_BIN_PATH = exports.PROMETHEUS_PORT = exports.P2P_PORT = exports.NODE_CONTAINER_WAIT_LOG = exports.METRICS_URI_PATTERN = exports.LOCALHOST = exports.K8S_WAIT_UNTIL_SCRIPT_SUFIX = exports.JAEGER_AGENT_ZIPKIN_COMPACT_PORT = exports.JAEGER_AGENT_THRIFT_COMPACT_PORT = exports.JAEGER_AGENT_THRIFT_BINARY_PORT = exports.JAEGER_AGENT_SERVE_CONFIGS_PORT = exports.INTROSPECTOR_PORT = exports.INTROSPECTOR_POD_NAME = exports.GENESIS_WASM_FILENAME = exports.GENESIS_STATE_FILENAME = exports.FINISH_MAGIC_FILE = exports.DEV_ACCOUNTS = exports.DEFAULT_WASM_GENERATE_SUBCOMMAND = exports.DEFAULT_REMOTE_DIR = exports.DEFAULT_PROVIDER = exports.DEFAULT_PROMETHEUS_PREFIX = exports.DEFAULT_PORTS = exports.DEFAULT_MAX_NOMINATIONS = exports.DEFAULT_KEYSTORE_KEY_TYPES = exports.DEFAULT_INDIVIDUAL_TEST_TIMEOUT = exports.DEFAULT_IMAGE = exports.DEFAULT_GLOBAL_TIMEOUT = exports.DEFAULT_GENESIS_HEAD_GENERATE_SUBCOMMAND = exports.DEFAULT_GENESIS_GENERATE_SUBCOMMAND = exports.DEFAULT_DATA_DIR = exports.DEFAULT_CUMULUS_COLLATOR_BIN = exports.DEFAULT_COMMAND = exports.DEFAULT_COLLATOR_IMAGE = exports.DEFAULT_CHAIN_SPEC_RAW = exports.DEFAULT_CHAIN_SPEC_COMMAND = exports.DEFAULT_CHAIN_SPEC = exports.DEFAULT_CHAIN = exports.DEFAULT_BOOTNODE_PEER_ID = exports.DEFAULT_BOOTNODE_DOMAIN = exports.DEFAULT_BALANCE = exports.DEFAULT_ARGS = exports.DEFAULT_ADDER_COLLATOR_BIN = exports.BACKCHANNEL_URI_PATTERN = exports.BACKCHANNEL_PORT = exports.BACKCHANNEL_POD_NAME = exports.ARGS_TO_REMOVE = void 0; exports.ZOMBIE_WRAPPER = exports.ZOMBIE_BUCKET = exports.WS_URI_PATTERN = exports.WAIT_UNTIL_SCRIPT_SUFIX = exports.UNDYING_COLLATOR_BIN = exports.TRANSFER_CONTAINER_WAIT_LOG = exports.TRANSFER_CONTAINER_NAME = exports.TRACING_COLLATOR_SERVICE = exports.TRACING_COLLATOR_PORT = exports.TRACING_COLLATOR_PODNAME = exports.TRACING_COLLATOR_NAMESPACE = exports.TRACING_COLLATOR_NAME = void 0; // Substrate binary const REGULAR_BIN_PATH = "substrate"; exports.REGULAR_BIN_PATH = REGULAR_BIN_PATH; // The remote port prometheus can be accessed with const PROMETHEUS_PORT = 9615; exports.PROMETHEUS_PORT = PROMETHEUS_PORT; // The remote port websocket to access the RPC const RPC_WS_PORT = 9944; exports.RPC_WS_PORT = RPC_WS_PORT; // The remote port http to access the RPC const RPC_HTTP_PORT = 9933; exports.RPC_HTTP_PORT = RPC_HTTP_PORT; // The port substrate listens for p2p connections on const P2P_PORT = 30333; exports.P2P_PORT = P2P_PORT; const DEFAULT_PORTS = { p2pPort: P2P_PORT, wsPort: RPC_WS_PORT, rpcPort: RPC_HTTP_PORT, prometheusPort: PROMETHEUS_PORT, }; exports.DEFAULT_PORTS = DEFAULT_PORTS; // Jaeger agent container exposed port from: // https://www.jaegertracing.io/docs/1.6/getting-started/#all-in-one-docker-image const JAEGER_AGENT_ZIPKIN_COMPACT_PORT = 5775; exports.JAEGER_AGENT_ZIPKIN_COMPACT_PORT = JAEGER_AGENT_ZIPKIN_COMPACT_PORT; const JAEGER_AGENT_SERVE_CONFIGS_PORT = 5778; exports.JAEGER_AGENT_SERVE_CONFIGS_PORT = JAEGER_AGENT_SERVE_CONFIGS_PORT; const JAEGER_AGENT_THRIFT_COMPACT_PORT = 6831; exports.JAEGER_AGENT_THRIFT_COMPACT_PORT = JAEGER_AGENT_THRIFT_COMPACT_PORT; const JAEGER_AGENT_THRIFT_BINARY_PORT = 6832; exports.JAEGER_AGENT_THRIFT_BINARY_PORT = JAEGER_AGENT_THRIFT_BINARY_PORT; const DEFAULT_GLOBAL_TIMEOUT = 1200; // 20 mins exports.DEFAULT_GLOBAL_TIMEOUT = DEFAULT_GLOBAL_TIMEOUT; const DEFAULT_INDIVIDUAL_TEST_TIMEOUT = 10; // seconds exports.DEFAULT_INDIVIDUAL_TEST_TIMEOUT = DEFAULT_INDIVIDUAL_TEST_TIMEOUT; const DEFAULT_COMMAND = "polkadot"; exports.DEFAULT_COMMAND = DEFAULT_COMMAND; const DEFAULT_IMAGE = "parity/polkadot:latest"; exports.DEFAULT_IMAGE = DEFAULT_IMAGE; const DEFAULT_ARGS = []; exports.DEFAULT_ARGS = DEFAULT_ARGS; const DEFAULT_CHAIN = "rococo-local"; exports.DEFAULT_CHAIN = DEFAULT_CHAIN; const DEFAULT_BOOTNODE_PEER_ID = "12D3KooWEyoppNCUx8Yx66oV9fJnriXwCcXwDDUA2kj6vnc6iDEp"; exports.DEFAULT_BOOTNODE_PEER_ID = DEFAULT_BOOTNODE_PEER_ID; const DEFAULT_BOOTNODE_DOMAIN = "bootnode"; exports.DEFAULT_BOOTNODE_DOMAIN = DEFAULT_BOOTNODE_DOMAIN; const DEFAULT_REMOTE_DIR = "/cfg"; exports.DEFAULT_REMOTE_DIR = DEFAULT_REMOTE_DIR; const DEFAULT_DATA_DIR = "/data"; exports.DEFAULT_DATA_DIR = DEFAULT_DATA_DIR; const DEFAULT_CHAIN_SPEC = "{{chainName}}-plain.json"; exports.DEFAULT_CHAIN_SPEC = DEFAULT_CHAIN_SPEC; const DEFAULT_CHAIN_SPEC_RAW = "{{chainName}}-raw.json"; exports.DEFAULT_CHAIN_SPEC_RAW = DEFAULT_CHAIN_SPEC_RAW; const DEFAULT_CHAIN_SPEC_COMMAND = "{{DEFAULT_COMMAND}} build-spec --chain {{chainName}} --disable-default-bootnode"; exports.DEFAULT_CHAIN_SPEC_COMMAND = DEFAULT_CHAIN_SPEC_COMMAND; const DEFAULT_GENESIS_GENERATE_SUBCOMMAND = "export-genesis-state"; exports.DEFAULT_GENESIS_GENERATE_SUBCOMMAND = DEFAULT_GENESIS_GENERATE_SUBCOMMAND; const DEFAULT_GENESIS_HEAD_GENERATE_SUBCOMMAND = "export-genesis-head"; exports.DEFAULT_GENESIS_HEAD_GENERATE_SUBCOMMAND = DEFAULT_GENESIS_HEAD_GENERATE_SUBCOMMAND; const DEFAULT_WASM_GENERATE_SUBCOMMAND = "export-genesis-wasm"; exports.DEFAULT_WASM_GENERATE_SUBCOMMAND = DEFAULT_WASM_GENERATE_SUBCOMMAND; const DEFAULT_ADDER_COLLATOR_BIN = "adder-collator"; exports.DEFAULT_ADDER_COLLATOR_BIN = DEFAULT_ADDER_COLLATOR_BIN; const UNDYING_COLLATOR_BIN = "undying-collator"; exports.UNDYING_COLLATOR_BIN = UNDYING_COLLATOR_BIN; const DEFAULT_CUMULUS_COLLATOR_BIN = "polkadot-parachain"; exports.DEFAULT_CUMULUS_COLLATOR_BIN = DEFAULT_CUMULUS_COLLATOR_BIN; const DEFAULT_COLLATOR_IMAGE = "parity/polkadot-parachain:latest"; exports.DEFAULT_COLLATOR_IMAGE = DEFAULT_COLLATOR_IMAGE; const DEFAULT_MAX_NOMINATIONS = 24; // kusama value is 24 exports.DEFAULT_MAX_NOMINATIONS = DEFAULT_MAX_NOMINATIONS; const DEFAULT_PROMETHEUS_PREFIX = "substrate"; exports.DEFAULT_PROMETHEUS_PREFIX = DEFAULT_PROMETHEUS_PREFIX; const FINISH_MAGIC_FILE = "/tmp/finished.txt"; exports.FINISH_MAGIC_FILE = FINISH_MAGIC_FILE; const GENESIS_STATE_FILENAME = "genesis-state"; exports.GENESIS_STATE_FILENAME = GENESIS_STATE_FILENAME; const GENESIS_WASM_FILENAME = "genesis-wasm"; exports.GENESIS_WASM_FILENAME = GENESIS_WASM_FILENAME; const TMP_DONE = "echo done > /tmp/zombie-tmp-done"; exports.TMP_DONE = TMP_DONE; const TRANSFER_CONTAINER_WAIT_LOG = "waiting for tar to finish"; exports.TRANSFER_CONTAINER_WAIT_LOG = TRANSFER_CONTAINER_WAIT_LOG; const NODE_CONTAINER_WAIT_LOG = "waiting for copy files to finish"; exports.NODE_CONTAINER_WAIT_LOG = NODE_CONTAINER_WAIT_LOG; const WAIT_UNTIL_SCRIPT_SUFIX = `until [ -f ${FINISH_MAGIC_FILE} ]; do echo ${NODE_CONTAINER_WAIT_LOG}; sleep 1; done; echo copy files has finished`; exports.WAIT_UNTIL_SCRIPT_SUFIX = WAIT_UNTIL_SCRIPT_SUFIX; const K8S_WAIT_UNTIL_SCRIPT_SUFIX = `until [ -f ${FINISH_MAGIC_FILE} ]; do /cfg/coreutils echo "${NODE_CONTAINER_WAIT_LOG}"; /cfg/coreutils sleep 1; done; /cfg/coreutils echo "copy files has finished"`; exports.K8S_WAIT_UNTIL_SCRIPT_SUFIX = K8S_WAIT_UNTIL_SCRIPT_SUFIX; const TRANSFER_CONTAINER_NAME = "transfer-files-container"; exports.TRANSFER_CONTAINER_NAME = TRANSFER_CONTAINER_NAME; const ZOMBIE_BUCKET = "zombienet-logs"; exports.ZOMBIE_BUCKET = ZOMBIE_BUCKET; const WS_URI_PATTERN = "ws://{{IP}}:{{PORT}}"; exports.WS_URI_PATTERN = WS_URI_PATTERN; const METRICS_URI_PATTERN = "http://{{IP}}:{{PORT}}/metrics"; exports.METRICS_URI_PATTERN = METRICS_URI_PATTERN; const LOCALHOST = "127.0.0.1"; exports.LOCALHOST = LOCALHOST; const BACKCHANNEL_URI_PATTERN = "http://127.0.0.1:{{PORT}}"; exports.BACKCHANNEL_URI_PATTERN = BACKCHANNEL_URI_PATTERN; const BACKCHANNEL_PORT = 3000; exports.BACKCHANNEL_PORT = BACKCHANNEL_PORT; const BACKCHANNEL_POD_NAME = "backchannel"; exports.BACKCHANNEL_POD_NAME = BACKCHANNEL_POD_NAME; const INTROSPECTOR_PORT = 65432; exports.INTROSPECTOR_PORT = INTROSPECTOR_PORT; const INTROSPECTOR_POD_NAME = "introspector"; exports.INTROSPECTOR_POD_NAME = INTROSPECTOR_POD_NAME; // Spans collator config const TRACING_COLLATOR_NAME = "tracing_collator"; exports.TRACING_COLLATOR_NAME = TRACING_COLLATOR_NAME; const TRACING_COLLATOR_SERVICE = "tempo-tempo-distributed-query-frontend"; // tempo installation in k8s exports.TRACING_COLLATOR_SERVICE = TRACING_COLLATOR_SERVICE; const TRACING_COLLATOR_NAMESPACE = "tempo"; // tempo installation in k8s exports.TRACING_COLLATOR_NAMESPACE = TRACING_COLLATOR_NAMESPACE; const TRACING_COLLATOR_PODNAME = "tempo"; // tempo installation in podman exports.TRACING_COLLATOR_PODNAME = TRACING_COLLATOR_PODNAME; const TRACING_COLLATOR_PORT = 3100; exports.TRACING_COLLATOR_PORT = TRACING_COLLATOR_PORT; const ZOMBIE_WRAPPER = "zombie-wrapper.sh"; exports.ZOMBIE_WRAPPER = ZOMBIE_WRAPPER; const DEFAULT_PROVIDER = "kubernetes"; exports.DEFAULT_PROVIDER = DEFAULT_PROVIDER; const DEV_ACCOUNTS = [ "alice", "bob", "charlie", "dave", "eve", "ferdie", "one", "two", ]; exports.DEV_ACCOUNTS = DEV_ACCOUNTS; // TODO: make this default less 0s if possible const DEFAULT_BALANCE = 2000000000000; exports.DEFAULT_BALANCE = DEFAULT_BALANCE; const ARGS_TO_REMOVE = { alice: 1, bob: 1, charlie: 1, dave: 1, eve: 1, ferdie: 1, one: 1, two: 1, port: 2, "prometheus-external": 1, "ws-port": 2, "rpc-port": 2, "prometheus-port": 2, "node-key": 2, d: 2, "base-path": 2, }; exports.ARGS_TO_REMOVE = ARGS_TO_REMOVE; const TOKEN_PLACEHOLDER = /{{ZOMBIE:(.*?):(.*?)}}/gi; exports.TOKEN_PLACEHOLDER = TOKEN_PLACEHOLDER; const DEFAULT_KEYSTORE_KEY_TYPES = [ "aura", "babe", "imon", "gran", "audi", "asgn", "para", "beef", "nmbs", "rand", "rate", "bcsv", "ftsv", ]; exports.DEFAULT_KEYSTORE_KEY_TYPES = DEFAULT_KEYSTORE_KEY_TYPES;