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/12/05 15:39:53 UTC

(camel-k) 01/04: fix(e2e): Upgrade helm procedure test

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

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

commit 8c99922c413059faf7013aa7abade12ca79ff588
Author: Gaelle Fournier <ga...@gmail.com>
AuthorDate: Thu Nov 23 16:11:02 2023 +0100

    fix(e2e): Upgrade helm procedure test
---
 e2e/install/kustomize/setup_test.go      |   5 --
 e2e/install/upgrade/helm_upgrade_test.go | 150 +++++++++++++++++++++++++++++++
 e2e/support/test_support.go              |   6 ++
 3 files changed, 156 insertions(+), 5 deletions(-)

diff --git a/e2e/install/kustomize/setup_test.go b/e2e/install/kustomize/setup_test.go
index 2c9fdb0d2..5b1058630 100644
--- a/e2e/install/kustomize/setup_test.go
+++ b/e2e/install/kustomize/setup_test.go
@@ -33,11 +33,6 @@ import (
 )
 
 const (
-	// v1.Build,          v1.Integration
-	// v1.IntegrationKit, v1.IntegrationPlatform
-	// v1.Kamelet,  v1.Pipe,
-	// v1alpha1.Kamelet, v1alpha1.KameletBinding
-	ExpectedCRDs = 8
 
 	// camel-k-operator,             camel-k-operator-events,
 	// camel-k-operator-knative,     camel-k-operator-leases,
diff --git a/e2e/install/upgrade/helm_upgrade_test.go b/e2e/install/upgrade/helm_upgrade_test.go
new file mode 100644
index 000000000..bcbb7b4c2
--- /dev/null
+++ b/e2e/install/upgrade/helm_upgrade_test.go
@@ -0,0 +1,150 @@
+//go:build integration
+// +build integration
+
+// To enable compilation of this file in Goland, go to "Settings -> Go -> Vendoring & Build Tags -> Custom Tags" and add "integration"
+
+/*
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package upgrade
+
+import (
+	"fmt"
+	"os"
+	"os/exec"
+	"testing"
+
+	. "github.com/apache/camel-k/v2/e2e/support"
+	"github.com/apache/camel-k/v2/pkg/util/defaults"
+	. "github.com/onsi/gomega"
+	corev1 "k8s.io/api/core/v1"
+)
+
+// WARNING: this test is not OLM specific but needs certain setting we provide in OLM installation scenario
+func TestHelmOperatorUpgrade(t *testing.T) {
+	RegisterTestingT(t)
+
+	KAMEL_INSTALL_REGISTRY := os.Getenv("KAMEL_INSTALL_REGISTRY")
+	// need to add last release version
+	releaseVersion := os.Getenv("KAMEL_K_TEST_RELEASE_VERSION")
+	customImage := fmt.Sprintf("%s/apache/camel-k", KAMEL_INSTALL_REGISTRY)
+
+	os.Setenv("CAMEL_K_TEST_MAKE_DIR", "../../../")
+
+	// Ensure no CRDs are already installed
+	UninstallAll()
+	Eventually(CRDs()).Should(HaveLen(0))
+
+	WithNewTestNamespace(t, func(ns string) {
+
+		// Install operator in last released version
+		ExpectExecSucceed(t,
+			exec.Command(
+				"helm",
+				"install",
+				"camel-k",
+				fmt.Sprintf("../../../docs/charts/camel-k-%s.tgz", releaseVersion),
+				"--set",
+				fmt.Sprintf("platform.build.registry.address=%s", KAMEL_INSTALL_REGISTRY),
+				"--set",
+				"platform.build.registry.insecure=true",
+				"-n",
+				ns,
+			),
+		)
+
+		Eventually(OperatorPod(ns)).ShouldNot(BeNil())
+		Eventually(OperatorImage(ns)).Should(ContainSubstring(releaseVersion))
+		Eventually(CRDs()).Should(HaveLen(ExpectedCRDs))
+
+		//Test a simple route
+		t.Run("simple route", func(t *testing.T) {
+			name := "simpleyaml"
+			Expect(KamelRun(ns, "files/yaml.yaml", "--name", name).Execute()).To(Succeed())
+			Eventually(IntegrationPodPhase(ns, name), TestTimeoutMedium).Should(Equal(corev1.PodRunning))
+			Eventually(IntegrationLogs(ns, name), TestTimeoutShort).Should(ContainSubstring("Magicstring!"))
+		})
+
+		// Upgrade CRDs with kustomize
+		ExpectExecSucceed(t,
+			exec.Command(
+				"kubectl",
+				"replace",
+				"-f",
+				"../../../helm/camel-k/crds/",
+				"-n",
+				ns,
+			),
+		)
+
+		// Upgrade operator to current version
+		ExpectExecSucceed(t, Make(fmt.Sprintf("CUSTOM_IMAGE=%s", customImage), "set-version"))
+		ExpectExecSucceed(t, Make("release-helm"))
+		ExpectExecSucceed(t,
+			exec.Command(
+				"helm",
+				"upgrade",
+				"camel-k",
+				fmt.Sprintf("../../../docs/charts/camel-k-%s.tgz", defaults.Version),
+				"--set",
+				fmt.Sprintf("platform.build.registry.address=%s", KAMEL_INSTALL_REGISTRY),
+				"--set",
+				"platform.build.registry.insecure=true",
+				"-n",
+				ns,
+				"--force",
+			),
+		)
+
+		Eventually(OperatorPod(ns)).ShouldNot(BeNil())
+		Eventually(OperatorImage(ns)).Should(ContainSubstring(defaults.Version))
+
+		//Test again a simple route
+		t.Run("simple route upgraded", func(t *testing.T) {
+			name := "upgradedyaml"
+			Expect(KamelRun(ns, "files/yaml.yaml", "--name", name).Execute()).To(Succeed())
+			Eventually(IntegrationPodPhase(ns, name), TestTimeoutMedium).Should(Equal(corev1.PodRunning))
+			Eventually(IntegrationLogs(ns, name), TestTimeoutShort).Should(ContainSubstring("Magicstring!"))
+		})
+
+		// Uninstall with helm
+		ExpectExecSucceed(t,
+			exec.Command(
+				"helm",
+				"uninstall",
+				"camel-k",
+				"-n",
+				ns,
+			),
+		)
+		Eventually(OperatorPod(ns)).Should(BeNil())
+
+		//  helm does not remove the CRDs
+		Eventually(CRDs()).Should(HaveLen(ExpectedCRDs))
+		ExpectExecSucceed(t,
+			exec.Command(
+				"kubectl",
+				"delete",
+				"-k",
+				"../../../config/crd/",
+				"-n",
+				ns,
+			),
+		)
+		Eventually(CRDs()).Should(HaveLen(0))
+	})
+}
diff --git a/e2e/support/test_support.go b/e2e/support/test_support.go
index 91b4228ad..61aa98a53 100644
--- a/e2e/support/test_support.go
+++ b/e2e/support/test_support.go
@@ -95,6 +95,12 @@ import (
 const kubeConfigEnvVar = "KUBECONFIG"
 const ciPID = "/tmp/ci-k8s-pid"
 
+// v1.Build,          v1.Integration
+// v1.IntegrationKit, v1.IntegrationPlatform
+// v1.Kamelet,  v1.Pipe,
+// v1alpha1.Kamelet, v1alpha1.KameletBinding
+const ExpectedCRDs = 8
+
 var TestTimeoutShort = 1 * time.Minute
 var TestTimeoutMedium = 5 * time.Minute
 var TestTimeoutLong = 15 * time.Minute