summaryrefslogtreecommitdiff
path: root/test/scripts/e2e_go_tests.sh
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 "----------------------------------------------------------------------"