Skip to content

Commit

Permalink
Revert "Use goveralls to report coverage results from Travis."
Browse files Browse the repository at this point in the history
Revert "Produce a combined coverage report when running Go unit tests."

These caused unit tests to run very slowly, causing problems with
Travis.
  • Loading branch information
ixdy committed Feb 23, 2015
1 parent b261d8c commit 0f2e9db
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 56 deletions.
3 changes: 1 addition & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ go:

install:
- if ! go get code.google.com/p/go.tools/cmd/cover; then go get golang.org/x/tools/cmd/cover; fi
- go get github.com/mattn/goveralls
- ./hack/travis/install-etcd.sh
- ./hack/verify-gofmt.sh
- ./hack/verify-boilerplate.sh
Expand All @@ -15,7 +14,7 @@ install:
- ./hack/build-go.sh

script:
- KUBE_RACE="-race" KUBE_COVER="y" KUBE_GOVERALLS_BIN="$HOME/gopath/bin/goveralls" KUBE_TIMEOUT='-timeout 60s' ./hack/test-go.sh "" -p=4
- KUBE_RACE="-race" KUBE_COVER="-cover -covermode=atomic" KUBE_TIMEOUT='-timeout 60s' ./hack/test-go.sh "" -p=4
- PATH=$HOME/gopath/bin:./third_party/etcd:$PATH ./hack/test-cmd.sh
- PATH=$HOME/gopath/bin:./third_party/etcd:$PATH ./hack/verify-gendocs.sh
- PATH=$HOME/gopath/bin:./third_party/etcd:$PATH ./hack/test-integration.sh
Expand Down
2 changes: 1 addition & 1 deletion hack/benchmark-go.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,4 @@ set -o pipefail

KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..

KUBE_COVER="" KUBE_RACE=" " "${KUBE_ROOT}/hack/test-go.sh" "" -test.run="^X" -benchtime=1s -bench=. -benchmem
KUBE_COVER=" " KUBE_RACE=" " "${KUBE_ROOT}/hack/test-go.sh" "" -test.run="^X" -benchtime=1s -bench=. -benchmem
82 changes: 29 additions & 53 deletions hack/test-go.sh
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,14 @@ kube::test::find_dirs() {
)
}

kube::test::find_pkgs() {
kube::test::find_dirs | xargs -n1 printf "${KUBE_GO_PACKAGE}/%s\n"
}

# -covermode=atomic becomes default with -race in Go >=1.3
KUBE_TIMEOUT=${KUBE_TIMEOUT:--timeout 120s}
KUBE_COVER=${KUBE_COVER:-} # set to nonempty string to enable coverage collection
KUBE_COVERMODE=${KUBE_COVERMODE:-atomic}
KUBE_COVER=${KUBE_COVER:-} # use KUBE_COVER="-cover -covermode=atomic" for full coverage
KUBE_RACE=${KUBE_RACE:-} # use KUBE_RACE="-race" to enable race testing
# Set to the goveralls binary path to report coverage results to Coveralls.io.
KUBE_GOVERALLS_BIN=${KUBE_GOVERALLS_BIN:-}

kube::test::usage() {
kube::log::usage_from_stdin <<EOF
Expand Down Expand Up @@ -103,8 +104,6 @@ for arg; do
done
set -- "${testcases[@]+${testcases[@]}}"

# TODO: this should probably be refactored to avoid code duplication with the
# coverage version.
if [[ $iterations -gt 1 ]]; then
if [[ $# -eq 0 ]]; then
set -- $(kube::test::find_dirs)
Expand Down Expand Up @@ -136,56 +135,33 @@ if [[ $iterations -gt 1 ]]; then
fi
fi

cover_report_dir=""
combined_cover_profile=""
if [[ -n "${KUBE_COVER}" ]]; then
cover_report_dir="/tmp/k8s_coverage/$(kube::util::sortable_date)"
combined_cover_profile="${cover_report_dir}/combined-coverage.out"
kube::log::status "Saving coverage output in '${cover_report_dir}'"
mkdir -p ${cover_report_dir}
# The combined coverage profile needs to start with a line indicating which
# coverage mode was used (set, count, or atomic). This line is included in
# each of the coverage profiles generated when running 'go test -cover', but
# we strip these lines out when combining so that there's only one.
echo "mode: ${KUBE_COVERMODE}" >${combined_cover_profile}
fi

if [[ -n "${1-}" ]]; then
test_dirs=$@
else
test_dirs=$(kube::test::find_dirs)
fi

# Run all specified tests, optionally collecting coverage if KUBE_COVER is set.
for arg in ${test_dirs}; do
trap 'exit 1' SIGINT
pkg=${KUBE_GO_PACKAGE}/${arg}

cover_params=()
cover_profile=""
cover_report_dir=""
if [[ -n "${KUBE_COVER}" ]]; then
cover_profile=${cover_report_dir}/${arg}/coverage.out
mkdir -p "${cover_report_dir}/${arg}"
cover_params=(-cover -covermode="${KUBE_COVERMODE}" -coverprofile="${cover_profile}")
cover_report_dir="/tmp/k8s_coverage/$(kube::util::sortable_date)"
kube::log::status "Saving coverage output in '${cover_report_dir}'"
fi

go test "${goflags[@]:+${goflags[@]}}" \
${KUBE_RACE} \
${KUBE_TIMEOUT} \
"${cover_params[@]+${cover_params[@]}}" \
"${pkg}"
if [[ -f "${cover_profile}" ]]; then
# Include all coverage reach data in the combined profile, but exclude the
# 'mode' lines, as there should be only one.
grep -h -v "^mode:" ${cover_profile} >>${combined_cover_profile} || true
fi
done
for arg; do
trap 'exit 1' SIGINT
pkg=${KUBE_GO_PACKAGE}/${arg}

if [[ -f ${combined_cover_profile} ]]; then
coverage_html_file="${cover_report_dir}/combined-coverage.html"
go tool cover -html="${combined_cover_profile}" -o="${coverage_html_file}"
kube::log::status "Combined coverage report: ${coverage_html_file}"
if [[ -x "${KUBE_GOVERALLS_BIN}" ]]; then
${KUBE_GOVERALLS_BIN} -coverprofile="${combined_cover_profile}" || true
fi
cover_params=()
if [[ -n "${KUBE_COVER}" ]]; then
mkdir -p "${cover_report_dir}/${arg}"
cover_params=(${KUBE_COVER} -coverprofile="${cover_report_dir}/${arg}/coverage.out")
fi

go test "${goflags[@]:+${goflags[@]}}" \
${KUBE_RACE} \
${KUBE_TIMEOUT} \
"${cover_params[@]+${cover_params[@]}}" \
"${pkg}"
done
exit 0
fi

kube::test::find_pkgs | xargs go test "${goflags[@]:+${goflags[@]}}" \
${KUBE_RACE} \
${KUBE_TIMEOUT} \
${KUBE_COVER}

0 comments on commit 0f2e9db

Please sign in to comment.