From 98be921c5a9015a2ad5d82e2fb5e5c38c7748fe1 Mon Sep 17 00:00:00 2001 From: timflannagan Date: Tue, 2 Nov 2021 14:23:24 -0400 Subject: [PATCH 1/3] test/e2e: Update operators v1 API package import name Update the operatorsv1 API package import from v1 -> operatorsv1. Signed-off-by: timflannagan --- test/e2e/e2e_test.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/e2e/e2e_test.go b/test/e2e/e2e_test.go index 812c2fa16e..8eee1b7654 100644 --- a/test/e2e/e2e_test.go +++ b/test/e2e/e2e_test.go @@ -16,7 +16,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/controller-runtime/pkg/client" - v1 "github.com/operator-framework/api/pkg/operators/v1" + operatorsv1 "github.com/operator-framework/api/pkg/operators/v1" "github.com/operator-framework/operator-lifecycle-manager/test/e2e/ctx" ) @@ -75,10 +75,10 @@ var _ = BeforeSuite(func() { deprovision = ctx.MustProvision(ctx.Ctx()) ctx.MustInstall(ctx.Ctx()) - var groups v1.OperatorGroupList + var groups operatorsv1.OperatorGroupList Expect(ctx.Ctx().Client().List(context.Background(), &groups, client.InNamespace(testNamespace))).To(Succeed()) if len(groups.Items) == 0 { - og := v1.OperatorGroup{ + og := operatorsv1.OperatorGroup{ ObjectMeta: metav1.ObjectMeta{ Name: "opgroup", Namespace: testNamespace, @@ -88,12 +88,12 @@ var _ = BeforeSuite(func() { } // Tests can assume the group in the test namespace has been reconciled at least once. - Eventually(func() ([]v1.OperatorGroupStatus, error) { - var groups v1.OperatorGroupList + Eventually(func() ([]operatorsv1.OperatorGroupStatus, error) { + var groups operatorsv1.OperatorGroupList if err := ctx.Ctx().Client().List(context.Background(), &groups, client.InNamespace(testNamespace)); err != nil { return nil, err } - var statuses []v1.OperatorGroupStatus + var statuses []operatorsv1.OperatorGroupStatus for _, group := range groups.Items { statuses = append(statuses, group.Status) } From b7eb052f874e7b9197fc9a025f5e092e0cb26c80 Mon Sep 17 00:00:00 2001 From: timflannagan Date: Tue, 2 Nov 2021 14:24:32 -0400 Subject: [PATCH 2/3] .github,test/e2e: Specify a base testing artifacts directory Update the $JUNIT_DIRECTORY environment varaible that's used throughout the e2e testing suite to the more generalized $ARTIFACTS_DIRECTORY which can be used as the base directory for various testing artifacts. Junit reports are now created implicitly whenever the $ARTIFACTS_DIRECTORY has been specified/non-empty. Signed-off-by: timflannagan --- .github/workflows/e2e-tests.yml | 2 +- test/e2e/e2e_test.go | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index a8e22e9028..3b7688a6cf 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -14,7 +14,7 @@ jobs: - uses: actions/setup-go@v2 with: go-version: '~1.16' - - run: make e2e-local E2E_NODES=2 JUNIT_DIRECTORY=./artifacts/ + - run: make e2e-local E2E_NODES=2 ARTIFACTS_DIR=./artifacts/ - name: Archive Test Artifacts # test results, failed or not, are always uploaded. if: ${{ always() }} uses: actions/upload-artifact@v2 diff --git a/test/e2e/e2e_test.go b/test/e2e/e2e_test.go index 8eee1b7654..8bfeae13b6 100644 --- a/test/e2e/e2e_test.go +++ b/test/e2e/e2e_test.go @@ -43,6 +43,7 @@ var ( testNamespace = "" operatorNamespace = "" communityOperatorsImage = "" + junitDir = "junit" ) func TestEndToEnd(t *testing.T) { @@ -52,8 +53,9 @@ func TestEndToEnd(t *testing.T) { SetDefaultConsistentlyDuration(30 * time.Second) SetDefaultConsistentlyPollingInterval(1 * time.Second) - if junitDir := os.Getenv("JUNIT_DIRECTORY"); junitDir != "" { - junitReporter := reporters.NewJUnitReporter(path.Join(junitDir, fmt.Sprintf("junit_e2e_%02d.xml", config.GinkgoConfig.ParallelNode))) + // always configure a junit report when ARTIFACTS_DIR has been set + if artifactsDir := os.Getenv("ARTIFACTS_DIR"); artifactsDir != "" { + junitReporter := reporters.NewJUnitReporter(path.Join(artifactsDir, junitDir, fmt.Sprintf("junit_e2e_%02d.xml", config.GinkgoConfig.ParallelNode))) RunSpecsWithDefaultAndCustomReporters(t, "End-to-end", []Reporter{junitReporter}) } else { RunSpecs(t, "End-to-end") From 1d45f505cca4c9eaf52f1a995eaf3c00e36c89e5 Mon Sep 17 00:00:00 2001 From: timflannagan Date: Tue, 2 Nov 2021 14:26:47 -0400 Subject: [PATCH 3/3] test/e2e: Collect container logs in the kind provisioner before deprovisioning Update the kind provisioner and collect container logs (and various other testing artifacts) before deprovisioning the kind cluster that tests were running. Signed-off-by: timflannagan --- test/e2e/ctx/provisioner_kind.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/e2e/ctx/provisioner_kind.go b/test/e2e/ctx/provisioner_kind.go index 003977d391..35f194fc19 100644 --- a/test/e2e/ctx/provisioner_kind.go +++ b/test/e2e/ctx/provisioner_kind.go @@ -22,6 +22,7 @@ import ( var ( images = flag.String("kind.images", "", "comma-separated list of image archives to load on cluster nodes, relative to the test binary or test package path") + logDir = "logs" verbosity int ) @@ -139,6 +140,12 @@ func Provision(ctx *TestContext) (func(), error) { var once sync.Once deprovision := func() { once.Do(func() { + if artifactsDir := os.Getenv("ARTIFACTS_DIR"); artifactsDir != "" { + ctx.Logf("collecting container logs for the %s cluster", name) + if err := provider.CollectLogs(name, filepath.Join(artifactsDir, logDir)); err != nil { + ctx.Logf("failed to collect logs: %v", err) + } + } provider.Delete(name, kubeconfigPath) }) }