Skip to content

Commit 3b60eb7

Browse files
author
Matt Rogers
committed
e2e: Allow running from an existing deployment
- Add TEST_BUNDLE_INSTALL env variable that makes the e2e suite skip initialization of the cluster and operator resources for each test case. This allows running the e2e suite against an existing deployment in a single namespace (such as an OLM install) when used together with TEST_WATCH_NAMESPACE and TEST_OPERATOR_NAMESPACE. - Add a test case cleanup step to kill the operator pod when TEST_BUNDLE_INSTALL is used. This resets the metrics counter for subsequent tests.
1 parent 59cc83f commit 3b60eb7

File tree

3 files changed

+75
-4
lines changed

3 files changed

+75
-4
lines changed

tests/e2e/e2e_test.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ func TestFileIntegrityLogAndReinitDatabase(t *testing.T) {
2727
if err := cleanNodes(f, namespace); err != nil {
2828
t.Fatal(err)
2929
}
30+
if err := resetBundleTestMetrics(f, namespace); err != nil {
31+
t.Fatal(err)
32+
}
3033
}()
3134
defer logContainerOutput(t, f, namespace, testName)
3235

@@ -142,6 +145,9 @@ func TestFileIntegrityLegacyReinitCleanup(t *testing.T) {
142145
if err := cleanNodes(f, namespace); err != nil {
143146
t.Fatal(err)
144147
}
148+
if err := resetBundleTestMetrics(f, namespace); err != nil {
149+
t.Fatal(err)
150+
}
145151
}()
146152
defer logContainerOutput(t, f, namespace, testName)
147153

@@ -204,6 +210,9 @@ func TestFileIntegrityPruneBackup(t *testing.T) {
204210
if err := cleanNodes(f, namespace); err != nil {
205211
t.Fatal(err)
206212
}
213+
if err := resetBundleTestMetrics(f, namespace); err != nil {
214+
t.Fatal(err)
215+
}
207216
}()
208217
defer logContainerOutput(t, f, namespace, testName)
209218

@@ -289,6 +298,9 @@ func TestFileIntegrityConfigurationRevert(t *testing.T) {
289298
if err := cleanNodes(f, namespace); err != nil {
290299
t.Fatal(err)
291300
}
301+
if err := resetBundleTestMetrics(f, namespace); err != nil {
302+
t.Fatal(err)
303+
}
292304
}()
293305
defer logContainerOutput(t, f, namespace, testName)
294306

@@ -403,6 +415,9 @@ func TestFileIntegrityConfigurationStatus(t *testing.T) {
403415
if err := cleanNodes(f, namespace); err != nil {
404416
t.Fatal(err)
405417
}
418+
if err := resetBundleTestMetrics(f, namespace); err != nil {
419+
t.Fatal(err)
420+
}
406421
}()
407422
defer logContainerOutput(t, f, namespace, testName)
408423

@@ -464,6 +479,9 @@ func TestFileIntegrityConfigurationIgnoreMissing(t *testing.T) {
464479
if err := cleanNodes(f, namespace); err != nil {
465480
t.Fatal(err)
466481
}
482+
if err := resetBundleTestMetrics(f, namespace); err != nil {
483+
t.Fatal(err)
484+
}
467485
}()
468486
defer logContainerOutput(t, f, namespace, testName)
469487

@@ -499,6 +517,9 @@ func TestFileIntegrityConfigMapOwnerUpdate(t *testing.T) {
499517
if err := cleanNodes(f, namespace); err != nil {
500518
t.Fatal(err)
501519
}
520+
if err := resetBundleTestMetrics(f, namespace); err != nil {
521+
t.Fatal(err)
522+
}
502523
}()
503524
defer logContainerOutput(t, f, namespace, testName)
504525

@@ -526,6 +547,9 @@ func TestFileIntegrityChangeGracePeriod(t *testing.T) {
526547
if err := cleanNodes(f, namespace); err != nil {
527548
t.Fatal(err)
528549
}
550+
if err := resetBundleTestMetrics(f, namespace); err != nil {
551+
t.Fatal(err)
552+
}
529553
}()
530554
defer logContainerOutput(t, f, namespace, testName)
531555

@@ -599,6 +623,9 @@ func TestFileIntegrityChangeDebug(t *testing.T) {
599623
if err := cleanNodes(f, namespace); err != nil {
600624
t.Fatal(err)
601625
}
626+
if err := resetBundleTestMetrics(f, namespace); err != nil {
627+
t.Fatal(err)
628+
}
602629
}()
603630
defer logContainerOutput(t, f, namespace, testName)
604631

@@ -672,6 +699,9 @@ func TestFileIntegrityBadConfig(t *testing.T) {
672699
if err := cleanNodes(f, namespace); err != nil {
673700
t.Fatal(err)
674701
}
702+
if err := resetBundleTestMetrics(f, namespace); err != nil {
703+
t.Fatal(err)
704+
}
675705
}()
676706
defer logContainerOutput(t, f, namespace, testName)
677707

@@ -703,6 +733,9 @@ func TestFileIntegrityTolerations(t *testing.T) {
703733
if err := cleanNodes(f, namespace); err != nil {
704734
t.Fatal(err)
705735
}
736+
if err := resetBundleTestMetrics(f, namespace); err != nil {
737+
t.Fatal(err)
738+
}
706739
}()
707740
defer logContainerOutput(t, f, namespace, testIntegrityNamePrefix+"-tolerations")
708741

@@ -730,6 +763,9 @@ func TestFileIntegrityLogCompress(t *testing.T) {
730763
if err := cleanAddedFilesOnNodes(f, namespace); err != nil {
731764
t.Fatal(err)
732765
}
766+
if err := resetBundleTestMetrics(f, namespace); err != nil {
767+
t.Fatal(err)
768+
}
733769
}()
734770
defer logContainerOutput(t, f, namespace, testName)
735771

@@ -802,6 +838,9 @@ func TestFileIntegrityAcceptsExpectedChange(t *testing.T) {
802838
if err := cleanNodes(f, namespace); err != nil {
803839
t.Fatal(err)
804840
}
841+
if err := resetBundleTestMetrics(f, namespace); err != nil {
842+
t.Fatal(err)
843+
}
805844
}()
806845
defer logContainerOutput(t, f, namespace, testName)
807846

tests/e2e/helpers.go

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -260,17 +260,21 @@ func setupFileIntegrityOperatorCluster(t *testing.T, ctx *framework.Context) {
260260

261261
replaceNamespaceFromManifest(t, "openshift-file-integrity", namespace, f.NamespacedManPath)
262262

263-
err = ctx.InitializeClusterResources(&cleanupOptions)
264-
if err != nil {
265-
t.Fatalf("failed to initialize cluster resources: %v", err)
263+
if _, ok := os.LookupEnv(framework.TestBundleInstallEnv); !ok {
264+
err = ctx.InitializeClusterResources(&cleanupOptions)
265+
if err != nil {
266+
t.Fatalf("failed to initialize cluster resources: %v", err)
267+
}
268+
t.Log("Initialized cluster resources")
269+
} else {
270+
t.Logf("Using existing cluster resources in namespace %s", namespace)
266271
}
267272

268273
err = initializeMetricsTestResources(f, namespace)
269274
if err != nil {
270275
t.Fatalf("failed to initialize cluster resources for metrics: %v", err)
271276
}
272277

273-
t.Log("Initialized cluster resources")
274278
// wait for file-integrity-operator to be ready
275279
err = e2eutil.WaitForOperatorDeployment(t, f.KubeClient, namespace, "file-integrity-operator", 1, retryInterval, timeout)
276280
if err != nil {
@@ -1410,6 +1414,33 @@ func getFiDsPods(f *framework.Framework, fileIntegrityName, namespace string) (*
14101414
return pods, nil
14111415
}
14121416

1417+
// Kills the operator pods to reset metrics during a bundle-install test.
1418+
func resetBundleTestMetrics(f *framework.Framework, namespace string) error {
1419+
// Kill the operator pod during a continuous run to reset metrics.
1420+
if _, ok := os.LookupEnv(framework.TestBundleInstallEnv); ok {
1421+
if err := killOperatorPods(f, namespace); err != nil {
1422+
return err
1423+
}
1424+
}
1425+
return nil
1426+
}
1427+
1428+
func killOperatorPods(f *framework.Framework, namespace string) error {
1429+
pods, err := getFiOperatorPods(f, namespace)
1430+
if err != nil && !kerr.IsNotFound(err) {
1431+
return err
1432+
}
1433+
1434+
if pods != nil {
1435+
for _, p := range pods.Items {
1436+
if err := f.KubeClient.CoreV1().Pods(p.Namespace).Delete(goctx.TODO(), p.Name, metav1.DeleteOptions{}); err != nil {
1437+
return err
1438+
}
1439+
}
1440+
}
1441+
return nil
1442+
}
1443+
14131444
func getFiOperatorPods(f *framework.Framework, namespace string) (*corev1.PodList, error) {
14141445
lo := metav1.ListOptions{LabelSelector: "name=file-integrity-operator"}
14151446
pods, err := f.KubeClient.CoreV1().Pods(namespace).List(goctx.TODO(), lo)

tests/framework/framework.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ const (
9999

100100
TestOperatorNamespaceEnv = "TEST_OPERATOR_NAMESPACE"
101101
TestWatchNamespaceEnv = "TEST_WATCH_NAMESPACE"
102+
TestBundleInstallEnv = "TEST_BUNDLE_INSTALL"
102103
)
103104

104105
func (opts *frameworkOpts) addToFlagSet(flagset *flag.FlagSet) {

0 commit comments

Comments
 (0)