Fix #1234: allow to unspecify options and move e2e tests outside core
diff --git a/addons/master/master.go b/addons/master/master.go
index d039cf1..57479f2 100644
--- a/addons/master/master.go
+++ b/addons/master/master.go
@@ -49,11 +49,11 @@
// It's enabled by default.
IncludeDelegateDependencies *bool `property:"include-delegate-dependencies"`
// Name of the configmap that will be used to store the lock. Defaults to "<integration-name>-lock".
- Configmap string `property:"configmap"`
+ Configmap *string `property:"configmap"`
// Label that will be used to identify all pods contending the lock. Defaults to "camel.apache.org/integration".
- LabelKey string `property:"label-key"`
+ LabelKey *string `property:"label-key"`
// Label value that will be used to identify all pods contending the lock. Defaults to the integration name.
- LabelValue string `property:"label-value"`
+ LabelValue *string `property:"label-value"`
delegateDependencies []string
}
@@ -103,16 +103,18 @@
t.delegateDependencies = findAdditionalDependencies(e, meta)
}
- if t.Configmap == "" {
- t.Configmap = fmt.Sprintf("%s-lock", e.Integration.Name)
+ if t.Configmap == nil {
+ val := fmt.Sprintf("%s-lock", e.Integration.Name)
+ t.Configmap = &val
}
- if t.LabelKey == "" {
- t.LabelKey = "camel.apache.org/integration"
+ if t.LabelKey == nil {
+ val := "camel.apache.org/integration"
+ t.LabelKey = &val
}
- if t.LabelValue == "" {
- t.LabelValue = e.Integration.Name
+ if t.LabelValue == nil {
+ t.LabelValue = &e.Integration.Name
}
}
@@ -159,10 +161,25 @@
e.Integration.Status.Configuration = append(e.Integration.Status.Configuration,
v1.ConfigurationSpec{Type: "property", Value: "customizer.master.enabled=true"},
- v1.ConfigurationSpec{Type: "property", Value: fmt.Sprintf("customizer.master.configMapName=%s", t.Configmap)},
- v1.ConfigurationSpec{Type: "property", Value: fmt.Sprintf("customizer.master.labelKey=%s", t.LabelKey)},
- v1.ConfigurationSpec{Type: "property", Value: fmt.Sprintf("customizer.master.labelValue=%s", t.LabelValue)},
)
+
+ if t.Configmap != nil {
+ e.Integration.Status.Configuration = append(e.Integration.Status.Configuration,
+ v1.ConfigurationSpec{Type: "property", Value: fmt.Sprintf("customizer.master.configMapName=%s", *t.Configmap)},
+ )
+ }
+
+ if t.LabelKey != nil {
+ e.Integration.Status.Configuration = append(e.Integration.Status.Configuration,
+ v1.ConfigurationSpec{Type: "property", Value: fmt.Sprintf("customizer.master.labelKey=%s", *t.LabelKey)},
+ )
+ }
+
+ if t.LabelValue != nil {
+ e.Integration.Status.Configuration = append(e.Integration.Status.Configuration,
+ v1.ConfigurationSpec{Type: "property", Value: fmt.Sprintf("customizer.master.labelValue=%s", *t.LabelValue)},
+ )
+ }
}
return nil
diff --git a/e2e/addons_test.go b/e2e/addons_test.go
new file mode 100644
index 0000000..9b1a5a3
--- /dev/null
+++ b/e2e/addons_test.go
@@ -0,0 +1,52 @@
+// +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 e2e
+
+import (
+ "testing"
+ "time"
+
+ . "github.com/onsi/gomega"
+ v1 "k8s.io/api/core/v1"
+)
+
+func TestAddons(t *testing.T) {
+ withNewTestNamespace(t, func(ns string) {
+ Expect(kamel("install", "-n", ns).Execute()).Should(BeNil())
+
+ t.Run("master addon", func(t *testing.T) {
+ RegisterTestingT(t)
+ Expect(kamel("run", "-n", ns, "files/Master.java", "-t", `master.label-key=""`).Execute()).Should(BeNil())
+ Eventually(integrationPodPhase(ns, "master"), 5*time.Minute).Should(Equal(v1.PodRunning))
+ Eventually(integrationLogs(ns, "master"), 1*time.Minute).Should(ContainSubstring("Magicstring!"))
+ Eventually(configMap(ns, "master-lock"), 30*time.Second).ShouldNot(BeNil())
+ // Start a second integration with the same lock (it should not start the route)
+ Expect(kamel("run", "-n", ns, "files/Master.java", "--name", "second",
+ "-t", "master.configmap=master-lock", "-t", `master.label-key=""`).Execute()).Should(BeNil())
+ Eventually(integrationPodPhase(ns, "second"), 5*time.Minute).Should(Equal(v1.PodRunning))
+ Eventually(integrationLogs(ns, "second"), 1*time.Minute).Should(ContainSubstring("started in"))
+ Eventually(integrationLogs(ns, "second"), 30*time.Second).ShouldNot(ContainSubstring("Magicstring!"))
+ Expect(kamel("delete", "--all", "-n", ns).Execute()).Should(BeNil())
+ })
+
+ })
+}
diff --git a/e2e/run_test.go b/e2e/run_test.go
index ba99995..9eb83b6 100644
--- a/e2e/run_test.go
+++ b/e2e/run_test.go
@@ -53,21 +53,6 @@
Expect(kamel("delete", "--all", "-n", ns).Execute()).Should(BeNil())
})
- t.Run("run java with master", func(t *testing.T) {
- RegisterTestingT(t)
- Expect(kamel("run", "-n", ns, "files/Master.java").Execute()).Should(BeNil())
- Eventually(integrationPodPhase(ns, "master"), 5*time.Minute).Should(Equal(v1.PodRunning))
- Eventually(integrationLogs(ns, "master"), 1*time.Minute).Should(ContainSubstring("Magicstring!"))
- Eventually(configMap(ns, "master-lock"), 10*time.Second).ShouldNot(BeNil())
- // Start a second integration with the same lock (it should not start the route)
- Expect(kamel("run", "-n", ns, "files/Master.java", "--name", "second",
- "-t", "master.configmap=master", "-t", "master.label-value=master").Execute()).Should(BeNil())
- Eventually(integrationPodPhase(ns, "second"), 5*time.Minute).Should(Equal(v1.PodRunning))
- Eventually(integrationLogs(ns, "second"), 1*time.Minute).Should(ContainSubstring("started in"))
- Eventually(integrationLogs(ns, "second"), 30*time.Second).ShouldNot(ContainSubstring("Magicstring!"))
- Expect(kamel("delete", "--all", "-n", ns).Execute()).Should(BeNil())
- })
-
t.Run("run xml", func(t *testing.T) {
RegisterTestingT(t)
Expect(kamel("run", "-n", ns, "files/xml.xml").Execute()).Should(BeNil())