You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by pc...@apache.org on 2023/05/09 12:36:17 UTC

[camel-k] branch release-1.10.x updated: Add klb to olm_upgrade_test - branch 1.10.x

This is an automated email from the ASF dual-hosted git repository.

pcongiusti pushed a commit to branch release-1.10.x
in repository https://gitbox.apache.org/repos/asf/camel-k.git


The following commit(s) were added to refs/heads/release-1.10.x by this push:
     new 65b286b01 Add klb to olm_upgrade_test - branch 1.10.x
65b286b01 is described below

commit 65b286b012ff37c7ac524d379fa68918d62e5147
Author: Lucie Krejcirova <lf...@redhat.com>
AuthorDate: Thu May 4 10:32:53 2023 +0200

    Add klb to olm_upgrade_test - branch 1.10.x
---
 e2e/namespace/upgrade/olm_upgrade_test.go | 49 +++++++++++++++++--------------
 e2e/support/test_support.go               | 12 +++++---
 2 files changed, 35 insertions(+), 26 deletions(-)

diff --git a/e2e/namespace/upgrade/olm_upgrade_test.go b/e2e/namespace/upgrade/olm_upgrade_test.go
index 19e140931..c86a7ddb9 100644
--- a/e2e/namespace/upgrade/olm_upgrade_test.go
+++ b/e2e/namespace/upgrade/olm_upgrade_test.go
@@ -24,6 +24,7 @@ package common
 
 import (
 	"fmt"
+	"github.com/apache/camel-k/pkg/apis/camel/v1alpha1"
 	"os"
 	"testing"
 	"time"
@@ -101,7 +102,7 @@ func TestOLMAutomaticUpgrade(t *testing.T) {
 		// IntegrationPlatform should match at least on the version prefix
 		// CSV patch version can be increased with the OperatorHub respin of the same Camel K release
 		var prevIPVersionPrefix string
-		var newIPVersionPrefix string
+		var newIPVersionMajorMinorPatch string
 
 		prevCSVVersion = clusterServiceVersion(noAdditionalConditions, ns)().Spec.Version
 		prevIPVersionPrefix = fmt.Sprintf("%d.%d", prevCSVVersion.Version.Major, prevCSVVersion.Version.Minor)
@@ -111,16 +112,24 @@ func TestOLMAutomaticUpgrade(t *testing.T) {
 		Eventually(OperatorPodPhase(ns), TestTimeoutMedium).Should(Equal(corev1.PodRunning))
 
 		// Check the IntegrationPlatform has been reconciled
+		t.Logf("Platform version: %s", PlatformVersion(ns)())
 		Eventually(PlatformVersion(ns)).Should(ContainSubstring(prevIPVersionPrefix))
 
 		name := "yaml"
 		Expect(Kamel("run", "-n", ns, "files/yaml.yaml").Execute()).To(Succeed())
+		kbindName := "timer-to-log"
+		Expect(KamelBind(ns, "timer-source?message=Hello", "log-sink", "--name", kbindName).Execute()).To(Succeed())
 		// Check the Integration runs correctly
 		Eventually(IntegrationPodPhase(ns, name), TestTimeoutLong).Should(Equal(corev1.PodRunning))
 		Eventually(IntegrationConditionStatus(ns, name, v1.IntegrationConditionReady), TestTimeoutLong).Should(Equal(corev1.ConditionTrue))
+		Eventually(KameletBindingConditionStatus(ns, kbindName, v1alpha1.KameletBindingConditionReady), TestTimeoutShort).
+			Should(Equal(corev1.ConditionTrue))
+		Eventually(IntegrationPodPhase(ns, kbindName), TestTimeoutLong).Should(Equal(corev1.PodRunning))
+		Eventually(IntegrationConditionStatus(ns, kbindName, v1.IntegrationConditionReady), TestTimeoutLong).Should(Equal(corev1.ConditionTrue))
 
 		// Check the Integration version matches that of the current operator
 		Expect(IntegrationVersion(ns, name)()).To(ContainSubstring(prevIPVersionPrefix))
+		Expect(IntegrationVersion(ns, kbindName)()).To(ContainSubstring(prevIPVersionPrefix))
 
 		t.Run("OLM upgrade", func(t *testing.T) {
 			// Trigger Camel K operator upgrade by updating the CatalogSource with the new index image
@@ -139,11 +148,6 @@ func TestOLMAutomaticUpgrade(t *testing.T) {
 				Expect(subscription.Spec.Channel).To(Equal(newUpdateChannel))
 			}
 
-			// Check the previous CSV is being replaced
-			Eventually(clusterServiceVersionPhase(func(csv olm.ClusterServiceVersion) bool {
-				return csv.Spec.Version.Version.String() == prevCSVVersion.Version.String()
-			}, ns), TestTimeoutMedium).Should(Equal(olm.CSVPhaseReplacing))
-
 			// The new CSV is installed
 			Eventually(clusterServiceVersionPhase(func(csv olm.ClusterServiceVersion) bool {
 				return csv.Spec.Version.Version.String() != prevCSVVersion.Version.String()
@@ -155,7 +159,7 @@ func TestOLMAutomaticUpgrade(t *testing.T) {
 			}, ns), TestTimeoutMedium).Should(BeNil())
 
 			newCSVVersion = clusterServiceVersion(noAdditionalConditions, ns)().Spec.Version
-			newIPVersionPrefix = fmt.Sprintf("%d.%d", newCSVVersion.Version.Major, newCSVVersion.Version.Minor)
+			newIPVersionMajorMinorPatch = fmt.Sprintf("%d.%d.%d", newCSVVersion.Version.Major, newCSVVersion.Version.Minor, newCSVVersion.Version.Patch)
 
 			Expect(prevCSVVersion.Version.String()).NotTo(Equal(newCSVVersion.Version.String()))
 
@@ -163,7 +167,7 @@ func TestOLMAutomaticUpgrade(t *testing.T) {
 			Eventually(OperatorImage(ns), TestTimeoutShort).Should(Equal(defaults.OperatorImage()))
 
 			// Check the IntegrationPlatform has been reconciled
-			Eventually(PlatformVersion(ns)).Should(ContainSubstring(newIPVersionPrefix))
+			Eventually(PlatformVersion(ns)).Should(ContainSubstring(newIPVersionMajorMinorPatch))
 		})
 
 		t.Run("Integration upgrade", func(t *testing.T) {
@@ -174,42 +178,43 @@ func TestOLMAutomaticUpgrade(t *testing.T) {
 			Consistently(IntegrationVersion(ns, name), 5*time.Second, 1*time.Second).Should(ContainSubstring(prevIPVersionPrefix))
 
 			// Rebuild the Integration
-			Expect(Kamel("rebuild", name, "-n", ns).Execute()).To(Succeed())
+			Expect(Kamel("rebuild", "--all", "-n", ns).Execute()).To(Succeed())
+			Eventually(KameletBindingConditionStatus(ns, kbindName, v1alpha1.KameletBindingConditionReady), TestTimeoutMedium).Should(Equal(corev1.ConditionTrue))
 
 			// Check the Integration runs correctly
 			Eventually(IntegrationPodPhase(ns, name), TestTimeoutLong).Should(Equal(corev1.PodRunning))
 			Eventually(IntegrationConditionStatus(ns, name, v1.IntegrationConditionReady), TestTimeoutMedium).Should(Equal(corev1.ConditionTrue))
 
 			// Check the Integration version has been upgraded
-			Eventually(IntegrationVersion(ns, name)).Should(ContainSubstring(newIPVersionPrefix))
+			Eventually(IntegrationVersion(ns, name)).Should(ContainSubstring(newIPVersionMajorMinorPatch))
 
 			// Check the previous kit is not garbage collected (skip Build - present in case of respin)
 			prevCSVVersionMajorMinorPatch := fmt.Sprintf("%d.%d.%d",
 				prevCSVVersion.Version.Major, prevCSVVersion.Version.Minor, prevCSVVersion.Version.Patch)
-			Eventually(Kits(ns, KitWithVersion(prevCSVVersionMajorMinorPatch))).Should(HaveLen(1))
+			Eventually(Kits(ns, KitWithVersionPrefix(prevCSVVersionMajorMinorPatch))).Should(HaveLen(2))
 			// Check a new kit is created with the current version
-			Eventually(Kits(ns, KitWithVersion(defaults.Version)),
-				TestTimeoutMedium).Should(HaveLen(1))
+			Eventually(Kits(ns, KitWithVersionPrefix(newIPVersionMajorMinorPatch))).Should(HaveLen(2))
 			// Check the new kit is ready
-			Eventually(Kits(ns, KitWithVersion(defaults.Version), KitWithPhase(v1.IntegrationKitPhaseReady)),
-				TestTimeoutMedium).Should(HaveLen(1))
+			Eventually(Kits(ns, KitWithVersionPrefix(newIPVersionMajorMinorPatch), KitWithPhase(v1.IntegrationKitPhaseReady)),
+				TestTimeoutMedium).Should(HaveLen(2))
 
-			kit := Kits(ns, KitWithVersion(defaults.Version))()[0]
+			kit := Kits(ns, KitWithVersionPrefix(newIPVersionMajorMinorPatch), KitWithLabels(map[string]string{"camel.apache.org/created.by.name": name}))()[0]
+			kitKbind := Kits(ns, KitWithVersionPrefix(newIPVersionMajorMinorPatch), KitWithLabels(map[string]string{"camel.apache.org/created.by.name": kbindName}))()[0]
 
 			// Check the Integration uses the new kit
 			Eventually(IntegrationKit(ns, name), TestTimeoutMedium).Should(Equal(kit.Name))
+			Eventually(IntegrationKit(ns, kbindName), TestTimeoutMedium).Should(Equal(kitKbind.Name))
 			// Check the Integration Pod uses the new image
 			Eventually(IntegrationPodImage(ns, name)).Should(Equal(kit.Status.Image))
+			Eventually(IntegrationPodImage(ns, kbindName)).Should(Equal(kitKbind.Status.Image))
 
 			// Check the Integration runs correctly
 			Eventually(IntegrationPodPhase(ns, name)).Should(Equal(corev1.PodRunning))
+			Eventually(IntegrationPodPhase(ns, kbindName)).Should(Equal(corev1.PodRunning))
 			Eventually(IntegrationConditionStatus(ns, name, v1.IntegrationConditionReady), TestTimeoutLong).Should(Equal(corev1.ConditionTrue))
-
-			// Clean up
-			Expect(Kamel("delete", "--all", "-n", ns).Execute()).To(Succeed())
-			Expect(Kamel("uninstall", "-n", ns).Execute()).To(Succeed())
-			// Clean up cluster-wide resources that are not removed by OLM
-			Expect(Kamel("uninstall", "--all", "-n", ns, "--olm=false").Execute()).To(Succeed())
+			Eventually(IntegrationConditionStatus(ns, kbindName, v1.IntegrationConditionReady), TestTimeoutLong).Should(Equal(corev1.ConditionTrue))
 		})
+		// Clean up
+		Expect(Kamel("delete", "--all", "-n", ns).Execute()).To(Succeed())
 	})
 }
diff --git a/e2e/support/test_support.go b/e2e/support/test_support.go
index b006486d7..dde3be530 100644
--- a/e2e/support/test_support.go
+++ b/e2e/support/test_support.go
@@ -107,11 +107,9 @@ func setTestLocus(t *testing.T) {
 	testLocus = t
 }
 
-//
 // Only panic the test if absolutely necessary and there is
 // no test locus. In most cases, the test should fail gracefully
 // using the test locus to error out and fail now.
-//
 func failTest(err error) {
 	if testLocus != nil {
 		testLocus.Error(err)
@@ -726,9 +724,7 @@ func ServiceType(ns string, name string) func() corev1.ServiceType {
 	}
 }
 
-//
 // Find the service in the given namespace with the given type
-//
 func ServicesByType(ns string, svcType corev1.ServiceType) func() []corev1.Service {
 	return func() []corev1.Service {
 		svcs := []corev1.Service{}
@@ -1058,6 +1054,14 @@ func KitWithVersion(version string) KitFilter {
 	}
 }
 
+func KitWithVersionPrefix(versionPrefix string) KitFilter {
+	return &kitFilter{
+		filter: func(kit *v1.IntegrationKit) bool {
+			return strings.HasPrefix(kit.Status.Version, versionPrefix)
+		},
+	}
+}
+
 func KitWithLabels(kitLabels map[string]string) ctrl.ListOption {
 	return ctrl.MatchingLabelsSelector{
 		Selector: labels.Set(kitLabels).AsSelector(),