You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by pz...@apache.org on 2021/01/21 17:27:33 UTC
[knox] branch master updated: KNOX-2530 - Support qualifying
service params for CM discovery control (#398)
This is an automated email from the ASF dual-hosted git repository.
pzampino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/knox.git
The following commit(s) were added to refs/heads/master by this push:
new 29011d0 KNOX-2530 - Support qualifying service params for CM discovery control (#398)
29011d0 is described below
commit 29011d06bd61145ca8e894b47a3ecc5b6dfdc565
Author: Phil Zampino <pz...@apache.org>
AuthorDate: Thu Jan 21 12:27:25 2021 -0500
KNOX-2530 - Support qualifying service params for CM discovery control (#398)
---
.../discovery/cm/ClouderaManagerCluster.java | 26 +++++++++++++++++-----
.../topology/discovery/cm/ServiceModel.java | 21 +++++++++++++++++
.../cm/model/hdfs/HdfsUIServiceModelGenerator.java | 23 +++++++++++++++++++
.../model/hdfs/NameNodeServiceModelGenerator.java | 7 +++++-
.../model/hdfs/WebHdfsServiceModelGenerator.java | 16 -------------
.../cm/model/solr/SolrServiceModelGenerator.java | 7 ++++++
.../model/AbstractServiceModelGeneratorTest.java | 17 +++++++++++---
.../hdfs/HdfsUIServiceModelGeneratorTest.java | 2 +-
.../hdfs/NameNodeServiceModelGeneratorTest.java | 13 ++++++++++-
.../hdfs/WebHdfsServiceModelGeneratorTest.java | 26 +++++++++++++++++++++-
.../model/solr/SolrServiceModelGeneratorTest.java | 16 ++++++++++++-
11 files changed, 144 insertions(+), 30 deletions(-)
diff --git a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/ClouderaManagerCluster.java b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/ClouderaManagerCluster.java
index 168dca3..c26ee56 100644
--- a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/ClouderaManagerCluster.java
+++ b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/ClouderaManagerCluster.java
@@ -45,11 +45,30 @@ public class ClouderaManagerCluster implements ServiceDiscovery.Cluster {
@Override
public List<String> getServiceURLs(String serviceName) {
+ return getServiceURLs(serviceName, null);
+ }
+
+ @Override
+ public List<String> getServiceURLs(String serviceName, Map<String, String> serviceParams) {
List<String> urls = new ArrayList<>();
+
if (serviceModels.containsKey(serviceName)) {
Map<String, List<ServiceModel>> roleModels = new HashMap<>();
for (ServiceModel model : serviceModels.get(serviceName)) {
- roleModels.computeIfAbsent(model.getRoleType(), l -> new ArrayList<>()).add(model);
+
+ // Check for discovery qualifier attributes of the service model
+ boolean isMatchingModel = true;
+ if (serviceParams != null) {
+ for (Map.Entry<String, String> serviceParam : serviceParams.entrySet()) {
+ if (!serviceParam.getValue().equals(model.getQualifyingServiceParam(serviceParam.getKey()))) {
+ isMatchingModel = false;
+ }
+ }
+ }
+
+ if (isMatchingModel) {
+ roleModels.computeIfAbsent(model.getRoleType(), l -> new ArrayList<>()).add(model);
+ }
}
urls.addAll((ServiceURLCollectors.getCollector(serviceName)).collect(roleModels));
@@ -58,11 +77,6 @@ public class ClouderaManagerCluster implements ServiceDiscovery.Cluster {
}
@Override
- public List<String> getServiceURLs(String serviceName, Map<String, String> serviceParams) {
- return getServiceURLs(serviceName); // TODO: PJZ: Support things like HDFS nameservice params for providing the correct URL(s)?
- }
-
- @Override
public ZooKeeperConfig getZooKeeperConfiguration(String serviceName) {
return null;
}
diff --git a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/ServiceModel.java b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/ServiceModel.java
index 96b0c31..0d379a0 100644
--- a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/ServiceModel.java
+++ b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/ServiceModel.java
@@ -37,6 +37,9 @@ public class ServiceModel {
private final String roleType;
private final String serviceUrl;
+ // Metadata for the model object, which is not directly from the service or role configuration
+ private final Map<String, String> qualifyingServiceParams = new ConcurrentHashMap<>();
+
// The service configuration properties used to created the model
private final Map<String, String> serviceConfigProperties = new ConcurrentHashMap<>();
@@ -62,6 +65,10 @@ public class ServiceModel {
this.serviceUrl = serviceUrl;
}
+ public void addQualifyingServiceParam(final String name, final String value) {
+ qualifyingServiceParams.put(name, (value != null ? value : NULL_VALUE));
+ }
+
public void addServiceProperty(final String name, final String value) {
serviceConfigProperties.put(name, (value != null ? value : NULL_VALUE));
}
@@ -71,6 +78,20 @@ public class ServiceModel {
}
/**
+ * @return The metadata properties associated with the model, which can be used to qualify service discovery.
+ */
+ public Map<String, String> getQualifyingServiceParams() {
+ return qualifyingServiceParams;
+ }
+
+ /**
+ * @return The value of the metadata property associated with the model, which can be used to qualify service discovery.
+ */
+ public String getQualifyingServiceParam(final String name) {
+ return qualifyingServiceParams.get(name);
+ }
+
+ /**
* @return The service configuration properties employed by the model.
*/
public Map<String, String> getServiceProperties() {
diff --git a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/HdfsUIServiceModelGenerator.java b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/HdfsUIServiceModelGenerator.java
index fe894fd..67e6ef6 100644
--- a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/HdfsUIServiceModelGenerator.java
+++ b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/HdfsUIServiceModelGenerator.java
@@ -24,6 +24,7 @@ import com.cloudera.api.swagger.model.ApiServiceConfig;
import org.apache.knox.gateway.topology.discovery.cm.ServiceModel;
import java.util.Locale;
+import java.util.Map;
public class HdfsUIServiceModelGenerator extends NameNodeServiceModelGenerator {
public static final String SERVICE = "HDFSUI";
@@ -65,7 +66,29 @@ public class HdfsUIServiceModelGenerator extends NameNodeServiceModelGenerator {
model.addRoleProperty(role.getType(), HTTPS_PORT, getRoleConfigValue(roleConfig, HTTPS_PORT));
model.addRoleProperty(role.getType(), HTTP_PORT, getRoleConfigValue(roleConfig, HTTP_PORT));
+ ServiceModel parent = super.generateService(service, serviceConfig, role, roleConfig);
+ addParentModelMetadata(model, parent);
+
return model;
}
+ protected void addParentModelMetadata(final ServiceModel model, final ServiceModel parent) {
+ // Add parent model properties
+ for (Map.Entry<String, String> parentProp : parent.getQualifyingServiceParams().entrySet()) {
+ model.addQualifyingServiceParam(parentProp.getKey(), parentProp.getValue());
+ }
+
+ // Add parent service properties
+ for (Map.Entry<String, String> parentProp : parent.getServiceProperties().entrySet()) {
+ model.addServiceProperty(parentProp.getKey(), parentProp.getValue());
+ }
+
+ // Add parent role properties
+ for (Map.Entry<String, Map<String, String>> parentProps : parent.getRoleProperties().entrySet()) {
+ for (Map.Entry<String, String> prop : parentProps.getValue().entrySet()) {
+ model.addRoleProperty(parentProps.getKey(), prop.getKey(), prop.getValue());
+ }
+ }
+ }
+
}
diff --git a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/NameNodeServiceModelGenerator.java b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/NameNodeServiceModelGenerator.java
index f981344..c867809 100644
--- a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/NameNodeServiceModelGenerator.java
+++ b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/NameNodeServiceModelGenerator.java
@@ -31,6 +31,8 @@ public class NameNodeServiceModelGenerator extends AbstractServiceModelGenerator
public static final String SERVICE_TYPE = "HDFS";
public static final String ROLE_TYPE = "NAMENODE";
+ static final String DISCOVERY_NAMESERVICE = "discovery-nameservice";
+
static final String AUTOFAILOVER_ENABLED = "autofailover_enabled";
static final String NN_NAMESERVICE = "dfs_federation_namenode_nameservice";
static final String NN_PORT = "namenode_port";
@@ -62,7 +64,7 @@ public class NameNodeServiceModelGenerator extends AbstractServiceModelGenerator
ApiConfigList roleConfig) throws ApiException {
boolean haEnabled = Boolean.parseBoolean(getRoleConfigValue(roleConfig, AUTOFAILOVER_ENABLED));
String serviceUrl;
- if(haEnabled) {
+ if (haEnabled) {
String nameservice = getRoleConfigValue(roleConfig, NN_NAMESERVICE);
serviceUrl = String.format(Locale.getDefault(), "hdfs://%s", nameservice);
} else {
@@ -76,6 +78,9 @@ public class NameNodeServiceModelGenerator extends AbstractServiceModelGenerator
model.addRoleProperty(getRoleType(), NN_PORT, getRoleConfigValue(roleConfig, NN_PORT));
if (haEnabled) {
model.addRoleProperty(getRoleType(), NN_NAMESERVICE, getRoleConfigValue(roleConfig, NN_NAMESERVICE));
+
+ // Add the nameservice metadata for qualifying the discovery process for this service
+ model.addQualifyingServiceParam(DISCOVERY_NAMESERVICE, model.getRoleProperties().get(getRoleType()).get(NN_NAMESERVICE));
}
return model;
diff --git a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/WebHdfsServiceModelGenerator.java b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/WebHdfsServiceModelGenerator.java
index 1cc30f4..fdef01e 100644
--- a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/WebHdfsServiceModelGenerator.java
+++ b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/WebHdfsServiceModelGenerator.java
@@ -24,8 +24,6 @@ import com.cloudera.api.swagger.model.ApiServiceConfig;
import org.apache.knox.gateway.topology.discovery.cm.ServiceModel;
import org.apache.knox.gateway.topology.discovery.cm.ServiceModelGeneratorHandleResponse;
-import java.util.Map;
-
public class WebHdfsServiceModelGenerator extends HdfsUIServiceModelGenerator {
private static final String SERVICE = "WEBHDFS";
private static final String WEBHDFS_SUFFIX = "/webhdfs";
@@ -70,18 +68,4 @@ public class WebHdfsServiceModelGenerator extends HdfsUIServiceModelGenerator {
return model;
}
- private void addParentModelMetadata(final ServiceModel model, final ServiceModel parent) {
- // Add parent model properties
- for (Map.Entry<String, String> parentProp : parent.getServiceProperties().entrySet()) {
- model.addServiceProperty(parentProp.getKey(), parentProp.getValue());
- }
-
- // Add parent role properties
- for (Map.Entry<String, Map<String, String>> parentProps : parent.getRoleProperties().entrySet()) {
- for (Map.Entry<String, String> prop : parentProps.getValue().entrySet()) {
- model.addRoleProperty(parentProps.getKey(), prop.getKey(), prop.getValue());
- }
- }
- }
-
}
diff --git a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/solr/SolrServiceModelGenerator.java b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/solr/SolrServiceModelGenerator.java
index 75ae53b..772d3d6 100644
--- a/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/solr/SolrServiceModelGenerator.java
+++ b/gateway-discovery-cm/src/main/java/org/apache/knox/gateway/topology/discovery/cm/model/solr/SolrServiceModelGenerator.java
@@ -30,6 +30,9 @@ public class SolrServiceModelGenerator extends AbstractServiceModelGenerator {
public static final String SERVICE_TYPE = "SOLR";
public static final String ROLE_TYPE = "SOLR_SERVER";
+ static final String DISCOVERY_SERVICE_NAME = "discovery-service-name";
+ static final String DISCOVERY_SERVICE_DISPLAY_NAME = "discovery-service-display-name";
+
static final String USE_SSL = "solr_use_ssl";
static final String HTTP_PORT = "solr_http_port";
static final String HTTPS_PORT = "solr_https_port";
@@ -77,6 +80,10 @@ public class SolrServiceModelGenerator extends AbstractServiceModelGenerator {
model.addRoleProperty(getRoleType(), HTTP_PORT, getRoleConfigValue(roleConfig, HTTP_PORT));
model.addRoleProperty(getRoleType(), HTTPS_PORT, getRoleConfigValue(roleConfig, HTTPS_PORT));
+ // Add some service details for qualifying the discovery process for this service
+ model.addQualifyingServiceParam(DISCOVERY_SERVICE_NAME, service.getName());
+ model.addQualifyingServiceParam(DISCOVERY_SERVICE_DISPLAY_NAME, service.getDisplayName());
+
return model;
}
diff --git a/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/AbstractServiceModelGeneratorTest.java b/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/AbstractServiceModelGeneratorTest.java
index 9b66a6e..e6b7abd 100644
--- a/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/AbstractServiceModelGeneratorTest.java
+++ b/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/AbstractServiceModelGeneratorTest.java
@@ -94,13 +94,16 @@ public abstract class AbstractServiceModelGeneratorTest extends AbstractCMDiscov
protected void validateServiceModel(ServiceModel candidate,
Map<String, String> serviceConfig,
- Map<String, String> roleConfig) {
+ Map<String, String> roleConfig,
+ boolean validateCounts) {
assertNotNull(candidate);
// Validate the service configuration
Map<String, String> modelServiceProps = candidate.getServiceProperties();
- assertEquals(serviceConfig.size(), modelServiceProps.size());
+ if (validateCounts) {
+ assertEquals(serviceConfig.size(), modelServiceProps.size());
+ }
for (Map.Entry<String, String> serviceProp : serviceConfig.entrySet()) {
assertTrue(modelServiceProps.containsKey(serviceProp.getKey()));
assertEquals(serviceConfig.get(serviceProp.getKey()), modelServiceProps.get(serviceProp.getKey()));
@@ -108,11 +111,19 @@ public abstract class AbstractServiceModelGeneratorTest extends AbstractCMDiscov
// Validate the role configuration
Map<String, String> modelRoleProperties = candidate.getRoleProperties().get(getRoleType());
- assertEquals(roleConfig.size(), modelRoleProperties.size());
+ if (validateCounts) {
+ assertEquals(roleConfig.size(), modelRoleProperties.size());
+ }
for (Map.Entry<String, String> roleProp : roleConfig.entrySet()) {
assertTrue(modelRoleProperties.containsKey(roleProp.getKey()));
assertEquals(roleConfig.get(roleProp.getKey()), modelRoleProperties.get(roleProp.getKey()));
}
}
+ protected void validateServiceModel(ServiceModel candidate,
+ Map<String, String> serviceConfig,
+ Map<String, String> roleConfig) {
+ validateServiceModel(candidate, serviceConfig, roleConfig, true);
+ }
+
}
diff --git a/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/HdfsUIServiceModelGeneratorTest.java b/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/HdfsUIServiceModelGeneratorTest.java
index 5879d65..4977bf3 100644
--- a/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/HdfsUIServiceModelGeneratorTest.java
+++ b/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/HdfsUIServiceModelGeneratorTest.java
@@ -33,7 +33,7 @@ public class HdfsUIServiceModelGeneratorTest extends AbstractServiceModelGenerat
roleConfig.put(HdfsUIServiceModelGenerator.HTTP_PORT, "12345");
roleConfig.put(HdfsUIServiceModelGenerator.HTTPS_PORT, "54321");
- validateServiceModel(createServiceModel(serviceConfig, roleConfig), serviceConfig, roleConfig);
+ validateServiceModel(createServiceModel(serviceConfig, roleConfig), serviceConfig, roleConfig, false);
}
@Override
diff --git a/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/NameNodeServiceModelGeneratorTest.java b/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/NameNodeServiceModelGeneratorTest.java
index ef1848d..928e0d9 100644
--- a/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/NameNodeServiceModelGeneratorTest.java
+++ b/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/NameNodeServiceModelGeneratorTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.knox.gateway.topology.discovery.cm.model.hdfs;
+import org.apache.knox.gateway.topology.discovery.cm.ServiceModel;
import org.apache.knox.gateway.topology.discovery.cm.ServiceModelGenerator;
import org.apache.knox.gateway.topology.discovery.cm.model.AbstractServiceModelGeneratorTest;
import org.junit.Test;
@@ -24,6 +25,8 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
+import static org.junit.Assert.assertEquals;
+
public class NameNodeServiceModelGeneratorTest extends AbstractServiceModelGeneratorTest {
@Test
@@ -34,7 +37,15 @@ public class NameNodeServiceModelGeneratorTest extends AbstractServiceModelGener
roleConfig.put(NameNodeServiceModelGenerator.NN_NAMESERVICE, "myService");
roleConfig.put(NameNodeServiceModelGenerator.NN_PORT, "12345");
- validateServiceModel(createServiceModel(serviceConfig, roleConfig), serviceConfig, roleConfig);
+ ServiceModel generated = createServiceModel(serviceConfig, roleConfig);
+ validateServiceModel(generated, serviceConfig, roleConfig);
+
+ // Validate model metadata properties
+ Map<String, String> modelProps = generated.getQualifyingServiceParams();
+ assertEquals("Expected one service model properties", 1, modelProps.size());
+ assertEquals("Expected " + NameNodeServiceModelGenerator.DISCOVERY_NAMESERVICE + " model property.",
+ roleConfig.get(NameNodeServiceModelGenerator.NN_NAMESERVICE),
+ modelProps.get(NameNodeServiceModelGenerator.DISCOVERY_NAMESERVICE));
}
@Test
diff --git a/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/WebHdfsServiceModelGeneratorTest.java b/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/WebHdfsServiceModelGeneratorTest.java
index 4e90e77..12b33f5 100644
--- a/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/WebHdfsServiceModelGeneratorTest.java
+++ b/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/hdfs/WebHdfsServiceModelGeneratorTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.knox.gateway.topology.discovery.cm.model.hdfs;
+import org.apache.knox.gateway.topology.discovery.cm.ServiceModel;
import org.apache.knox.gateway.topology.discovery.cm.ServiceModelGenerator;
import org.apache.knox.gateway.topology.discovery.cm.model.AbstractServiceModelGeneratorTest;
import org.junit.Test;
@@ -24,6 +25,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -54,7 +56,29 @@ public class WebHdfsServiceModelGeneratorTest extends AbstractServiceModelGenera
roleConfig.put(WebHdfsServiceModelGenerator.HTTP_PORT, "12345");
roleConfig.put(WebHdfsServiceModelGenerator.HTTPS_PORT, "54321");
- validateServiceModel(createServiceModel(serviceConfig, roleConfig), serviceConfig, roleConfig);
+ validateServiceModel(createServiceModel(serviceConfig, roleConfig), serviceConfig, roleConfig, false);
+ }
+
+ @Test
+ public void testServiceModelMetadataWithNameService() {
+ final Map<String, String> serviceConfig = new HashMap<>();
+ serviceConfig.put(WebHdfsServiceModelGenerator.WEBHDFS_ENABLED, "true");
+ serviceConfig.put(WebHdfsServiceModelGenerator.SSL_ENABLED, "false");
+
+ final Map<String, String> roleConfig = new HashMap<>();
+ roleConfig.put(WebHdfsServiceModelGenerator.AUTOFAILOVER_ENABLED, "true");
+ roleConfig.put(WebHdfsServiceModelGenerator.NN_NAMESERVICE, "myService");
+ roleConfig.put(WebHdfsServiceModelGenerator.NN_PORT, "12345");
+
+ ServiceModel generated = createServiceModel(serviceConfig, roleConfig);
+ validateServiceModel(generated, serviceConfig, roleConfig, false);
+
+ // Validate model metadata properties
+ Map<String, String> modelProps = generated.getQualifyingServiceParams();
+ assertEquals("Expected one service model properties", 1, modelProps.size());
+ assertEquals("Expected " + NameNodeServiceModelGenerator.DISCOVERY_NAMESERVICE + " model property.",
+ roleConfig.get(WebHdfsServiceModelGenerator.NN_NAMESERVICE),
+ modelProps.get(WebHdfsServiceModelGenerator.DISCOVERY_NAMESERVICE));
}
@Override
diff --git a/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/solr/SolrServiceModelGeneratorTest.java b/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/solr/SolrServiceModelGeneratorTest.java
index e1eac9d..4c2d2fc 100644
--- a/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/solr/SolrServiceModelGeneratorTest.java
+++ b/gateway-discovery-cm/src/test/java/org/apache/knox/gateway/topology/discovery/cm/model/solr/SolrServiceModelGeneratorTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.knox.gateway.topology.discovery.cm.model.solr;
+import org.apache.knox.gateway.topology.discovery.cm.ServiceModel;
import org.apache.knox.gateway.topology.discovery.cm.ServiceModelGenerator;
import org.apache.knox.gateway.topology.discovery.cm.model.AbstractServiceModelGeneratorTest;
import org.junit.Test;
@@ -23,6 +24,8 @@ import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
+import static org.junit.Assert.assertEquals;
+
public class SolrServiceModelGeneratorTest extends AbstractServiceModelGeneratorTest {
@Test
@@ -33,7 +36,18 @@ public class SolrServiceModelGeneratorTest extends AbstractServiceModelGenerator
roleConfig.put(SolrServiceModelGenerator.HTTP_PORT, "2468");
roleConfig.put(SolrServiceModelGenerator.HTTPS_PORT, "1357");
- validateServiceModel(createServiceModel(serviceConfig, roleConfig), serviceConfig, roleConfig);
+ ServiceModel generated = createServiceModel(serviceConfig, roleConfig);
+ validateServiceModel(generated, serviceConfig, roleConfig);
+
+ // Validate model metadata properties
+ Map<String, String> modelProps = generated.getQualifyingServiceParams();
+ assertEquals("Expected two service model properties", 2, modelProps.size());
+ assertEquals("Expected " + SolrServiceModelGenerator.DISCOVERY_SERVICE_NAME + " model property.",
+ getServiceType() + "-1",
+ modelProps.get(SolrServiceModelGenerator.DISCOVERY_SERVICE_NAME));
+ assertEquals("Expected " + SolrServiceModelGenerator.DISCOVERY_SERVICE_DISPLAY_NAME + " model property.",
+ "null",
+ modelProps.get(SolrServiceModelGenerator.DISCOVERY_SERVICE_DISPLAY_NAME));
}
@Override