Skip to content

Commit

Permalink
Merge pull request #156 from qinqon/integrate-kubevirt-dump
Browse files Browse the repository at this point in the history
test, reporter: Integrate with kubevirt dump
  • Loading branch information
k8s-ci-robot authored Aug 5, 2022
2 parents b604933 + ae33230 commit 2b08d6d
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 2 deletions.
31 changes: 30 additions & 1 deletion e2e/e2e-suite_test.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
package e2e_test

import (
"fmt"
"os"
"os/exec"
"path/filepath"

. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
"os"

"flag"
"testing"
Expand All @@ -12,12 +16,14 @@ import (
// Test suite required arguments
var KubectlPath string
var ClusterctlPath string
var DumpPath string
var WorkingDir string

// Initialize test required arguments
func init() {
flag.StringVar(&KubectlPath, "kubectl-path", "", "Path to the kubectl binary")
flag.StringVar(&ClusterctlPath, "clusterctl-path", "", "Path to the clusterctl binary")
flag.StringVar(&DumpPath, "dump-path", "", "Path to the kubevirt artifacts dump cmd binary")
flag.StringVar(&WorkingDir, "working-dir", "", "Path used for e2e test files")
}

Expand All @@ -38,6 +44,11 @@ func TestE2E(t *testing.T) {
} else if _, err := os.Stat(WorkingDir); os.IsNotExist(err) {
t.Fatalf("invalid working-dir path: %s doesn't exist", WorkingDir)
}
if DumpPath != "" {
if _, err := os.Stat(DumpPath); os.IsNotExist(err) {
t.Fatalf("invalid dump-path: %s doesn't exist", DumpPath)
}
}

RegisterFailHandler(Fail)
RunSpecs(t, "E2E Suite")
Expand All @@ -47,3 +58,21 @@ var _ = BeforeSuite(func() {
// parse test suite arguments
flag.Parse()
})

var _ = JustAfterEach(func() {
if CurrentSpecReport().Failed() && DumpPath != "" {
dump(os.Getenv("KUBECONFIG"), "")
}
})

func dump(kubeconfig, artifactsSuffix string) {
cmd := exec.Command(DumpPath, "--kubeconfig", kubeconfig)

failureLocation := CurrentSpecReport().Failure.Location
artifactsPath := filepath.Join(os.Getenv("ARTIFACTS"), fmt.Sprintf("%s:%d", filepath.Base(failureLocation.FileName), failureLocation.LineNumber), artifactsSuffix)
cmd.Env = append(cmd.Env, fmt.Sprintf("ARTIFACTS=%s", artifactsPath))

By(fmt.Sprintf("dumping k8s artifacts to %s", artifactsPath))
output, err := cmd.CombinedOutput()
Expect(err).ToNot(HaveOccurred(), string(output))
}
11 changes: 10 additions & 1 deletion hack/run-e2e.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,16 @@ TOOLS_DIR=${TOOLS_DIR:-hack/tools}

CLUSTERCTL_PATH=${TOOLS_DIR}/bin/clusterctl
KUBECTL_PATH=${TOOLS_DIR}/bin/kubectl
DUMP_VERSION=$(curl -L https://storage.googleapis.com/kubevirt-prow/devel/nightly/release/kubevirt/kubevirt/latest)
DUMP_PATH=${TOOLS_DIR}/bin/kubevirt-${DUMP_VERSION}-dump
TEST_WORKING_DIR=${TOOLS_DIR}/e2e-test-workingdir
export ARTIFACTS=${ARTIFACTS:-k8s-reporter}
mkdir -p $ARTIFACTS

if [ ! -f "$DUMP_PATH" ]; then
curl -L https://storage.googleapis.com/kubevirt-prow/devel/nightly/release/kubevirt/kubevirt/${version}/testing/dump -o $DUMP_PATH
chmod 755 $DUMP_PATH
fi

if [ ! -f "${CLUSTERCTL_PATH}" ]; then
echo >&2 "Downloading clusterctl ..."
Expand All @@ -22,4 +31,4 @@ fi

rm -rf $TEST_WORKING_DIR
mkdir -p $TEST_WORKING_DIR
$BIN_DIR/e2e.test -ginkgo.v --kubectl-path $KUBECTL_PATH --clusterctl-path $CLUSTERCTL_PATH --working-dir $TEST_WORKING_DIR
$BIN_DIR/e2e.test -ginkgo.v -test.v -ginkgo.no-color --kubectl-path $KUBECTL_PATH --clusterctl-path $CLUSTERCTL_PATH --working-dir $TEST_WORKING_DIR --dump-path $DUMP_PATH

0 comments on commit 2b08d6d

Please sign in to comment.