You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by pc...@apache.org on 2023/07/27 13:54:58 UTC
[camel-k] branch main updated: chore(e2e): Test on kamelets configurations
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
The following commit(s) were added to refs/heads/main by this push:
new eabcee3e1 chore(e2e): Test on kamelets configurations
eabcee3e1 is described below
commit eabcee3e1295104811aabe6def665cf9620a37bb
Author: Gaelle Fournier <ga...@gmail.com>
AuthorDate: Thu Jul 20 16:21:11 2023 +0200
chore(e2e): Test on kamelets configurations
* Test of Integrations using kamelets and properties/secrets
* Test of Pipes using kamelets and properties/secrets
---
.../TimerKameletIntegrationConfiguration.java | 28 +++
.../TimerKameletIntegrationNamedConfiguration.java | 28 +++
...-kamelet-integration-inlined-configuration.yaml | 23 +++
...melet-integration-parameters-configuration.yaml | 27 +++
e2e/common/config/kamelet_config_test.go | 206 +++++++++++++++++++++
e2e/common/config/pipe_config_test.go | 159 ++++++++++++++++
e2e/support/test_support.go | 43 +++++
7 files changed, 514 insertions(+)
diff --git a/e2e/common/config/files/TimerKameletIntegrationConfiguration.java b/e2e/common/config/files/TimerKameletIntegrationConfiguration.java
new file mode 100644
index 000000000..bed864771
--- /dev/null
+++ b/e2e/common/config/files/TimerKameletIntegrationConfiguration.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.lang.Exception;
+import java.lang.Override;
+import org.apache.camel.builder.RouteBuilder;
+
+public class TimerKameletIntegrationConfiguration extends RouteBuilder {
+ @Override
+ public void configure() throws Exception {
+ from("kamelet:my-own-timer-source")
+ .to("log:info");
+ }
+}
diff --git a/e2e/common/config/files/TimerKameletIntegrationNamedConfiguration.java b/e2e/common/config/files/TimerKameletIntegrationNamedConfiguration.java
new file mode 100644
index 000000000..614933827
--- /dev/null
+++ b/e2e/common/config/files/TimerKameletIntegrationNamedConfiguration.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.lang.Exception;
+import java.lang.Override;
+import org.apache.camel.builder.RouteBuilder;
+
+public class TimerKameletIntegrationNamedConfiguration extends RouteBuilder {
+ @Override
+ public void configure() throws Exception {
+ from("kamelet:my-own-timer-source/mynamedconfig")
+ .to("log:info");
+ }
+}
diff --git a/e2e/common/config/files/timer-kamelet-integration-inlined-configuration.yaml b/e2e/common/config/files/timer-kamelet-integration-inlined-configuration.yaml
new file mode 100644
index 000000000..d978a0b9e
--- /dev/null
+++ b/e2e/common/config/files/timer-kamelet-integration-inlined-configuration.yaml
@@ -0,0 +1,23 @@
+# ---------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ---------------------------------------------------------------------------
+
+- route:
+ from:
+ uri: "kamelet:my-own-timer-source?message=important%20message"
+ steps:
+ - to:
+ uri: "kamelet:my-own-log-sink?loggerName=integrationLogger"
\ No newline at end of file
diff --git a/e2e/common/config/files/timer-kamelet-integration-parameters-configuration.yaml b/e2e/common/config/files/timer-kamelet-integration-parameters-configuration.yaml
new file mode 100644
index 000000000..4926ec914
--- /dev/null
+++ b/e2e/common/config/files/timer-kamelet-integration-parameters-configuration.yaml
@@ -0,0 +1,27 @@
+# ---------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ---------------------------------------------------------------------------
+
+- route:
+ from:
+ uri: "kamelet:my-own-timer-source"
+ parameters:
+ message: "{{my-message}}"
+ steps:
+ - to:
+ uri: "kamelet:my-own-log-sink"
+ parameters:
+ loggerName: "{{my-logger}}"
\ No newline at end of file
diff --git a/e2e/common/config/kamelet_config_test.go b/e2e/common/config/kamelet_config_test.go
new file mode 100644
index 000000000..fe98cb827
--- /dev/null
+++ b/e2e/common/config/kamelet_config_test.go
@@ -0,0 +1,206 @@
+//go:build integration
+// +build integration
+
+// To enable compilation of this file in Goland, go to "Settings -> Go -> Vendoring & Build Tags -> Custom Tags" and add "integration"
+
+/*
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package config
+
+import (
+ "testing"
+
+ . "github.com/onsi/gomega"
+ corev1 "k8s.io/api/core/v1"
+
+ . "github.com/apache/camel-k/v2/e2e/support"
+)
+
+// Tests on integration with kamelets containing configuration from properties and secrets
+// without having to change the integration code.
+func TestKameletImplicitConfig(t *testing.T) {
+ RegisterTestingT(t)
+ t.Run("test custom timer source", func(t *testing.T) {
+ Expect(CreateTimerKamelet(ns, "my-own-timer-source")()).To(Succeed())
+
+ t.Run("run test default config using properties", func(t *testing.T) {
+ name := "my-own-timer-source-config-properties"
+
+ Expect(KamelRunWithID(operatorID, ns, "files/TimerKameletIntegrationConfiguration.java",
+ "-p", "camel.kamelet.my-own-timer-source.message='My Default message'",
+ "--name", name).Execute()).To(Succeed())
+ Eventually(IntegrationPodPhase(ns, name), TestTimeoutLong).Should(Equal(corev1.PodRunning))
+ Eventually(IntegrationLogs(ns, name)).Should(ContainSubstring("My Default message"))
+
+ Expect(Kamel("delete", name, "-n", ns).Execute()).To(Succeed())
+ })
+
+ t.Run("run test default config using labeled secret", func(t *testing.T) {
+ name := "my-own-timer-source-default-config-secrets"
+ secretName := "my-own-timer-source-default"
+
+ var secData = make(map[string]string)
+ secData["camel.kamelet.my-own-timer-source.message"] = "very top secret message"
+ var labels = make(map[string]string)
+ labels["camel.apache.org/kamelet"] = "my-own-timer-source"
+ Expect(CreatePlainTextSecretWithLabels(ns, secretName, secData, labels)).To(Succeed())
+
+ Expect(KamelRunWithID(operatorID, ns, "files/TimerKameletIntegrationConfiguration.java",
+ "-p", "camel.kamelet.my-own-timer-source.message='Default message'",
+ "--name", name).Execute()).To(Succeed())
+ Eventually(IntegrationPodPhase(ns, name), TestTimeoutLong).Should(Equal(corev1.PodRunning))
+ Eventually(IntegrationLogs(ns, name)).Should(ContainSubstring("very top secret message"))
+
+ Expect(Kamel("delete", name, "-n", ns).Execute()).To(Succeed())
+ Expect(DeleteSecret(ns, secretName)).To(Succeed())
+ })
+
+ t.Run("run test default config using mounted secret", func(t *testing.T) {
+ name := "my-own-timer-source-default-config-mounted-secrets"
+ secretName := "my-mounted-default-secret"
+
+ var secData = make(map[string]string)
+ secData["camel.kamelet.my-own-timer-source.message"] = "very top mounted secret message"
+ Expect(CreatePlainTextSecret(ns, secretName, secData)).To(Succeed())
+
+ Expect(KamelRunWithID(operatorID, ns, "files/TimerKameletIntegrationConfiguration.java",
+ "-p", "camel.kamelet.my-own-timer-source.message='Default message'",
+ "-t", "mount.configs=secret:"+secretName,
+ "--name", name).Execute()).To(Succeed())
+ Eventually(IntegrationPodPhase(ns, name), TestTimeoutLong).Should(Equal(corev1.PodRunning))
+ Eventually(IntegrationLogs(ns, name)).Should(ContainSubstring("very top mounted secret message"))
+
+ Expect(Kamel("delete", name, "-n", ns).Execute()).To(Succeed())
+ Expect(DeleteSecret(ns, secretName)).To(Succeed())
+ })
+
+ t.Run("run test named config using properties", func(t *testing.T) {
+ name := "my-own-timer-source-config-properties"
+ Expect(KamelRunWithID(operatorID, ns, "files/TimerKameletIntegrationNamedConfiguration.java",
+ "-p", "camel.kamelet.my-own-timer-source.message='Default message'",
+ "-p", "camel.kamelet.my-own-timer-source.mynamedconfig.message='My Named Config message'",
+ "--name", name).Execute()).To(Succeed())
+ Eventually(IntegrationPodPhase(ns, name), TestTimeoutLong).Should(Equal(corev1.PodRunning))
+ Eventually(IntegrationLogs(ns, name)).Should(ContainSubstring("My Named Config message"))
+ Expect(Kamel("delete", name, "-n", ns).Execute()).To(Succeed())
+ })
+
+ t.Run("run test named config using labeled secrets", func(t *testing.T) {
+ name := "my-own-timer-source-implicit-config-secrets"
+ secretName := "my-own-timer-source-mynamedconfig"
+
+ var secData = make(map[string]string)
+ secData["camel.kamelet.my-own-timer-source.mynamedconfig.message"] = "very top named secret message"
+ var labels = make(map[string]string)
+ labels["camel.apache.org/kamelet"] = "my-own-timer-source"
+ labels["camel.apache.org/kamelet.configuration"] = "mynamedconfig"
+ Expect(CreatePlainTextSecretWithLabels(ns, secretName, secData, labels)).To(Succeed())
+
+ Expect(KamelRunWithID(operatorID, ns, "files/TimerKameletIntegrationNamedConfiguration.java",
+ "-p", "camel.kamelet.my-own-timer-source.message='Default message'",
+ "--name", name).Execute()).To(Succeed())
+ Eventually(IntegrationPodPhase(ns, name), TestTimeoutLong).Should(Equal(corev1.PodRunning))
+ Eventually(IntegrationLogs(ns, name)).Should(ContainSubstring("very top named secret message"))
+
+ Expect(Kamel("delete", name, "-n", ns).Execute()).To(Succeed())
+ Expect(DeleteSecret(ns, secretName)).To(Succeed())
+ })
+
+ t.Run("run test named config using mounted secrets", func(t *testing.T) {
+ name := "my-own-timer-source-named-config-mounted-secrets"
+ secretName := "my-mounted-named-secret"
+
+ var secData = make(map[string]string)
+ secData["camel.kamelet.my-own-timer-source.mynamedconfig.message"] = "very top named mounted secret message"
+ Expect(CreatePlainTextSecret(ns, secretName, secData)).To(Succeed())
+
+ Expect(KamelRunWithID(operatorID, ns, "files/TimerKameletIntegrationNamedConfiguration.java",
+ "-p", "camel.kamelet.my-own-timer-source.message='Default message'",
+ "-t", "mount.configs=secret:"+secretName,
+ "--name", name).Execute()).To(Succeed())
+ Eventually(IntegrationPodPhase(ns, name), TestTimeoutLong).Should(Equal(corev1.PodRunning))
+ Eventually(IntegrationLogs(ns, name)).Should(ContainSubstring("very top named mounted secret message"))
+
+ Expect(Kamel("delete", name, "-n", ns).Execute()).To(Succeed())
+ Expect(DeleteSecret(ns, secretName)).To(Succeed())
+ })
+
+ })
+
+ Expect(Kamel("delete", "--all", "-n", ns).Execute()).To(Succeed())
+ Expect(DeleteKamelet(ns, "my-own-timer-source")).To(Succeed())
+}
+
+// Tests on integration with kamelets containing configuration from properties and secrets with parameters inside the integration.
+func TestKameletConfig(t *testing.T) {
+ RegisterTestingT(t)
+ t.Run("test custom timer source", func(t *testing.T) {
+ Expect(CreateTimerKamelet(ns, "my-own-timer-source")()).To(Succeed())
+ Expect(CreateLogKamelet(ns, "my-own-log-sink")()).To(Succeed())
+ t.Run("run test default config inlined properties", func(t *testing.T) {
+ name := "my-own-timer-source-inline-properties"
+
+ Expect(KamelRunWithID(operatorID, ns, "files/timer-kamelet-integration-inlined-configuration.yaml",
+ "--name", name).Execute()).To(Succeed())
+ Eventually(IntegrationPodPhase(ns, name), TestTimeoutLong).Should(Equal(corev1.PodRunning))
+ Eventually(IntegrationLogs(ns, name)).Should(ContainSubstring("important message"))
+ Eventually(IntegrationLogs(ns, name)).Should(ContainSubstring("integrationLogger"))
+
+ Expect(Kamel("delete", name, "-n", ns).Execute()).To(Succeed())
+ })
+
+ t.Run("run test default config parameters properties", func(t *testing.T) {
+ name := "my-own-timer-source-parameters-properties"
+
+ Expect(KamelRunWithID(operatorID, ns, "files/timer-kamelet-integration-parameters-configuration.yaml",
+ "-p", "my-message='My parameter message'",
+ "-p", "my-logger='myIntegrationLogger'",
+ "--name", name).Execute()).To(Succeed())
+ Eventually(IntegrationPodPhase(ns, name), TestTimeoutLong).Should(Equal(corev1.PodRunning))
+ Eventually(IntegrationLogs(ns, name)).Should(ContainSubstring("My parameter message"))
+ Eventually(IntegrationLogs(ns, name)).Should(ContainSubstring("myIntegrationLogger"))
+
+ Expect(Kamel("delete", name, "-n", ns).Execute()).To(Succeed())
+ })
+
+ t.Run("run test default config secrer properties", func(t *testing.T) {
+ name := "my-own-timer-source-secret-properties"
+ secretName := "my-mounted-secret-properties"
+
+ var secData = make(map[string]string)
+ secData["my-message"] = "My secret message"
+ secData["my-logger"] = "mySecretIntegrationLogger"
+ Expect(CreatePlainTextSecret(ns, secretName, secData)).To(Succeed())
+
+ Expect(KamelRunWithID(operatorID, ns, "files/timer-kamelet-integration-parameters-configuration.yaml",
+ "-t", "mount.configs=secret:"+secretName,
+ "--name", name).Execute()).To(Succeed())
+ Eventually(IntegrationPodPhase(ns, name), TestTimeoutLong).Should(Equal(corev1.PodRunning))
+ Eventually(IntegrationLogs(ns, name)).Should(ContainSubstring("My secret message"))
+ Eventually(IntegrationLogs(ns, name)).Should(ContainSubstring("mySecretIntegrationLogger"))
+
+ Expect(Kamel("delete", name, "-n", ns).Execute()).To(Succeed())
+ Expect(DeleteSecret(ns, secretName)).To(Succeed())
+ })
+
+ })
+
+ Expect(Kamel("delete", "--all", "-n", ns).Execute()).To(Succeed())
+ Expect(DeleteKamelet(ns, "my-own-timer-source")).To(Succeed())
+ Expect(DeleteKamelet(ns, "my-own-log-sink")).To(Succeed())
+}
diff --git a/e2e/common/config/pipe_config_test.go b/e2e/common/config/pipe_config_test.go
new file mode 100644
index 000000000..920f27885
--- /dev/null
+++ b/e2e/common/config/pipe_config_test.go
@@ -0,0 +1,159 @@
+//go:build integration
+// +build integration
+
+// To enable compilation of this file in Goland, go to "Settings -> Go -> Vendoring & Build Tags -> Custom Tags" and add "integration"
+
+/*
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package config
+
+import (
+ "testing"
+
+ . "github.com/onsi/gomega"
+ corev1 "k8s.io/api/core/v1"
+
+ . "github.com/apache/camel-k/v2/e2e/support"
+)
+
+// Tests on pipe with kamelets containing configuration from properties and secrets.
+func TestPipeConfig(t *testing.T) {
+ RegisterTestingT(t)
+ t.Run("test custom source/sink pipe", func(t *testing.T) {
+ Expect(CreateTimerKamelet(ns, "my-pipe-timer-source")()).To(Succeed())
+ Expect(CreateLogKamelet(ns, "my-pipe-log-sink")()).To(Succeed())
+ t.Run("run test default config using properties", func(t *testing.T) {
+ name := "my-pipe-with-properties"
+
+ Expect(KamelBindWithID(operatorID, ns,
+ "my-pipe-timer-source",
+ "my-pipe-log-sink",
+ "-p", "source.message=My pipe message",
+ "-p", "sink.loggerName=myPipeLogger",
+ "--name", name,
+ ).Execute()).To(Succeed())
+ Eventually(IntegrationPodPhase(ns, name), TestTimeoutLong).Should(Equal(corev1.PodRunning))
+ Eventually(IntegrationLogs(ns, name)).Should(ContainSubstring("My pipe message"))
+ Eventually(IntegrationLogs(ns, name)).Should(ContainSubstring("myPipeLogger"))
+
+ Expect(Kamel("delete", name, "-n", ns).Execute()).To(Succeed())
+ })
+
+ t.Run("run test implicit default config using labeled secret", func(t *testing.T) {
+ name := "my-pipe-with-default-implicit-secret"
+ secretName := "my-pipe-default-implicit-secret"
+
+ var secData = make(map[string]string)
+ secData["camel.kamelet.my-pipe-timer-source.message"] = "My pipe secret message"
+ var labels = make(map[string]string)
+ labels["camel.apache.org/kamelet"] = "my-pipe-timer-source"
+ Expect(CreatePlainTextSecretWithLabels(ns, secretName, secData, labels)).To(Succeed())
+
+ Expect(KamelBindWithID(operatorID, ns,
+ "my-pipe-timer-source",
+ "my-pipe-log-sink",
+ "-p", "sink.loggerName=myDefaultLogger",
+ "--name", name,
+ ).Execute()).To(Succeed())
+ Eventually(IntegrationPodPhase(ns, name), TestTimeoutLong).Should(Equal(corev1.PodRunning))
+ Eventually(IntegrationLogs(ns, name)).Should(ContainSubstring("My pipe secret message"))
+ Eventually(IntegrationLogs(ns, name)).Should(ContainSubstring("myDefaultLogger"))
+
+ Expect(Kamel("delete", name, "-n", ns).Execute()).To(Succeed())
+ Expect(DeleteSecret(ns, secretName)).To(Succeed())
+ })
+
+ t.Run("run test implicit default config using mounted secret", func(t *testing.T) {
+ name := "my-pipe-with-default-implicit-secret"
+ secretName := "my-pipe-default-implicit-secret"
+
+ var secData = make(map[string]string)
+ secData["camel.kamelet.my-pipe-timer-source.message"] = "My pipe secret message"
+ secData["camel.kamelet.my-pipe-log-sink.loggerName"] = "myPipeSecretLogger"
+ Expect(CreatePlainTextSecret(ns, secretName, secData)).To(Succeed())
+
+ Expect(KamelBindWithID(operatorID, ns,
+ "my-pipe-timer-source",
+ "my-pipe-log-sink",
+ "-t", "mount.configs=secret:"+secretName,
+ "--name", name,
+ ).Execute()).To(Succeed())
+ Eventually(IntegrationPodPhase(ns, name), TestTimeoutLong).Should(Equal(corev1.PodRunning))
+ Eventually(IntegrationLogs(ns, name)).Should(ContainSubstring("My pipe secret message"))
+ Eventually(IntegrationLogs(ns, name)).Should(ContainSubstring("myPipeSecretLogger"))
+
+ Expect(Kamel("delete", name, "-n", ns).Execute()).To(Succeed())
+ Expect(DeleteSecret(ns, secretName)).To(Succeed())
+ })
+
+ t.Run("run test implicit named config using mounted secret", func(t *testing.T) {
+ name := "my-pipe-with-named-implicit-secret"
+ secretName := "my-pipe-named-implicit-secret"
+
+ var secData = make(map[string]string)
+ secData["camel.kamelet.my-pipe-timer-source.mynamedconfig.message"] = "My pipe named secret message"
+ secData["camel.kamelet.my-pipe-log-sink.mynamedconfig.loggerName"] = "myPipeNamedSecretLogger"
+ Expect(CreatePlainTextSecret(ns, secretName, secData)).To(Succeed())
+
+ Expect(KamelBindWithID(operatorID, ns,
+ "my-pipe-timer-source",
+ "my-pipe-log-sink",
+ "-t", "mount.configs=secret:"+secretName,
+ "-p", "source.message={{mynamedconfig.message}}",
+ "-p", "sink.loggerName={{mynamedconfig.loggerName}}",
+ "--name", name,
+ ).Execute()).To(Succeed())
+
+ Eventually(IntegrationPodPhase(ns, name), TestTimeoutLong).Should(Equal(corev1.PodRunning))
+ Eventually(IntegrationLogs(ns, name)).Should(ContainSubstring("My pipe named secret message"))
+ Eventually(IntegrationLogs(ns, name)).Should(ContainSubstring("myPipeNamedSecretLogger"))
+
+ Expect(Kamel("delete", name, "-n", ns).Execute()).To(Succeed())
+ Expect(DeleteSecret(ns, secretName)).To(Succeed())
+ })
+ t.Run("run test implicit specific config using mounted secret", func(t *testing.T) {
+ name := "my-pipe-with-specific-secret"
+ secretName := "my-pipe-specific-secret"
+
+ var secData = make(map[string]string)
+ secData["mynamedconfig.message"] = "My pipe specific secret message"
+ secData["mynamedconfig.loggerName"] = "myPipeSpecificSecretLogger"
+ Expect(CreatePlainTextSecret(ns, secretName, secData)).To(Succeed())
+
+ Expect(KamelBindWithID(operatorID, ns,
+ "my-pipe-timer-source",
+ "my-pipe-log-sink",
+ "-t", "mount.configs=secret:"+secretName,
+ "-p", "source.message={{mynamedconfig.message}}",
+ "-p", "sink.loggerName={{mynamedconfig.loggerName}}",
+ "--name", name,
+ ).Execute()).To(Succeed())
+
+ Eventually(IntegrationPodPhase(ns, name), TestTimeoutLong).Should(Equal(corev1.PodRunning))
+ Eventually(IntegrationLogs(ns, name)).Should(ContainSubstring("My pipe specific secret message"))
+ Eventually(IntegrationLogs(ns, name)).Should(ContainSubstring("myPipeSpecificSecretLogger"))
+
+ Expect(Kamel("delete", name, "-n", ns).Execute()).To(Succeed())
+ Expect(DeleteSecret(ns, secretName)).To(Succeed())
+ })
+ })
+
+ Expect(Kamel("delete", "--all", "-n", ns).Execute()).To(Succeed())
+ Expect(DeleteKamelet(ns, "my-pipe-timer-source")).To(Succeed())
+ Expect(DeleteKamelet(ns, "my-pipe-log-sink")).To(Succeed())
+}
diff --git a/e2e/support/test_support.go b/e2e/support/test_support.go
index 26a48e2a9..fe5ffdf7e 100644
--- a/e2e/support/test_support.go
+++ b/e2e/support/test_support.go
@@ -1500,7 +1500,25 @@ func CreateBinaryConfigmap(ns string, name string, data map[string][]byte) error
return TestClient().Create(TestContext, &cm)
}
+func DeleteConfigmap(ns string, name string) error {
+ cm := corev1.Secret{
+ TypeMeta: metav1.TypeMeta{
+ Kind: "ConfigMap",
+ APIVersion: corev1.SchemeGroupVersion.String(),
+ },
+ ObjectMeta: metav1.ObjectMeta{
+ Namespace: ns,
+ Name: name,
+ },
+ }
+ return TestClient().Delete(TestContext, &cm)
+}
+
func CreatePlainTextSecret(ns string, name string, data map[string]string) error {
+ return CreatePlainTextSecretWithLabels(ns, name, data, map[string]string{})
+}
+
+func CreatePlainTextSecretWithLabels(ns string, name string, data map[string]string, labels map[string]string) error {
sec := corev1.Secret{
TypeMeta: metav1.TypeMeta{
Kind: "Secret",
@@ -1509,6 +1527,7 @@ func CreatePlainTextSecret(ns string, name string, data map[string]string) error
ObjectMeta: metav1.ObjectMeta{
Namespace: ns,
Name: name,
+ Labels: labels,
},
StringData: data,
}
@@ -1539,6 +1558,20 @@ func SecretByName(ns string, prefix string) func() *corev1.Secret {
}
}
+func DeleteSecret(ns string, name string) error {
+ sec := corev1.Secret{
+ TypeMeta: metav1.TypeMeta{
+ Kind: "Secret",
+ APIVersion: corev1.SchemeGroupVersion.String(),
+ },
+ ObjectMeta: metav1.ObjectMeta{
+ Namespace: ns,
+ Name: name,
+ },
+ }
+ return TestClient().Delete(TestContext, &sec)
+}
+
func KnativeService(ns string, name string) func() *servingv1.Service {
return func() *servingv1.Service {
answer := servingv1.Service{
@@ -2398,6 +2431,16 @@ func CreateTimerKamelet(ns string, name string) func() error {
return CreateKamelet(ns, name, flow, props, nil)
}
+func DeleteKamelet(ns string, name string) error {
+ kamelet := v1.Kamelet{
+ ObjectMeta: metav1.ObjectMeta{
+ Namespace: ns,
+ Name: name,
+ },
+ }
+ return TestClient().Delete(TestContext, &kamelet)
+}
+
func asTemplate(source map[string]interface{}) *v1.Template {
bytes, err := json.Marshal(source)
if err != nil {