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())
 	})