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

Reply via email to