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 <gaelle.fournier.w...@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

Reply via email to