You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@eagle.apache.org by ha...@apache.org on 2017/01/14 08:13:18 UTC
eagle git commit: [MINOR] Fix unit test cases caused by forcefully
using fasterxml-jackson
Repository: eagle
Updated Branches:
refs/heads/master 14f7f3fa3 -> 2160673c8
[MINOR] Fix unit test cases caused by forcefully using fasterxml-jackson
Fix unit test cases after using `fasterxml-jackson`:
* `TestGenericEntityServiceResource.java`
* `TestResourceUnmarshal.java`
Author: Hao Chen <ha...@apache.org>
Closes #776 from haoch/FixUT.
Project: http://git-wip-us.apache.org/repos/asf/eagle/repo
Commit: http://git-wip-us.apache.org/repos/asf/eagle/commit/2160673c
Tree: http://git-wip-us.apache.org/repos/asf/eagle/tree/2160673c
Diff: http://git-wip-us.apache.org/repos/asf/eagle/diff/2160673c
Branch: refs/heads/master
Commit: 2160673c81af3ee850f9cb514104421e8b6b74dc
Parents: 14f7f3f
Author: Hao Chen <ha...@apache.org>
Authored: Sat Jan 14 16:12:59 2017 +0800
Committer: Hao Chen <ha...@apache.org>
Committed: Sat Jan 14 16:12:59 2017 +0800
----------------------------------------------------------------------
.../client/impl/EagleServiceClientImpl.java | 150 +++++++++++--------
.../TestGenericEntityServiceResource.java | 2 +-
.../service/generic/TestResourceUnmarshal.java | 27 +---
.../eagle/topology/TopologyCheckAppConfig.java | 18 +--
.../topology/resolver/TopologyRackResolver.java | 6 +-
.../ClusterNodeAPITopologyRackResolver.java | 6 +-
.../impl/IPMaskTopologyRackResolver.java | 5 +-
.../topology/storm/TopologyDataExtractor.java | 23 +--
.../TestClusterNodeAPITopologyRackResolver.java | 19 ++-
.../src/main/webapp/WEB-INF/web.xml | 0
pom.xml | 2 -
11 files changed, 135 insertions(+), 123 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/eagle/blob/2160673c/eagle-core/eagle-query/eagle-client-base/src/main/java/org/apache/eagle/service/client/impl/EagleServiceClientImpl.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-client-base/src/main/java/org/apache/eagle/service/client/impl/EagleServiceClientImpl.java b/eagle-core/eagle-query/eagle-client-base/src/main/java/org/apache/eagle/service/client/impl/EagleServiceClientImpl.java
index f0b6283..0411b90 100644
--- a/eagle-core/eagle-query/eagle-client-base/src/main/java/org/apache/eagle/service/client/impl/EagleServiceClientImpl.java
+++ b/eagle-core/eagle-query/eagle-client-base/src/main/java/org/apache/eagle/service/client/impl/EagleServiceClientImpl.java
@@ -16,13 +16,14 @@
*/
package org.apache.eagle.service.client.impl;
+import com.sun.jersey.api.client.WebResource;
import com.typesafe.config.Config;
+import com.typesafe.config.ConfigException;
import org.apache.eagle.log.base.taggedlog.TaggedLogAPIEntity;
import org.apache.eagle.log.entity.GenericServiceAPIResponseEntity;
import org.apache.eagle.service.client.EagleServiceClientException;
import org.apache.eagle.service.client.EagleServiceConnector;
import org.apache.eagle.service.client.EagleServiceSingleEntityQueryRequest;
-import com.sun.jersey.api.client.WebResource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -32,7 +33,11 @@ import java.util.List;
import java.util.Map;
public class EagleServiceClientImpl extends EagleServiceBaseClient {
- private final static Logger LOG = LoggerFactory.getLogger(EagleServiceClientImpl.class);
+ private static final Logger LOG = LoggerFactory.getLogger(EagleServiceClientImpl.class);
+ private static final String SERVICE_HOST_KEY = "service.host";
+ private static final String SERVICE_PORT_KEY = "service.port";
+ private static final String SERVICE_USERNAME_KEY = "service.username";
+ private static final String SERVICE_PASSWORD_KEY = "service.password";
public EagleServiceClientImpl(String host, int port) {
super(host, port);
@@ -43,31 +48,46 @@ public class EagleServiceClientImpl extends EagleServiceBaseClient {
this(connector.getEagleServiceHost(), connector.getEagleServicePort(), connector.getUsername(), connector.getPassword());
}
- public EagleServiceClientImpl (Config config) {
+ public EagleServiceClientImpl(Config config) {
super(
- config.hasPath("service.host") ? config.getString("service.host") : "localhost",
- config.hasPath("service.port") ? config.getInt("service.port") : 9090,
- config.hasPath("service.username") ? config.getString("service.username") : null,
- config.hasPath("service.password") ? config.getString("service.password") : null
+ config.hasPath(SERVICE_HOST_KEY) ? config.getString(SERVICE_HOST_KEY) : "localhost",
+ tryGetPortFromConfig(config),
+ config.hasPath(SERVICE_USERNAME_KEY) ? config.getString(SERVICE_USERNAME_KEY) : null,
+ config.hasPath(SERVICE_PASSWORD_KEY) ? config.getString(SERVICE_PASSWORD_KEY) : null
);
}
- public EagleServiceClientImpl(String host, int port, String username, String password){
+ /**
+ * Try to get eagle service port from config by key: service.port no matter STRING or INT.
+ */
+ private static int tryGetPortFromConfig(Config config) {
+ if (config.hasPath(SERVICE_PORT_KEY)) {
+ try {
+ return config.getInt(SERVICE_PORT_KEY);
+ } catch (ConfigException.WrongType wrongType) {
+ return Integer.valueOf(config.getString(SERVICE_PORT_KEY));
+ }
+ } else {
+ return 9090;
+ }
+ }
+
+ public EagleServiceClientImpl(String host, int port, String username, String password) {
super(host, port, username, password);
}
- public EagleServiceClientImpl(String host, int port, String basePath, String username, String password){
+ public EagleServiceClientImpl(String host, int port, String basePath, String username, String password) {
super(host, port, basePath, username, password);
}
- private String getWholePath(String urlString){
- return getBaseEndpoint() + urlString;
+ private String getWholePath(String urlString) {
+ return getBaseEndpoint() + urlString;
}
@Override
- public <E extends TaggedLogAPIEntity> GenericServiceAPIResponseEntity<String> create(List<E> entities, String serviceName) throws IOException,EagleServiceClientException {
- checkNotNull(serviceName,"serviceName");
- checkNotNull(entities,"entities");
+ public <E extends TaggedLogAPIEntity> GenericServiceAPIResponseEntity<String> create(List<E> entities, String serviceName) throws IOException, EagleServiceClientException {
+ checkNotNull(serviceName, "serviceName");
+ checkNotNull(entities, "entities");
final GenericServiceAPIResponseEntity<String> response;
response = postEntitiesWithService(GENERIC_ENTITY_PATH, entities, serviceName);
@@ -79,18 +99,20 @@ public class EagleServiceClientImpl extends EagleServiceBaseClient {
@Override
public <E extends TaggedLogAPIEntity> GenericServiceAPIResponseEntity<String> create(List<E> entities) throws IOException, EagleServiceClientException {
- checkNotNull(entities,"entities");
+ checkNotNull(entities, "entities");
- Map<String,List<E>> serviceEntityMap = groupEntitiesByService(entities);
- if(LOG.isDebugEnabled()) LOG.debug("Creating entities for "+serviceEntityMap.keySet().size()+" services");
+ Map<String, List<E>> serviceEntityMap = groupEntitiesByService(entities);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Creating entities for " + serviceEntityMap.keySet().size() + " services");
+ }
List<String> createdKeys = new LinkedList<String>();
- for(Map.Entry<String,List<E>> entry: serviceEntityMap.entrySet()){
- GenericServiceAPIResponseEntity<String> response = create(entry.getValue(),entry.getKey());
- if(!response.isSuccess()){
- throw new IOException("Service side exception: "+response.getException());
- }else if(response.getObj()!=null){
+ for (Map.Entry<String, List<E>> entry : serviceEntityMap.entrySet()) {
+ GenericServiceAPIResponseEntity<String> response = create(entry.getValue(), entry.getKey());
+ if (!response.isSuccess()) {
+ throw new IOException("Service side exception: " + response.getException());
+ } else if (response.getObj() != null) {
createdKeys.addAll(response.getObj());
}
}
@@ -102,18 +124,20 @@ public class EagleServiceClientImpl extends EagleServiceBaseClient {
@Override
public <E extends TaggedLogAPIEntity> GenericServiceAPIResponseEntity<String> delete(List<E> entities) throws IOException, EagleServiceClientException {
- checkNotNull(entities,"entities");
+ checkNotNull(entities, "entities");
- Map<String,List<E>> serviceEntityMap = groupEntitiesByService(entities);
- if(LOG.isDebugEnabled()) LOG.debug("Creating entities for "+serviceEntityMap.keySet().size()+" services");
+ Map<String, List<E>> serviceEntityMap = groupEntitiesByService(entities);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Creating entities for " + serviceEntityMap.keySet().size() + " services");
+ }
List<String> deletedKeys = new LinkedList<String>();
- for(Map.Entry<String,List<E>> entry: serviceEntityMap.entrySet()){
+ for (Map.Entry<String, List<E>> entry : serviceEntityMap.entrySet()) {
GenericServiceAPIResponseEntity<String> response = delete(entry.getValue(), entry.getKey());
- if(!response.isSuccess()){
- LOG.error("Got service exception: "+response.getException());
+ if (!response.isSuccess()) {
+ LOG.error("Got service exception: " + response.getException());
throw new IOException(response.getException());
- }else if(response.getObj()!=null){
+ } else if (response.getObj() != null) {
deletedKeys.addAll(response.getObj());
}
}
@@ -125,60 +149,64 @@ public class EagleServiceClientImpl extends EagleServiceBaseClient {
@SuppressWarnings("unchecked")
@Override
- public <E extends TaggedLogAPIEntity> GenericServiceAPIResponseEntity<String> delete(List<E> entities, String serviceName) throws IOException,EagleServiceClientException {
- checkNotNull(entities,"entities");
- checkNotNull(serviceName,"serviceName");
+ public <E extends TaggedLogAPIEntity> GenericServiceAPIResponseEntity<String> delete(List<E> entities, String serviceName) throws IOException, EagleServiceClientException {
+ checkNotNull(entities, "entities");
+ checkNotNull(serviceName, "serviceName");
- return postEntitiesWithService(GENERIC_ENTITY_DELETE_PATH,entities,serviceName);
+ return postEntitiesWithService(GENERIC_ENTITY_DELETE_PATH, entities, serviceName);
}
@SuppressWarnings("unchecked")
@Override
- public GenericServiceAPIResponseEntity<String> delete(EagleServiceSingleEntityQueryRequest request) throws IOException,EagleServiceClientException {
+ public GenericServiceAPIResponseEntity<String> delete(EagleServiceSingleEntityQueryRequest request) throws IOException, EagleServiceClientException {
String queryString = request.getQueryParameterString();
StringBuilder sb = new StringBuilder();
sb.append(GENERIC_ENTITY_PATH);
sb.append("?");
sb.append(queryString);
- final String urlString = sb.toString();
+ final String urlString = sb.toString();
- if(!this.silence) LOG.info("Going to delete by querying service: " + getWholePath(urlString));
+ if (!this.silence) {
+ LOG.info("Going to delete by querying service: " + getWholePath(urlString));
+ }
WebResource r = getWebResource(urlString);
return putAuthHeaderIfNeeded(r.accept(DEFAULT_MEDIA_TYPE)
- .header(CONTENT_TYPE, DEFAULT_HTTP_HEADER_CONTENT_TYPE))
- .delete(GenericServiceAPIResponseEntity.class);
+ .header(CONTENT_TYPE, DEFAULT_HTTP_HEADER_CONTENT_TYPE))
+ .delete(GenericServiceAPIResponseEntity.class);
}
@SuppressWarnings("unchecked")
@Override
public GenericServiceAPIResponseEntity<String> deleteById(List<String> ids, String serviceName) throws EagleServiceClientException, IOException {
- checkNotNull(serviceName,"serviceName");
- checkNotNull(ids,"ids");
+ checkNotNull(serviceName, "serviceName");
+ checkNotNull(ids, "ids");
final String json = marshall(ids);
final WebResource r = getWebResource(GENERIC_ENTITY_DELETE_PATH);
- return putAuthHeaderIfNeeded(r.queryParam(SERVICE_NAME,serviceName)
- .queryParam(DELETE_BY_ID, "true")
- .accept(DEFAULT_MEDIA_TYPE))
- .header(CONTENT_TYPE, DEFAULT_HTTP_HEADER_CONTENT_TYPE)
- .post(GenericServiceAPIResponseEntity.class, json);
+ return putAuthHeaderIfNeeded(r.queryParam(SERVICE_NAME, serviceName)
+ .queryParam(DELETE_BY_ID, "true")
+ .accept(DEFAULT_MEDIA_TYPE))
+ .header(CONTENT_TYPE, DEFAULT_HTTP_HEADER_CONTENT_TYPE)
+ .post(GenericServiceAPIResponseEntity.class, json);
}
@Override
public <E extends TaggedLogAPIEntity> GenericServiceAPIResponseEntity<String> update(List<E> entities) throws IOException, EagleServiceClientException {
- checkNotNull(entities,"entities");
+ checkNotNull(entities, "entities");
- Map<String,List<E>> serviceEntityMap = groupEntitiesByService(entities);
- if(LOG.isDebugEnabled()) LOG.debug("Updating entities for "+serviceEntityMap.keySet().size()+" services");
+ Map<String, List<E>> serviceEntityMap = groupEntitiesByService(entities);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Updating entities for " + serviceEntityMap.keySet().size() + " services");
+ }
List<String> createdKeys = new LinkedList<String>();
- for(Map.Entry<String,List<E>> entry: serviceEntityMap.entrySet()){
+ for (Map.Entry<String, List<E>> entry : serviceEntityMap.entrySet()) {
GenericServiceAPIResponseEntity<String> response = update(entry.getValue(), entry.getKey());
- if(!response.isSuccess()){
- throw new IOException("Got service exception when updating service "+entry.getKey()+" : "+response.getException());
- }else{
- if(response.getObj()!=null) {
+ if (!response.isSuccess()) {
+ throw new IOException("Got service exception when updating service " + entry.getKey() + " : " + response.getException());
+ } else {
+ if (response.getObj() != null) {
createdKeys.addAll(response.getObj());
}
}
@@ -192,10 +220,10 @@ public class EagleServiceClientImpl extends EagleServiceBaseClient {
@Override
public <E extends TaggedLogAPIEntity> GenericServiceAPIResponseEntity<String> update(List<E> entities, String serviceName) throws IOException, EagleServiceClientException {
- checkNotNull(entities,"entities");
- checkNotNull(serviceName,"serviceName");
+ checkNotNull(entities, "entities");
+ checkNotNull(serviceName, "serviceName");
- return putEntitiesWithService(GENERIC_ENTITY_PATH,entities,serviceName);
+ return putEntitiesWithService(GENERIC_ENTITY_PATH, entities, serviceName);
}
@Override
@@ -206,11 +234,13 @@ public class EagleServiceClientImpl extends EagleServiceBaseClient {
sb.append(GENERIC_ENTITY_PATH);
sb.append("?");
sb.append(queryString);
- final String urlString = sb.toString();
- if(!this.silence) LOG.info("Going to query service: " + getWholePath(urlString));
+ final String urlString = sb.toString();
+ if (!this.silence) {
+ LOG.info("Going to query service: " + getWholePath(urlString));
+ }
WebResource r = getWebResource(urlString);
return putAuthHeaderIfNeeded(r.accept(DEFAULT_MEDIA_TYPE))
- .header(CONTENT_TYPE, DEFAULT_HTTP_HEADER_CONTENT_TYPE)
- .get(GenericServiceAPIResponseEntity.class);
+ .header(CONTENT_TYPE, DEFAULT_HTTP_HEADER_CONTENT_TYPE)
+ .get(GenericServiceAPIResponseEntity.class);
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/eagle/blob/2160673c/eagle-core/eagle-query/eagle-service-base/src/test/java/org/apache/eagle/service/generic/TestGenericEntityServiceResource.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-service-base/src/test/java/org/apache/eagle/service/generic/TestGenericEntityServiceResource.java b/eagle-core/eagle-query/eagle-service-base/src/test/java/org/apache/eagle/service/generic/TestGenericEntityServiceResource.java
index 862f09b..2649ce5 100644
--- a/eagle-core/eagle-query/eagle-service-base/src/test/java/org/apache/eagle/service/generic/TestGenericEntityServiceResource.java
+++ b/eagle-core/eagle-query/eagle-service-base/src/test/java/org/apache/eagle/service/generic/TestGenericEntityServiceResource.java
@@ -206,7 +206,7 @@ public class TestGenericEntityServiceResource {
Assert.assertTrue(responseEntity.isSuccess());
Assert.assertTrue(responseEntity.getMeta().toString().startsWith("{firstTimestamp=null, totalResults=1, lastTimestamp=null, elapsedms="));
Assert.assertEquals(null, responseEntity.getType());
- Assert.assertEquals("{prefix=null, timestamp=" + timestamp + ", tags={cluster=test4UT, jobId=job_2, index=1, datacenter=dc1}, exp=null, encodedRowkey=null, serializeAlias=null, serializeVerbose=true, field1=1, field2=2, field3=3, field4=4, field5=5.0, field6=5.0, field7=7}", responseEntity.getObj().get(0).toString());
+ Assert.assertEquals("{timestamp=" + timestamp + ", tags={cluster=test4UT, jobId=job_2, index=1, datacenter=dc1}, serializeVerbose=true, field1=1, field2=2, field3=3, field4=4, field5=5.0, field6=5.0, field7=7}", responseEntity.getObj().get(0).toString());
Assert.assertEquals(null, responseEntity.getException());
verify(dataStorage).queryById(rowkeys, ed);
}
http://git-wip-us.apache.org/repos/asf/eagle/blob/2160673c/eagle-core/eagle-query/eagle-service-base/src/test/java/org/apache/eagle/service/generic/TestResourceUnmarshal.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-service-base/src/test/java/org/apache/eagle/service/generic/TestResourceUnmarshal.java b/eagle-core/eagle-query/eagle-service-base/src/test/java/org/apache/eagle/service/generic/TestResourceUnmarshal.java
index 4e21063..6ceff5b 100644
--- a/eagle-core/eagle-query/eagle-service-base/src/test/java/org/apache/eagle/service/generic/TestResourceUnmarshal.java
+++ b/eagle-core/eagle-query/eagle-service-base/src/test/java/org/apache/eagle/service/generic/TestResourceUnmarshal.java
@@ -36,6 +36,7 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
@@ -89,37 +90,17 @@ public class TestResourceUnmarshal {
Assert.assertEquals(timeSeriesAPIEntityList.get(0).getTags().get("datacenter"), result.get(0).getTags().get("datacenter"));
Assert.assertEquals(timeSeriesAPIEntityList.get(0).getTags().get("index"), result.get(0).getTags().get("index"));
Assert.assertEquals(timeSeriesAPIEntityList.get(0).getTags().get("jobId"), result.get(0).getTags().get("jobId"));
-
}
@Test
public void testUnmarshalAsStringlist() throws NoSuchMethodException, JsonProcessingException, InvocationTargetException, IllegalAccessException {
-
- TestTimeSeriesAPIEntity timeSeriesAPIEntity = new TestTimeSeriesAPIEntity();
- timeSeriesAPIEntity.setTimestamp(1l);
- timeSeriesAPIEntity.setField1(1);
- timeSeriesAPIEntity.setField2(2);
- timeSeriesAPIEntity.setField3(3);
- timeSeriesAPIEntity.setField4(4L);
- timeSeriesAPIEntity.setField5(5.0);
- timeSeriesAPIEntity.setField6(5.0);
- timeSeriesAPIEntity.setField7("7");
- timeSeriesAPIEntity.setTags(new HashMap<>());
- timeSeriesAPIEntity.getTags().put("cluster", "test4UT");
- timeSeriesAPIEntity.getTags().put("datacenter", "dc1");
- timeSeriesAPIEntity.getTags().put("index", "" + 1);
- timeSeriesAPIEntity.getTags().put("jobId", "job_" + timeSeriesAPIEntity.getTimestamp());
-
- List<TestTimeSeriesAPIEntity> timeSeriesAPIEntityList = new ArrayList<>();
- timeSeriesAPIEntityList.add(timeSeriesAPIEntity);
-
+ String[] entityIds = new String[]{"key1","key2"};
GenericEntityServiceResource genericEntityServiceResource = new GenericEntityServiceResource();
Method unmarshalAsStringlist = genericEntityServiceResource.getClass().getDeclaredMethod("unmarshalAsStringlist", InputStream.class);
unmarshalAsStringlist.setAccessible(true);
- InputStream stream = new ByteArrayInputStream(MAPPER.writeValueAsString(timeSeriesAPIEntityList).getBytes(StandardCharsets.UTF_8));
+ InputStream stream = new ByteArrayInputStream(MAPPER.writeValueAsString(entityIds).getBytes(StandardCharsets.UTF_8));
List<String> result = (List<String>) unmarshalAsStringlist.invoke(genericEntityServiceResource, stream);
-
- Assert.assertEquals("[{, prefix, null, timestamp, 1, tags, {, cluster, test4UT, jobId, job_1, index, 1, datacenter, dc1, }, exp, null, encodedRowkey, null, serializeAlias, null, serializeVerbose, true, field1, 1, field2, 2, field3, 3, field4, 4, field5, 5.0, field6, 5.0, field7, 7, }]", result.toString());
+ Assert.assertArrayEquals(entityIds, result.toArray());
}
}
http://git-wip-us.apache.org/repos/asf/eagle/blob/2160673c/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/TopologyCheckAppConfig.java
----------------------------------------------------------------------
diff --git a/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/TopologyCheckAppConfig.java b/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/TopologyCheckAppConfig.java
index a75a3b3..7a339a6 100644
--- a/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/TopologyCheckAppConfig.java
+++ b/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/TopologyCheckAppConfig.java
@@ -77,14 +77,15 @@ public class TopologyCheckAppConfig implements Serializable {
this.dataExtractorConfig.numDataFetcherSpout = config.getInt("topology.numDataFetcherSpout");
this.dataExtractorConfig.numEntityPersistBolt = config.getInt("topology.numEntityPersistBolt");
this.dataExtractorConfig.numKafkaSinkBolt = config.getInt("topology.numOfKafkaSinkBolt");
- this.dataExtractorConfig.resolverAPIUrl = config.getString("topology.resolverAPIUrl");
- String resolveCls = config.getString("topology.rackResolverCls");
- try {
- this.dataExtractorConfig.resolverCls = (Class<? extends TopologyRackResolver>) Class.forName(resolveCls);
- } catch (ClassNotFoundException e) {
- LOG.warn("{} is not found, will use DefaultTopologyRackResolver instead", resolveCls);
- this.dataExtractorConfig.resolverCls = DefaultTopologyRackResolver.class;
- //e.printStackTrace();
+
+ this.dataExtractorConfig.resolverCls = DefaultTopologyRackResolver.class;
+ if (config.hasPath("topology.rackResolverCls")) {
+ String resolveCls = config.getString("topology.rackResolverCls");
+ try {
+ this.dataExtractorConfig.resolverCls = (Class<? extends TopologyRackResolver>) Class.forName(resolveCls);
+ } catch (ClassNotFoundException e) {
+ LOG.warn("{} is not found, will use DefaultTopologyRackResolver instead", resolveCls);
+ }
}
if (config.hasPath("dataSourceConfig.hbase.enabled") && config.getBoolean("dataSourceConfig.hbase.enabled")) {
@@ -121,7 +122,6 @@ public class TopologyCheckAppConfig implements Serializable {
public int numKafkaSinkBolt;
public long fetchDataIntervalInSecs;
public int parseThreadPoolSize;
- public String resolverAPIUrl;
public Class<? extends TopologyRackResolver> resolverCls;
}
http://git-wip-us.apache.org/repos/asf/eagle/blob/2160673c/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/resolver/TopologyRackResolver.java
----------------------------------------------------------------------
diff --git a/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/resolver/TopologyRackResolver.java b/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/resolver/TopologyRackResolver.java
index c4b4976..b7f2015 100644
--- a/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/resolver/TopologyRackResolver.java
+++ b/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/resolver/TopologyRackResolver.java
@@ -18,11 +18,15 @@
package org.apache.eagle.topology.resolver;
+import org.apache.eagle.topology.TopologyCheckAppConfig;
+
public interface TopologyRackResolver {
+ default void prepare(TopologyCheckAppConfig config) {}
+
/**
*resolve rack by hostname.
* @return rack name
*/
String resolve(String hostname);
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/eagle/blob/2160673c/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/resolver/impl/ClusterNodeAPITopologyRackResolver.java
----------------------------------------------------------------------
diff --git a/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/resolver/impl/ClusterNodeAPITopologyRackResolver.java b/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/resolver/impl/ClusterNodeAPITopologyRackResolver.java
index 8e153f0..0573b1d 100644
--- a/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/resolver/impl/ClusterNodeAPITopologyRackResolver.java
+++ b/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/resolver/impl/ClusterNodeAPITopologyRackResolver.java
@@ -21,6 +21,7 @@ package org.apache.eagle.topology.resolver.impl;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.eagle.app.utils.AppConstants;
import org.apache.eagle.app.utils.connection.InputStreamUtils;
+import org.apache.eagle.topology.TopologyCheckAppConfig;
import org.apache.eagle.topology.resolver.TopologyRackResolver;
import org.apache.eagle.topology.resolver.model.Node;
import org.slf4j.Logger;
@@ -40,8 +41,9 @@ public class ClusterNodeAPITopologyRackResolver implements TopologyRackResolver
private String hostPort = "8041";//TODO configurable
private static final ObjectMapper OBJ_MAPPER = new ObjectMapper();
- public ClusterNodeAPITopologyRackResolver(String activeApiUrl) {
- this.activeApiUrl = activeApiUrl;
+ @Override
+ public void prepare(TopologyCheckAppConfig config) {
+ this.activeApiUrl = config.getConfig().getString("topology.resolverAPIUrl");
}
@Override
http://git-wip-us.apache.org/repos/asf/eagle/blob/2160673c/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/resolver/impl/IPMaskTopologyRackResolver.java
----------------------------------------------------------------------
diff --git a/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/resolver/impl/IPMaskTopologyRackResolver.java b/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/resolver/impl/IPMaskTopologyRackResolver.java
index b11394c..8c9c6d6 100644
--- a/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/resolver/impl/IPMaskTopologyRackResolver.java
+++ b/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/resolver/impl/IPMaskTopologyRackResolver.java
@@ -49,9 +49,10 @@ public class IPMaskTopologyRackResolver implements TopologyRackResolver {
InetAddress address = InetAddress.getByName(hostname);
result = "rack" + (int) (address.getAddress()[rackPos] & 0xff);
} catch (UnknownHostException e) {
- //LOG.warn("UnknownHostException: {}", hostname);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("UnknownHostException: {}", hostname);
+ }
}
return result;
}
-
}
http://git-wip-us.apache.org/repos/asf/eagle/blob/2160673c/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/storm/TopologyDataExtractor.java
----------------------------------------------------------------------
diff --git a/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/storm/TopologyDataExtractor.java b/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/storm/TopologyDataExtractor.java
index 492cf3f..9c58f5f 100644
--- a/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/storm/TopologyDataExtractor.java
+++ b/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/storm/TopologyDataExtractor.java
@@ -61,13 +61,8 @@ public class TopologyDataExtractor {
futures.forEach(future -> {
try {
future.get(fetchTimeoutSecs, TimeUnit.SECONDS);
- } catch (InterruptedException e) {
- LOGGER.info("Caught an overtime exception with message" + e.getMessage());
- e.printStackTrace();
- } catch (ExecutionException e) {
- e.printStackTrace();
- } catch (TimeoutException e) {
- e.printStackTrace();
+ } catch (InterruptedException | ExecutionException | TimeoutException e) {
+ LOGGER.error("Caught an overtime exception with message" + e.getMessage(), e);
}
});
}
@@ -77,21 +72,17 @@ public class TopologyDataExtractor {
TopologyRackResolver rackResolver = new DefaultTopologyRackResolver();
if (config.dataExtractorConfig.resolverCls != null) {
try {
- if (config.dataExtractorConfig.resolverCls == ClusterNodeAPITopologyRackResolver.class) {
- Constructor ctor = config.dataExtractorConfig.resolverCls.getConstructor(String.class);
- rackResolver = (ClusterNodeAPITopologyRackResolver) ctor.newInstance(config.dataExtractorConfig.resolverAPIUrl);
- } else {
- rackResolver = config.dataExtractorConfig.resolverCls.newInstance();
- }
- } catch (InstantiationException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e) {
- e.printStackTrace();
+ rackResolver = config.dataExtractorConfig.resolverCls.newInstance();
+ rackResolver.prepare(config);
+ } catch (InstantiationException | IllegalAccessException e) {
+ LOGGER.error(e.getMessage(), e);
}
}
for (TopologyType type : config.topologyTypes) {
try {
extractors.add(TopologyExtractorFactory.create(type, config, rackResolver, collector));
} catch (Exception e) {
- e.printStackTrace();
+ LOGGER.error(e.getMessage(), e);
}
}
return extractors;
http://git-wip-us.apache.org/repos/asf/eagle/blob/2160673c/eagle-topology-check/eagle-topology-app/src/test/java/org/apache/eagle/topology/TestClusterNodeAPITopologyRackResolver.java
----------------------------------------------------------------------
diff --git a/eagle-topology-check/eagle-topology-app/src/test/java/org/apache/eagle/topology/TestClusterNodeAPITopologyRackResolver.java b/eagle-topology-check/eagle-topology-app/src/test/java/org/apache/eagle/topology/TestClusterNodeAPITopologyRackResolver.java
index cb53c1a..5090043 100644
--- a/eagle-topology-check/eagle-topology-app/src/test/java/org/apache/eagle/topology/TestClusterNodeAPITopologyRackResolver.java
+++ b/eagle-topology-check/eagle-topology-app/src/test/java/org/apache/eagle/topology/TestClusterNodeAPITopologyRackResolver.java
@@ -17,6 +17,7 @@
*/
package org.apache.eagle.topology;
+import com.typesafe.config.ConfigFactory;
import org.apache.eagle.app.utils.connection.InputStreamUtils;
import org.apache.eagle.topology.resolver.TopologyRackResolver;
import org.apache.eagle.topology.resolver.impl.ClusterNodeAPITopologyRackResolver;
@@ -27,7 +28,7 @@ import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import java.io.InputStream;
-import java.lang.reflect.Constructor;
+import java.util.HashMap;
import static org.mockito.Matchers.anyObject;
import static org.mockito.Matchers.eq;
@@ -37,27 +38,31 @@ import static org.powermock.api.mockito.PowerMockito.mockStatic;
@RunWith(PowerMockRunner.class)
@PrepareForTest(InputStreamUtils.class)
public class TestClusterNodeAPITopologyRackResolver {
+ private static final String apiUrl = "http://yhd-jqhadoop168.int.yihaodian.com:8088/ws/v1/cluster/nodes";
+ private static final TopologyCheckAppConfig config = TopologyCheckAppConfig.newInstance(ConfigFactory.load().withFallback(
+ ConfigFactory.parseMap(new HashMap<String, String>() {{
+ put("topology.resolverAPIUrl", apiUrl);
+ }})));
+
@Test
public void testClusterNodeAPITopologyRackResolver() throws Exception {
mockStatic(InputStreamUtils.class);
- String apiUrl = "http://yhd-jqhadoop168.int.yihaodian.com:8088/ws/v1/cluster/nodes";
String hostname = "hostname";
mockInputSteam("/nodeinfo.json", apiUrl + "/" + hostname + ":8041");
-
Class<? extends TopologyRackResolver> resolverCls = (Class<? extends TopologyRackResolver>) Class.forName("org.apache.eagle.topology.resolver.impl.ClusterNodeAPITopologyRackResolver");
Assert.assertTrue(resolverCls == ClusterNodeAPITopologyRackResolver.class);
- Constructor ctor = resolverCls.getConstructor(String.class);
- TopologyRackResolver topologyRackResolver = (TopologyRackResolver) ctor.newInstance(apiUrl);
+ TopologyRackResolver topologyRackResolver = resolverCls.newInstance();
+ topologyRackResolver.prepare(config);
Assert.assertEquals("/rowb/rack12", topologyRackResolver.resolve(hostname));
}
@Test
public void testClusterNodeAPITopologyRackResolver1() throws Exception {
mockStatic(InputStreamUtils.class);
- String apiUrl = "http://yhd-jqhadoop168.int.yihaodian.com:8088/ws/v1/cluster/nodes";
String hostname = "hostname";
mockInputSteamWithException(apiUrl + "/" + hostname + ":8041");
- TopologyRackResolver topologyRackResolver = new ClusterNodeAPITopologyRackResolver(apiUrl);
+ TopologyRackResolver topologyRackResolver = new ClusterNodeAPITopologyRackResolver();
+ topologyRackResolver.prepare(config);
Assert.assertEquals("/default-rack", topologyRackResolver.resolve(hostname));
}
http://git-wip-us.apache.org/repos/asf/eagle/blob/2160673c/eagle-webservice/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/eagle-webservice/src/main/webapp/WEB-INF/web.xml b/eagle-webservice/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index e69de29..0000000
http://git-wip-us.apache.org/repos/asf/eagle/blob/2160673c/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 5ba588a..2b4fb71 100755
--- a/pom.xml
+++ b/pom.xml
@@ -126,10 +126,8 @@
</developers>
<modules>
<module>eagle-core</module>
- <!--<module>eagle-webservice</module>-->
<module>eagle-security</module>
<module>eagle-external</module>
- <!--<module>eagle-assembly</module>-->
<module>eagle-topology-assembly</module>
<module>eagle-examples</module>
<module>eagle-gc</module>