Skip to content

Commit

Permalink
Merge pull request etcd-io#9426 from wenjiaswe/testscript
Browse files Browse the repository at this point in the history
scripts: add TESTCASE flag to run single unit test
  • Loading branch information
gyuho authored Mar 14, 2018
2 parents 3e668a9 + 3571f40 commit c541793
Showing 1 changed file with 81 additions and 8 deletions.
89 changes: 81 additions & 8 deletions test
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,33 @@
# ./test
# ./test -v
#
#
# Run specified test pass
#
# $ PASSES=unit ./test
# $ PASSES=integration ./test
#
#
# Run tests for one package
# Each pass has different default timeout, if you just run tests in one package or 1 test case then you can set TIMEOUT
# flag for different expectation
#
# $ PASSES=unit PKG=./wal TIMEOUT=1m ./test
# $ PASSES=integration PKG=client/integration TIMEOUT=1m ./test
#
#
# Run specified unit tests in one package
# To run all the tests with prefix of "TestNew", set "TESTCASE=TestNew ";
# to run only "TestNew", set "TESTCASE="\bTestNew\b""
#
# $ PASSES=unit PKG=./wal TESTCASE=TestNew TIMEOUT=1m ./test
# $ PASSES=unit PKG=./wal TESTCASE="\bTestNew\b" TIMEOUT=1m ./test
# $ PASSES=integration PKG=client/integration TESTCASE="\bTestV2NoRetryEOF\b" TIMEOUT=1m ./test
#
# PKG=./wal ./test
# PKG=snap ./test
#
# Run code coverage
# COVERDIR must either be a absolute path or a relative path to the etcd root
# COVERDIR=coverage PASSES="build_cov cov" ./test
# $ COVERDIR=coverage PASSES="build_cov cov" ./test
set -e

source ./build
Expand Down Expand Up @@ -77,6 +96,11 @@ if [ "$GOARCH" == "amd64" ]; then
RACE="--race"
fi

RUN_ARG=""
if [ ! -z "${TESTCASE}" ]; then
RUN_ARG="-run=${TESTCASE}"
fi

function unit_pass {
echo "Running unit tests..."
GO_TEST_FLAG=""
Expand All @@ -87,14 +111,53 @@ function unit_pass {
GO_TEST_FLAG="-v"
export CLIENT_DEBUG=1
fi
# only -run=Test so examples can run in integration tests
go test ${GO_TEST_FLAG} -timeout 3m "${COVER}" ${RACE} -cpu 1,2,4 -run=Test "$@" "${TEST[@]}"

if [ "${RUN_ARG}" == "" ]; then
RUN_ARG="-run=Test"
fi

# check if user provided time out, especially useful when just run one test case
# expectation could be different
USERTIMEOUT=""
if [ -z "${TIMEOUT}" ]; then
USERTIMEOUT="3m"
else
USERTIMEOUT="${TIMEOUT}"
fi
go test ${GO_TEST_FLAG} -timeout "${USERTIMEOUT}" "${COVER}" ${RACE} -cpu 1,2,4 ${RUN_ARG} "$@" "${TEST[@]}"
}

function integration_pass {
echo "Running integration tests..."
go test -timeout 15m -v -cpu 1,2,4 "$@" "${REPO_PATH}/integration"
integration_extra "$@"

# check if user provided time out, especially useful when just run one test case
# expectation could be different
USERTIMEOUT=""
if [ -z "${TIMEOUT}" ]; then
USERTIMEOUT="15m"
else
USERTIMEOUT="${TIMEOUT}"
fi

# if TESTCASE and PKG set, run specified test case in specified PKG
# if TESTCASE set, PKG not set, run specified test case in all integration and integration_extra packages
# if TESTCASE not set, PKG set, run all test cases in specified package
# if TESTCASE not set, PKG not set, run all tests in all integration and integration_extra packages
if [ -z "${TESTCASE}" ] && [ -z "${USERPKG}" ]; then
go test -timeout "${USERTIMEOUT}" -v -cpu 1,2,4 "$@" "${REPO_PATH}/integration"
integration_extra "$@"
else
if [ -z "${USERPKG}" ]; then
INTEGTESTPKG=("${REPO_PATH}/integration"
"${REPO_PATH}/client/integration"
"${REPO_PATH}/clientv3/integration"
"${REPO_PATH}/contrib/raftexample"
"${REPO_PATH}/store")
else
INTEGTESTPKG=("${TEST[@]}")
fi
go test -timeout "${USERTIMEOUT}" -v -cpu 1,2,4 "${RUN_ARG}" "$@" "${INTEGTESTPKG[@]}"
fi
}

function integration_extra {
Expand Down Expand Up @@ -224,7 +287,17 @@ function cov_pass {

function e2e_pass {
echo "Running e2e tests..."
go test -timeout 15m -v -cpu 1,2,4 "$@" "${REPO_PATH}/e2e"

# check if user provided time out, especially useful when just run one test case
# expectation could be different
USERTIMEOUT=""
if [ -z "${TIMEOUT}" ]; then
USERTIMEOUT="15m"
else
USERTIMEOUT="${TIMEOUT}"
fi

go test -timeout "${USERTIMEOUT}" -v -cpu 1,2,4 "${RUN_ARG}" "$@" "${REPO_PATH}/e2e"
}

function integration_e2e_pass {
Expand Down

0 comments on commit c541793

Please sign in to comment.