blob: 1368f99e2630dae8013cdcb6eeba729bbeeaa7e3 (
plain)
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
131
132
133
|
#!/usr/bin/env bash
echo "######################################################################"
echo " e2e_go_tests"
echo "######################################################################"
set -e
set -o pipefail
export GOPATH=$(go env GOPATH)
export GO111MODULE=on
# Needed for now because circleci doesn't use makefile yet
if [ -z "$(which gotestsum)" ]; then
GOTESTCOMMAND=${GOTESTCOMMAND:="go test"}
else
TEST_RESULTS=${TEST_RESULTS:="$(pwd)"}
GOTESTCOMMAND=${GOTESTCOMMAND:="gotestsum --format testname --junitfile ${TEST_RESULTS}/results.xml --jsonfile ${TEST_RESULTS}/testresults.json --"}
fi
echo "GOTESTCOMMAND will be: ${GOTESTCOMMAND}"
# If one or more -t <pattern> are specified, use GOTESTCOMMAND -run <pattern> for each
TESTPATTERNS=()
NORACEBUILD=""
export RUN_EXPECT="FALSE"
while [ "$1" != "" ]; do
case "$1" in
-e)
# The test code checks this variable.
export RUN_EXPECT="TRUE"
;;
-t)
shift
TESTPATTERNS+=($1)
;;
-norace)
NORACEBUILD="TRUE"
;;
*)
echo "Unknown option" "$1"
exit 1
;;
esac
shift
done
if [[ -n $TESTPATTERNS && -n $RUN_EXPECT ]]; then
echo "-t and -e are mutually exclusive."
exit 1
fi
# Anchor our repo root reference location
REPO_ROOT="$( cd "$(dirname "$0")" ; pwd -P )"/../..
if [ "${NORACEBUILD}" = "" ]; then
# Need bin-race binaries for e2e tests
pushd ${REPO_ROOT}
make build-race -j4
popd
RACE_OPTION="-race"
else
RACE_OPTION=""
fi
# Suppress telemetry reporting for tests
export ALGOTEST=1
# Ensure our required environment variables are set - in case running this script standalone
CLEANUP_TEMPDIR=0
if [ "${TESTDIR}" = "" ]; then
# Create our own temp folder - we'll clean it up if everything passes
TEMPDIR=$(mktemp -d 2>/dev/null || mktemp -d -t "tmp")
CLEANUP_TEMPDIR=1
export TESTDIR=${TEMPDIR}
fi
echo "Test output can be found in ${TESTDIR}"
if [ "${SRCROOT}" = "" ]; then
export SRCROOT=${REPO_ROOT}
fi
if [ "${NODEBINDIR}" = "" ]; then
# Use the race-detector binaries, and set halt_on_error to report errors quickly.
export PATH="${GOPATH}/bin-race:${PATH}"
export NODEBINDIR="${GOPATH}/bin-race"
export GORACE=halt_on_error=1
fi
if [ "${TESTDATADIR}" = "" ]; then
export TESTDATADIR=${SRCROOT}/test/testdata
fi
echo "NODEBINDIR: ${NODEBINDIR}"
echo "PATH: ${PATH}"
echo "SRCROOT: ${SRCROOT}"
echo "TESTDATADIR: ${TESTDATADIR}"
cd ${SRCROOT}/test/e2e-go
# ARM64 has some memory related issues with fork. Since we don't really care
# about testing the forking capabilities, we're just run the tests one at a time.
PARALLEL_FLAG=""
ARCHTYPE=$("${SRCROOT}/scripts/archtype.sh")
echo "ARCHTYPE: ${ARCHTYPE}"
if [[ "${ARCHTYPE}" = arm* ]]; then
PARALLEL_FLAG="-p 1"
fi
PACKAGES="./..."
if [ "$RUN_EXPECT" = "TRUE" ]; then
PACKAGES=$(go list ./...|grep expect)
fi
echo "PARALLEL_FLAG = ${PARALLEL_FLAG}"
echo "PACKAGES = ${PACKAGES}"
if [ "${#TESTPATTERNS[@]}" -eq 0 ]; then
${GOTESTCOMMAND} ${RACE_OPTION} ${PARALLEL_FLAG} -timeout 1h -v ${SHORTTEST} ${PACKAGES}
else
for TEST in ${TESTPATTERNS[@]}; do
${GOTESTCOMMAND} ${RACE_OPTION} ${PARALLEL_FLAG} -timeout 1h -v ${SHORTTEST} -run ${TEST} ${PACKAGES}
done
fi
if [ ${CLEANUP_TEMPDIR} -ne 0 ]; then
rm -rf "${TEMPDIR}"
fi
echo "----------------------------------------------------------------------"
echo " DONE: e2e_go_tests"
echo "----------------------------------------------------------------------"
|