This is an automated email from the ASF dual-hosted git repository. lburgazzoli pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit 212930598d83988f6ef960f7e2b7b89ef272aee7 Author: lburgazzoli <lburgazz...@gmail.com> AuthorDate: Mon May 28 15:03:57 2018 +0200 CAMEL-12502: camel cloud : create a service route policy --- .../impl/cloud/ServiceRegistrationRoutePolicy.java | 8 ++ .../camel/impl/cloud/ServiceRegistryTest.java | 94 +++++++++++++++++++++- 2 files changed, 101 insertions(+), 1 deletion(-) diff --git a/camel-core/src/main/java/org/apache/camel/impl/cloud/ServiceRegistrationRoutePolicy.java b/camel-core/src/main/java/org/apache/camel/impl/cloud/ServiceRegistrationRoutePolicy.java index 57a3000..e0eb073 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/cloud/ServiceRegistrationRoutePolicy.java +++ b/camel-core/src/main/java/org/apache/camel/impl/cloud/ServiceRegistrationRoutePolicy.java @@ -151,6 +151,10 @@ public class ServiceRegistrationRoutePolicy extends RoutePolicySupport implement if (serviceName == null) { // if not check if the route group is defined use the route group serviceName = route.getGroup(); + + if (serviceName != null) { + properties.put(ServiceDefinition.SERVICE_META_NAME, serviceName); + } } if (ObjectHelper.isEmpty(serviceName)) { @@ -165,6 +169,10 @@ public class ServiceRegistrationRoutePolicy extends RoutePolicySupport implement if (route.getRouteContext().getRoute().hasCustomIdAssigned()) { serviceId = route.getId(); } + + if (serviceId != null) { + properties.put(ServiceDefinition.SERVICE_META_ID, serviceId); + } } if (serviceId == null) { // finally auto generate the service id diff --git a/camel-core/src/test/java/org/apache/camel/impl/cloud/ServiceRegistryTest.java b/camel-core/src/test/java/org/apache/camel/impl/cloud/ServiceRegistryTest.java index 6c3cdaa..914f839 100644 --- a/camel-core/src/test/java/org/apache/camel/impl/cloud/ServiceRegistryTest.java +++ b/camel-core/src/test/java/org/apache/camel/impl/cloud/ServiceRegistryTest.java @@ -41,12 +41,13 @@ public class ServiceRegistryTest extends ContextTestSupport { return false; } + // ********************* // Tests // ********************* @Test - public void testServiceRegistrationWithRouteproperties() throws Exception { + public void testServiceRegistrationWithRouteIdAndGroup() throws Exception { final String serviceName = UUID.randomUUID().toString(); final String serviceId = UUID.randomUUID().toString(); final int port = 9090; @@ -54,6 +55,51 @@ public class ServiceRegistryTest extends ContextTestSupport { context.addRouteDefinition( new RouteDefinition() .from("direct:start") + .routeGroup(serviceName) + .routeId(serviceId) + .routeProperty(ServiceDefinition.SERVICE_META_HOST, "localhost") + .routeProperty(ServiceDefinition.SERVICE_META_PORT, "" + port) + .routeProperty("service.meta1", "meta1") + .routeProperty("meta2", "meta2") + .routePolicy(new ServiceRegistrationRoutePolicy()) + .to("mock:end") + ); + + InMemoryServiceRegistry sr = new InMemoryServiceRegistry(); + + context.addService(sr); + context.start(); + + final Map<String, ServiceDefinition> defs = sr.getDefinitions(); + + assertThat(defs).hasSize(1); + + // basic properties + assertThat(defs.values()).first().hasFieldOrPropertyWithValue("name", serviceName); + assertThat(defs.values()).first().hasFieldOrPropertyWithValue("id", serviceId); + assertThat(defs.values()).first().hasFieldOrPropertyWithValue("host", "localhost"); + assertThat(defs.values()).first().hasFieldOrPropertyWithValue("port", port); + + // metadata + assertThat(defs.get(serviceId).getMetadata()).containsEntry(ServiceDefinition.SERVICE_META_NAME, serviceName); + assertThat(defs.get(serviceId).getMetadata()).containsEntry(ServiceDefinition.SERVICE_META_ID, serviceId); + assertThat(defs.get(serviceId).getMetadata()).containsEntry(ServiceDefinition.SERVICE_META_HOST, "localhost"); + assertThat(defs.get(serviceId).getMetadata()).containsEntry(ServiceDefinition.SERVICE_META_PORT, "" + port); + assertThat(defs.get(serviceId).getMetadata()).containsEntry("service.meta1", "meta1"); + assertThat(defs.get(serviceId).getMetadata()).doesNotContainKeys("meta2"); + } + + @Test + public void testServiceRegistrationWithRouteIdAndGroupOverride() throws Exception { + final String serviceName = UUID.randomUUID().toString(); + final String serviceId = UUID.randomUUID().toString(); + final int port = 9090; + + context.addRouteDefinition( + new RouteDefinition() + .from("direct:start") + .routeGroup("service-name") + .routeId("service-id") .routeProperty(ServiceDefinition.SERVICE_META_NAME, serviceName) .routeProperty(ServiceDefinition.SERVICE_META_ID, serviceId) .routeProperty(ServiceDefinition.SERVICE_META_HOST, "localhost") @@ -86,7 +132,53 @@ public class ServiceRegistryTest extends ContextTestSupport { assertThat(defs.get(serviceId).getMetadata()).containsEntry(ServiceDefinition.SERVICE_META_PORT, "" + port); assertThat(defs.get(serviceId).getMetadata()).containsEntry("service.meta1", "meta1"); assertThat(defs.get(serviceId).getMetadata()).doesNotContainKeys("meta2"); + } + + // ********************* + // Tests + // ********************* + + @Test + public void testServiceRegistrationWithRouteProperties() throws Exception { + final String serviceName = UUID.randomUUID().toString(); + final String serviceId = UUID.randomUUID().toString(); + final int port = 9090; + + context.addRouteDefinition( + new RouteDefinition() + .from("direct:start") + .routeProperty(ServiceDefinition.SERVICE_META_NAME, serviceName) + .routeProperty(ServiceDefinition.SERVICE_META_ID, serviceId) + .routeProperty(ServiceDefinition.SERVICE_META_HOST, "localhost") + .routeProperty(ServiceDefinition.SERVICE_META_PORT, "" + port) + .routeProperty("service.meta1", "meta1") + .routeProperty("meta2", "meta2") + .routePolicy(new ServiceRegistrationRoutePolicy()) + .to("mock:end") + ); + InMemoryServiceRegistry sr = new InMemoryServiceRegistry(); + + context.addService(sr); + context.start(); + + final Map<String, ServiceDefinition> defs = sr.getDefinitions(); + + assertThat(defs).hasSize(1); + + // basic properties + assertThat(defs.values()).first().hasFieldOrPropertyWithValue("name", serviceName); + assertThat(defs.values()).first().hasFieldOrPropertyWithValue("id", serviceId); + assertThat(defs.values()).first().hasFieldOrPropertyWithValue("host", "localhost"); + assertThat(defs.values()).first().hasFieldOrPropertyWithValue("port", port); + + // metadata + assertThat(defs.get(serviceId).getMetadata()).containsEntry(ServiceDefinition.SERVICE_META_NAME, serviceName); + assertThat(defs.get(serviceId).getMetadata()).containsEntry(ServiceDefinition.SERVICE_META_ID, serviceId); + assertThat(defs.get(serviceId).getMetadata()).containsEntry(ServiceDefinition.SERVICE_META_HOST, "localhost"); + assertThat(defs.get(serviceId).getMetadata()).containsEntry(ServiceDefinition.SERVICE_META_PORT, "" + port); + assertThat(defs.get(serviceId).getMetadata()).containsEntry("service.meta1", "meta1"); + assertThat(defs.get(serviceId).getMetadata()).doesNotContainKeys("meta2"); } // ********************* -- To stop receiving notification emails like this one, please contact lburgazz...@apache.org.