mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-30 06:54:01 +00:00
Run all go tests in parallel (6x speedup)
Currently hack/test-go.sh runs in serial in independent executions of go test. By running all tests at once, we get parallel execution. However, we cannot use -coverprofile with this mode, which seems worthwhile. On a 4-core mac, runs tests in 15s that ran in 80s before. Tested on F20 and OSX Mavericks.
This commit is contained in:
parent
fb49ea331d
commit
67166e581b
@ -21,30 +21,26 @@ source $(dirname $0)/config-go.sh
|
||||
|
||||
|
||||
find_test_dirs() {
|
||||
(
|
||||
cd src/${KUBE_GO_PACKAGE}
|
||||
find . -not \( \
|
||||
\( \
|
||||
-wholename './third_party' \
|
||||
-o -wholename './release' \
|
||||
-o -wholename './target' \
|
||||
-o -wholename '*/third_party/*' \
|
||||
-o -wholename '*/output/*' \
|
||||
\) -prune \
|
||||
\) -name '*_test.go' -print0 | xargs -0n1 dirname | sort -u
|
||||
)
|
||||
cd src/${KUBE_GO_PACKAGE}
|
||||
find . -not \( \
|
||||
\( \
|
||||
-wholename './third_party' \
|
||||
-o -wholename './release' \
|
||||
-o -wholename './target' \
|
||||
-o -wholename '*/third_party/*' \
|
||||
-o -wholename '*/output/*' \
|
||||
\) -prune \
|
||||
\) -name '*_test.go' -print0 | xargs -0n1 dirname | sort -u | xargs -n1 printf "${KUBE_GO_PACKAGE}/%s\n"
|
||||
}
|
||||
|
||||
# -covermode=atomic becomes default with -race in Go >=1.3
|
||||
KUBE_COVER="-cover -covermode=atomic -coverprofile=tmp.out"
|
||||
KUBE_COVER="-cover -covermode=atomic"
|
||||
|
||||
cd "${KUBE_TARGET}"
|
||||
|
||||
if [ "$1" != "" ]; then
|
||||
go test -race -timeout 30s $KUBE_COVER "$KUBE_GO_PACKAGE/$1" "${@:2}"
|
||||
go test -race -timeout 30s $KUBE_COVER -coverprofile=tmp.out "$KUBE_GO_PACKAGE/$1" "${@:2}"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for package in $(find_test_dirs); do
|
||||
go test -race -timeout 30s $KUBE_COVER "${KUBE_GO_PACKAGE}/${package}" "${@:2}"
|
||||
done
|
||||
find_test_dirs | xargs go test -race -timeout 30s $KUBE_COVER "${@:2}"
|
||||
|
Loading…
Reference in New Issue
Block a user