mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-29 14:37:00 +00:00
Merge pull request #14769 from lavalamp/parallel_tests
Auto commit by PR queue bot
This commit is contained in:
commit
67768eb51c
@ -74,7 +74,8 @@ kube::test::usage() {
|
|||||||
usage: $0 [OPTIONS] [TARGETS]
|
usage: $0 [OPTIONS] [TARGETS]
|
||||||
|
|
||||||
OPTIONS:
|
OPTIONS:
|
||||||
-i <number> : number of times to run each test, must be >= 1
|
-p <number> : number of parallel workers, must be >= 1
|
||||||
|
-i <number> : number of times to run each test per worker, must be >= 1
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -83,12 +84,21 @@ isnum() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
iterations=1
|
iterations=1
|
||||||
while getopts "hi:" opt ; do
|
parallel=1
|
||||||
|
while getopts "hp:i:" opt ; do
|
||||||
case $opt in
|
case $opt in
|
||||||
h)
|
h)
|
||||||
kube::test::usage
|
kube::test::usage
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
|
p)
|
||||||
|
parallel="$OPTARG"
|
||||||
|
if ! isnum "${parallel}" || [[ "${parallel}" -le 0 ]]; then
|
||||||
|
kube::log::usage "'$0': argument to -p must be numeric and greater than 0"
|
||||||
|
kube::test::usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
i)
|
i)
|
||||||
iterations="$OPTARG"
|
iterations="$OPTARG"
|
||||||
if ! isnum "${iterations}" || [[ "${iterations}" -le 0 ]]; then
|
if ! isnum "${iterations}" || [[ "${iterations}" -le 0 ]]; then
|
||||||
@ -171,39 +181,48 @@ produceJUnitXMLReport() {
|
|||||||
kube::log::status "Saved JUnit XML test report to ${junit_xml_filename}"
|
kube::log::status "Saved JUnit XML test report to ${junit_xml_filename}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
runTestIterations() {
|
||||||
|
local worker=$1
|
||||||
|
shift
|
||||||
|
kube::log::status "Worker ${worker}: Running ${iterations} times"
|
||||||
|
for arg; do
|
||||||
|
trap 'exit 1' SIGINT
|
||||||
|
local pkg=${KUBE_GO_PACKAGE}/${arg}
|
||||||
|
kube::log::status "${pkg}"
|
||||||
|
# keep going, even if there are failures
|
||||||
|
local pass=0
|
||||||
|
local count=0
|
||||||
|
for i in $(seq 1 ${iterations}); do
|
||||||
|
if go test "${goflags[@]:+${goflags[@]}}" \
|
||||||
|
${KUBE_RACE} ${KUBE_TIMEOUT} "${pkg}" \
|
||||||
|
"${testargs[@]:+${testargs[@]}}"; then
|
||||||
|
pass=$((pass + 1))
|
||||||
|
else
|
||||||
|
ITERATION_FAILURES=$((ITERATION_FAILURES + 1))
|
||||||
|
fi
|
||||||
|
count=$((count + 1))
|
||||||
|
done 2>&1
|
||||||
|
kube::log::status "Worker ${worker}: ${pass} / ${count} passed"
|
||||||
|
done
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
runTests() {
|
runTests() {
|
||||||
# TODO: this should probably be refactored to avoid code duplication with the
|
# TODO: this should probably be refactored to avoid code duplication with the
|
||||||
# coverage version.
|
# coverage version.
|
||||||
if [[ $iterations -gt 1 ]]; then
|
if [[ $iterations -gt 1 ]]; then
|
||||||
|
ITERATION_FAILURES=0 # purposely non-local
|
||||||
if [[ $# -eq 0 ]]; then
|
if [[ $# -eq 0 ]]; then
|
||||||
set -- $(kube::test::find_dirs)
|
set -- $(kube::test::find_dirs)
|
||||||
fi
|
fi
|
||||||
kube::log::status "Running ${iterations} times"
|
for p in $(seq 1 ${parallel}); do
|
||||||
fails=0
|
runTestIterations ${p} "$@" &
|
||||||
for arg; do
|
|
||||||
trap 'exit 1' SIGINT
|
|
||||||
pkg=${KUBE_GO_PACKAGE}/${arg}
|
|
||||||
kube::log::status "${pkg}"
|
|
||||||
# keep going, even if there are failures
|
|
||||||
pass=0
|
|
||||||
count=0
|
|
||||||
for i in $(seq 1 ${iterations}); do
|
|
||||||
if go test "${goflags[@]:+${goflags[@]}}" \
|
|
||||||
${KUBE_RACE} ${KUBE_TIMEOUT} "${pkg}" \
|
|
||||||
"${testargs[@]:+${testargs[@]}}"; then
|
|
||||||
pass=$((pass + 1))
|
|
||||||
else
|
|
||||||
fails=$((fails + 1))
|
|
||||||
fi
|
|
||||||
count=$((count + 1))
|
|
||||||
done 2>&1
|
|
||||||
kube::log::status "${pass} / ${count} passed"
|
|
||||||
done
|
done
|
||||||
if [[ ${fails} -gt 0 ]]; then
|
wait
|
||||||
|
if [[ ${ITERATION_FAILURES} -gt 0 ]]; then
|
||||||
return 1
|
return 1
|
||||||
else
|
|
||||||
return 0
|
|
||||||
fi
|
fi
|
||||||
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local junit_filename_prefix
|
local junit_filename_prefix
|
||||||
|
Loading…
Reference in New Issue
Block a user