Files
pezkuwi-subxt/substrate/simnet_tests/run_tests.sh
T
radupopa2010 113ffcae52 add simnet tests (#9222)
* add simnet tests

* add link to bracap presentation of simnet

* add link to bracap presentation of simnet

* rm not needed file
2021-07-02 12:48:14 +02:00

127 lines
3.2 KiB
Bash
Executable File

#!/bin/bash
### ARGS FOR THIS SCRIPT ###
# ./${SCRIPT_NAME} NAMESPACE IMAGE LOG_PATH FEATURES
# NAMESPACE the kubernetes namespace where the test will run
# IMAGE Substrate image used to spawn network
# LOG_PATH path to dir where to save logs from external JS script that is run as part
# of step in features file
# FEATURES directory containing cucumber files or single cucumber file that describes
# what to test.
#
# All args have default values, specify args to override
# e.g: ./${SCRIPT_NAME} test-name parity/substrate:latest logs quick
set -eou pipefail
SCRIPT_NAME="$0"
SCRIPT_PATH=$(dirname "${SCRIPT_NAME}") # relative
SCRIPT_PATH=$(cd "${SCRIPT_PATH}" && pwd) # absolutized and normalized
function random_string {
head -1 <(fold -w 30 <(tr -dc 'a-z0-9' < /dev/urandom))
}
#
### Script args
#
NAMESPACE=${1:-gurke-"$(random_string)"-runtest}
IMAGE=${2:-"parity/substrate:latest"}
LOG_PATH=${3:-"${SCRIPT_PATH}/logs"}
FEATURES=${4:-"ALL"}
mkdir -p "${SCRIPT_PATH}"/logs
echo "Running tests in namespace: ${NAMESPACE}"
echo "Testing image: ${IMAGE}"
echo "Storing scripts logs to: ${LOG_PATH}"
echo "Using features files from: ${FEATURES}"
#
### Script logic
#
function forward_port {
# RUN_IN_CONTAINER is env var that is set in the dockerfile
# use the -v operator to explicitly test if a variable is set
if [[ ! -v RUN_IN_CONTAINER ]] ; then
if is_port_forward_running ; then
kill_previous_job
fi
fi
start_forwading_job
}
FORWARD_GREP_FILTER='kubectl.*[p]ort-forward.*svc/rpc.*11222'
function is_port_forward_running {
# shellcheck disable=SC2009
ps aux | grep -qE "${FORWARD_GREP_FILTER}"
}
function kill_previous_job {
# shellcheck disable=SC2009
job_pid=$(ps aux | grep -E "${FORWARD_GREP_FILTER}" | awk '{ print $2 }')
echo "INFO Killed forwading port 9944 into bootnode"
kill "${job_pid}"
}
function start_forwading_job {
kubectl -n "${NAMESPACE}" \
expose pod bootnode \
--name=rpc \
--type=NodePort \
--target-port=9944 \
--port=9944
kubectl -n "${NAMESPACE}" \
port-forward svc/rpc 11222:9944 &> "${LOG_PATH}/forward-${NAMESPACE}.log" &
sleep 2
echo "INFO Started forwading port 9944 into bootnode"
}
function update_api {
echo "INFO: Updating Polkadot JS API"
pwd
cd "${SCRIPT_PATH}"/../../sub-flood/
npm run build
cd -
}
function run_test {
case "${FEATURES}" in
quick)
gurke test "${NAMESPACE}" "${SCRIPT_PATH}"/tests/quick --log-path "${LOG_PATH}"
;;
long)
gurke test "${NAMESPACE}" "${SCRIPT_PATH}"/tests/long --log-path "${LOG_PATH}"
;;
ALL )
gurke test "${NAMESPACE}" "${SCRIPT_PATH}"/tests --log-path "${LOG_PATH}"
;;
??* )
gurke test \
"${NAMESPACE}" \
"${SCRIPT_PATH}"/"${FEATURES}" \
--log-path "${LOG_PATH}"
;;
esac
}
export NAMESPACE="${NAMESPACE}"
set -x # echo the commands to stdout
gurke spawn --config "${SCRIPT_PATH}"/configs/default_local_testnet.toml \
-n "${NAMESPACE}" \
--image "${IMAGE}"
echo "INFO: Checking if pods launched correctly"
kubectl -n "${NAMESPACE}" get pods -o wide
update_api
forward_port
run_test