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 2024/01/17 13:57:51 UTC
(camel-k) 02/02: test(trait): Non regression test on CRD default values for Integrations
This is an automated email from the ASF dual-hosted git repository.
pcongiusti pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit 385e83957164239ee82e860f0de6c1bd352c79c0
Author: Gaelle Fournier <ga...@gmail.com>
AuthorDate: Tue Jan 16 10:07:05 2024 +0100
test(trait): Non regression test on CRD default values for Integrations
---
e2e/common/config/config_test.go | 10 ++++++++++
e2e/common/misc/kamelet_test.go | 9 +++++++++
e2e/common/traits/affinity_test.go | 21 +++++++++++++++-----
e2e/common/traits/builder_test.go | 11 ++++++++++-
e2e/common/traits/container_test.go | 9 +++++++++
e2e/common/traits/deployment_test.go | 19 ++++++++++++++----
e2e/common/traits/health_test.go | 9 +++++++++
e2e/common/traits/istio_test.go | 9 +++++++++
e2e/common/traits/jolokia_test.go | 22 +++++++++++++++++----
e2e/common/traits/jvm_test.go | 10 ++++++++++
e2e/common/traits/master_test.go | 26 ++++++++++++++++++-------
e2e/common/traits/pdb_test.go | 10 ++++++++++
e2e/common/traits/prometheus_test.go | 9 +++++++++
e2e/common/traits/pull_secret_test.go | 9 +++++++++
e2e/common/traits/route_test.go | 10 ++++++++++
e2e/common/traits/service_test.go | 10 ++++++++++
e2e/commonwithcustominstall/environment_test.go | 9 +++++++++
e2e/native/native_test.go | 11 ++++++++++-
e2e/support/test_support.go | 23 ++++++++++++++++++++++
e2e/support/test_util.go | 2 --
e2e/telemetry/telemetry_test.go | 10 ++++++++++
21 files changed, 234 insertions(+), 24 deletions(-)
diff --git a/e2e/common/config/config_test.go b/e2e/common/config/config_test.go
index 3ea3ba8f0..ab7094b13 100644
--- a/e2e/common/config/config_test.go
+++ b/e2e/common/config/config_test.go
@@ -28,6 +28,7 @@ import (
. "github.com/onsi/gomega"
corev1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
. "github.com/apache/camel-k/v2/e2e/support"
v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
@@ -120,6 +121,15 @@ func TestRunConfigExamples(t *testing.T) {
Eventually(IntegrationPodPhase(ns, "property-secret-route"), TestTimeoutLong).Should(Equal(corev1.PodRunning))
Eventually(IntegrationConditionStatus(ns, "property-secret-route", v1.IntegrationConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue))
Eventually(IntegrationLogs(ns, "property-secret-route"), TestTimeoutShort).Should(ContainSubstring("my-secret-external-value"))
+
+ // check integration schema does not contains unwanted default trait value.
+ Eventually(UnstructuredIntegration(ns, "property-secret-route")).ShouldNot(BeNil())
+ unstructuredIntegration := UnstructuredIntegration(ns, "property-secret-route")()
+ mountTrait, _, _ := unstructured.NestedMap(unstructuredIntegration.Object, "spec", "traits", "mount")
+ Expect(mountTrait).ToNot(BeNil())
+ Expect(len(mountTrait)).To(Equal(1))
+ Expect(mountTrait["configs"]).ToNot(BeNil())
+
Expect(Kamel("delete", "property-secret-route", "-n", ns).Execute()).To(Succeed())
})
diff --git a/e2e/common/misc/kamelet_test.go b/e2e/common/misc/kamelet_test.go
index 6de1b1999..66c8c3839 100644
--- a/e2e/common/misc/kamelet_test.go
+++ b/e2e/common/misc/kamelet_test.go
@@ -27,6 +27,7 @@ import (
. "github.com/onsi/gomega"
corev1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
. "github.com/apache/camel-k/v2/e2e/support"
)
@@ -119,6 +120,14 @@ spec:
"-d", "camel:timer").Execute()).To(Succeed())
Eventually(IntegrationPodPhase(ns, "timer-kamelet-integration"), TestTimeoutLong).Should(Equal(corev1.PodRunning))
Eventually(IntegrationLogs(ns, "timer-kamelet-integration")).Should(ContainSubstring("important message"))
+
+ // check integration schema does not contains unwanted default trait value.
+ Eventually(UnstructuredIntegration(ns, "timer-kamelet-integration")).ShouldNot(BeNil())
+ unstructuredIntegration := UnstructuredIntegration(ns, "timer-kamelet-integration")()
+ kameletsTrait, _, _ := unstructured.NestedMap(unstructuredIntegration.Object, "spec", "traits", "kamelets")
+ Expect(kameletsTrait).ToNot(BeNil())
+ Expect(len(kameletsTrait)).To(Equal(1))
+ Expect(kameletsTrait["enabled"]).To(Equal(false))
})
Expect(Kamel("delete", "--all", "-n", ns).Execute()).To(Succeed())
diff --git a/e2e/common/traits/affinity_test.go b/e2e/common/traits/affinity_test.go
index 19fa2ccc2..7ce8a20eb 100644
--- a/e2e/common/traits/affinity_test.go
+++ b/e2e/common/traits/affinity_test.go
@@ -30,6 +30,7 @@ import (
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
. "github.com/apache/camel-k/v2/e2e/support"
v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
@@ -48,21 +49,31 @@ func TestAffinityTrait(t *testing.T) {
if hostname != "" {
t.Run("Run Java with node affinity", func(t *testing.T) {
+ name1 := RandomizedSuffixName("java1")
Expect(KamelRunWithID(operatorID, ns, "files/Java.java",
- "--name", "java1",
+ "--name", name1,
"-t", "affinity.enabled=true",
"-t", fmt.Sprintf("affinity.node-affinity-labels=kubernetes.io/hostname in(%s)", hostname)).Execute()).To(Succeed())
- Eventually(IntegrationPodPhase(ns, "java1"), TestTimeoutLong).Should(Equal(corev1.PodRunning))
- Eventually(IntegrationConditionStatus(ns, "java1", v1.IntegrationConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue))
- Eventually(IntegrationLogs(ns, "java1"), TestTimeoutShort).Should(ContainSubstring("Magicstring!"))
+ Eventually(IntegrationPodPhase(ns, name1), TestTimeoutLong).Should(Equal(corev1.PodRunning))
+ Eventually(IntegrationConditionStatus(ns, name1, v1.IntegrationConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue))
+ Eventually(IntegrationLogs(ns, name1), TestTimeoutShort).Should(ContainSubstring("Magicstring!"))
- pod := IntegrationPod(ns, "java1")()
+ pod := IntegrationPod(ns, name1)()
Expect(pod.Spec.Affinity).NotTo(BeNil())
Expect(pod.Spec.Affinity.NodeAffinity).To(Equal(&corev1.NodeAffinity{
RequiredDuringSchedulingIgnoredDuringExecution: nodeSelector("kubernetes.io/hostname", corev1.NodeSelectorOpIn, hostname),
}))
Expect(pod.Spec.NodeName).To(Equal(hostname))
+ // check integration schema does not contains unwanted default trait value.
+ Eventually(UnstructuredIntegration(ns, name1)).ShouldNot(BeNil())
+ unstructuredIntegration := UnstructuredIntegration(ns, name1)()
+ affinityTrait, _, _ := unstructured.NestedMap(unstructuredIntegration.Object, "spec", "traits", "affinity")
+ Expect(affinityTrait).NotTo(BeNil())
+ Expect(len(affinityTrait)).To(Equal(2))
+ Expect(affinityTrait["enabled"]).To(Equal(true))
+ Expect(affinityTrait["nodeAffinityLabels"]).NotTo(BeNil())
+
Expect(Kamel("delete", "--all", "-n", ns).Execute()).To(Succeed())
})
}
diff --git a/e2e/common/traits/builder_test.go b/e2e/common/traits/builder_test.go
index a994c4ccd..5a1df5d30 100644
--- a/e2e/common/traits/builder_test.go
+++ b/e2e/common/traits/builder_test.go
@@ -30,6 +30,7 @@ import (
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
. "github.com/apache/camel-k/v2/e2e/support"
v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
@@ -66,7 +67,7 @@ func TestBuilderTrait(t *testing.T) {
})
t.Run("Run build order strategy dependencies", func(t *testing.T) {
- name := RandomizedSuffixName("java-fifo-strategy")
+ name := RandomizedSuffixName("java-dependencies-strategy")
Expect(KamelRunWithID(operatorID, ns, "files/Java.java",
"--name", name,
"-t", "builder.order-strategy=dependencies").Execute()).To(Succeed())
@@ -88,6 +89,14 @@ func TestBuilderTrait(t *testing.T) {
Eventually(BuilderPod(integrationKitNamespace, builderKitName), TestTimeoutShort).Should(BeNil())
+ // check integration schema does not contains unwanted default trait value.
+ Eventually(UnstructuredIntegration(ns, name)).ShouldNot(BeNil())
+ unstructuredIntegration := UnstructuredIntegration(ns, name)()
+ builderTrait, _, _ := unstructured.NestedMap(unstructuredIntegration.Object, "spec", "traits", "builder")
+ Expect(builderTrait).NotTo(BeNil())
+ Expect(len(builderTrait)).To(Equal(1))
+ Expect(builderTrait["orderStrategy"]).To(Equal("dependencies"))
+
// We need to remove the kit as well
Expect(Kamel("reset", "-n", ns).Execute()).To(Succeed())
})
diff --git a/e2e/common/traits/container_test.go b/e2e/common/traits/container_test.go
index b379b7913..6bd6ba4ec 100644
--- a/e2e/common/traits/container_test.go
+++ b/e2e/common/traits/container_test.go
@@ -28,6 +28,7 @@ import (
. "github.com/onsi/gomega"
corev1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
. "github.com/apache/camel-k/v2/e2e/support"
v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
@@ -93,6 +94,14 @@ func TestContainerTrait(t *testing.T) {
return podContainerName == containerName
}), TestTimeoutShort).Should(BeTrue())
+ // check integration schema does not contains unwanted default trait value.
+ Eventually(UnstructuredIntegration(ns, name)).ShouldNot(BeNil())
+ unstructuredIntegration := UnstructuredIntegration(ns, name)()
+ containerTrait, _, _ := unstructured.NestedMap(unstructuredIntegration.Object, "spec", "traits", "container")
+ Expect(containerTrait).ToNot(BeNil())
+ Expect(len(containerTrait)).To(Equal(1))
+ Expect(containerTrait["name"]).To(Equal(containerName))
+
})
// Clean-up
diff --git a/e2e/common/traits/deployment_test.go b/e2e/common/traits/deployment_test.go
index 7b9f2e5b4..08a589e5e 100644
--- a/e2e/common/traits/deployment_test.go
+++ b/e2e/common/traits/deployment_test.go
@@ -26,6 +26,7 @@ import (
"testing"
appsv1 "k8s.io/api/apps/v1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
. "github.com/onsi/gomega"
. "github.com/onsi/gomega/gstruct"
@@ -40,15 +41,17 @@ func TestRecreateDeploymentStrategyTrait(t *testing.T) {
RegisterTestingT(t)
t.Run("Run with Recreate Deployment Strategy", func(t *testing.T) {
+ name := RandomizedSuffixName("java")
Expect(KamelRunWithID(operatorID, ns, "files/Java.java",
+ "--name", name,
"-t", "deployment.strategy="+string(appsv1.RecreateDeploymentStrategyType)).
Execute()).To(Succeed())
- Eventually(IntegrationPodPhase(ns, "java"), TestTimeoutLong).Should(Equal(corev1.PodRunning))
- Eventually(IntegrationConditionStatus(ns, "java", v1.IntegrationConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue))
- Eventually(IntegrationLogs(ns, "java"), TestTimeoutShort).Should(ContainSubstring("Magicstring!"))
+ Eventually(IntegrationPodPhase(ns, name), TestTimeoutLong).Should(Equal(corev1.PodRunning))
+ Eventually(IntegrationConditionStatus(ns, name, v1.IntegrationConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue))
+ Eventually(IntegrationLogs(ns, name), TestTimeoutShort).Should(ContainSubstring("Magicstring!"))
- Eventually(Deployment(ns, "java"), TestTimeoutMedium).Should(PointTo(MatchFields(IgnoreExtras,
+ Eventually(Deployment(ns, name), TestTimeoutMedium).Should(PointTo(MatchFields(IgnoreExtras,
Fields{
"Spec": MatchFields(IgnoreExtras,
Fields{
@@ -60,6 +63,14 @@ func TestRecreateDeploymentStrategyTrait(t *testing.T) {
}),
))
+ // check integration schema does not contains unwanted default trait value.
+ Eventually(UnstructuredIntegration(ns, name)).ShouldNot(BeNil())
+ unstructuredIntegration := UnstructuredIntegration(ns, name)()
+ deploymentTrait, _, _ := unstructured.NestedMap(unstructuredIntegration.Object, "spec", "traits", "deployment")
+ Expect(deploymentTrait).ToNot(BeNil())
+ Expect(len(deploymentTrait)).To(Equal(1))
+ Expect(deploymentTrait["strategy"]).To(Equal(string(appsv1.RecreateDeploymentStrategyType)))
+
})
Expect(Kamel("delete", "--all", "-n", ns).Execute()).To(Succeed())
diff --git a/e2e/common/traits/health_test.go b/e2e/common/traits/health_test.go
index 0d4656b4d..6cbdefb36 100644
--- a/e2e/common/traits/health_test.go
+++ b/e2e/common/traits/health_test.go
@@ -36,6 +36,7 @@ import (
. "github.com/onsi/gomega"
corev1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
. "github.com/apache/camel-k/v2/e2e/support"
v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
@@ -72,6 +73,14 @@ func TestHealthTrait(t *testing.T) {
// Finally check the readiness condition becomes truthy back
Eventually(IntegrationConditionStatus(ns, name, v1.IntegrationConditionReady), TestTimeoutMedium).Should(Equal(corev1.ConditionTrue))
+ // check integration schema does not contains unwanted default trait value.
+ Eventually(UnstructuredIntegration(ns, name)).ShouldNot(BeNil())
+ unstructuredIntegration := UnstructuredIntegration(ns, name)()
+ healthTrait, _, _ := unstructured.NestedMap(unstructuredIntegration.Object, "spec", "traits", "health")
+ Expect(healthTrait).ToNot(BeNil())
+ Expect(len(healthTrait)).To(Equal(1))
+ Expect(healthTrait["enabled"]).To(Equal(true))
+
pods := IntegrationPods(ns, name)()
for i, pod := range pods {
diff --git a/e2e/common/traits/istio_test.go b/e2e/common/traits/istio_test.go
index c2fcc07b3..5d507c823 100644
--- a/e2e/common/traits/istio_test.go
+++ b/e2e/common/traits/istio_test.go
@@ -28,6 +28,7 @@ import (
. "github.com/onsi/gomega"
corev1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
. "github.com/apache/camel-k/v2/e2e/support"
v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
@@ -51,6 +52,14 @@ func TestIstioTrait(t *testing.T) {
Expect(annotations["sidecar.istio.io/inject"]).To(Equal("true"))
Expect(annotations["traffic.sidecar.istio.io/includeOutboundIPRanges"]).To(Equal("10.0.0.0/8,172.16.0.0/12,192.168.0.0/16"))
+ // check integration schema does not contains unwanted default trait value.
+ Eventually(UnstructuredIntegration(ns, name)).ShouldNot(BeNil())
+ unstructuredIntegration := UnstructuredIntegration(ns, name)()
+ istioTrait, _, _ := unstructured.NestedMap(unstructuredIntegration.Object, "spec", "traits", "istio")
+ Expect(istioTrait).ToNot(BeNil())
+ Expect(len(istioTrait)).To(Equal(1))
+ Expect(istioTrait["enabled"]).To(Equal(true))
+
})
Expect(Kamel("delete", "--all", "-n", ns).Execute()).To(Succeed())
diff --git a/e2e/common/traits/jolokia_test.go b/e2e/common/traits/jolokia_test.go
index 6145ffc3f..c06e8d53a 100644
--- a/e2e/common/traits/jolokia_test.go
+++ b/e2e/common/traits/jolokia_test.go
@@ -29,6 +29,7 @@ import (
. "github.com/onsi/gomega"
corev1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
. "github.com/apache/camel-k/v2/e2e/support"
v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
@@ -38,21 +39,34 @@ func TestJolokiaTrait(t *testing.T) {
RegisterTestingT(t)
t.Run("Run Java with Jolokia", func(t *testing.T) {
+ name := RandomizedSuffixName("java")
Expect(KamelRunWithID(operatorID, ns, "files/Java.java",
+ "--name", name,
"-t", "jolokia.enabled=true",
"-t", "jolokia.use-ssl-client-authentication=false",
"-t", "jolokia.protocol=http",
"-t", "jolokia.extended-client-check=false").Execute()).To(Succeed())
- Eventually(IntegrationPodPhase(ns, "java"), TestTimeoutLong).Should(Equal(corev1.PodRunning))
- Eventually(IntegrationConditionStatus(ns, "java", v1.IntegrationConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue))
- Eventually(IntegrationLogs(ns, "java"), TestTimeoutShort).Should(ContainSubstring("Magicstring!"))
+ Eventually(IntegrationPodPhase(ns, name), TestTimeoutLong).Should(Equal(corev1.PodRunning))
+ Eventually(IntegrationConditionStatus(ns, name, v1.IntegrationConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue))
+ Eventually(IntegrationLogs(ns, name), TestTimeoutShort).Should(ContainSubstring("Magicstring!"))
- pod := IntegrationPod(ns, "java")
+ pod := IntegrationPod(ns, name)
response, err := TestClient().CoreV1().RESTClient().Get().
AbsPath(fmt.Sprintf("/api/v1/namespaces/%s/pods/%s/proxy/jolokia/", ns, pod().Name)).DoRaw(TestContext)
Expect(err).To(BeNil())
Expect(response).To(ContainSubstring(`"status":200`))
+ // check integration schema does not contains unwanted default trait value.
+ Eventually(UnstructuredIntegration(ns, name)).ShouldNot(BeNil())
+ unstructuredIntegration := UnstructuredIntegration(ns, name)()
+ jolokiaTrait, _, _ := unstructured.NestedMap(unstructuredIntegration.Object, "spec", "traits", "jolokia")
+ Expect(jolokiaTrait).ToNot(BeNil())
+ Expect(len(jolokiaTrait)).To(Equal(4))
+ Expect(jolokiaTrait["enabled"]).To(Equal(true))
+ Expect(jolokiaTrait["useSSLClientAuthentication"]).To(Equal(false))
+ Expect(jolokiaTrait["protocol"]).To(Equal("http"))
+ Expect(jolokiaTrait["extendedClientCheck"]).To(Equal(false))
+
})
Expect(Kamel("delete", "--all", "-n", ns).Execute()).To(Succeed())
diff --git a/e2e/common/traits/jvm_test.go b/e2e/common/traits/jvm_test.go
index 3d8bde71c..395a51705 100644
--- a/e2e/common/traits/jvm_test.go
+++ b/e2e/common/traits/jvm_test.go
@@ -30,6 +30,7 @@ import (
"github.com/stretchr/testify/assert"
corev1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
. "github.com/apache/camel-k/v2/e2e/support"
v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
@@ -55,6 +56,15 @@ func TestJVMTrait(t *testing.T) {
Eventually(IntegrationPodPhase(ns, "classpath"), TestTimeoutLong).Should(Equal(corev1.PodRunning))
Eventually(IntegrationConditionStatus(ns, "classpath", v1.IntegrationConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue))
Eventually(IntegrationLogs(ns, "classpath"), TestTimeoutShort).Should(ContainSubstring("Hello World!"))
+
+ // check integration schema does not contains unwanted default trait value.
+ Eventually(UnstructuredIntegration(ns, "classpath")).ShouldNot(BeNil())
+ unstructuredIntegration := UnstructuredIntegration(ns, "classpath")()
+ jvmTrait, _, _ := unstructured.NestedMap(unstructuredIntegration.Object, "spec", "traits", "jvm")
+ Expect(jvmTrait).ToNot(BeNil())
+ Expect(len(jvmTrait)).To(Equal(1))
+ Expect(jvmTrait["classpath"]).To(Equal("/etc/camel/resources/my-deps/sample-1.0.jar"))
+
Expect(Kamel("delete", "--all", "-n", ns).Execute()).To(Succeed())
})
}
diff --git a/e2e/common/traits/master_test.go b/e2e/common/traits/master_test.go
index fd53aa014..111760b02 100644
--- a/e2e/common/traits/master_test.go
+++ b/e2e/common/traits/master_test.go
@@ -29,6 +29,7 @@ import (
. "github.com/onsi/gomega"
corev1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
. "github.com/apache/camel-k/v2/e2e/support"
)
@@ -44,25 +45,36 @@ func TestMasterTrait(t *testing.T) {
})
t.Run("only one integration with master runs", func(t *testing.T) {
+ nameFirst := RandomizedSuffixName("first")
Expect(KamelRunWithID(operatorID, ns, "files/Master.java",
- "--name", "first",
+ "--name", nameFirst,
"--label", "leader-group=same",
"-t", "master.label-key=leader-group",
"-t", "master.label-value=same",
"-t", "owner.target-labels=leader-group").Execute()).To(Succeed())
- Eventually(IntegrationPodPhase(ns, "first"), TestTimeoutLong).Should(Equal(corev1.PodRunning))
- Eventually(IntegrationLogs(ns, "first"), TestTimeoutShort).Should(ContainSubstring("Magicstring!"))
+ Eventually(IntegrationPodPhase(ns, nameFirst), TestTimeoutLong).Should(Equal(corev1.PodRunning))
+ Eventually(IntegrationLogs(ns, nameFirst), TestTimeoutShort).Should(ContainSubstring("Magicstring!"))
// Start a second integration with the same lock (it should not start the route)
+ nameSecond := RandomizedSuffixName("second")
Expect(KamelRunWithID(operatorID, ns, "files/Master.java",
- "--name", "second",
+ "--name", nameSecond,
"--label", "leader-group=same",
"-t", "master.label-key=leader-group",
"-t", "master.label-value=same",
"-t", "master.resource-name=first-lock",
"-t", "owner.target-labels=leader-group").Execute()).To(Succeed())
- Eventually(IntegrationPodPhase(ns, "second"), TestTimeoutLong).Should(Equal(corev1.PodRunning))
- Eventually(IntegrationLogs(ns, "second"), TestTimeoutShort).Should(ContainSubstring("started in"))
- Eventually(IntegrationLogs(ns, "second"), 30*time.Second).ShouldNot(ContainSubstring("Magicstring!"))
+ Eventually(IntegrationPodPhase(ns, nameSecond), TestTimeoutLong).Should(Equal(corev1.PodRunning))
+ Eventually(IntegrationLogs(ns, nameSecond), TestTimeoutShort).Should(ContainSubstring("started in"))
+ Eventually(IntegrationLogs(ns, nameSecond), 30*time.Second).ShouldNot(ContainSubstring("Magicstring!"))
+
+ // check integration schema does not contains unwanted default trait value.
+ Eventually(UnstructuredIntegration(ns, nameFirst)).ShouldNot(BeNil())
+ unstructuredIntegration := UnstructuredIntegration(ns, nameFirst)()
+ builderTrait, _, _ := unstructured.NestedMap(unstructuredIntegration.Object, "spec", "traits", "addons", "master")
+ Expect(builderTrait).ToNot(BeNil())
+ Expect(len(builderTrait)).To(Equal(2))
+ Expect(builderTrait["labelKey"]).To(Equal("leader-group"))
+ Expect(builderTrait["labelValue"]).To(Equal("same"))
})
Expect(Kamel("delete", "--all", "-n", ns).Execute()).To(Succeed())
diff --git a/e2e/common/traits/pdb_test.go b/e2e/common/traits/pdb_test.go
index cc3b038c8..7c43e1ff7 100644
--- a/e2e/common/traits/pdb_test.go
+++ b/e2e/common/traits/pdb_test.go
@@ -33,6 +33,7 @@ import (
policyv1 "k8s.io/api/policy/v1"
k8serrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/util/intstr"
ctrl "sigs.k8s.io/controller-runtime/pkg/client"
@@ -55,6 +56,15 @@ func TestPodDisruptionBudgetTrait(t *testing.T) {
Eventually(IntegrationConditionStatus(ns, name, v1.IntegrationConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue))
Eventually(IntegrationLogs(ns, name), TestTimeoutShort).Should(ContainSubstring("Magicstring!"))
+ // check integration schema does not contains unwanted default trait value.
+ Eventually(UnstructuredIntegration(ns, name)).ShouldNot(BeNil())
+ unstructuredIntegration := UnstructuredIntegration(ns, name)()
+ pdbTrait, _, _ := unstructured.NestedMap(unstructuredIntegration.Object, "spec", "traits", "pdb")
+ Expect(pdbTrait).ToNot(BeNil())
+ Expect(len(pdbTrait)).To(Equal(2))
+ Expect(pdbTrait["enabled"]).To(Equal(true))
+ Expect(pdbTrait["minAvailable"]).To(Equal("2"))
+
// Check PodDisruptionBudget
Eventually(podDisruptionBudget(ns, name), TestTimeoutShort).ShouldNot(BeNil())
pdb := podDisruptionBudget(ns, name)()
diff --git a/e2e/common/traits/prometheus_test.go b/e2e/common/traits/prometheus_test.go
index 7a63772c7..1a40ddab7 100644
--- a/e2e/common/traits/prometheus_test.go
+++ b/e2e/common/traits/prometheus_test.go
@@ -31,6 +31,7 @@ import (
corev1 "k8s.io/api/core/v1"
k8serrors "k8s.io/apimachinery/pkg/api/errors"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
ctrl "sigs.k8s.io/controller-runtime/pkg/client"
@@ -55,6 +56,14 @@ func TestPrometheusTrait(t *testing.T) {
Eventually(IntegrationConditionStatus(ns, "java", v1.IntegrationConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue))
Eventually(IntegrationLogs(ns, "java"), TestTimeoutShort).Should(ContainSubstring("Magicstring!"))
+ // check integration schema does not contains unwanted default trait value.
+ Eventually(UnstructuredIntegration(ns, "java")).ShouldNot(BeNil())
+ unstructuredIntegration := UnstructuredIntegration(ns, "java")()
+ prometheusTrait, _, _ := unstructured.NestedMap(unstructuredIntegration.Object, "spec", "traits", "prometheus")
+ Expect(prometheusTrait).ToNot(BeNil())
+ Expect(len(prometheusTrait)).To(Equal(2))
+ Expect(prometheusTrait["enabled"]).To(Equal(true))
+ Expect(prometheusTrait["podMonitor"]).ToNot(BeNil())
t.Run("Metrics endpoint works", func(t *testing.T) {
pod := IntegrationPod(ns, "java")
response, err := TestClient().CoreV1().RESTClient().Get().
diff --git a/e2e/common/traits/pull_secret_test.go b/e2e/common/traits/pull_secret_test.go
index eab6d7c83..ade72f144 100644
--- a/e2e/common/traits/pull_secret_test.go
+++ b/e2e/common/traits/pull_secret_test.go
@@ -28,6 +28,7 @@ import (
. "github.com/onsi/gomega"
corev1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
. "github.com/apache/camel-k/v2/e2e/support"
v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
@@ -61,6 +62,14 @@ func TestPullSecretTrait(t *testing.T) {
Eventually(IntegrationConditionStatus(ns, name, v1.IntegrationConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue))
Eventually(IntegrationLogs(ns, name), TestTimeoutShort).Should(ContainSubstring("Magicstring!"))
+ // check integration schema does not contains unwanted default trait value.
+ Eventually(UnstructuredIntegration(ns, name)).ShouldNot(BeNil())
+ unstructuredIntegration := UnstructuredIntegration(ns, name)()
+ pullSecretTrait, _, _ := unstructured.NestedMap(unstructuredIntegration.Object, "spec", "traits", "pull-secret")
+ Expect(pullSecretTrait).ToNot(BeNil())
+ Expect(len(pullSecretTrait)).To(Equal(1))
+ Expect(pullSecretTrait["enabled"]).To(Equal(false))
+
pod := IntegrationPod(ns, name)()
if ocp {
// OpenShift `default` service account has imagePullSecrets so it's always set
diff --git a/e2e/common/traits/route_test.go b/e2e/common/traits/route_test.go
index ee90e16ac..a06b03bbb 100644
--- a/e2e/common/traits/route_test.go
+++ b/e2e/common/traits/route_test.go
@@ -41,6 +41,7 @@ import (
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
. "github.com/apache/camel-k/v2/e2e/support"
"github.com/apache/camel-k/v2/pkg/util"
@@ -211,6 +212,15 @@ func TestRunRoutes(t *testing.T) {
time.Sleep(waitBeforeHttpRequest)
var annotations = route.ObjectMeta.Annotations
Expect(annotations["haproxy.router.openshift.io/balance"]).To(Equal("roundrobin"))
+
+ // check integration schema does not contains unwanted default trait value.
+ Eventually(UnstructuredIntegration(ns, integrationName)).ShouldNot(BeNil())
+ unstructuredIntegration := UnstructuredIntegration(ns, integrationName)()
+ routeTrait, _, _ := unstructured.NestedMap(unstructuredIntegration.Object, "spec", "traits", "route")
+ Expect(routeTrait).ToNot(BeNil())
+ Expect(len(routeTrait)).To(Equal(1))
+ Expect(routeTrait["enabled"]).To(Equal(true))
+
Expect(Kamel("delete", "--all", "-n", ns).Execute()).Should(BeNil())
})
Expect(TestClient().Delete(TestContext, &secret)).To(Succeed())
diff --git a/e2e/common/traits/service_test.go b/e2e/common/traits/service_test.go
index 401eeb842..8b5e5f168 100644
--- a/e2e/common/traits/service_test.go
+++ b/e2e/common/traits/service_test.go
@@ -28,6 +28,7 @@ import (
. "github.com/onsi/gomega"
corev1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
. "github.com/apache/camel-k/v2/e2e/support"
)
@@ -91,6 +92,15 @@ func TestServiceTrait(t *testing.T) {
//
Eventually(ServicesByType(ns, corev1.ServiceTypeClusterIP), TestTimeoutLong).ShouldNot(BeEmpty())
+ // check integration schema does not contains unwanted default trait value.
+ Eventually(UnstructuredIntegration(ns, "platform-http-server")).ShouldNot(BeNil())
+ unstructuredIntegration := UnstructuredIntegration(ns, "platform-http-server")()
+ serviceTrait, _, _ := unstructured.NestedMap(unstructuredIntegration.Object, "spec", "traits", "service")
+ Expect(serviceTrait).ToNot(BeNil())
+ Expect(len(serviceTrait)).To(Equal(2))
+ Expect(serviceTrait["enabled"]).To(Equal(true))
+ Expect(serviceTrait["type"]).To(Equal("ClusterIP"))
+
Expect(Kamel("delete", "--all", "-n", ns).Execute()).To(Succeed())
})
diff --git a/e2e/commonwithcustominstall/environment_test.go b/e2e/commonwithcustominstall/environment_test.go
index 469ecbc36..3b8f13c5d 100644
--- a/e2e/commonwithcustominstall/environment_test.go
+++ b/e2e/commonwithcustominstall/environment_test.go
@@ -31,6 +31,7 @@ import (
. "github.com/onsi/gomega"
corev1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
. "github.com/apache/camel-k/v2/e2e/support"
v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
@@ -151,6 +152,14 @@ func TestEnvironmentTrait(t *testing.T) {
Not(ContainElement(corev1.EnvVar{Name: "HTTP_PROXY", Value: httpProxy})),
Not(ContainElement(corev1.EnvVar{Name: "NO_PROXY", Value: strings.Join(noProxy, ",")})),
)))
+
+ // check integration schema does not contains unwanted default trait value.
+ Eventually(UnstructuredIntegration(ns, name)).ShouldNot(BeNil())
+ unstructuredIntegration := UnstructuredIntegration(ns, name)()
+ envTrait, _, _ := unstructured.NestedMap(unstructuredIntegration.Object, "spec", "traits", "environment")
+ Expect(envTrait).ToNot(BeNil())
+ Expect(len(envTrait)).To(Equal(1))
+ Expect(envTrait["httpProxy"]).To(Equal(false))
})
Expect(Kamel("delete", "--all", "-n", ns).Execute()).To(Succeed())
diff --git a/e2e/native/native_test.go b/e2e/native/native_test.go
index 88b5916df..b4d0cc8b6 100644
--- a/e2e/native/native_test.go
+++ b/e2e/native/native_test.go
@@ -28,6 +28,7 @@ import (
. "github.com/onsi/gomega"
corev1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
. "github.com/apache/camel-k/v2/e2e/support"
v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
@@ -53,7 +54,15 @@ func TestNativeIntegrations(t *testing.T) {
Eventually(IntegrationConditionStatus(ns, name, v1.IntegrationConditionKitAvailable)).
Should(Equal(corev1.ConditionFalse))
- // Clean up
+ // check integration schema does not contains unwanted default trait value.
+ Eventually(UnstructuredIntegration(ns, name)).ShouldNot(BeNil())
+ unstructuredIntegration := UnstructuredIntegration(ns, name)()
+ quarkusTrait, _, _ := unstructured.NestedMap(unstructuredIntegration.Object, "spec", "traits", "quarkus")
+ Expect(quarkusTrait).ToNot(BeNil())
+ Expect(len(quarkusTrait)).To(Equal(1))
+ Expect(quarkusTrait["buildMode"]).ToNot(BeNil())
+
+ // Clean up
Expect(Kamel("delete", name, "-n", ns).Execute()).To(Succeed())
})
diff --git a/e2e/support/test_support.go b/e2e/support/test_support.go
index 2743b050c..3e2faf2c7 100644
--- a/e2e/support/test_support.go
+++ b/e2e/support/test_support.go
@@ -54,6 +54,7 @@ import (
rbacv1 "k8s.io/api/rbac/v1"
k8serrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/serializer"
@@ -1020,6 +1021,28 @@ func Integration(ns string, name string) func() *v1.Integration {
}
}
+func UnstructuredIntegration(ns string, name string) func() *unstructured.Unstructured {
+ return func() *unstructured.Unstructured {
+ gvk := schema.GroupVersionKind{Group: v1.SchemeGroupVersion.Group, Version: v1.SchemeGroupVersion.Version, Kind: v1.IntegrationKind}
+ return UnstructuredObject(ns, name, gvk)()
+ }
+}
+
+func UnstructuredObject(ns string, name string, gvk schema.GroupVersionKind) func() *unstructured.Unstructured {
+ return func() *unstructured.Unstructured {
+ object := &unstructured.Unstructured{}
+ object.SetNamespace(ns)
+ object.SetName(name)
+ object.SetGroupVersionKind(gvk)
+ if err := TestClient().Get(TestContext, ctrl.ObjectKeyFromObject(object), object); err != nil && !k8serrors.IsNotFound(err) {
+ failTest(err)
+ } else if err != nil && k8serrors.IsNotFound(err) {
+ return nil
+ }
+ return object
+ }
+}
+
func IntegrationVersion(ns string, name string) func() string {
return func() string {
it := Integration(ns, name)()
diff --git a/e2e/support/test_util.go b/e2e/support/test_util.go
index 88842a85d..61fbc3f2f 100644
--- a/e2e/support/test_util.go
+++ b/e2e/support/test_util.go
@@ -76,9 +76,7 @@ func ExpectExecSucceed(t *testing.T, command *exec.Cmd) {
assert.NotContains(t, strings.ToUpper(cmdErr.String()), "ERROR")
}
-//
// Expect a command error with an exit code of 1
-//
func ExpectExecError(t *testing.T, command *exec.Cmd) {
t.Helper()
diff --git a/e2e/telemetry/telemetry_test.go b/e2e/telemetry/telemetry_test.go
index 0d772e7bc..b32730092 100644
--- a/e2e/telemetry/telemetry_test.go
+++ b/e2e/telemetry/telemetry_test.go
@@ -29,6 +29,7 @@ import (
. "github.com/onsi/gomega"
corev1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
. "github.com/apache/camel-k/v2/e2e/support"
)
@@ -67,6 +68,15 @@ func TestTelemetryTrait(t *testing.T) {
Eventually(TailedLogs(pod.Namespace, pod.Name, 100), TestTimeoutLong).Should(ContainSubstring(fmt.Sprintf("http.target: Str(/customers/%s)", name)))
Eventually(TailedLogs(pod.Namespace, pod.Name, 100), TestTimeoutLong).Should(ContainSubstring(fmt.Sprintf("http.url: Str(http://rest-consumer/customers/%s)", name)))
+ // check integration schema does not contains unwanted default trait value.
+ Eventually(UnstructuredIntegration(ns, "rest-consumer")).ShouldNot(BeNil())
+ unstructuredIntegration := UnstructuredIntegration(ns, "rest-consumer")()
+ builderTrait, _, _ := unstructured.NestedMap(unstructuredIntegration.Object, "spec", "traits", "addons", "telemetry")
+ Expect(builderTrait).NotTo(BeNil())
+ Expect(len(builderTrait)).To(Equal(2))
+ Expect(builderTrait["enabled"]).To(Equal(true))
+ Expect(builderTrait["endpoint"]).To(Equal("http://opentelemetrycollector.otlp.svc.cluster.local:4317"))
+
// Clean up
Expect(Kamel("delete", "--all", "-n", ns).Execute()).To(Succeed())
})