You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jo...@apache.org on 2016/12/07 21:18:17 UTC
[32/41] ambari git commit: AMBARI-19004 Do not cache 'No logs' for
host components at the Ambari Server Hosts/Logs tab back end
AMBARI-19004 Do not cache 'No logs' for host components at the Ambari Server Hosts/Logs tab back end
Change-Id: Ie9e8214fe4f2e8a8d86b3229193883dab8345344
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/9e1318ec
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/9e1318ec
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/9e1318ec
Branch: refs/heads/branch-feature-AMBARI-18456
Commit: 9e1318ecc2e95c72cc0980cd4d8da1c04210b46b
Parents: 234838f
Author: Miklos Gergely <mg...@hortonworks.com>
Authored: Wed Dec 7 16:29:47 2016 +0100
Committer: Miklos Gergely <mg...@hortonworks.com>
Committed: Wed Dec 7 16:35:04 2016 +0100
----------------------------------------------------------------------
.../logging/LogSearchDataRetrievalService.java | 7 +-
.../LogSearchDataRetrievalServiceTest.java | 142 +++++++++----------
2 files changed, 73 insertions(+), 76 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/9e1318ec/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LogSearchDataRetrievalService.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LogSearchDataRetrievalService.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LogSearchDataRetrievalService.java
index 1c135b2..5c0bdb1 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LogSearchDataRetrievalService.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LogSearchDataRetrievalService.java
@@ -23,9 +23,9 @@ import com.google.common.collect.Sets;
import com.google.common.util.concurrent.AbstractService;
import com.google.inject.Inject;
import org.apache.ambari.server.AmbariService;
-import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.controller.AmbariManagementController;
import org.apache.ambari.server.controller.AmbariServer;
+import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -64,9 +64,6 @@ public class LogSearchDataRetrievalService extends AbstractService {
private static Logger LOG = LoggerFactory.getLogger(LogSearchDataRetrievalService.class);
@Inject
- private Configuration configuration;
-
- @Inject
private LoggingRequestHelperFactory loggingRequestHelperFactory;
/**
@@ -288,7 +285,7 @@ public class LogSearchDataRetrievalService extends AbstractService {
helper.sendGetLogFileNamesRequest(component, host);
// update the cache if result is available
- if (logFileNamesResult != null) {
+ if (CollectionUtils.isNotEmpty(logFileNamesResult)) {
LOG.debug("LogSearchFileNameRequestRunnable: request was successful, updating cache");
final String key = generateKey(component, host);
// update cache with returned result
http://git-wip-us.apache.org/repos/asf/ambari/blob/9e1318ec/ambari-server/src/test/java/org/apache/ambari/server/controller/logging/LogSearchDataRetrievalServiceTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/logging/LogSearchDataRetrievalServiceTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/logging/LogSearchDataRetrievalServiceTest.java
index b58350b..a36ce0d 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/logging/LogSearchDataRetrievalServiceTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/logging/LogSearchDataRetrievalServiceTest.java
@@ -23,7 +23,6 @@ import org.easymock.EasyMockSupport;
import org.junit.Test;
import java.util.Collections;
-import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.Executor;
@@ -51,8 +50,7 @@ public class LogSearchDataRetrievalServiceTest {
EasyMockSupport mockSupport = new EasyMockSupport();
- LoggingRequestHelperFactory helperFactoryMock =
- mockSupport.createMock(LoggingRequestHelperFactory.class);
+ LoggingRequestHelperFactory helperFactoryMock = mockSupport.createMock(LoggingRequestHelperFactory.class);
LoggingRequestHelper helperMock =
mockSupport.createMock(LoggingRequestHelper.class);
@@ -62,8 +60,7 @@ public class LogSearchDataRetrievalServiceTest {
mockSupport.replayAll();
- LogSearchDataRetrievalService retrievalService =
- new LogSearchDataRetrievalService();
+ LogSearchDataRetrievalService retrievalService = new LogSearchDataRetrievalService();
retrievalService.setLoggingRequestHelperFactory(helperFactoryMock);
// call the initialization routine called by the Google framework
retrievalService.doStart();
@@ -71,8 +68,7 @@ public class LogSearchDataRetrievalServiceTest {
String resultTailFileURI =
retrievalService.getLogFileTailURI("http://localhost", expectedComponentName, expectedHostName, expectedClusterName);
- assertEquals("TailFileURI was not returned as expected",
- expectedResultURI, resultTailFileURI);
+ assertEquals("TailFileURI was not returned as expected", expectedResultURI, resultTailFileURI);
mockSupport.verifyAll();
}
@@ -85,8 +81,7 @@ public class LogSearchDataRetrievalServiceTest {
EasyMockSupport mockSupport = new EasyMockSupport();
- LoggingRequestHelperFactory helperFactoryMock =
- mockSupport.createMock(LoggingRequestHelperFactory.class);
+ LoggingRequestHelperFactory helperFactoryMock = mockSupport.createMock(LoggingRequestHelperFactory.class);
// return null, to simulate the case where LogSearch Server is
// not available for some reason
@@ -94,8 +89,7 @@ public class LogSearchDataRetrievalServiceTest {
mockSupport.replayAll();
- LogSearchDataRetrievalService retrievalService =
- new LogSearchDataRetrievalService();
+ LogSearchDataRetrievalService retrievalService = new LogSearchDataRetrievalService();
retrievalService.setLoggingRequestHelperFactory(helperFactoryMock);
// call the initialization routine called by the Google framework
retrievalService.doStart();
@@ -103,11 +97,9 @@ public class LogSearchDataRetrievalServiceTest {
String resultTailFileURI =
retrievalService.getLogFileTailURI("http://localhost", expectedComponentName, expectedHostName, expectedClusterName);
- assertNull("TailFileURI should be null in this case",
- resultTailFileURI);
+ assertNull("TailFileURI should be null in this case", resultTailFileURI);
mockSupport.verifyAll();
-
}
@Test
@@ -118,11 +110,9 @@ public class LogSearchDataRetrievalServiceTest {
EasyMockSupport mockSupport = new EasyMockSupport();
- LoggingRequestHelperFactory helperFactoryMock =
- mockSupport.createMock(LoggingRequestHelperFactory.class);
+ LoggingRequestHelperFactory helperFactoryMock = mockSupport.createMock(LoggingRequestHelperFactory.class);
- Executor executorMock =
- mockSupport.createMock(Executor.class);
+ Executor executorMock = mockSupport.createMock(Executor.class);
// expect the executor to be called to execute the LogSearch request
executorMock.execute(isA(LogSearchDataRetrievalService.LogSearchFileNameRequestRunnable.class));
@@ -131,24 +121,19 @@ public class LogSearchDataRetrievalServiceTest {
mockSupport.replayAll();
- LogSearchDataRetrievalService retrievalService =
- new LogSearchDataRetrievalService();
+ LogSearchDataRetrievalService retrievalService = new LogSearchDataRetrievalService();
retrievalService.setLoggingRequestHelperFactory(helperFactoryMock);
// call the initialization routine called by the Google framework
retrievalService.doStart();
retrievalService.setExecutor(executorMock);
- assertEquals("Default request set should be empty",
- 0, retrievalService.getCurrentRequests().size());
+ assertEquals("Default request set should be empty", 0, retrievalService.getCurrentRequests().size());
- Set<String> resultSet =
- retrievalService.getLogFileNames(expectedComponentName, expectedHostName, expectedClusterName);
+ Set<String> resultSet = retrievalService.getLogFileNames(expectedComponentName, expectedHostName, expectedClusterName);
- assertNull("Inital query on the retrieval service should be null, since cache is empty by default",
- resultSet);
- assertEquals("Incorrect number of entries in the current request set",
- 1, retrievalService.getCurrentRequests().size());
+ assertNull("Inital query on the retrieval service should be null, since cache is empty by default", resultSet);
+ assertEquals("Incorrect number of entries in the current request set", 1, retrievalService.getCurrentRequests().size());
assertTrue("Incorrect HostComponent set on request set",
retrievalService.getCurrentRequests().contains(expectedComponentName + "+" + expectedHostName));
@@ -163,16 +148,13 @@ public class LogSearchDataRetrievalServiceTest {
EasyMockSupport mockSupport = new EasyMockSupport();
- LoggingRequestHelperFactory helperFactoryMock =
- mockSupport.createMock(LoggingRequestHelperFactory.class);
+ LoggingRequestHelperFactory helperFactoryMock = mockSupport.createMock(LoggingRequestHelperFactory.class);
- Executor executorMock =
- mockSupport.createMock(Executor.class);
+ Executor executorMock = mockSupport.createMock(Executor.class);
mockSupport.replayAll();
- LogSearchDataRetrievalService retrievalService =
- new LogSearchDataRetrievalService();
+ LogSearchDataRetrievalService retrievalService = new LogSearchDataRetrievalService();
retrievalService.setLoggingRequestHelperFactory(helperFactoryMock);
// call the initialization routine called by the Google framework
retrievalService.doStart();
@@ -184,16 +166,15 @@ public class LogSearchDataRetrievalServiceTest {
// but is not yet completed.
retrievalService.getCurrentRequests().add(expectedComponentName + "+" + expectedHostName);
- Set<String> resultSet =
- retrievalService.getLogFileNames(expectedComponentName, expectedHostName, expectedClusterName);
+ Set<String> resultSet = retrievalService.getLogFileNames(expectedComponentName, expectedHostName, expectedClusterName);
- assertNull("Inital query on the retrieval service should be null, since cache is empty by default",
- resultSet);
+ assertNull("Inital query on the retrieval service should be null, since cache is empty by default", resultSet);
mockSupport.verifyAll();
}
@Test
+ @SuppressWarnings("unchecked")
public void testRunnableWithSuccessfulCall() throws Exception {
final String expectedHostName = "c6401.ambari.apache.org";
final String expectedComponentName = "DATANODE";
@@ -202,17 +183,12 @@ public class LogSearchDataRetrievalServiceTest {
EasyMockSupport mockSupport = new EasyMockSupport();
- LoggingRequestHelperFactory helperFactoryMock =
- mockSupport.createMock(LoggingRequestHelperFactory.class);
- AmbariManagementController controllerMock =
- mockSupport.createMock(AmbariManagementController.class);
- LoggingRequestHelper helperMock =
- mockSupport.createMock(LoggingRequestHelper.class);
+ LoggingRequestHelperFactory helperFactoryMock = mockSupport.createMock(LoggingRequestHelperFactory.class);
+ AmbariManagementController controllerMock = mockSupport.createMock(AmbariManagementController.class);
+ LoggingRequestHelper helperMock = mockSupport.createMock(LoggingRequestHelper.class);
- Cache cacheMock =
- mockSupport.createMock(Cache.class);
- Set currentRequestsMock =
- mockSupport.createMock(Set.class);
+ Cache<String, Set<String>> cacheMock = mockSupport.createMock(Cache.class);
+ Set<String> currentRequestsMock = mockSupport.createMock(Set.class);
expect(helperFactoryMock.getHelper(controllerMock, expectedClusterName)).andReturn(helperMock);
expect(helperMock.sendGetLogFileNamesRequest(expectedComponentName, expectedHostName)).andReturn(Collections.singleton("/this/is/just/a/test/directory"));
@@ -225,14 +201,14 @@ public class LogSearchDataRetrievalServiceTest {
LogSearchDataRetrievalService.LogSearchFileNameRequestRunnable loggingRunnable =
new LogSearchDataRetrievalService.LogSearchFileNameRequestRunnable(expectedHostName, expectedComponentName, expectedClusterName,
- cacheMock, currentRequestsMock, helperFactoryMock, controllerMock);
+ cacheMock, currentRequestsMock, helperFactoryMock, controllerMock);
loggingRunnable.run();
mockSupport.verifyAll();
-
}
@Test
+ @SuppressWarnings("unchecked")
public void testRunnableWithFailedCallNullHelper() throws Exception {
final String expectedHostName = "c6401.ambari.apache.org";
final String expectedComponentName = "DATANODE";
@@ -241,15 +217,11 @@ public class LogSearchDataRetrievalServiceTest {
EasyMockSupport mockSupport = new EasyMockSupport();
- LoggingRequestHelperFactory helperFactoryMock =
- mockSupport.createMock(LoggingRequestHelperFactory.class);
- AmbariManagementController controllerMock =
- mockSupport.createMock(AmbariManagementController.class);
+ LoggingRequestHelperFactory helperFactoryMock = mockSupport.createMock(LoggingRequestHelperFactory.class);
+ AmbariManagementController controllerMock = mockSupport.createMock(AmbariManagementController.class);
- Cache cacheMock =
- mockSupport.createMock(Cache.class);
- Set currentRequestsMock =
- mockSupport.createMock(Set.class);
+ Cache<String, Set<String>> cacheMock = mockSupport.createMock(Cache.class);
+ Set<String> currentRequestsMock = mockSupport.createMock(Set.class);
// return null to simulate an error during helper instance creation
expect(helperFactoryMock.getHelper(controllerMock, expectedClusterName)).andReturn(null);
@@ -261,7 +233,7 @@ public class LogSearchDataRetrievalServiceTest {
LogSearchDataRetrievalService.LogSearchFileNameRequestRunnable loggingRunnable =
new LogSearchDataRetrievalService.LogSearchFileNameRequestRunnable(expectedHostName, expectedComponentName, expectedClusterName,
- cacheMock, currentRequestsMock, helperFactoryMock, controllerMock);
+ cacheMock, currentRequestsMock, helperFactoryMock, controllerMock);
loggingRunnable.run();
mockSupport.verifyAll();
@@ -269,6 +241,7 @@ public class LogSearchDataRetrievalServiceTest {
}
@Test
+ @SuppressWarnings("unchecked")
public void testRunnableWithFailedCallNullResult() throws Exception {
final String expectedHostName = "c6401.ambari.apache.org";
final String expectedComponentName = "DATANODE";
@@ -277,17 +250,12 @@ public class LogSearchDataRetrievalServiceTest {
EasyMockSupport mockSupport = new EasyMockSupport();
- LoggingRequestHelperFactory helperFactoryMock =
- mockSupport.createMock(LoggingRequestHelperFactory.class);
- AmbariManagementController controllerMock =
- mockSupport.createMock(AmbariManagementController.class);
- LoggingRequestHelper helperMock =
- mockSupport.createMock(LoggingRequestHelper.class);
+ LoggingRequestHelperFactory helperFactoryMock = mockSupport.createMock(LoggingRequestHelperFactory.class);
+ AmbariManagementController controllerMock = mockSupport.createMock(AmbariManagementController.class);
+ LoggingRequestHelper helperMock = mockSupport.createMock(LoggingRequestHelper.class);
- Cache cacheMock =
- mockSupport.createMock(Cache.class);
- Set currentRequestsMock =
- mockSupport.createMock(Set.class);
+ Cache<String, Set<String>> cacheMock = mockSupport.createMock(Cache.class);
+ Set<String> currentRequestsMock = mockSupport.createMock(Set.class);
expect(helperFactoryMock.getHelper(controllerMock, expectedClusterName)).andReturn(helperMock);
// return null to simulate an error occurring during the LogSearch data request
@@ -300,11 +268,43 @@ public class LogSearchDataRetrievalServiceTest {
LogSearchDataRetrievalService.LogSearchFileNameRequestRunnable loggingRunnable =
new LogSearchDataRetrievalService.LogSearchFileNameRequestRunnable(expectedHostName, expectedComponentName, expectedClusterName,
- cacheMock, currentRequestsMock, helperFactoryMock, controllerMock);
+ cacheMock, currentRequestsMock, helperFactoryMock, controllerMock);
loggingRunnable.run();
mockSupport.verifyAll();
-
}
+ @Test
+ @SuppressWarnings("unchecked")
+ public void testRunnableWithFailedCallEmptyResult() throws Exception {
+ final String expectedHostName = "c6401.ambari.apache.org";
+ final String expectedComponentName = "DATANODE";
+ final String expectedClusterName = "clusterone";
+ final String expectedComponentAndHostName = expectedComponentName + "+" + expectedHostName;
+
+ EasyMockSupport mockSupport = new EasyMockSupport();
+
+ LoggingRequestHelperFactory helperFactoryMock = mockSupport.createMock(LoggingRequestHelperFactory.class);
+ AmbariManagementController controllerMock = mockSupport.createMock(AmbariManagementController.class);
+ LoggingRequestHelper helperMock = mockSupport.createMock(LoggingRequestHelper.class);
+
+ Cache<String, Set<String>> cacheMock = mockSupport.createMock(Cache.class);
+ Set<String> currentRequestsMock = mockSupport.createMock(Set.class);
+
+ expect(helperFactoryMock.getHelper(controllerMock, expectedClusterName)).andReturn(helperMock);
+ // return null to simulate an error occurring during the LogSearch data request
+ expect(helperMock.sendGetLogFileNamesRequest(expectedComponentName, expectedHostName)).andReturn(Collections.EMPTY_SET);
+ // expect that the completed request is removed from the current request set,
+ // even in the event of a failure to obtain the LogSearch data
+ expect(currentRequestsMock.remove(expectedComponentAndHostName)).andReturn(true).once();
+
+ mockSupport.replayAll();
+
+ LogSearchDataRetrievalService.LogSearchFileNameRequestRunnable loggingRunnable =
+ new LogSearchDataRetrievalService.LogSearchFileNameRequestRunnable(expectedHostName, expectedComponentName, expectedClusterName,
+ cacheMock, currentRequestsMock, helperFactoryMock, controllerMock);
+ loggingRunnable.run();
+
+ mockSupport.verifyAll();
+ }
}