This is an automated email from the ASF dual-hosted git repository.
orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 47009b5 CAMEL-16839: fixed camel-kubernetes consumer tests (#5927)
47009b5 is described below
commit 47009b5554d686d672149c8e1208c375c2d597a1
Author: Otavio Rodolfo Piske <[email protected]>
AuthorDate: Wed Aug 4 19:04:14 2021 +0200
CAMEL-16839: fixed camel-kubernetes consumer tests (#5927)
- fixed namespaces consumer test
- fixed config maps consumer test
- fixed nodes consumer test
- fixed pods consumer test
- fixed replication controllers consumer test
- fixed services consumer test
- refactored custom resources consumer test
- fixed usages of invalid query parameters in camel-kubernetes
- converted to integration tests
---
components/camel-kubernetes/README.md | 32 ++++++
.../kubernetes/KubernetesTestSupport.java | 16 ++-
.../consumer/KubernetesNodesConsumerTest.java | 126 ---------------------
.../KubernetesConfigMapsConsumerIT.java} | 97 +++++++++++-----
.../KubernetesCustomResourcesConsumerIT.java} | 42 ++++---
.../KubernetesNamespacesConsumerIT.java} | 63 +++++++----
.../integration/KubernetesNodesConsumerIT.java | 91 +++++++++++++++
.../KubernetesPodsConsumerIT.java} | 104 ++++++++++-------
...ubernetesReplicationControllersConsumerIT.java} | 44 ++++---
.../KubernetesServicesConsumerIT.java} | 41 ++++---
10 files changed, 386 insertions(+), 270 deletions(-)
diff --git a/components/camel-kubernetes/README.md
b/components/camel-kubernetes/README.md
new file mode 100644
index 0000000..272c160
--- /dev/null
+++ b/components/camel-kubernetes/README.md
@@ -0,0 +1,32 @@
+# Camel Kubernetes
+
+# Running the tests
+
+This component contains unit and integration tests. Some of them - like the
consumer ones - require a Kubernetes environment.
+
+It is possible to run the tests using Kind. To do so, follow these steps:
+
+1. Create a cluster:
+
+```
+kind cluster create
+```
+
+2. Get the auth token:
+
+```
+export KUBE_TOKEN=$(kubectl get secrets -o
jsonpath="{.items[?(@.metadata.annotations['kubernetes\.io/service-account\.name']=='default')].data.token}"|base64
--decode)
+```
+
+4. Get the host:
+
+```
+export KIND_PORT=$(docker inspect --format='{{range $p, $conf :=
.NetworkSettings.Ports}}{{(index $conf 0).HostPort}} {{end}}'
kind-control-plane)
+export KUBE_HOST=https://localhost:$KIND_PORT
+```
+
+5. Run the test:
+```
+mvn -Dtest=KubernetesConfigMapsConsumerTest
-Dkubernetes.test.auth="$KUBE_TOKEN" -Dkubernetes.test.host=$KUBE_HOST
-Dkubernetes.test.host.k8s=true clean verify
+```
+
diff --git
a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/KubernetesTestSupport.java
b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/KubernetesTestSupport.java
index b1a408b..ba8253c 100644
---
a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/KubernetesTestSupport.java
+++
b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/KubernetesTestSupport.java
@@ -30,17 +30,21 @@ public class KubernetesTestSupport extends CamelTestSupport
{
protected String host;
protected Logger log = LoggerFactory.getLogger(getClass());
- // The Camel-Kubernetes tests are based on vagrant fabric8-image
- //
https://github.com/fabric8io/fabric8-installer/tree/master/vagrant/openshift
- // by running the vagrant image you'll have an environment with
- // Openshift/Kubernetes installed
+ /*
+ * NOTE: The Camel-Kubernetes tests were originally meant to be run along
with the vagrant fabric8-image
+ *
https://github.com/fabric8io/fabric8-installer/tree/master/vagrant/openshift
which would provide an
+ * environment with Openshift/Kubernetes installed.
+ *
+ * However, since that image is deprecated, you can also run the tests
with kind. See the README.md file
+ * on the root of the component directory for details.
+ */
@Override
@BeforeEach
public void setUp() throws Exception {
// INSERT credentials and host here
- authToken = "";
- host = "https://192.168.99.100:8443";
+ authToken = System.getProperty("kubernetes.test.auth");
+ host = System.getProperty("kubernetes.test.host");
super.setUp();
}
diff --git
a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesNodesConsumerTest.java
b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesNodesConsumerTest.java
deleted file mode 100644
index 7c2d168..0000000
---
a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesNodesConsumerTest.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * 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 org.apache.camel.component.kubernetes.consumer;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import io.fabric8.kubernetes.api.model.Container;
-import io.fabric8.kubernetes.api.model.ContainerPort;
-import io.fabric8.kubernetes.api.model.Node;
-import io.fabric8.kubernetes.api.model.PodSpec;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.Processor;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.kubernetes.KubernetesConstants;
-import org.apache.camel.component.kubernetes.KubernetesTestSupport;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.util.ObjectHelper;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-@Disabled("Requires a running Kubernetes Cluster")
-public class KubernetesNodesConsumerTest extends KubernetesTestSupport {
-
- @EndpointInject("mock:result")
- protected MockEndpoint mockResultEndpoint;
-
- @Test
- public void createAndDeletePod() throws Exception {
- if (ObjectHelper.isEmpty(authToken)) {
- return;
- }
-
- mockResultEndpoint.expectedMessageCount(1);
-
mockResultEndpoint.expectedHeaderValuesReceivedInAnyOrder(KubernetesConstants.KUBERNETES_EVENT_ACTION,
"MODIFIED");
- Exchange ex = template.request("direct:createPod", exchange -> {
-
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME,
"default");
-
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_POD_NAME, "test");
- Map<String, String> labels = new HashMap<>();
- labels.put("this", "rocks");
-
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_PODS_LABELS, labels);
- PodSpec podSpec = new PodSpec();
- podSpec.setHostname("localhost");
- Container cont = new Container();
- cont.setImage("docker.io/jboss/wildfly:latest");
- cont.setName("pippo");
-
- List<ContainerPort> containerPort = new ArrayList<>();
- ContainerPort port = new ContainerPort();
- port.setHostIP("0.0.0.0");
- port.setHostPort(8080);
- port.setContainerPort(8080);
-
- containerPort.add(port);
-
- cont.setPorts(containerPort);
-
- List<Container> list = new ArrayList<>();
- list.add(cont);
-
- podSpec.setContainers(list);
-
-
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_POD_SPEC, podSpec);
- });
-
- ex = template.request("direct:deletePod", exchange -> {
-
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME,
"default");
-
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_POD_NAME, "test");
- });
-
- boolean podDeleted = ex.getMessage().getBody(Boolean.class);
-
- assertTrue(podDeleted);
-
- Thread.sleep(3000);
-
- mockResultEndpoint.assertIsSatisfied();
- }
-
- @Override
- protected RouteBuilder createRouteBuilder() throws Exception {
- return new RouteBuilder() {
- @Override
- public void configure() throws Exception {
-
from("direct:list").toF("kubernetes-pods://%s?oauthToken=%s&operation=listPods",
host, authToken);
-
from("direct:listByLabels").toF("kubernetes-pods://%s?oauthToken=%s&operation=listPodsByLabels",
host,
- authToken);
-
from("direct:getPod").toF("kubernetes-pods://%s?oauthToken=%s&operation=getPod",
host, authToken);
-
from("direct:createPod").toF("kubernetes-pods://%s?oauthToken=%s&operation=createPod",
host, authToken);
-
from("direct:deletePod").toF("kubernetes-pods://%s?oauthToken=%s&operation=deletePod",
host, authToken);
-
fromF("kubernetes-nodes://%s?oauthToken=%s&resourceName=minikube", host,
authToken)
- .process(new
KubernetesProcessor()).to(mockResultEndpoint);
- }
- };
- }
-
- public class KubernetesProcessor implements Processor {
- @Override
- public void process(Exchange exchange) throws Exception {
- Message in = exchange.getIn();
- Node node = exchange.getIn().getBody(Node.class);
- log.info("Got event with node name: " +
node.getMetadata().getName() + " and action "
- +
in.getHeader(KubernetesConstants.KUBERNETES_EVENT_ACTION));
- }
- }
-}
diff --git
a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesConfigMapsConsumerTest.java
b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesConfigMapsConsumerIT.java
similarity index 59%
rename from
components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesConfigMapsConsumerTest.java
rename to
components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesConfigMapsConsumerIT.java
index be029b2..c72c4e2 100644
---
a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesConfigMapsConsumerTest.java
+++
b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesConfigMapsConsumerIT.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.component.kubernetes.consumer;
+package org.apache.camel.component.kubernetes.consumer.integration;
import java.util.HashMap;
import java.util.Map;
@@ -28,27 +28,46 @@ import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.kubernetes.KubernetesConstants;
import org.apache.camel.component.kubernetes.KubernetesTestSupport;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.util.ObjectHelper;
-import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestMethodOrder;
+import org.junit.jupiter.api.condition.EnabledIfSystemProperties;
+import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ValueSource;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
-@Disabled("Requires a running Kubernetes Cluster")
-public class KubernetesConfigMapsConsumerTest extends KubernetesTestSupport {
+@EnabledIfSystemProperties({
+ @EnabledIfSystemProperty(named = "kubernetes.test.auth", matches =
".*", disabledReason = "Requires kubernetes"),
+ @EnabledIfSystemProperty(named = "kubernetes.test.host", matches =
".*", disabledReason = "Requires kubernetes"),
+ @EnabledIfSystemProperty(named = "kubernetes.test.host.k8s", matches =
"true", disabledReason = "Requires kubernetes"),
+})
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
+public class KubernetesConfigMapsConsumerIT extends KubernetesTestSupport {
@EndpointInject("mock:result")
protected MockEndpoint mockResultEndpoint;
- @Test
- public void createAndDeleteConfigMap() throws Exception {
- if (ObjectHelper.isEmpty(authToken)) {
- return;
- }
-
+ public void configureMock() {
mockResultEndpoint.expectedMessageCount(3);
mockResultEndpoint.expectedHeaderValuesReceivedInAnyOrder(KubernetesConstants.KUBERNETES_EVENT_ACTION,
"ADDED",
"MODIFIED", "MODIFIED");
+ }
+
+ @BeforeEach
+ public void waitForSettle() throws InterruptedException {
+ Thread.sleep(1000);
+ }
+
+ @Test
+ @Order(1)
+ public void createConfigMapWithProperties() throws Exception {
+ configureMock();
+
Exchange ex = template.request("direct:createConfigmap", exchange -> {
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME,
"default");
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CONFIGMAP_NAME,
"test");
@@ -60,7 +79,18 @@ public class KubernetesConfigMapsConsumerTest extends
KubernetesTestSupport {
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CONFIGMAP_DATA,
configMapData);
});
- ex = template.request("direct:createConfigmap", exchange -> {
+ Message message = ex.getMessage();
+
+ assertNotNull(message);
+ assertNotNull(message.getBody());
+ }
+
+ @Test
+ @Order(2)
+ public void createConfigMap() throws Exception {
+ configureMock();
+
+ Exchange ex = template.request("direct:createConfigmap", exchange -> {
exchange.getIn().removeHeader(KubernetesConstants.KUBERNETES_CONFIGMAPS_LABELS);
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME,
"default");
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CONFIGMAP_NAME,
"test1");
@@ -69,23 +99,29 @@ public class KubernetesConfigMapsConsumerTest extends
KubernetesTestSupport {
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CONFIGMAP_DATA,
configMapData);
});
- ex = template.request("direct:deleteConfigmap", exchange -> {
-
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME,
"default");
-
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CONFIGMAP_NAME,
"test");
- });
+ Message message = ex.getMessage();
- ex = template.request("direct:deleteConfigmap", exchange -> {
+ assertNotNull(message);
+ assertNotNull(message.getBody());
+ }
+
+ @ParameterizedTest
+ @Order(3)
+ @ValueSource(strings = { "test", "test1" })
+ public void deleteConfigMaps(String configMapName) throws Exception {
+ Exchange ex = template.request("direct:deleteConfigmap", exchange -> {
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME,
"default");
-
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CONFIGMAP_NAME,
"test1");
+
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CONFIGMAP_NAME,
configMapName);
});
- boolean cmDeleted = ex.getMessage().getBody(Boolean.class);
+ Message message = ex.getMessage();
- assertTrue(cmDeleted);
-
- Thread.sleep(3000);
+ assertNotNull(message);
- mockResultEndpoint.assertIsSatisfied();
+ // To avoid a NPE if unable to convert for any reason
+ assertNotNull(message.getBody());
+ boolean cmDeleted = message.getBody(Boolean.class);
+ assertTrue(cmDeleted);
}
@Override
@@ -93,11 +129,15 @@ public class KubernetesConfigMapsConsumerTest extends
KubernetesTestSupport {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
-
from("direct:createConfigmap").toF("kubernetes-config-maps://%s?oauthToken=%s&operation=createConfigMap",
host,
- authToken);
-
from("direct:deleteConfigmap").toF("kubernetes-config-maps://%s?oauthToken=%s&operation=deleteConfigMap",
host,
- authToken);
-
fromF("kubernetes-config-maps://%s?oauthToken=%s&namespace=default&resourceName=test",
host, authToken)
+ from("direct:createConfigmap")
+
.toF("kubernetes-config-maps://%s?oauthToken=%s&operation=createConfigMap",
host,
+ authToken);
+
+ from("direct:deleteConfigmap")
+
.toF("kubernetes-config-maps://%s?oauthToken=%s&operation=deleteConfigMap",
host,
+ authToken);
+
+
fromF("kubernetes-config-maps://%s?oauthToken=%s&operation=listConfigMaps",
host, authToken)
.process(new
KubernetesProcessor()).to(mockResultEndpoint);
}
};
@@ -108,6 +148,7 @@ public class KubernetesConfigMapsConsumerTest extends
KubernetesTestSupport {
public void process(Exchange exchange) throws Exception {
Message in = exchange.getIn();
ConfigMap cm = exchange.getIn().getBody(ConfigMap.class);
+
log.info("Got event with configmap name: " +
cm.getMetadata().getName() + " and action "
+
in.getHeader(KubernetesConstants.KUBERNETES_EVENT_ACTION));
}
diff --git
a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesCustomResourcesConsumerTest.java
b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesCustomResourcesConsumerIT.java
similarity index 84%
rename from
components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesCustomResourcesConsumerTest.java
rename to
components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesCustomResourcesConsumerIT.java
index 11c0893..d9d727e 100644
---
a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesCustomResourcesConsumerTest.java
+++
b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesCustomResourcesConsumerIT.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.component.kubernetes.consumer;
+package org.apache.camel.component.kubernetes.consumer.integration;
import org.apache.camel.EndpointInject;
import org.apache.camel.Exchange;
@@ -24,14 +24,18 @@ import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.kubernetes.KubernetesConstants;
import org.apache.camel.component.kubernetes.KubernetesTestSupport;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.util.ObjectHelper;
import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestMethodOrder;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
@Disabled("Requires a running Kubernetes Cluster")
-public class KubernetesCustomResourcesConsumerTest extends
KubernetesTestSupport {
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
+public class KubernetesCustomResourcesConsumerIT extends KubernetesTestSupport
{
@EndpointInject("mock:result")
protected MockEndpoint mockResultEndpoint;
@@ -61,11 +65,8 @@ public class KubernetesCustomResourcesConsumerTest extends
KubernetesTestSupport
"}";
@Test
- public void createAndDeleteCustomResource() throws Exception {
- if (ObjectHelper.isEmpty(authToken)) {
- return;
- }
-
+ @Order(1)
+ public void createCustomResource() throws Exception {
mockResultEndpoint.expectedMessageCount(2);
mockResultEndpoint.expectedHeaderValuesReceivedInAnyOrder(KubernetesConstants.KUBERNETES_EVENT_ACTION,
"ADDED",
"MODIFIED");
@@ -80,7 +81,18 @@ public class KubernetesCustomResourcesConsumerTest extends
KubernetesTestSupport
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_INSTANCE,
gitHubSourceString);
});
- ex = template.request("direct:deleteCustomResource", exchange -> {
+ // Maybe knative is not available
+ assertNotNull(ex.getMessage());
+ assertNotNull(ex.getMessage().getBody());
+ }
+
+ @Test
+ @Order(2)
+ public void deleteCustomResource() throws Exception {
+ mockResultEndpoint.expectedMessageCount(2);
+
mockResultEndpoint.expectedHeaderValuesReceivedInAnyOrder(KubernetesConstants.KUBERNETES_EVENT_ACTION,
"ADDED",
+ "MODIFIED");
+ Exchange ex = template.request("direct:deleteCustomResource", exchange
-> {
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_INSTANCE_NAME,
"createtest");
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME,
"test");
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_NAME,
"githubsources.sources.knative.dev");
@@ -90,13 +102,13 @@ public class KubernetesCustomResourcesConsumerTest extends
KubernetesTestSupport
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_PLURAL,
"githubsources");
});
- boolean cmDeleted = ex.getMessage().getBody(Boolean.class);
+ Message message = ex.getMessage();
- assertTrue(cmDeleted);
+ assertNotNull(message);
+ assertNotNull(message.getBody());
- Thread.sleep(3000);
-
- mockResultEndpoint.assertIsSatisfied();
+ boolean cmDeleted = message.getBody(Boolean.class);
+ assertTrue(cmDeleted);
}
@Override
@@ -109,7 +121,7 @@ public class KubernetesCustomResourcesConsumerTest extends
KubernetesTestSupport
from("direct:deleteCustomResource")
.toF("kubernetes-custom-resources://%s/?oauthToken=%s&operation=deleteCustomResource",
host, authToken);
fromF("kubernetes-custom-resources://%s/?oauthToken=%s&namespace=test" +
-
"&crdName=githubsources.sources.knative.dev&crdGroup=sources.knative.dev&crdScope=Namespaced&crdVersion=v1alpha1&crdPlural=githubsources",
+
"&crdName=githubsources.sources.knative.dev&crdGroup=sources.knative.dev&crdScope=Namespaced&crdVersion=v1alpha1&crdPlural=githubsources&namespace=test",
host, authToken)
.process(new
KubernetesProcessor()).to(mockResultEndpoint);
}
diff --git
a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesNamespacesConsumerTest.java
b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesNamespacesConsumerIT.java
similarity index 67%
rename from
components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesNamespacesConsumerTest.java
rename to
components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesNamespacesConsumerIT.java
index de876b6..a4e7893 100644
---
a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesNamespacesConsumerTest.java
+++
b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesNamespacesConsumerIT.java
@@ -14,12 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.component.kubernetes.consumer;
+package org.apache.camel.component.kubernetes.consumer.integration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.ThreadLocalRandom;
import io.fabric8.kubernetes.api.model.Namespace;
import org.apache.camel.EndpointInject;
@@ -30,31 +31,38 @@ import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.kubernetes.KubernetesConstants;
import org.apache.camel.component.kubernetes.KubernetesTestSupport;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.util.ObjectHelper;
-import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestMethodOrder;
+import org.junit.jupiter.api.condition.EnabledIfSystemProperties;
+import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
-@Disabled("Requires a running Kubernetes Cluster")
-public class KubernetesNamespacesConsumerTest extends KubernetesTestSupport {
+@EnabledIfSystemProperties({
+ @EnabledIfSystemProperty(named = "kubernetes.test.auth", matches =
".*", disabledReason = "Requires kubernetes"),
+ @EnabledIfSystemProperty(named = "kubernetes.test.host", matches =
".*", disabledReason = "Requires kubernetes"),
+ @EnabledIfSystemProperty(named = "kubernetes.test.host.k8s", matches =
"true", disabledReason = "Requires kubernetes"),
+})
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
+public class KubernetesNamespacesConsumerIT extends KubernetesTestSupport {
+ private static final String TEST_NAME_SPACE = "test" +
ThreadLocalRandom.current().nextInt(1, 100);
@EndpointInject("mock:result")
protected MockEndpoint mockResultEndpoint;
@Test
- public void createAndDeletePod() throws Exception {
- if (ObjectHelper.isEmpty(authToken)) {
- return;
- }
-
+ @Order(1)
+ public void createPod() throws Exception {
mockResultEndpoint.expectedMessageCount(5);
mockResultEndpoint.expectedHeaderValuesReceivedInAnyOrder(KubernetesConstants.KUBERNETES_EVENT_ACTION,
"ADDED",
"MODIFIED", "MODIFIED", "MODIFIED", "DELETED");
Exchange ex = template.request("direct:createNamespace", exchange -> {
-
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME,
"test");
+
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME,
TEST_NAME_SPACE);
Map<String, String> labels = new HashMap<>();
labels.put("this", "rocks");
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_LABELS,
labels);
@@ -62,9 +70,14 @@ public class KubernetesNamespacesConsumerTest extends
KubernetesTestSupport {
Namespace ns = ex.getMessage().getBody(Namespace.class);
- assertEquals("test", ns.getMetadata().getName());
+ assertNotNull(ns);
+ assertEquals(TEST_NAME_SPACE, ns.getMetadata().getName());
+ }
- ex = template.request("direct:listByLabels", exchange -> {
+ @Test
+ @Order(2)
+ public void listByLabels() throws Exception {
+ Exchange ex = template.request("direct:listByLabels", exchange -> {
Map<String, String> labels = new HashMap<>();
labels.put("this", "rocks");
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_LABELS,
labels);
@@ -72,28 +85,34 @@ public class KubernetesNamespacesConsumerTest extends
KubernetesTestSupport {
List<Namespace> result = ex.getMessage().getBody(List.class);
- boolean testExists = false;
+ boolean testNamespaceExists = false;
Iterator<Namespace> it = result.iterator();
while (it.hasNext()) {
Namespace namespace = it.next();
- if ("test".equalsIgnoreCase(namespace.getMetadata().getName())) {
- testExists = true;
+ if
(TEST_NAME_SPACE.equalsIgnoreCase(namespace.getMetadata().getName())) {
+ testNamespaceExists = true;
}
}
- assertTrue(testExists);
+ assertTrue(testNamespaceExists);
+ }
+
+ @Test
+ @Order(3)
+ public void deletePod() throws Exception {
+ Exchange ex = template.request("direct:deleteNamespace",
+ exchange -> exchange.getIn()
+
.setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, TEST_NAME_SPACE));
- ex = template.request("direct:deleteNamespace",
- exchange ->
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME,
"test"));
+ Object body = ex.getMessage().getBody();
+ assertNotNull(body);
boolean nsDeleted = ex.getMessage().getBody(Boolean.class);
assertTrue(nsDeleted);
- Thread.sleep(3000);
-
- mockResultEndpoint.assertIsSatisfied();
+ mockResultEndpoint.assertIsSatisfied(5100);
}
@Override
diff --git
a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesNodesConsumerIT.java
b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesNodesConsumerIT.java
new file mode 100644
index 0000000..956885b
--- /dev/null
+++
b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesNodesConsumerIT.java
@@ -0,0 +1,91 @@
+/*
+ * 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 org.apache.camel.component.kubernetes.consumer.integration;
+
+import io.fabric8.kubernetes.api.model.Node;
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.kubernetes.KubernetesConstants;
+import org.apache.camel.component.kubernetes.KubernetesTestSupport;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestMethodOrder;
+import org.junit.jupiter.api.condition.EnabledIfSystemProperties;
+import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+@EnabledIfSystemProperties({
+ @EnabledIfSystemProperty(named = "kubernetes.test.auth", matches =
".*", disabledReason = "Requires kubernetes"),
+ @EnabledIfSystemProperty(named = "kubernetes.test.host", matches =
".*", disabledReason = "Requires kubernetes"),
+ @EnabledIfSystemProperty(named = "kubernetes.test.host.k8s", matches =
"true", disabledReason = "Requires kubernetes"),
+})
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
+public class KubernetesNodesConsumerIT extends KubernetesTestSupport {
+
+ @EndpointInject("mock:result")
+ protected MockEndpoint mockResultEndpoint;
+
+ @Test
+ @Order(1)
+ public void listNode() throws Exception {
+ configureMock();
+ Exchange ex = template.request("direct:listNode", exchange -> {
+
+ });
+
+ Message message = ex.getMessage();
+
+ assertNotNull(message);
+ assertNotNull(message.getBody());
+
+ mockResultEndpoint.assertIsSatisfied();
+ }
+
+ private void configureMock() {
+ mockResultEndpoint.expectedMessageCount(1);
+
mockResultEndpoint.expectedHeaderValuesReceivedInAnyOrder(KubernetesConstants.KUBERNETES_EVENT_ACTION,
+ "ADDED");
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+
from("direct:listNode").toF("kubernetes-nodes://%s?oauthToken=%s&operation=listNodes",
host, authToken);
+
fromF("kubernetes-nodes://%s?oauthToken=%s&operation=listNodes", host,
authToken)
+ .process(new
KubernetesProcessor()).to(mockResultEndpoint);
+ }
+ };
+ }
+
+ public class KubernetesProcessor implements Processor {
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ Message in = exchange.getIn();
+ Node node = exchange.getIn().getBody(Node.class);
+ log.info("Got event with node name: " +
node.getMetadata().getName() + " and action "
+ +
in.getHeader(KubernetesConstants.KUBERNETES_EVENT_ACTION));
+ }
+ }
+}
diff --git
a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesPodsConsumerTest.java
b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesPodsConsumerIT.java
similarity index 53%
rename from
components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesPodsConsumerTest.java
rename to
components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesPodsConsumerIT.java
index 09bfaa8..b343881 100644
---
a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesPodsConsumerTest.java
+++
b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesPodsConsumerIT.java
@@ -14,12 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.component.kubernetes.consumer;
+package org.apache.camel.component.kubernetes.consumer.integration;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.ThreadLocalRandom;
import io.fabric8.kubernetes.api.model.Container;
import io.fabric8.kubernetes.api.model.ContainerPort;
@@ -33,68 +34,87 @@ import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.kubernetes.KubernetesConstants;
import org.apache.camel.component.kubernetes.KubernetesTestSupport;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.util.ObjectHelper;
-import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestMethodOrder;
+import org.junit.jupiter.api.condition.EnabledIfSystemProperties;
+import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
-@Disabled("Requires a running Kubernetes Cluster")
-public class KubernetesPodsConsumerTest extends KubernetesTestSupport {
+@EnabledIfSystemProperties({
+ @EnabledIfSystemProperty(named = "kubernetes.test.auth", matches =
".*", disabledReason = "Requires kubernetes"),
+ @EnabledIfSystemProperty(named = "kubernetes.test.host", matches =
".*", disabledReason = "Requires kubernetes"),
+ @EnabledIfSystemProperty(named = "kubernetes.test.host.k8s", matches =
"true", disabledReason = "Requires kubernetes"),
+})
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
+public class KubernetesPodsConsumerIT extends KubernetesTestSupport {
+ private static final String TEST_POD_NAME = "test" +
ThreadLocalRandom.current().nextInt(1, 100);
@EndpointInject("mock:result")
protected MockEndpoint mockResultEndpoint;
- @Test
- public void createAndDeletePod() throws Exception {
- if (ObjectHelper.isEmpty(authToken)) {
- return;
- }
+ private void setupPod(Exchange exchange) {
+
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME,
"default");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_POD_NAME,
TEST_POD_NAME);
+ Map<String, String> labels = new HashMap<>();
+ labels.put("this", "rocks");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_PODS_LABELS,
labels);
+ PodSpec podSpec = new PodSpec();
+ podSpec.setHostname("localhost");
+ Container cont = new Container();
+ cont.setImage("docker.io/jboss/wildfly:latest");
+ cont.setName("pippo");
- mockResultEndpoint.expectedMessageCount(3);
-
mockResultEndpoint.expectedHeaderValuesReceivedInAnyOrder(KubernetesConstants.KUBERNETES_EVENT_ACTION,
"ADDED",
- "MODIFIED", "MODIFIED");
- Exchange ex = template.request("direct:createPod", exchange -> {
-
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME,
"default");
-
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_POD_NAME, "test");
- Map<String, String> labels = new HashMap<>();
- labels.put("this", "rocks");
-
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_PODS_LABELS, labels);
- PodSpec podSpec = new PodSpec();
- podSpec.setHostname("localhost");
- Container cont = new Container();
- cont.setImage("docker.io/jboss/wildfly:latest");
- cont.setName("pippo");
+ List<ContainerPort> containerPort = new ArrayList<>();
+ ContainerPort port = new ContainerPort();
+ port.setHostIP("0.0.0.0");
+ port.setHostPort(8080);
+ port.setContainerPort(8080);
- List<ContainerPort> containerPort = new ArrayList<>();
- ContainerPort port = new ContainerPort();
- port.setHostIP("0.0.0.0");
- port.setHostPort(8080);
- port.setContainerPort(8080);
+ containerPort.add(port);
- containerPort.add(port);
+ cont.setPorts(containerPort);
- cont.setPorts(containerPort);
+ List<Container> list = new ArrayList<>();
+ list.add(cont);
- List<Container> list = new ArrayList<>();
- list.add(cont);
+ podSpec.setContainers(list);
- podSpec.setContainers(list);
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_POD_SPEC,
podSpec);
+ }
-
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_POD_SPEC, podSpec);
- });
+ @Test
+ @Order(1)
+ public void createPod() throws Exception {
+ mockResultEndpoint.expectedMessageCount(2);
+
mockResultEndpoint.expectedHeaderValuesReceivedInAnyOrder(KubernetesConstants.KUBERNETES_EVENT_ACTION,
"ADDED",
+ "MODIFIED");
+ Exchange ex = template.request("direct:createPod", this::setupPod);
+
+ assertNotNull(ex);
+ assertNotNull(ex.getMessage());
+ assertNotNull(ex.getMessage().getBody());
- ex = template.request("direct:deletePod", exchange -> {
+ mockResultEndpoint.assertIsSatisfied();
+ }
+
+ @Test
+ @Order(2)
+ public void deletePod() throws Exception {
+ mockResultEndpoint.expectedMessageCount(1);
+
mockResultEndpoint.expectedHeaderValuesReceivedInAnyOrder(KubernetesConstants.KUBERNETES_EVENT_ACTION,
"ADDED");
+ Exchange ex = template.request("direct:deletePod", exchange -> {
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME,
"default");
-
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_POD_NAME, "test");
+
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_POD_NAME,
TEST_POD_NAME);
});
boolean podDeleted = ex.getMessage().getBody(Boolean.class);
assertTrue(podDeleted);
- Thread.sleep(3000);
-
mockResultEndpoint.assertIsSatisfied();
}
@@ -103,10 +123,6 @@ public class KubernetesPodsConsumerTest extends
KubernetesTestSupport {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
-
from("direct:list").toF("kubernetes-pods://%s?oauthToken=%s&operation=listPods",
host, authToken);
-
from("direct:listByLabels").toF("kubernetes-pods://%s?oauthToken=%s&operation=listPodsByLabels",
host,
- authToken);
-
from("direct:getPod").toF("kubernetes-pods://%s?oauthToken=%s&operation=getPod",
host, authToken);
from("direct:createPod").toF("kubernetes-pods://%s?oauthToken=%s&operation=createPod",
host, authToken);
from("direct:deletePod").toF("kubernetes-pods://%s?oauthToken=%s&operation=deletePod",
host, authToken);
fromF("kubernetes-pods://%s?oauthToken=%s&namespace=default&labelKey=this&labelValue=rocks",
host, authToken)
diff --git
a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesReplicationControllersConsumerTest.java
b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesReplicationControllersConsumerIT.java
similarity index 80%
rename from
components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesReplicationControllersConsumerTest.java
rename to
components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesReplicationControllersConsumerIT.java
index 14a9c53..75bc4e4 100644
---
a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesReplicationControllersConsumerTest.java
+++
b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesReplicationControllersConsumerIT.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.component.kubernetes.consumer;
+package org.apache.camel.component.kubernetes.consumer.integration;
import java.util.HashMap;
import java.util.Map;
@@ -31,27 +31,39 @@ import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.kubernetes.KubernetesConstants;
import org.apache.camel.component.kubernetes.KubernetesTestSupport;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.util.ObjectHelper;
-import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestMethodOrder;
+import org.junit.jupiter.api.condition.EnabledIfSystemProperties;
+import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
-@Disabled("Requires a running Kubernetes Cluster")
-public class KubernetesReplicationControllersConsumerTest extends
KubernetesTestSupport {
+@EnabledIfSystemProperties({
+ @EnabledIfSystemProperty(named = "kubernetes.test.auth", matches =
".*", disabledReason = "Requires kubernetes"),
+ @EnabledIfSystemProperty(named = "kubernetes.test.host", matches =
".*", disabledReason = "Requires kubernetes"),
+ @EnabledIfSystemProperty(named = "kubernetes.test.host.k8s", matches =
"true", disabledReason = "Requires kubernetes"),
+})
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
+public class KubernetesReplicationControllersConsumerIT extends
KubernetesTestSupport {
@EndpointInject("mock:result")
protected MockEndpoint mockResultEndpoint;
- @Test
- public void createAndDeleteReplicationController() throws Exception {
- if (ObjectHelper.isEmpty(authToken)) {
- return;
- }
+ @BeforeEach
+ public void waitForSettle() throws InterruptedException {
+ Thread.sleep(1000);
+ }
+ @Test
+ @Order(1)
+ public void createReplicationController() throws Exception {
mockResultEndpoint.expectedHeaderValuesReceivedInAnyOrder(KubernetesConstants.KUBERNETES_EVENT_ACTION,
"ADDED",
- "DELETED", "MODIFIED", "MODIFIED", "MODIFIED");
+ "MODIFIED", "MODIFIED", "MODIFIED", "MODIFIED");
+
Exchange ex = template.request("direct:createReplicationController",
exchange -> {
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME,
"default");
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_REPLICATION_CONTROLLER_NAME,
"test");
@@ -76,7 +88,13 @@ public class KubernetesReplicationControllersConsumerTest
extends KubernetesTest
assertEquals("test", rc.getMetadata().getName());
- ex = template.request("direct:deleteReplicationController", exchange
-> {
+ mockResultEndpoint.assertIsSatisfied();
+ }
+
+ @Test
+ @Order(2)
+ public void deleteReplicationController() throws Exception {
+ Exchange ex = template.request("direct:deleteReplicationController",
exchange -> {
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME,
"default");
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_REPLICATION_CONTROLLER_NAME,
"test");
});
@@ -85,8 +103,6 @@ public class KubernetesReplicationControllersConsumerTest
extends KubernetesTest
assertTrue(rcDeleted);
- Thread.sleep(3000);
-
mockResultEndpoint.assertIsSatisfied();
}
diff --git
a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesServicesConsumerTest.java
b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesServicesConsumerIT.java
similarity index 79%
rename from
components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesServicesConsumerTest.java
rename to
components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesServicesConsumerIT.java
index b0dbfce..26c7465 100644
---
a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/KubernetesServicesConsumerTest.java
+++
b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesServicesConsumerIT.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.component.kubernetes.consumer;
+package org.apache.camel.component.kubernetes.consumer.integration;
import java.util.ArrayList;
import java.util.HashMap;
@@ -33,28 +33,33 @@ import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.kubernetes.KubernetesConstants;
import org.apache.camel.component.kubernetes.KubernetesTestSupport;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.util.ObjectHelper;
-import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestMethodOrder;
+import org.junit.jupiter.api.condition.EnabledIfSystemProperties;
+import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
-@Disabled("Requires a running Kubernetes Cluster")
-public class KubernetesServicesConsumerTest extends KubernetesTestSupport {
+@EnabledIfSystemProperties({
+ @EnabledIfSystemProperty(named = "kubernetes.test.auth", matches =
".*", disabledReason = "Requires kubernetes"),
+ @EnabledIfSystemProperty(named = "kubernetes.test.host", matches =
".*", disabledReason = "Requires kubernetes"),
+ @EnabledIfSystemProperty(named = "kubernetes.test.host.k8s", matches =
"true", disabledReason = "Requires kubernetes"),
+})
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
+public class KubernetesServicesConsumerIT extends KubernetesTestSupport {
@EndpointInject("mock:result")
protected MockEndpoint mockResultEndpoint;
@Test
- public void createAndDeleteService() throws Exception {
- if (ObjectHelper.isEmpty(authToken)) {
- return;
- }
+ @Order(1)
+ public void createService() throws Exception {
+ mockResultEndpoint.expectedMessageCount(1);
+
mockResultEndpoint.expectedHeaderValuesReceivedInAnyOrder(KubernetesConstants.KUBERNETES_EVENT_ACTION,
"ADDED");
- mockResultEndpoint.expectedMessageCount(2);
-
mockResultEndpoint.expectedHeaderValuesReceivedInAnyOrder(KubernetesConstants.KUBERNETES_EVENT_ACTION,
"ADDED",
- "DELETED");
Exchange ex = template.request("direct:createService", exchange -> {
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME,
"default");
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_SERVICE_NAME, "test");
@@ -79,7 +84,15 @@ public class KubernetesServicesConsumerTest extends
KubernetesTestSupport {
assertEquals("test", serv.getMetadata().getName());
- ex = template.request("direct:deleteService", exchange -> {
+ mockResultEndpoint.assertIsSatisfied();
+ }
+
+ @Test
+ @Order(2)
+ public void deleteService() throws Exception {
+ mockResultEndpoint.expectedMessageCount(2);
+
+ Exchange ex = template.request("direct:deleteService", exchange -> {
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME,
"default");
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_SERVICE_NAME, "test");
});
@@ -88,8 +101,6 @@ public class KubernetesServicesConsumerTest extends
KubernetesTestSupport {
assertTrue(servDeleted);
- Thread.sleep(3000);
-
mockResultEndpoint.assertIsSatisfied();
}