-
-
Notifications
You must be signed in to change notification settings - Fork 92
/
Copy pathrun-backend-tests
executable file
·130 lines (109 loc) · 3.63 KB
/
run-backend-tests
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/usr/bin/env bash
. ./scripts/devcontainer/_assert-in-container "$0" "$@"
set -euo pipefail
trap ctrl_c INT
function ctrl_c() {
killall -9 Tests
exit 1
}
LLDB=false
PUBLISHED=false
PUBLISHED_FLAG=
DB=pg
EXPECTO_ARGS=()
for i in "$@"
do
case "${i}" in
--lldb) LLDB=true ;;
--yugabyte) DB=yb ;;
--published)
PUBLISHED=true
PUBLISHED_FLAG=$i
;;
*) EXPECTO_ARGS+=("${i}");;
esac
done
killall -9 Tests || true
if [[ "$PUBLISHED" == "true" ]]; then
EXE=Build/out/Tests/Release/net8.0/linux-x64/Tests
PRODEXEC=Build/out/ProdExec/Release/net8.0/linux-x64/ProdExec
else
EXE=Build/out/Tests/Debug/net8.0/Tests
PRODEXEC=Build/out/ProdExec/Debug/net8.0/ProdExec
fi
case "$DB" in
pg)
export DARK_CONFIG_DB_HOST=localhost
export DARK_CONFIG_DB_PORT=5432
export DARK_CONFIG_DB_DBNAME=testdb
export DARK_CONFIG_DB_USER=dark
export DARK_CONFIG_DB_PASSWORD=darklang
echo "Dropping postgres testdb database"
./scripts/devcontainer/_wait-for-postgres
dropdb --if-exists testdb
createdb testdb
;;
yb)
export DARK_CONFIG_DB_HOST=192.168.215.2
export DARK_CONFIG_DB_PORT=5433
export DARK_CONFIG_DB_DBNAME=testdb
export DARK_CONFIG_DB_USER=yugabyte
export DARK_CONFIG_DB_PASSWORD=postgres
echo "Dropping yugabyte testdb database"
# ./scripts/devcontainer/_wait-for-yugabyte
../yugabyte/bin/ysqlsh -h "${DARK_CONFIG_DB_HOST}" -p "${DARK_CONFIG_DB_PORT}" -U "${DARK_CONFIG_DB_USER}" -c "DROP DATABASE IF EXISTS testdb"
../yugabyte/bin/ysqlsh -h "${DARK_CONFIG_DB_HOST}" -p "${DARK_CONFIG_DB_PORT}" -U "${DARK_CONFIG_DB_USER}" -c "CREATE DATABASE testdb"
;;
esac
LOGS="${DARK_CONFIG_RUNDIR}/logs"
./scripts/run-pubsub-emulator
./scripts/run-cloud-storage-emulator
# Use random to avoid old items being in the pubsub queue. Use this instead of
# $RANDOM as RANDOM is only 5 digits
RANDOM_VALUE=$(cat /proc/sys/kernel/random/uuid)
grey="\033[1;30m"
reset="\033[0m"
# Run the migrations before the other servers start
echo -e "Running migrations ${grey}($LOGS/test-migrations.log)${reset}"
cd backend && \
DARK_CONFIG_TELEMETRY_EXPORTER=none \
DARK_CONFIG_ROLLBAR_ENABLED=n \
DARK_CONFIG_QUEUE_PUBSUB_PROJECT_ID=pubsub-test-${RANDOM_VALUE} \
DARK_CONFIG_TRACE_STORAGE_BUCKET_NAME=trace-test-${RANDOM_VALUE} \
"${PRODEXEC}" migrations run > "$LOGS/test-migrations.log" 2>&1
cd ..
# Reload packages
if [[ -v CI ]]; then
echo "Running backend server"
./scripts/run-backend-server $PUBLISHED_FLAG
echo "Reloading packages"
./scripts/build/reload-packages $PUBLISHED_FLAG
else
echo "Reloading packages"
./scripts/build/reload-packages --test $PUBLISHED_FLAG
fi
JUNIT_FILE="${DARK_CONFIG_RUNDIR}/test_results/backend.xml"
COLOURS="256"
SPINNER=
if [[ -v CI ]]; then
# Expecto needs `--colours 0` or the xml will be invalid
# https://github.com/haf/expecto/issues/434
COLOURS="0"
SPINNER="--no-spinner"
fi
cd backend
if [[ "$LLDB" == "true" ]]; then
DARK_CONFIG_TELEMETRY_EXPORTER=none \
DARK_CONFIG_ROLLBAR_ENABLED=n \
DARK_CONFIG_LAUNCHDARKLY_SDK_API_KEY=none \
DARK_CONFIG_QUEUE_PUBSUB_PROJECT_ID=pubsub-test-${RANDOM_VALUE} \
DARK_CONFIG_TRACE_STORAGE_BUCKET_NAME=trace-test-${RANDOM_VALUE} \
lldb -- "${EXE}" --no-spinner --colours 0 --junit-summary "${JUNIT_FILE}" "${EXPECTO_ARGS[@]}"
else
DARK_CONFIG_TELEMETRY_EXPORTER=none \
DARK_CONFIG_ROLLBAR_ENABLED=n \
DARK_CONFIG_LAUNCHDARKLY_SDK_API_KEY=none \
DARK_CONFIG_QUEUE_PUBSUB_PROJECT_ID=pubsub-test-${RANDOM_VALUE} \
DARK_CONFIG_TRACE_STORAGE_BUCKET_NAME=trace-test-${RANDOM_VALUE} \
"${EXE}" ${SPINNER} --colours "${COLOURS}" --junit-summary "${JUNIT_FILE}" "${EXPECTO_ARGS[@]}"
fi