You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2014/12/12 23:21:41 UTC
ambari git commit: AMBARI-8687. Fix ignored unit tests for
AMBARI-8661 and few production code fixes/improvements (Dmitri Lisnichenko
via ncole)
Repository: ambari
Updated Branches:
refs/heads/trunk 71e137769 -> 3cb6f6aea
AMBARI-8687. Fix ignored unit tests for AMBARI-8661 and few production code fixes/improvements (Dmitri Lisnichenko via ncole)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/3cb6f6ae
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/3cb6f6ae
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/3cb6f6ae
Branch: refs/heads/trunk
Commit: 3cb6f6aea3865952fced27677ef341970b6d661e
Parents: 71e1377
Author: Nate Cole <nc...@hortonworks.com>
Authored: Fri Dec 12 17:00:55 2014 -0500
Committer: Nate Cole <nc...@hortonworks.com>
Committed: Fri Dec 12 17:21:18 2014 -0500
----------------------------------------------------------------------
.../ClusterStackVersionResourceProvider.java | 6 +-
.../HostStackVersionResourceProvider.java | 23 ++++-
.../server/state/RepositoryVersionState.java | 2 +
.../server/state/cluster/ClusterImpl.java | 8 +-
.../server/agent/TestHeartbeatHandler.java | 16 +--
.../HostStackVersionResourceProviderTest.java | 15 ++-
.../test/python/custom_actions/TestCheckHost.py | 102 +++++++++----------
7 files changed, 108 insertions(+), 64 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb6f6ae/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java
index 7c533b6..09f9b7f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java
@@ -37,6 +37,7 @@ import org.apache.ambari.server.actionmanager.RequestFactory;
import org.apache.ambari.server.actionmanager.Stage;
import org.apache.ambari.server.actionmanager.StageFactory;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
+import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.controller.ActionExecutionContext;
import org.apache.ambari.server.controller.AmbariActionExecutionHelper;
import org.apache.ambari.server.controller.AmbariManagementController;
@@ -146,6 +147,9 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
@Inject
private static RequestFactory requestFactory;
+ @Inject
+ private static Configuration configuration;
+
/**
* Constructor.
*/
@@ -355,7 +359,7 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
cluster.getClusterName(), INSTALL_PACKAGES_ACTION,
Collections.singletonList(filter),
params);
- actionContext.setTimeout((short) 600);
+ actionContext.setTimeout(Short.valueOf(configuration.getDefaultAgentTaskTimeout()));
try {
actionExecutionHelper.get().addExecutionCommandsToStage(actionContext, stage);
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb6f6ae/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProvider.java
index 4850c33..e26a800 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProvider.java
@@ -35,6 +35,7 @@ import org.apache.ambari.server.actionmanager.Stage;
import org.apache.ambari.server.actionmanager.StageFactory;
import org.apache.ambari.server.actionmanager.RequestFactory;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
+import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.controller.ActionExecutionContext;
import org.apache.ambari.server.controller.AmbariActionExecutionHelper;
import org.apache.ambari.server.controller.AmbariManagementController;
@@ -58,6 +59,7 @@ import com.google.inject.Inject;
import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Host;
+import org.apache.ambari.server.state.RepositoryVersionState;
import org.apache.ambari.server.state.ServiceComponentHost;
import org.apache.ambari.server.state.ServiceInfo;
import org.apache.ambari.server.state.ServiceOsSpecific;
@@ -142,6 +144,9 @@ public class HostStackVersionResourceProvider extends AbstractControllerResource
@Inject
private static Provider<AmbariActionExecutionHelper> actionExecutionHelper;
+ @Inject
+ private static Configuration configuration;
+
/**
* Constructor.
@@ -318,6 +323,20 @@ public class HostStackVersionResourceProvider extends AbstractControllerResource
desiredRepoVersion, stackId));
}
+ HostVersionEntity hostVersEntity = hostVersionDAO.findByClusterStackVersionAndHost(clName, stackId,
+ desiredRepoVersion, hostName);
+ if (hostVersEntity == null) {
+ throw new IllegalArgumentException(String.format(
+ "Repo version %s for stack %s is not available for host %s",
+ desiredRepoVersion, stackId, hostName));
+ }
+ if (hostVersEntity.getState() != RepositoryVersionState.INSTALLED &&
+ hostVersEntity.getState() != RepositoryVersionState.INSTALL_FAILED) {
+ throw new UnsupportedOperationException(String.format("Repo version %s for stack %s " +
+ "for host %s is in %s state. Can not transition to INSTALLING state",
+ desiredRepoVersion, stackId, hostName, hostVersEntity.getState().toString()));
+ }
+
List<OperatingSystemEntity> operatingSystems = repoVersionEnt.getOperatingSystems();
Map<String, List<RepositoryEntity>> perOsRepos = new HashMap<String, List<RepositoryEntity>>();
for (OperatingSystemEntity operatingSystem : operatingSystems) {
@@ -368,7 +387,7 @@ public class HostStackVersionResourceProvider extends AbstractControllerResource
cluster.getClusterName(), INSTALL_PACKAGES_ACTION,
Collections.singletonList(filter),
params);
- actionContext.setTimeout((short) 600);
+ actionContext.setTimeout(Short.valueOf(configuration.getDefaultAgentTaskTimeout()));
String caption = String.format(INSTALL_PACKAGES_FULL_NAME + " on host %s", hostName);
RequestStageContainer req = createRequest(caption);
@@ -399,6 +418,8 @@ public class HostStackVersionResourceProvider extends AbstractControllerResource
}
try {
+ hostVersEntity.setState(RepositoryVersionState.INSTALLING);
+ hostVersionDAO.merge(hostVersEntity);
req.persist();
} catch (AmbariException e) {
throw new SystemException("Can not persist request", e);
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb6f6ae/ambari-server/src/main/java/org/apache/ambari/server/state/RepositoryVersionState.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/RepositoryVersionState.java b/ambari-server/src/main/java/org/apache/ambari/server/state/RepositoryVersionState.java
index 453864c..304837b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/RepositoryVersionState.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/RepositoryVersionState.java
@@ -71,6 +71,8 @@ package org.apache.ambari.server.state;
* UPGRADE_FAILED -> UPGRADING
* UPGRADED -> CURRENT
* INSTALLING -> INSTALLED | INSTALL_FAILED
+ * INSTALLED -> INSTALLED
+ * INSTALLED -> INSTALLING
* INSTALL_FAILED -> INSTALLING
* CURRENT -> INSTALLED
* INSTALLED -> UPGRADING
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb6f6ae/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
index ed9b0e7..c54e13a 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
@@ -1237,12 +1237,14 @@ public class ClusterImpl implements Cluster {
stackId, repositoryVersion);
if (clusterVersion == null) {
- throw new AmbariException("Repository version is null");
+ throw new AmbariException(String.format("Repository version %s not found for cluster %s",
+ repositoryVersion, getClusterName()));
}
RepositoryVersionState worstState;
if (clusterVersion.getState() != RepositoryVersionState.INSTALL_FAILED &&
- clusterVersion.getState() != RepositoryVersionState.INSTALLING) {
+ clusterVersion.getState() != RepositoryVersionState.INSTALLING &&
+ clusterVersion.getState() != RepositoryVersionState.INSTALLED) {
// anything else is not supported as of now
return;
}
@@ -1356,6 +1358,8 @@ public class ClusterImpl implements Cluster {
case INSTALL_FAILED:
allowedStates.add(RepositoryVersionState.INSTALLING);
case INSTALLED:
+ allowedStates.add(RepositoryVersionState.INSTALLED); // To allow reinstall
+ allowedStates.add(RepositoryVersionState.INSTALLING); // To allow reinstall
allowedStates.add(RepositoryVersionState.UPGRADING);
case UPGRADING:
allowedStates.add(RepositoryVersionState.CURRENT);
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb6f6ae/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
index 210611b..c6e5b26 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
@@ -98,7 +98,6 @@ import org.apache.ambari.server.utils.StageUtils;
import org.codehaus.jackson.JsonGenerationException;
import org.junit.After;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -1058,7 +1057,6 @@ public class TestHeartbeatHandler {
assertTrue(registrationResponse.getStatusCommands().get(0).equals(statusCmd1));
}
- @Ignore
@Test
@SuppressWarnings("unchecked")
public void testTaskInProgressHandling() throws AmbariException, InvalidStateTransitionException {
@@ -1097,6 +1095,7 @@ public class TestHeartbeatHandler {
cr.setClusterName(DummyCluster);
cr.setServiceName(HDFS);
cr.setRole(DATANODE);
+ cr.setRoleCommand("INSTALL");
cr.setStatus("IN_PROGRESS");
cr.setStdErr("none");
cr.setStdOut("dummy output");
@@ -1106,7 +1105,7 @@ public class TestHeartbeatHandler {
hb.setComponentStatus(new ArrayList<ComponentStatus>());
final HostRoleCommand command = new HostRoleCommand(DummyHostname1,
- Role.DATANODE, null, null);
+ Role.DATANODE, null, RoleCommand.INSTALL);
ActionManager am = getMockActionManager();
expect(am.getTasks(anyObject(List.class))).andReturn(
@@ -1121,7 +1120,6 @@ public class TestHeartbeatHandler {
assertEquals("Host state should still be installing", State.INSTALLING, componentState1);
}
- @Ignore
@Test
@SuppressWarnings("unchecked")
public void testOPFailedEventForAbortedTask() throws AmbariException, InvalidStateTransitionException {
@@ -1173,6 +1171,7 @@ public class TestHeartbeatHandler {
cr.setClusterName(DummyCluster);
cr.setServiceName(HDFS);
cr.setRole(DATANODE);
+ cr.setRoleCommand("INSTALL");
cr.setStatus("FAILED");
cr.setStdErr("none");
cr.setStdOut("dummy output");
@@ -1330,7 +1329,6 @@ public class TestHeartbeatHandler {
State.INSTALLED, serviceComponentHost1.getState());
}
- @Ignore
@Test
@SuppressWarnings("unchecked")
public void testUpgradeSpecificHandling() throws AmbariException, InvalidStateTransitionException {
@@ -1365,6 +1363,7 @@ public class TestHeartbeatHandler {
cr.setClusterName(DummyCluster);
cr.setServiceName(HDFS);
cr.setRole(DATANODE);
+ cr.setRoleCommand("INSTALL");
cr.setStatus(HostRoleStatus.IN_PROGRESS.toString());
cr.setStdErr("none");
cr.setStdOut("dummy output");
@@ -1595,7 +1594,6 @@ public class TestHeartbeatHandler {
stack122, serviceComponentHost2.getStackVersion());
}
- @Ignore
@Test
@SuppressWarnings("unchecked")
public void testComponentUpgradeInProgressReport() throws AmbariException, InvalidStateTransitionException {
@@ -1643,6 +1641,7 @@ public class TestHeartbeatHandler {
cr1.setClusterName(DummyCluster);
cr1.setServiceName(HDFS);
cr1.setRole(DATANODE);
+ cr1.setRoleCommand("INSTALL");
cr1.setStatus(HostRoleStatus.IN_PROGRESS.toString());
cr1.setStdErr("none");
cr1.setStdOut("dummy output");
@@ -1654,6 +1653,7 @@ public class TestHeartbeatHandler {
cr2.setClusterName(DummyCluster);
cr2.setServiceName(HDFS);
cr2.setRole(NAMENODE);
+ cr2.setRoleCommand("INSTALL");
cr2.setStatus(HostRoleStatus.IN_PROGRESS.toString());
cr2.setStdErr("none");
cr2.setStdOut("dummy output");
@@ -1686,7 +1686,6 @@ public class TestHeartbeatHandler {
}
- @Ignore
@Test
@SuppressWarnings("unchecked")
public void testComponentUpgradeFailReport() throws AmbariException, InvalidStateTransitionException {
@@ -1765,6 +1764,7 @@ public class TestHeartbeatHandler {
cr1.setClusterName(DummyCluster);
cr1.setServiceName(HDFS);
cr1.setRole(DATANODE);
+ cr1.setRoleCommand("INSTALL");
cr1.setStatus(HostRoleStatus.FAILED.toString());
cr1.setStdErr("none");
cr1.setStdOut("dummy output");
@@ -1776,6 +1776,7 @@ public class TestHeartbeatHandler {
cr2.setClusterName(DummyCluster);
cr2.setServiceName(HDFS);
cr2.setRole(NAMENODE);
+ cr2.setRoleCommand("INSTALL");
cr2.setStatus(HostRoleStatus.FAILED.toString());
cr2.setStdErr("none");
cr2.setStdOut("dummy output");
@@ -2004,7 +2005,6 @@ public class TestHeartbeatHandler {
assertEquals(HostHealthStatus.HealthStatus.ALERT.name(), hostObject.getStatus());
}
- @Ignore
@Test
@SuppressWarnings("unchecked")
public void testIgnoreCustomActionReport() throws AmbariException, InvalidStateTransitionException {
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb6f6ae/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProviderTest.java
index aabe366..6e20048 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProviderTest.java
@@ -36,11 +36,14 @@ import org.apache.ambari.server.controller.spi.ResourceProvider;
import org.apache.ambari.server.controller.utilities.PropertyHelper;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
+import org.apache.ambari.server.orm.dao.HostVersionDAO;
import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
+import org.apache.ambari.server.orm.entities.HostVersionEntity;
import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.Host;
+import org.apache.ambari.server.state.RepositoryVersionState;
import org.apache.ambari.server.state.ServiceComponentHost;
import org.apache.ambari.server.state.ServiceInfo;
import org.apache.ambari.server.state.ServiceOsSpecific;
@@ -77,6 +80,7 @@ public class HostStackVersionResourceProviderTest {
private Injector injector;
private AmbariMetaInfo ambariMetaInfo;
private RepositoryVersionDAO repositoryVersionDAOMock;
+ private HostVersionDAO hostVersionDAOMock;
private String operatingSystemsJson = "[\n" +
" {\n" +
@@ -100,6 +104,7 @@ public class HostStackVersionResourceProviderTest {
public void setup() throws Exception {
// Create instances of mocks
repositoryVersionDAOMock = createNiceMock(RepositoryVersionDAO.class);
+ hostVersionDAOMock = createNiceMock(HostVersionDAO.class);
// Initialize injector
InMemoryDefaultTestModule module = new InMemoryDefaultTestModule();
injector = Guice.createInjector(Modules.override(module).with(new MockModule()));
@@ -147,6 +152,8 @@ public class HostStackVersionResourceProviderTest {
ResourceProviderFactory resourceProviderFactory = createNiceMock(ResourceProviderFactory.class);
ResourceProvider csvResourceProvider = createNiceMock(ClusterStackVersionResourceProvider.class);
+ HostVersionEntity hostVersionEntityMock = createNiceMock(HostVersionEntity.class);
+
AbstractControllerResourceProvider.init(resourceProviderFactory);
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
@@ -170,11 +177,16 @@ public class HostStackVersionResourceProviderTest {
expect(repositoryVersionDAOMock.findByStackAndVersion(anyObject(String.class),
anyObject(String.class))).andReturn(repoVersion);
+
+ expect(hostVersionDAOMock.findByClusterStackVersionAndHost(anyObject(String.class),
+ anyObject(String.class), anyObject(String.class), anyObject(String.class))).andReturn(hostVersionEntityMock);
+ expect(hostVersionEntityMock.getState()).andReturn(RepositoryVersionState.INSTALL_FAILED).anyTimes();
+
expect(actionManager.getRequestTasks(anyLong())).andReturn(Collections.<HostRoleCommand>emptyList()).anyTimes();
// replay
replay(managementController, response, clusters, resourceProviderFactory, csvResourceProvider,
- cluster, repositoryVersionDAOMock, sch, actionManager);
+ cluster, repositoryVersionDAOMock, sch, actionManager, hostVersionEntityMock, hostVersionDAOMock);
ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider(
type,
@@ -211,6 +223,7 @@ public class HostStackVersionResourceProviderTest {
@Override
protected void configure() {
bind(RepositoryVersionDAO.class).toInstance(repositoryVersionDAOMock);
+ bind(HostVersionDAO.class).toInstance(hostVersionDAOMock);
}
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/3cb6f6ae/ambari-server/src/test/python/custom_actions/TestCheckHost.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/custom_actions/TestCheckHost.py b/ambari-server/src/test/python/custom_actions/TestCheckHost.py
index fd289fc..eb738d2 100644
--- a/ambari-server/src/test/python/custom_actions/TestCheckHost.py
+++ b/ambari-server/src/test/python/custom_actions/TestCheckHost.py
@@ -231,54 +231,54 @@ class TestCheckHost(TestCase):
structured_out_mock.assert_called_with({})
- # @patch.object(Script, 'get_config')
- # @patch.object(Script, 'get_tmp_dir')
- # @patch('resource_management.libraries.script.Script.put_structured_out')
- # @patch('ambari_agent.HostInfo.HostInfo.javaProcs')
- # @patch('ambari_agent.HostInfo.HostInfo.checkLiveServices')
- # @patch('ambari_agent.HostInfo.HostInfo.getUMask')
- # @patch('ambari_agent.HostInfo.HostInfo.getTransparentHugePage')
- # @patch('ambari_agent.HostInfo.HostInfo.checkIptables')
- # @patch('ambari_agent.HostInfo.HostInfo.checkReverseLookup')
- # @patch('time.time')
- # def testLastAgentEnv(self, time_mock, checkReverseLookup_mock, checkIptables_mock, getTransparentHugePage_mock,
- # getUMask_mock, checkLiveServices_mock, javaProcs_mock, put_structured_out_mock,
- # get_tmp_dir_mock, get_config_mock):
- # jsonFilePath = os.path.join("../resources/custom_actions", "check_last_agent_env.json")
- # with open(jsonFilePath, "r") as jsonFile:
- # jsonPayload = json.load(jsonFile)
- #
- # get_config_mock.return_value = ConfigDictionary(jsonPayload)
- # get_tmp_dir_mock.return_value = "/tmp"
- #
- # checkHost = CheckHost()
- # checkHost.actionexecute(None)
- #
- # # ensure the correct function was called
- # self.assertTrue(time_mock.called)
- # self.assertTrue(checkReverseLookup_mock.called)
- # self.assertTrue(checkIptables_mock.called)
- # self.assertTrue(getTransparentHugePage_mock.called)
- # self.assertTrue(getUMask_mock.called)
- # self.assertTrue(checkLiveServices_mock.called)
- # self.assertTrue(javaProcs_mock.called)
- # self.assertTrue(put_structured_out_mock.called)
- # # ensure the correct keys are in the result map
- # last_agent_env_check_result = put_structured_out_mock.call_args[0][0]
- # self.assertTrue('last_agent_env_check' in last_agent_env_check_result)
- # self.assertTrue('hostHealth' in last_agent_env_check_result['last_agent_env_check'])
- # self.assertTrue('iptablesIsRunning' in last_agent_env_check_result['last_agent_env_check'])
- # self.assertTrue('reverseLookup' in last_agent_env_check_result['last_agent_env_check'])
- # self.assertTrue('alternatives' in last_agent_env_check_result['last_agent_env_check'])
- # self.assertTrue('umask' in last_agent_env_check_result['last_agent_env_check'])
- # self.assertTrue('stackFoldersAndFiles' in last_agent_env_check_result['last_agent_env_check'])
- # self.assertTrue('existingRepos' in last_agent_env_check_result['last_agent_env_check'])
- # self.assertTrue('installedPackages' in last_agent_env_check_result['last_agent_env_check'])
- # self.assertTrue('existingUsers' in last_agent_env_check_result['last_agent_env_check'])
- #
- # # try it now with errors
- # javaProcs_mock.side_effect = Exception("test exception")
- # checkHost.actionexecute(None)
- #
- # #ensure the correct response is returned
- # put_structured_out_mock.assert_called_with({'last_agent_env_check': {'message': 'test exception', 'exit_code': 1}})
\ No newline at end of file
+ @patch.object(Script, 'get_config')
+ @patch.object(Script, 'get_tmp_dir')
+ @patch('resource_management.libraries.script.Script.put_structured_out')
+ @patch('ambari_agent.HostInfo.HostInfo.javaProcs')
+ @patch('ambari_agent.HostInfo.HostInfo.checkLiveServices')
+ @patch('ambari_agent.HostInfo.HostInfo.getUMask')
+ @patch('ambari_agent.HostInfo.HostInfo.getTransparentHugePage')
+ @patch('ambari_agent.HostInfo.HostInfo.checkIptables')
+ @patch('ambari_agent.HostInfo.HostInfo.checkReverseLookup')
+ @patch('time.time')
+ def testLastAgentEnv(self, time_mock, checkReverseLookup_mock, checkIptables_mock, getTransparentHugePage_mock,
+ getUMask_mock, checkLiveServices_mock, javaProcs_mock, put_structured_out_mock,
+ get_tmp_dir_mock, get_config_mock):
+ jsonFilePath = os.path.join("../resources/custom_actions", "check_last_agent_env.json")
+ with open(jsonFilePath, "r") as jsonFile:
+ jsonPayload = json.load(jsonFile)
+
+ get_config_mock.return_value = ConfigDictionary(jsonPayload)
+ get_tmp_dir_mock.return_value = "/tmp"
+
+ checkHost = CheckHost()
+ checkHost.actionexecute(None)
+
+ # ensure the correct function was called
+ self.assertTrue(time_mock.called)
+ self.assertTrue(checkReverseLookup_mock.called)
+ self.assertTrue(checkIptables_mock.called)
+ self.assertTrue(getTransparentHugePage_mock.called)
+ self.assertTrue(getUMask_mock.called)
+ self.assertTrue(checkLiveServices_mock.called)
+ self.assertTrue(javaProcs_mock.called)
+ self.assertTrue(put_structured_out_mock.called)
+ # ensure the correct keys are in the result map
+ last_agent_env_check_result = put_structured_out_mock.call_args[0][0]
+ self.assertTrue('last_agent_env_check' in last_agent_env_check_result)
+ self.assertTrue('hostHealth' in last_agent_env_check_result['last_agent_env_check'])
+ self.assertTrue('iptablesIsRunning' in last_agent_env_check_result['last_agent_env_check'])
+ self.assertTrue('reverseLookup' in last_agent_env_check_result['last_agent_env_check'])
+ self.assertTrue('alternatives' in last_agent_env_check_result['last_agent_env_check'])
+ self.assertTrue('umask' in last_agent_env_check_result['last_agent_env_check'])
+ self.assertTrue('stackFoldersAndFiles' in last_agent_env_check_result['last_agent_env_check'])
+ self.assertTrue('existingRepos' in last_agent_env_check_result['last_agent_env_check'])
+ self.assertTrue('installedPackages' in last_agent_env_check_result['last_agent_env_check'])
+ self.assertTrue('existingUsers' in last_agent_env_check_result['last_agent_env_check'])
+
+ # try it now with errors
+ javaProcs_mock.side_effect = Exception("test exception")
+ checkHost.actionexecute(None)
+
+ #ensure the correct response is returned
+ put_structured_out_mock.assert_called_with({'last_agent_env_check': {'message': 'test exception', 'exit_code': 1}})
\ No newline at end of file