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.

Reply via email to