forked from paritytech/polkadot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrun_tests.sh
executable file
·102 lines (81 loc) · 2.72 KB
/
run_tests.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#!/bin/bash
### ARGS FOR THIS SCRIPT ###
# ./${SCRIPT_NAME} NAMESPACE IMAGE LOG_PATH
# All args have default values, specify args to override
# e.g: ./${SCRIPT_NAME} radu-test parity/substrate:some_feature /var/log/gurke
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))
}
NAMESPACE=${1:-gurke-"$(random_string)"-runtest}
IMAGE=${2:-"docker.io/paritypr/synth-wave:master"}
LOG_PATH=${3:-"${SCRIPT_PATH}/logs"}
COLIMAGE=${4:-"docker.io/paritypr/colander:master"}
SCRIPTSIMAGE=${5:-"docker.io/paritytech/simnet:latest"}
mkdir -p "${SCRIPT_PATH}"/logs
echo "Running tests in namespace: ${NAMESPACE}"
echo "Testing image: ${IMAGE}"
echo "Storing scripts logs to: ${LOG_PATH}"
echo "Colator image is ${COLIMAGE}"
echo "SCRIPTSIMAGE image is ${SCRIPTSIMAGE}"
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 {
pwd
cd "${SCRIPT_PATH}"/../../simnet_scripts/
npm run build
cd -
pwd
}
echo "INFO: Checking if namespace has no pods"
kubectl -n "${NAMESPACE}" get pods
export NAMESPACE="${NAMESPACE}"
export COLIMAGE="${COLIMAGE}"
export SYNTHIMAGE="${IMAGE}"
export SCRIPTSIMAGE="${SCRIPTSIMAGE}"
cd "${SCRIPT_PATH}"
set -x # echo the commands to stdout
gurke spawn --config "${SCRIPT_PATH}"/configs/simple_rococo_testnet.toml \
-n "${NAMESPACE}" \
--image "${IMAGE}"
echo "INFO: Checking if pods launched correctly"
kubectl -n "${NAMESPACE}" get pods -o wide
echo "INFO: Updating Polkadot JS API"
update_api
forward_port
# Run tests
gurke test "${NAMESPACE}" "${SCRIPT_PATH}"/tests --log-path "${LOG_PATH}"