Fix path to the coverage folder for e2e tests.

This commit is contained in:
Piotr Tabor 2021-05-15 21:33:49 +02:00
parent 13ef6fc343
commit c7a76470d5
2 changed files with 14 additions and 16 deletions

12
test.sh
View File

@ -325,14 +325,14 @@ function cov_pass {
log_callout "[$(date)] Collecting coverage from e2e tests ..." log_callout "[$(date)] Collecting coverage from e2e tests ..."
# We don't pass 'gocov_build_flags' nor 'pkg_to_coverprofileflag' here, # We don't pass 'gocov_build_flags' nor 'pkg_to_coverprofileflag' here,
# as the coverage is collected from the ./bin/etcd_test & ./bin/etcdctl_test internally spawned. # as the coverage is collected from the ./bin/etcd_test & ./bin/etcdctl_test internally spawned.
mkdir -p "${COVERDIR}/e2e" mkdir -p "${coverdir}/e2e"
COVERDIR="${COVERDIR}/e2e" run_for_module "tests" go_test "./e2e/..." "keep_going" : -tags=cov -timeout 30m "$@" || failed="$failed tests_e2e" COVERDIR="${coverdir}/e2e" run_for_module "tests" go_test "./e2e/..." "keep_going" : -tags=cov -timeout 30m "$@" || failed="$failed tests_e2e"
split_dir "${COVERDIR}/e2e" 10 split_dir "${coverdir}/e2e" 10
log_callout "[$(date)] Collecting coverage from e2e tests with proxy ..." log_callout "[$(date)] Collecting coverage from e2e tests with proxy ..."
mkdir -p "${COVERDIR}/e2e_proxy" mkdir -p "${coverdir}/e2e_proxy"
COVERDIR="${COVERDIR}/e2e_proxy" run_for_module "tests" go_test "./e2e/..." "keep_going" : -tags="cov cluster_proxy" -timeout 30m "$@" || failed="$failed tests_e2e_proxy" COVERDIR="${coverdir}/e2e_proxy" run_for_module "tests" go_test "./e2e/..." "keep_going" : -tags="cov cluster_proxy" -timeout 30m "$@" || failed="$failed tests_e2e_proxy"
split_dir "${COVERDIR}/e2e_proxy" 10 split_dir "${coverdir}/e2e_proxy" 10
local cover_out_file="${coverdir}/all.coverprofile" local cover_out_file="${coverdir}/all.coverprofile"
merge_cov "${coverdir}" merge_cov "${coverdir}"

View File

@ -20,18 +20,22 @@ package e2e
import ( import (
"fmt" "fmt"
"os" "os"
"path/filepath"
"strings" "strings"
"syscall" "syscall"
"time" "time"
"go.etcd.io/etcd/client/pkg/v3/fileutil" "go.etcd.io/etcd/client/pkg/v3/fileutil"
"go.etcd.io/etcd/pkg/v3/expect" "go.etcd.io/etcd/pkg/v3/expect"
"go.etcd.io/etcd/tests/v3/integration"
"go.uber.org/zap" "go.uber.org/zap"
) )
const noOutputLineCount = 2 // cov-enabled binaries emit PASS and coverage count lines const noOutputLineCount = 2 // cov-enabled binaries emit PASS and coverage count lines
var (
coverDir = integration.MustAbsPath(os.Getenv("COVERDIR"))
)
func spawnCmd(args []string) (*expect.ExpectProcess, error) { func spawnCmd(args []string) (*expect.ExpectProcess, error) {
return spawnCmdWithLogger(zap.NewNop(), args) return spawnCmdWithLogger(zap.NewNop(), args)
} }
@ -72,18 +76,12 @@ func spawnCmdWithLogger(lg *zap.Logger, args []string) (*expect.ExpectProcess, e
} }
func getCovArgs() ([]string, error) { func getCovArgs() ([]string, error) {
coverPath := os.Getenv("COVERDIR") if !fileutil.Exist(coverDir) {
if !filepath.IsAbs(coverPath) { return nil, fmt.Errorf("could not find coverage folder: %s", coverDir)
// COVERDIR is relative to etcd root but e2e test has its path set to be relative to the e2e folder.
// adding ".." in front of COVERDIR ensures that e2e saves coverage reports to the correct location.
coverPath = filepath.Join("../..", coverPath)
}
if !fileutil.Exist(coverPath) {
return nil, fmt.Errorf("could not find coverage folder")
} }
covArgs := []string{ covArgs := []string{
fmt.Sprintf("-test.coverprofile=e2e.%v.coverprofile", time.Now().UnixNano()), fmt.Sprintf("-test.coverprofile=e2e.%v.coverprofile", time.Now().UnixNano()),
"-test.outputdir=" + coverPath, "-test.outputdir=" + coverDir,
} }
return covArgs, nil return covArgs, nil
} }