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