@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
JavaScript
"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;