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 2017/05/03 15:13:52 UTC
[5/9] ambari git commit: AMBARI-20894 - Setting Desired Stack Ids to
Correct Values During Service and Patch Upgrades (jonathanhurley)
http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
index 628a56f..38e6a22 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
@@ -231,6 +231,16 @@ public class AmbariManagementControllerTest {
private TopologyHostInfoDAO topologyHostInfoDAO;
private HostRoleCommandDAO hostRoleCommandDAO;
private StackManagerMock stackManagerMock;
+ private RepositoryVersionDAO repositoryVersionDAO;
+
+ RepositoryVersionEntity repositoryVersion01;
+ RepositoryVersionEntity repositoryVersion02;
+ RepositoryVersionEntity repositoryVersion120;
+ RepositoryVersionEntity repositoryVersion201;
+ RepositoryVersionEntity repositoryVersion206;
+ RepositoryVersionEntity repositoryVersion207;
+ RepositoryVersionEntity repositoryVersion208;
+ RepositoryVersionEntity repositoryVersion220;
@Rule
public ExpectedException expectedException = ExpectedException.none();
@@ -276,6 +286,32 @@ public class AmbariManagementControllerTest {
hostRoleCommandDAO = injector.getInstance(HostRoleCommandDAO.class);
stackManagerMock = (StackManagerMock) ambariMetaInfo.getStackManager();
EasyMock.replay(injector.getInstance(AuditLogger.class));
+
+ repositoryVersion01 = helper.getOrCreateRepositoryVersion(
+ new StackId("HDP-0.1"), "0.1-1234");
+
+ repositoryVersion02 = helper.getOrCreateRepositoryVersion(
+ new StackId("HDP-0.2"), "0.2-1234");
+
+ repositoryVersion120 = helper.getOrCreateRepositoryVersion(
+ new StackId("HDP-1.2.0"), "1.2.0-1234");
+
+ repositoryVersion201 = helper.getOrCreateRepositoryVersion(
+ new StackId("HDP-2.0.1"), "2.0.1-1234");
+
+ repositoryVersion206 = helper.getOrCreateRepositoryVersion(
+ new StackId("HDP-2.0.6"), "2.0.6-1234");
+
+ repositoryVersion207 = helper.getOrCreateRepositoryVersion(
+ new StackId("HDP-2.0.7"), "2.0.7-1234");
+
+ repositoryVersion208 = helper.getOrCreateRepositoryVersion(
+ new StackId("HDP-2.0.8"), "2.0.8-1234");
+
+ repositoryVersion220 = helper.getOrCreateRepositoryVersion(
+ new StackId("HDP-2.2.0"), "2.2.0-1234");
+
+ repositoryVersionDAO = injector.getInstance(RepositoryVersionDAO.class);
}
@After
@@ -333,17 +369,35 @@ public class AmbariManagementControllerTest {
controller.createCluster(r);
}
- private void createService(String clusterName,
- String serviceName, State desiredState) throws AmbariException, AuthorizationException {
+ private void createService(String clusterName, String serviceName, State desiredState) throws AmbariException, AuthorizationException {
+ createService(clusterName, serviceName, repositoryVersion02, desiredState);
+ }
+
+ private void createService(String clusterName, String serviceName,
+ RepositoryVersionEntity repositoryVersion, State desiredState)
+ throws AmbariException, AuthorizationException {
String dStateStr = null;
if (desiredState != null) {
dStateStr = desiredState.toString();
}
- ServiceRequest r1 = new ServiceRequest(clusterName, serviceName, dStateStr);
+
+ Cluster cluster = clusters.getCluster(clusterName);
+ if (null == cluster.getCurrentClusterVersion()) {
+ StackId stackId = cluster.getCurrentStackVersion();
+ helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+
+ cluster.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+ RepositoryVersionState.INSTALLING);
+ }
+
+ ServiceRequest r1 = new ServiceRequest(clusterName, serviceName,
+ repositoryVersion.getStackId().getStackId(), repositoryVersion.getVersion(), dStateStr,
+ null);
+
Set<ServiceRequest> requests = new HashSet<>();
requests.add(r1);
- ServiceResourceProviderTest.createServices(controller, requests);
+ ServiceResourceProviderTest.createServices(controller, repositoryVersionDAO, requests);
}
private void createServiceComponent(String clusterName,
@@ -419,7 +473,7 @@ public class AmbariManagementControllerTest {
private long stopService(String clusterName, String serviceName,
boolean runSmokeTests, boolean reconfigureClients) throws
AmbariException, AuthorizationException {
- ServiceRequest r = new ServiceRequest(clusterName, serviceName, State.INSTALLED.toString());
+ ServiceRequest r = new ServiceRequest(clusterName, serviceName, null, null, State.INSTALLED.toString(), null);
Set<ServiceRequest> requests = new HashSet<>();
requests.add(r);
Map<String, String> mapRequestProps = new HashMap<>();
@@ -484,8 +538,8 @@ public class AmbariManagementControllerTest {
boolean runSmokeTests, boolean reconfigureClients,
MaintenanceStateHelper maintenanceStateHelper) throws
AmbariException, AuthorizationException {
- ServiceRequest r = new ServiceRequest(clusterName, serviceName,
- State.STARTED.toString());
+ ServiceRequest r = new ServiceRequest(clusterName, serviceName, "HDP-0.2", "0.2-1234",
+ State.STARTED.toString(), null);
Set<ServiceRequest> requests = new HashSet<>();
requests.add(r);
Map<String, String> mapRequestProps = new HashMap<>();
@@ -539,8 +593,8 @@ public class AmbariManagementControllerTest {
Map<String, String> mapRequestPropsInput)
throws AmbariException, AuthorizationException {
- ServiceRequest r = new ServiceRequest(clusterName, serviceName,
- State.INSTALLED.toString());
+ ServiceRequest r = new ServiceRequest(clusterName, serviceName, "HDP-0.2", "0.2-1234",
+ State.INSTALLED.toString(), null);
Set<ServiceRequest> requests = new HashSet<>();
requests.add(r);
@@ -681,9 +735,7 @@ public class AmbariManagementControllerTest {
String cluster1 = getUniqueName();
createCluster(cluster1);
String serviceName = "HDFS";
- clusters.getCluster(cluster1).setDesiredStackVersion(
- new StackId("HDP-0.1"));
- createService(cluster1, serviceName, State.INIT);
+ createService(cluster1, serviceName, repositoryVersion02, State.INIT);
Service s =
clusters.getCluster(cluster1).getService(serviceName);
@@ -691,7 +743,7 @@ public class AmbariManagementControllerTest {
Assert.assertEquals(serviceName, s.getName());
Assert.assertEquals(cluster1, s.getCluster().getClusterName());
- ServiceRequest req = new ServiceRequest(cluster1, serviceName, null);
+ ServiceRequest req = new ServiceRequest(cluster1, "HDFS", "HDP-0.2", "0.2-1234", null, null);
Set<ServiceResponse> r =
ServiceResourceProviderTest.getServices(controller, Collections.singleton(req));
@@ -699,11 +751,8 @@ public class AmbariManagementControllerTest {
ServiceResponse resp = r.iterator().next();
Assert.assertEquals(serviceName, resp.getServiceName());
Assert.assertEquals(cluster1, resp.getClusterName());
- Assert.assertEquals(State.INIT.toString(),
- resp.getDesiredState());
- Assert.assertEquals("HDP-0.1", resp.getDesiredStackVersion());
-
- // TODO test resp.getConfigVersions()
+ Assert.assertEquals(State.INIT.toString(), resp.getDesiredState());
+ Assert.assertEquals("HDP-0.2", resp.getDesiredStackVersion());
}
@Test
@@ -716,9 +765,9 @@ public class AmbariManagementControllerTest {
try {
set1.clear();
- ServiceRequest rInvalid = new ServiceRequest(null, null, null);
+ ServiceRequest rInvalid = new ServiceRequest(null, null, null, null, null, null);
set1.add(rInvalid);
- ServiceResourceProviderTest.createServices(controller, set1);
+ ServiceResourceProviderTest.createServices(controller, repositoryVersionDAO, set1);
fail("Expected failure for invalid requests");
} catch (Exception e) {
// Expected
@@ -726,9 +775,9 @@ public class AmbariManagementControllerTest {
try {
set1.clear();
- ServiceRequest rInvalid = new ServiceRequest("foo", null, null);
+ ServiceRequest rInvalid = new ServiceRequest("foo", null, null, null, null, null);
set1.add(rInvalid);
- ServiceResourceProviderTest.createServices(controller, set1);
+ ServiceResourceProviderTest.createServices(controller, repositoryVersionDAO, set1);
fail("Expected failure for invalid requests");
} catch (Exception e) {
// Expected
@@ -736,9 +785,9 @@ public class AmbariManagementControllerTest {
try {
set1.clear();
- ServiceRequest rInvalid = new ServiceRequest("foo", "bar", null);
+ ServiceRequest rInvalid = new ServiceRequest("foo", "bar", null, null, null, null);
set1.add(rInvalid);
- ServiceResourceProviderTest.createServices(controller, set1);
+ ServiceResourceProviderTest.createServices(controller, repositoryVersionDAO, set1);
fail("Expected failure for invalid cluster");
} catch (AmbariException e) {
// Expected
@@ -754,11 +803,11 @@ public class AmbariManagementControllerTest {
try {
set1.clear();
- ServiceRequest valid1 = new ServiceRequest(cluster1, "HDFS", null);
- ServiceRequest valid2 = new ServiceRequest(cluster1, "HDFS", null);
+ ServiceRequest valid1 = new ServiceRequest(cluster1, "HDFS", null, null, null, null);
+ ServiceRequest valid2 = new ServiceRequest(cluster1, "HDFS", null, null, null, null);
set1.add(valid1);
set1.add(valid2);
- ServiceResourceProviderTest.createServices(controller, set1);
+ ServiceResourceProviderTest.createServices(controller, repositoryVersionDAO, set1);
fail("Expected failure for invalid requests");
} catch (Exception e) {
// Expected
@@ -766,9 +815,9 @@ public class AmbariManagementControllerTest {
try {
set1.clear();
- ServiceRequest valid1 = new ServiceRequest(cluster1, "bar", null);
+ ServiceRequest valid1 = new ServiceRequest(cluster1, "bar", "HDP-0.2", "0.2-1234", State.STARTED.toString(), null);
set1.add(valid1);
- ServiceResourceProviderTest.createServices(controller, set1);
+ ServiceResourceProviderTest.createServices(controller, repositoryVersionDAO, set1);
fail("Expected failure for invalid service");
} catch (Exception e) {
// Expected
@@ -777,11 +826,11 @@ public class AmbariManagementControllerTest {
try {
set1.clear();
- ServiceRequest valid1 = new ServiceRequest(cluster1, "HDFS", null);
- ServiceRequest valid2 = new ServiceRequest(cluster2, "HDFS", null);
+ ServiceRequest valid1 = new ServiceRequest(cluster1, "HDFS", "HDP-0.2", "0.2-1234", State.STARTED.toString(), null);
+ ServiceRequest valid2 = new ServiceRequest(cluster2, "HDFS", "HDP-0.2", "0.2-1234", State.STARTED.toString(), null);
set1.add(valid1);
set1.add(valid2);
- ServiceResourceProviderTest.createServices(controller, set1);
+ ServiceResourceProviderTest.createServices(controller, repositoryVersionDAO, set1);
fail("Expected failure for multiple clusters");
} catch (Exception e) {
// Expected
@@ -791,17 +840,17 @@ public class AmbariManagementControllerTest {
Assert.assertEquals(0, clusters.getCluster(cluster1).getServices().size());
set1.clear();
- ServiceRequest valid = new ServiceRequest(cluster1, "HDFS", null);
+ ServiceRequest valid = new ServiceRequest(cluster1, "HDFS", "HDP-0.2", "0.2-1234", null, null);
set1.add(valid);
- ServiceResourceProviderTest.createServices(controller, set1);
+ ServiceResourceProviderTest.createServices(controller, repositoryVersionDAO, set1);
try {
set1.clear();
- ServiceRequest valid1 = new ServiceRequest(cluster1, "HDFS", null);
- ServiceRequest valid2 = new ServiceRequest(cluster1, "HDFS", null);
+ ServiceRequest valid1 = new ServiceRequest(cluster1, "HDFS", "HDP-0.2", "0.2-1234", State.STARTED.toString(), null);
+ ServiceRequest valid2 = new ServiceRequest(cluster1, "HDFS", "HDP-0.2", "0.2-1234", State.STARTED.toString(), null);
set1.add(valid1);
set1.add(valid2);
- ServiceResourceProviderTest.createServices(controller, set1);
+ ServiceResourceProviderTest.createServices(controller, repositoryVersionDAO, set1);
fail("Expected failure for existing service");
} catch (Exception e) {
// Expected
@@ -840,14 +889,14 @@ public class AmbariManagementControllerTest {
String serviceName2 = "MAPREDUCE";
createService(cluster1, serviceName2, State.INIT);
- ServiceRequest r = new ServiceRequest(cluster1, null, null);
+ ServiceRequest r = new ServiceRequest(cluster1, null, null, null, null, null);
Set<ServiceResponse> response = ServiceResourceProviderTest.getServices(controller, Collections.singleton(r));
Assert.assertEquals(2, response.size());
for (ServiceResponse svc : response) {
Assert.assertTrue(svc.getServiceName().equals(serviceName)
|| svc.getServiceName().equals(serviceName2));
- Assert.assertEquals("HDP-0.1", svc.getDesiredStackVersion());
+ Assert.assertEquals("HDP-0.2", svc.getDesiredStackVersion());
Assert.assertEquals(State.INIT.toString(), svc.getDesiredState());
}
}
@@ -860,18 +909,18 @@ public class AmbariManagementControllerTest {
clusters.addCluster(cluster1, new StackId("HDP-0.1"));
- ServiceRequest valid1 = new ServiceRequest(cluster1, "HDFS", null);
- ServiceRequest valid2 = new ServiceRequest(cluster1, "MAPREDUCE", null);
+ ServiceRequest valid1 = new ServiceRequest(cluster1, "HDFS", "HDP-0.1", "0.1-1234", null, null);
+ ServiceRequest valid2 = new ServiceRequest(cluster1, "MAPREDUCE", "HDP-0.1", "0.1-1234", null, null);
set1.add(valid1);
set1.add(valid2);
- ServiceResourceProviderTest.createServices(controller, set1);
+ ServiceResourceProviderTest.createServices(controller, repositoryVersionDAO, set1);
try {
- valid1 = new ServiceRequest(cluster1, "PIG", null);
- valid2 = new ServiceRequest(cluster1, "MAPREDUCE", null);
+ valid1 = new ServiceRequest(cluster1, "PIG", "HDP-0.1", "0.1-1234", null, null);
+ valid2 = new ServiceRequest(cluster1, "MAPREDUCE", "HDP-0.1", "0.2-1234", null, null);
set1.add(valid1);
set1.add(valid2);
- ServiceResourceProviderTest.createServices(controller, set1);
+ ServiceResourceProviderTest.createServices(controller, repositoryVersionDAO, set1);
fail("Expected failure for invalid services");
} catch (AmbariException e) {
// Expected
@@ -999,11 +1048,15 @@ public class AmbariManagementControllerTest {
Cluster c1 = clusters.getCluster(cluster1);
StackId stackId = new StackId("HDP-0.1");
c1.setDesiredStackVersion(stackId);
- helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+
+ RepositoryVersionEntity repositoryVersion = helper.getOrCreateRepositoryVersion(stackId,
+ stackId.getStackVersion());
+
c1.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
RepositoryVersionState.INSTALLING);
- Service s1 = serviceFactory.createNew(c1, "HDFS");
- Service s2 = serviceFactory.createNew(c1, "MAPREDUCE");
+
+ Service s1 = serviceFactory.createNew(c1, "HDFS", repositoryVersion);
+ Service s2 = serviceFactory.createNew(c1, "MAPREDUCE", repositoryVersion);
c1.addService(s1);
c1.addService(s2);
@@ -1314,11 +1367,6 @@ public class AmbariManagementControllerTest {
}
@Test
- public void testCreateServiceComponentWithConfigs() {
- // FIXME after config impl
- }
-
- @Test
public void testCreateServiceComponentMultiple() throws AmbariException, AuthorizationException {
String cluster1 = getUniqueName();
String cluster2 = getUniqueName();
@@ -1329,12 +1377,12 @@ public class AmbariManagementControllerTest {
Cluster c1 = clusters.getCluster(cluster1);
StackId stackId = new StackId("HDP-0.2");
- helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+ RepositoryVersionEntity repositoryVersion = helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
c1.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
RepositoryVersionState.INSTALLING);
- Service s1 = serviceFactory.createNew(c1, "HDFS");
- Service s2 = serviceFactory.createNew(c1, "MAPREDUCE");
+ Service s1 = serviceFactory.createNew(c1, "HDFS", repositoryVersion);
+ Service s2 = serviceFactory.createNew(c1, "MAPREDUCE", repositoryVersion);
c1.addService(s1);
c1.addService(s2);
@@ -1611,7 +1659,8 @@ public class AmbariManagementControllerTest {
StackId stackId = new StackId("HDP-0.2");
- helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+ RepositoryVersionEntity repositoryVersion = helper.getOrCreateRepositoryVersion(stackId,
+ stackId.getStackVersion());
foo.setDesiredStackVersion(stackId);
foo.setCurrentStackVersion(stackId);
@@ -1644,11 +1693,11 @@ public class AmbariManagementControllerTest {
// Expected
}
- Service s1 = serviceFactory.createNew(foo, "HDFS");
+ Service s1 = serviceFactory.createNew(foo, "HDFS", repositoryVersion);
foo.addService(s1);
- Service s2 = serviceFactory.createNew(c1, "HDFS");
+ Service s2 = serviceFactory.createNew(c1, "HDFS", repositoryVersion);
c1.addService(s2);
- Service s3 = serviceFactory.createNew(c2, "HDFS");
+ Service s3 = serviceFactory.createNew(c2, "HDFS", repositoryVersion);
c2.addService(s3);
@@ -1965,7 +2014,9 @@ public class AmbariManagementControllerTest {
Config c1 = configFactory.createNew(cluster, "hdfs-site", "v1", properties, propertiesAttributes);
configs.put(c1.getType(), c1);
- ServiceRequest r = new ServiceRequest(cluster1, serviceName, State.INSTALLED.toString());
+ ServiceRequest r = new ServiceRequest(cluster1, serviceName, "HDP-0.2", "0.2-1234",
+ State.INSTALLED.toString(), null);
+
Set<ServiceRequest> requests = new HashSet<>();
requests.add(r);
@@ -2016,7 +2067,9 @@ public class AmbariManagementControllerTest {
configs.put(c1.getType(), c1);
configs.put(c2.getType(), c2);
- ServiceRequest r = new ServiceRequest(cluster1, serviceName, State.INSTALLED.toString());
+ ServiceRequest r = new ServiceRequest(cluster1, serviceName, "HDP-0.2", "0.2-1234",
+ State.INSTALLED.toString(), null);
+
Set<ServiceRequest> requests = new HashSet<>();
requests.add(r);
@@ -2124,7 +2177,8 @@ public class AmbariManagementControllerTest {
}
}
- r = new ServiceRequest(cluster1, serviceName, State.STARTED.toString());
+ r = new ServiceRequest(cluster1, serviceName, "HDP-0.2", "0.2-1234", State.STARTED.toString(),
+ null);
requests.clear();
requests.add(r);
trackAction = ServiceResourceProviderTest.updateServices(controller, requests, mapRequestProps, true,
@@ -2170,7 +2224,8 @@ public class AmbariManagementControllerTest {
}
}
- r = new ServiceRequest(cluster1, serviceName, State.INSTALLED.toString());
+ r = new ServiceRequest(cluster1, serviceName, "HDP-0.2", "0.2-1234", State.INSTALLED.toString(),
+ null);
requests.clear();
requests.add(r);
trackAction = ServiceResourceProviderTest.updateServices(controller, requests, mapRequestProps, true,
@@ -2267,15 +2322,18 @@ public class AmbariManagementControllerTest {
public void testGetServices() throws AmbariException {
String cluster1 = getUniqueName();
- clusters.addCluster(cluster1, new StackId("HDP-0.1"));
+ StackId stackId = new StackId("HDP-0.1");
+ RepositoryVersionEntity repositoryVersion = helper.getOrCreateRepositoryVersion(stackId,
+ stackId.getStackVersion());
+
+ clusters.addCluster(cluster1, stackId);
Cluster c1 = clusters.getCluster(cluster1);
- Service s1 = serviceFactory.createNew(c1, "HDFS");
+ Service s1 = serviceFactory.createNew(c1, "HDFS", repositoryVersion);
c1.addService(s1);
- s1.setDesiredStackVersion(new StackId("HDP-0.1"));
s1.setDesiredState(State.INSTALLED);
- ServiceRequest r = new ServiceRequest(cluster1, null, null);
+ ServiceRequest r = new ServiceRequest(cluster1, null, null, null, null, null);
Set<ServiceResponse> resp = ServiceResourceProviderTest.getServices(controller, Collections.singleton(r));
ServiceResponse resp1 = resp.iterator().next();
@@ -2296,18 +2354,22 @@ public class AmbariManagementControllerTest {
String cluster1 = getUniqueName();
String cluster2 = getUniqueName();
- clusters.addCluster(cluster1, new StackId("HDP-0.2"));
- clusters.addCluster(cluster2, new StackId("HDP-0.2"));
+ StackId stackId = new StackId("HDP-0.2");
+ RepositoryVersionEntity repositoryVersion = helper.getOrCreateRepositoryVersion(stackId,
+ stackId.getStackVersion());
+
+ clusters.addCluster(cluster1, stackId);
+ clusters.addCluster(cluster2, stackId);
Cluster c1 = clusters.getCluster(cluster1);
Cluster c2 = clusters.getCluster(cluster2);
- c1.setDesiredStackVersion(new StackId("HDP-0.2"));
- c2.setDesiredStackVersion(new StackId("HDP-0.2"));
+ c1.setDesiredStackVersion(stackId);
+ c2.setDesiredStackVersion(stackId);
- Service s1 = serviceFactory.createNew(c1, "HDFS");
- Service s2 = serviceFactory.createNew(c1, "MAPREDUCE");
- Service s3 = serviceFactory.createNew(c1, "HBASE");
- Service s4 = serviceFactory.createNew(c2, "HIVE");
- Service s5 = serviceFactory.createNew(c2, "ZOOKEEPER");
+ Service s1 = serviceFactory.createNew(c1, "HDFS", repositoryVersion);
+ Service s2 = serviceFactory.createNew(c1, "MAPREDUCE", repositoryVersion);
+ Service s3 = serviceFactory.createNew(c1, "HBASE", repositoryVersion);
+ Service s4 = serviceFactory.createNew(c2, "HIVE", repositoryVersion);
+ Service s5 = serviceFactory.createNew(c2, "ZOOKEEPER", repositoryVersion);
c1.addService(s1);
c1.addService(s2);
@@ -2319,7 +2381,7 @@ public class AmbariManagementControllerTest {
s2.setDesiredState(State.INSTALLED);
s4.setDesiredState(State.INSTALLED);
- ServiceRequest r = new ServiceRequest(null, null, null);
+ ServiceRequest r = new ServiceRequest(null, null, null, null, null, null);
Set<ServiceResponse> resp;
try {
@@ -2329,35 +2391,35 @@ public class AmbariManagementControllerTest {
// Expected
}
- r = new ServiceRequest(c1.getClusterName(), null, null);
+ r = new ServiceRequest(c1.getClusterName(), null, null, null, null, null);
resp = ServiceResourceProviderTest.getServices(controller, Collections.singleton(r));
Assert.assertEquals(3, resp.size());
- r = new ServiceRequest(c1.getClusterName(), s2.getName(), null);
+ r = new ServiceRequest(c1.getClusterName(), s2.getName(), null, null, null, null);
resp = ServiceResourceProviderTest.getServices(controller, Collections.singleton(r));
Assert.assertEquals(1, resp.size());
Assert.assertEquals(s2.getName(), resp.iterator().next().getServiceName());
try {
- r = new ServiceRequest(c2.getClusterName(), s1.getName(), null);
+ r = new ServiceRequest(c2.getClusterName(), s1.getName(), null, null, null, null);
ServiceResourceProviderTest.getServices(controller, Collections.singleton(r));
fail("Expected failure for invalid service");
} catch (Exception e) {
// Expected
}
- r = new ServiceRequest(c1.getClusterName(), null, "INSTALLED");
+ r = new ServiceRequest(c1.getClusterName(), null, null, null, "INSTALLED", null);
resp = ServiceResourceProviderTest.getServices(controller, Collections.singleton(r));
Assert.assertEquals(2, resp.size());
- r = new ServiceRequest(c2.getClusterName(), null, "INIT");
+ r = new ServiceRequest(c2.getClusterName(), null, null, null, "INIT", null);
resp = ServiceResourceProviderTest.getServices(controller, Collections.singleton(r));
Assert.assertEquals(1, resp.size());
ServiceRequest r1, r2, r3;
- r1 = new ServiceRequest(c1.getClusterName(), null, "INSTALLED");
- r2 = new ServiceRequest(c2.getClusterName(), null, "INIT");
- r3 = new ServiceRequest(c2.getClusterName(), null, "INIT");
+ r1 = new ServiceRequest(c1.getClusterName(), null, null, null, "INSTALLED", null);
+ r2 = new ServiceRequest(c2.getClusterName(), null, null, null, "INIT", null);
+ r3 = new ServiceRequest(c2.getClusterName(), null, null, null, "INIT", null);
Set<ServiceRequest> reqs = new HashSet<>();
reqs.addAll(Arrays.asList(r1, r2, r3));
@@ -2371,15 +2433,18 @@ public class AmbariManagementControllerTest {
public void testGetServiceComponents() throws AmbariException {
String cluster1 = getUniqueName();
- clusters.addCluster(cluster1, new StackId("HDP-0.2"));
+ StackId stackId = new StackId("HDP-0.2");
+ RepositoryVersionEntity repositoryVersion = helper.getOrCreateRepositoryVersion(stackId,
+ stackId.getStackVersion());
+
+ clusters.addCluster(cluster1, stackId);
Cluster c1 = clusters.getCluster(cluster1);
- c1.setDesiredStackVersion(new StackId("HDP-0.2"));
- Service s1 = serviceFactory.createNew(c1, "HDFS");
+ c1.setDesiredStackVersion(stackId);
+ Service s1 = serviceFactory.createNew(c1, "HDFS", repositoryVersion);
c1.addService(s1);
s1.setDesiredState(State.INSTALLED);
ServiceComponent sc1 = serviceComponentFactory.createNew(s1, "DATANODE");
s1.addServiceComponent(sc1);
- sc1.setDesiredStackVersion(new StackId("HDP-0.1"));
sc1.setDesiredState(State.UNINSTALLED);
ServiceComponentRequest r = new ServiceComponentRequest(cluster1,
@@ -2393,7 +2458,7 @@ public class AmbariManagementControllerTest {
Assert.assertEquals(c1.getClusterName(), resp.getClusterName());
Assert.assertEquals(sc1.getName(), resp.getComponentName());
Assert.assertEquals(s1.getName(), resp.getServiceName());
- Assert.assertEquals("HDP-0.1", resp.getDesiredStackVersion());
+ Assert.assertEquals("HDP-0.2", resp.getDesiredStackVersion());
Assert.assertEquals(sc1.getDesiredState().toString(),
resp.getDesiredState());
Assert.assertEquals(c1.getClusterId(), resp.getClusterId().longValue());
@@ -2406,16 +2471,20 @@ public class AmbariManagementControllerTest {
String cluster1 = getUniqueName();
String cluster2 = getUniqueName();
- clusters.addCluster(cluster1, new StackId("HDP-0.2"));
- clusters.addCluster(cluster2, new StackId("HDP-0.2"));
+ StackId stackId = new StackId("HDP-0.2");
+ RepositoryVersionEntity repositoryVersion = helper.getOrCreateRepositoryVersion(stackId,
+ stackId.getStackVersion());
+
+ clusters.addCluster(cluster1, stackId);
+ clusters.addCluster(cluster2, stackId);
Cluster c1 = clusters.getCluster(cluster1);
Cluster c2 = clusters.getCluster(cluster2);
- Service s1 = serviceFactory.createNew(c1, "HDFS");
- Service s2 = serviceFactory.createNew(c1, "MAPREDUCE");
- Service s3 = serviceFactory.createNew(c1, "HBASE");
- Service s4 = serviceFactory.createNew(c2, "HIVE");
- Service s5 = serviceFactory.createNew(c2, "ZOOKEEPER");
+ Service s1 = serviceFactory.createNew(c1, "HDFS", repositoryVersion);
+ Service s2 = serviceFactory.createNew(c1, "MAPREDUCE", repositoryVersion);
+ Service s3 = serviceFactory.createNew(c1, "HBASE", repositoryVersion);
+ Service s4 = serviceFactory.createNew(c2, "HIVE", repositoryVersion);
+ Service s5 = serviceFactory.createNew(c2, "ZOOKEEPER", repositoryVersion);
c1.addService(s1);
c1.addService(s2);
@@ -2429,16 +2498,12 @@ public class AmbariManagementControllerTest {
ServiceComponent sc1 = serviceComponentFactory.createNew(s1, "DATANODE");
ServiceComponent sc2 = serviceComponentFactory.createNew(s1, "NAMENODE");
- ServiceComponent sc3 = serviceComponentFactory.createNew(s3,
- "HBASE_REGIONSERVER");
+ ServiceComponent sc3 = serviceComponentFactory.createNew(s3, "HBASE_REGIONSERVER");
ServiceComponent sc4 = serviceComponentFactory.createNew(s4, "HIVE_SERVER");
ServiceComponent sc5 = serviceComponentFactory.createNew(s4, "HIVE_CLIENT");
- ServiceComponent sc6 = serviceComponentFactory.createNew(s4,
- "MYSQL_SERVER");
- ServiceComponent sc7 = serviceComponentFactory.createNew(s5,
- "ZOOKEEPER_SERVER");
- ServiceComponent sc8 = serviceComponentFactory.createNew(s5,
- "ZOOKEEPER_CLIENT");
+ ServiceComponent sc6 = serviceComponentFactory.createNew(s4, "MYSQL_SERVER");
+ ServiceComponent sc7 = serviceComponentFactory.createNew(s5, "ZOOKEEPER_SERVER");
+ ServiceComponent sc8 = serviceComponentFactory.createNew(s5, "ZOOKEEPER_CLIENT");
s1.addServiceComponent(sc1);
s1.addServiceComponent(sc2);
@@ -2528,7 +2593,9 @@ public class AmbariManagementControllerTest {
String host1 = getUniqueName();
Cluster c1 = setupClusterWithHosts(cluster1, "HDP-0.1", Lists.newArrayList(host1), "centos5");
- Service s1 = serviceFactory.createNew(c1, "HDFS");
+ RepositoryVersionEntity repositoryVersion = repositoryVersion01;
+
+ Service s1 = serviceFactory.createNew(c1, "HDFS", repositoryVersion);
c1.addService(s1);
ServiceComponent sc1 = serviceComponentFactory.createNew(s1, "DATANODE");
s1.addServiceComponent(sc1);
@@ -2537,8 +2604,6 @@ public class AmbariManagementControllerTest {
sc1.addServiceComponentHost(sch1);
sch1.setDesiredState(State.INSTALLED);
sch1.setState(State.INSTALLING);
- sch1.setDesiredStackVersion(new StackId("HDP-1.2.0"));
- sch1.setStackVersion(new StackId("HDP-0.1"));
sch1.updateActualConfigs(new HashMap<String, Map<String,String>>() {{
put("global", new HashMap<String,String>() {{ put("tag", "version1"); }});
@@ -2562,8 +2627,8 @@ public class AmbariManagementControllerTest {
resp.getDesiredState());
Assert.assertEquals(sch1.getState().toString(),
resp.getLiveState());
- Assert.assertEquals(sch1.getStackVersion().getStackId(),
- resp.getStackVersion());
+ Assert.assertEquals(repositoryVersion.getStackId(),
+ sch1.getServiceComponent().getDesiredStackVersion());
Assert.assertNotNull(resp.getActualConfigs());
Assert.assertEquals(1, resp.getActualConfigs().size());
}
@@ -2760,17 +2825,14 @@ public class AmbariManagementControllerTest {
public void testHbaseDecommission() throws AmbariException, AuthorizationException {
String cluster1 = getUniqueName();
createCluster(cluster1);
- clusters.getCluster(cluster1)
- .setDesiredStackVersion(new StackId("HDP-2.0.7"));
+ clusters.getCluster(cluster1).setDesiredStackVersion(new StackId("HDP-2.0.7"));
String serviceName = "HBASE";
- createService(cluster1, serviceName, null);
+ createService(cluster1, serviceName, repositoryVersion207, null);
String componentName1 = "HBASE_MASTER";
String componentName2 = "HBASE_REGIONSERVER";
- createServiceComponent(cluster1, serviceName, componentName1,
- State.INIT);
- createServiceComponent(cluster1, serviceName, componentName2,
- State.INIT);
+ createServiceComponent(cluster1, serviceName, componentName1, State.INIT);
+ createServiceComponent(cluster1, serviceName, componentName2, State.INIT);
final String host1 = getUniqueName();
final String host2 = getUniqueName();
@@ -2778,14 +2840,10 @@ public class AmbariManagementControllerTest {
addHostToCluster(host1, cluster1);
addHostToCluster(host2, cluster1);
- createServiceComponentHost(cluster1, serviceName, componentName1,
- host1, null);
- createServiceComponentHost(cluster1, serviceName, componentName1,
- host2, null);
- createServiceComponentHost(cluster1, serviceName, componentName2,
- host1, null);
- createServiceComponentHost(cluster1, serviceName, componentName2,
- host2, null);
+ createServiceComponentHost(cluster1, serviceName, componentName1, host1, null);
+ createServiceComponentHost(cluster1, serviceName, componentName1, host2, null);
+ createServiceComponentHost(cluster1, serviceName, componentName2, host1, null);
+ createServiceComponentHost(cluster1, serviceName, componentName2, host2, null);
RequestOperationLevel level = new RequestOperationLevel(
Resource.Type.HostComponent, cluster1, null, null, null);
@@ -2931,9 +2989,11 @@ public class AmbariManagementControllerTest {
}},
"centos5");
- Service s1 = serviceFactory.createNew(c1, "HDFS");
- Service s2 = serviceFactory.createNew(c1, "MAPREDUCE");
- Service s3 = serviceFactory.createNew(c1, "HBASE");
+ RepositoryVersionEntity repositoryVersion = repositoryVersion02;
+
+ Service s1 = serviceFactory.createNew(c1, "HDFS", repositoryVersion);
+ Service s2 = serviceFactory.createNew(c1, "MAPREDUCE", repositoryVersion);
+ Service s3 = serviceFactory.createNew(c1, "HBASE", repositoryVersion);
c1.addService(s1);
c1.addService(s2);
@@ -3161,8 +3221,8 @@ public class AmbariManagementControllerTest {
ServiceRequest r;
try {
- r = new ServiceRequest(cluster1, serviceName,
- State.INSTALLING.toString());
+ r = new ServiceRequest(cluster1, serviceName, "HDP-0.2", "0.2-1234",
+ State.INSTALLING.toString(), null);
reqs.clear();
reqs.add(r);
ServiceResourceProviderTest.updateServices(controller, reqs, mapRequestProps, true, false);
@@ -3171,8 +3231,8 @@ public class AmbariManagementControllerTest {
// Expected
}
- r = new ServiceRequest(cluster1, serviceName,
- State.INSTALLED.toString());
+ r = new ServiceRequest(cluster1, serviceName, "HDP-0.2", "0.2-1234", State.INSTALLED.toString(),
+ null);
reqs.clear();
reqs.add(r);
RequestStatusResponse trackAction = ServiceResourceProviderTest.updateServices(controller, reqs,
@@ -3216,10 +3276,10 @@ public class AmbariManagementControllerTest {
ServiceRequest req1, req2;
try {
reqs.clear();
- req1 = new ServiceRequest(cluster1, serviceName1,
- State.INSTALLED.toString());
- req2 = new ServiceRequest(cluster2, serviceName2,
- State.INSTALLED.toString());
+ req1 = new ServiceRequest(cluster1, serviceName1, "HDP-0.2", "0.2-1234",
+ State.INSTALLED.toString(), null);
+ req2 = new ServiceRequest(cluster2, serviceName2, "HDP-0.2", "0.2-1234",
+ State.INSTALLED.toString(), null);
reqs.add(req1);
reqs.add(req2);
ServiceResourceProviderTest.updateServices(controller, reqs, mapRequestProps, true, false);
@@ -3230,10 +3290,10 @@ public class AmbariManagementControllerTest {
try {
reqs.clear();
- req1 = new ServiceRequest(cluster1, serviceName1,
- State.INSTALLED.toString());
- req2 = new ServiceRequest(cluster1, serviceName1,
- State.INSTALLED.toString());
+ req1 = new ServiceRequest(cluster1, serviceName1, "HDP-0.2", "0.2-1234",
+ State.INSTALLED.toString(), null);
+ req2 = new ServiceRequest(cluster1, serviceName1, "HDP-0.2", "0.2-1234",
+ State.INSTALLED.toString(), null);
reqs.add(req1);
reqs.add(req2);
ServiceResourceProviderTest.updateServices(controller, reqs, mapRequestProps, true, false);
@@ -3247,10 +3307,10 @@ public class AmbariManagementControllerTest {
try {
reqs.clear();
- req1 = new ServiceRequest(cluster1, serviceName1,
- State.INSTALLED.toString());
- req2 = new ServiceRequest(cluster1, serviceName2,
- State.STARTED.toString());
+ req1 = new ServiceRequest(cluster1, serviceName1, "HDP-0.2", "0.2-1234",
+ State.INSTALLED.toString(), null);
+ req2 = new ServiceRequest(cluster1, serviceName2, "HDP-0.2", "0.2-1234",
+ State.STARTED.toString(), null);
reqs.add(req1);
reqs.add(req2);
ServiceResourceProviderTest.updateServices(controller, reqs, mapRequestProps, true, false);
@@ -3359,8 +3419,8 @@ public class AmbariManagementControllerTest {
ServiceRequest req1, req2;
try {
reqs.clear();
- req1 = new ServiceRequest(cluster1, serviceName1,
- State.STARTED.toString());
+ req1 = new ServiceRequest(cluster1, serviceName1, "HDP-0.2", "0.2-1234",
+ State.STARTED.toString(), null);
reqs.add(req1);
ServiceResourceProviderTest.updateServices(controller, reqs, mapRequestProps, true, false);
fail("Expected failure for invalid state update");
@@ -3386,8 +3446,8 @@ public class AmbariManagementControllerTest {
try {
reqs.clear();
- req1 = new ServiceRequest(cluster1, serviceName1,
- State.STARTED.toString());
+ req1 = new ServiceRequest(cluster1, serviceName1, "HDP-0.2", "0.2-1234",
+ State.STARTED.toString(), null);
reqs.add(req1);
ServiceResourceProviderTest.updateServices(controller, reqs, mapRequestProps, true, false);
fail("Expected failure for invalid state update");
@@ -3412,10 +3472,10 @@ public class AmbariManagementControllerTest {
sch5.setState(State.INSTALLED);
reqs.clear();
- req1 = new ServiceRequest(cluster1, serviceName1,
- State.STARTED.toString());
- req2 = new ServiceRequest(cluster1, serviceName2,
- State.STARTED.toString());
+ req1 = new ServiceRequest(cluster1, serviceName1, "HDP-0.2", "0.2-1234",
+ State.STARTED.toString(), null);
+ req2 = new ServiceRequest(cluster1, serviceName2, "HDP-0.2", "0.2-1234",
+ State.STARTED.toString(), null);
reqs.add(req1);
reqs.add(req2);
RequestStatusResponse trackAction = ServiceResourceProviderTest.updateServices(controller, reqs,
@@ -3500,10 +3560,10 @@ public class AmbariManagementControllerTest {
// test no-op
reqs.clear();
- req1 = new ServiceRequest(cluster1, serviceName1,
- State.STARTED.toString());
- req2 = new ServiceRequest(cluster1, serviceName2,
- State.STARTED.toString());
+ req1 = new ServiceRequest(cluster1, serviceName1, "HDP-0.2", "0.2-1234",
+ State.STARTED.toString(), null);
+ req2 = new ServiceRequest(cluster1, serviceName2, "HDP-0.2", "0.2-1234",
+ State.STARTED.toString(), null);
reqs.add(req1);
reqs.add(req2);
trackAction = ServiceResourceProviderTest.updateServices(controller, reqs, mapRequestProps, true,
@@ -3878,327 +3938,6 @@ public class AmbariManagementControllerTest {
Assert.assertNull(trackAction);
}
- @Ignore
- @Test
- public void testServiceComponentHostUpdateStackId() throws Exception {
- String cluster1 = getUniqueName();
- createCluster(cluster1);
- String serviceName1 = "HDFS";
- createService(cluster1, serviceName1, null);
- String componentName1 = "NAMENODE";
- String componentName2 = "DATANODE";
- createServiceComponent(cluster1, serviceName1, componentName1,
- State.INIT);
- createServiceComponent(cluster1, serviceName1, componentName2,
- State.INIT);
- String host1 = getUniqueName();
- String host2 = getUniqueName();
- addHostToCluster(host1, cluster1);
- addHostToCluster(host2, cluster1);
-
- Set<ServiceComponentHostRequest> set1 =
- new HashSet<>();
- ServiceComponentHostRequest r1 =
- new ServiceComponentHostRequest(cluster1, serviceName1,
- componentName1, host1, State.INIT.toString());
- ServiceComponentHostRequest r2 =
- new ServiceComponentHostRequest(cluster1, serviceName1,
- componentName1, host2, State.INIT.toString());
- ServiceComponentHostRequest r3 =
- new ServiceComponentHostRequest(cluster1, serviceName1,
- componentName2, host1, State.INIT.toString());
-
- set1.add(r1);
- set1.add(r2);
- set1.add(r3);
- controller.createHostComponents(set1);
-
- Cluster c1 = clusters.getCluster(cluster1);
- Service s1 = c1.getService(serviceName1);
- ServiceComponent sc1 = s1.getServiceComponent(componentName1);
- ServiceComponent sc2 = s1.getServiceComponent(componentName2);
- ServiceComponentHost sch1 = sc1.getServiceComponentHost(host1);
- ServiceComponentHost sch2 = sc1.getServiceComponentHost(host2);
- ServiceComponentHost sch3 = sc2.getServiceComponentHost(host1);
-
- s1.setDesiredState(State.INSTALLED);
- sc1.setDesiredState(State.INSTALLED);
- sc2.setDesiredState(State.INSTALLED);
-
- ServiceComponentHostRequest req1;
- ServiceComponentHostRequest req2;
- ServiceComponentHostRequest req3;
- Set<ServiceComponentHostRequest> reqs =
- new HashSet<>();
-
- StackId newStack = new StackId("HDP-0.2");
- StackId oldStack = new StackId("HDP-0.1");
- c1.setCurrentStackVersion(newStack);
- c1.setDesiredStackVersion(newStack);
- sch1.setState(State.INSTALLED);
- sch2.setState(State.UPGRADING);
- sch1.setDesiredState(State.INSTALLED);
- sch2.setDesiredState(State.INSTALLED);
-
- sch1.setStackVersion(oldStack);
- sch2.setStackVersion(oldStack);
- sch1.setDesiredStackVersion(newStack);
- sch2.setDesiredStackVersion(oldStack);
-
- reqs.clear();
- req1 = new ServiceComponentHostRequest(cluster1, serviceName1,
- componentName1, host1,
- State.INSTALLED.toString());
- req1.setDesiredStackId("HDP-0.2");
- reqs.add(req1);
- req2 = new ServiceComponentHostRequest(cluster1, serviceName1,
- componentName1, host2,
- State.INSTALLED.toString());
- req2.setDesiredStackId("HDP-0.2");
- reqs.add(req2);
-
- Map<String,String> mapRequestProps = new HashMap<>();
- mapRequestProps.put("context", "testServiceComponentHostUpdateStackId");
-
- RequestStatusResponse resp = updateHostComponents(reqs, mapRequestProps, true);
- List<Stage> stages = actionDB.getAllStages(resp.getRequestId());
- Assert.assertEquals(1, stages.size());
- Assert.assertEquals(2, stages.get(0).getOrderedHostRoleCommands().size());
- Assert.assertEquals("testServiceComponentHostUpdateStackId", stages.get(0).getRequestContext());
- Assert.assertEquals(State.UPGRADING, sch1.getState());
- Assert.assertEquals(State.UPGRADING, sch2.getState());
- Assert.assertTrue(sch1.getDesiredStackVersion().compareTo(newStack) == 0);
- Assert.assertTrue(sch2.getDesiredStackVersion().compareTo(newStack) == 0);
- for (HostRoleCommand command : stages.get(0).getOrderedHostRoleCommands()) {
- ExecutionCommand execCommand = command.getExecutionCommandWrapper().getExecutionCommand();
- Assert.assertTrue(execCommand.getCommandParams().containsKey("source_stack_version"));
- Assert.assertTrue(execCommand.getCommandParams().containsKey("target_stack_version"));
- Assert.assertEquals(RoleCommand.UPGRADE, execCommand.getRoleCommand());
- }
-
- sch1.setState(State.INSTALLED);
- sch1.setDesiredState(State.INSTALLED);
- sch2.setState(State.UPGRADING);
- sch2.setDesiredState(State.INSTALLED);
- sch3.setState(State.UPGRADING);
- sch3.setDesiredState(State.INSTALLED);
-
- sch3.setStackVersion(oldStack);
- sch3.setDesiredStackVersion(newStack);
-
- reqs.clear();
- req1 = new ServiceComponentHostRequest(cluster1, serviceName1,
- componentName1, host1,
- State.INSTALLED.toString());
- req1.setDesiredStackId("HDP-0.2");
- reqs.add(req1);
- req2 = new ServiceComponentHostRequest(cluster1, serviceName1,
- componentName1, host2,
- State.INSTALLED.toString());
- req2.setDesiredStackId("HDP-0.2");
- reqs.add(req2);
- req3 = new ServiceComponentHostRequest(cluster1, serviceName1,
- componentName2, host1,
- State.INSTALLED.toString());
- req3.setDesiredStackId("HDP-0.2");
- reqs.add(req3);
-
- resp = updateHostComponents(reqs, Collections.<String, String>emptyMap(), true);
- stages = actionDB.getAllStages(resp.getRequestId());
- Assert.assertEquals(2, stages.size());
- Assert.assertEquals(2, stages.get(0).getOrderedHostRoleCommands().size());
- Assert.assertEquals("", stages.get(0).getRequestContext());
- Assert.assertEquals(State.UPGRADING, sch1.getState());
- Assert.assertEquals(State.UPGRADING, sch2.getState());
- Assert.assertEquals(State.UPGRADING, sch3.getState());
- Assert.assertTrue(sch1.getDesiredStackVersion().compareTo(newStack) == 0);
- Assert.assertTrue(sch2.getDesiredStackVersion().compareTo(newStack) == 0);
- Assert.assertTrue(sch3.getDesiredStackVersion().compareTo(newStack) == 0);
- for (Stage stage : stages) {
- for (HostRoleCommand command : stage.getOrderedHostRoleCommands()) {
- ExecutionCommand execCommand = command.getExecutionCommandWrapper().getExecutionCommand();
- Assert.assertTrue(execCommand.getCommandParams().containsKey("source_stack_version"));
- Assert.assertTrue(execCommand.getCommandParams().containsKey("target_stack_version"));
- Assert.assertEquals("{\"stackName\":\"HDP\",\"stackVersion\":\"0.2\"}",
- execCommand.getCommandParams().get("target_stack_version"));
- Assert.assertEquals(RoleCommand.UPGRADE, execCommand.getRoleCommand());
- }
- }
- }
-
- @Ignore
- @Test
- public void testServiceComponentHostUpdateStackIdError() throws Exception {
- String cluster1 = getUniqueName();
- createCluster(cluster1);
- String serviceName1 = "HDFS";
- createService(cluster1, serviceName1, null);
- String componentName1 = "NAMENODE";
- createServiceComponent(cluster1, serviceName1, componentName1,
- State.INIT);
- String host1 = getUniqueName();
- String host2 = getUniqueName();
- addHostToCluster(host1, cluster1);
- addHostToCluster(host2, cluster1);
-
- Set<ServiceComponentHostRequest> set1 =
- new HashSet<>();
- ServiceComponentHostRequest r1 =
- new ServiceComponentHostRequest(cluster1, serviceName1,
- componentName1, host1, State.INIT.toString());
- ServiceComponentHostRequest r2 =
- new ServiceComponentHostRequest(cluster1, serviceName1,
- componentName1, host2, State.INIT.toString());
-
- set1.add(r1);
- set1.add(r2);
- controller.createHostComponents(set1);
-
- Cluster c1 = clusters.getCluster(cluster1);
- Service s1 = c1.getService(serviceName1);
- ServiceComponent sc1 = s1.getServiceComponent(componentName1);
- ServiceComponentHost sch1 = sc1.getServiceComponentHost(host1);
- ServiceComponentHost sch2 = sc1.getServiceComponentHost(host2);
-
- s1.setDesiredState(State.INIT);
- sc1.setDesiredState(State.INIT);
-
- ServiceComponentHostRequest req1;
- ServiceComponentHostRequest req2;
- Set<ServiceComponentHostRequest> reqs =
- new HashSet<>();
-
- reqs.clear();
- req1 = new ServiceComponentHostRequest(cluster1, serviceName1,
- componentName1, host1, State.STARTED.toString());
- req1.setDesiredStackId("invalid stack id");
- reqs.add(req1);
- updateHostAndCompareExpectedFailure(reqs, "Invalid desired stack id");
-
- c1.setCurrentStackVersion(new StackId("HDP-0.0"));
- sch1.setStackVersion(new StackId("HDP-0.1"));
- reqs.clear();
- req1 = new ServiceComponentHostRequest(cluster1, serviceName1,
- componentName1, host1,
- State.STARTED.toString());
- req1.setDesiredStackId("HDP-0.2");
- reqs.add(req1);
- updateHostAndCompareExpectedFailure(reqs, "Cluster has not been upgraded yet");
-
- c1.setCurrentStackVersion(new StackId("HDP2-0.1"));
- reqs.clear();
- req1 = new ServiceComponentHostRequest(cluster1, serviceName1,
- componentName1, host1,
- State.STARTED.toString());
- req1.setDesiredStackId("HDP-0.2");
- reqs.add(req1);
- updateHostAndCompareExpectedFailure(reqs, "Deployed stack name and requested stack names");
-
- c1.setCurrentStackVersion(new StackId("HDP-0.2"));
- reqs.clear();
- req1 = new ServiceComponentHostRequest(cluster1, serviceName1,
- componentName1, host1,
- State.STARTED.toString());
- req1.setDesiredStackId("HDP-0.3");
- reqs.add(req1);
- updateHostAndCompareExpectedFailure(reqs, "Component host can only be upgraded to the same version");
-
- c1.setCurrentStackVersion(new StackId("HDP-0.2"));
- sch1.setState(State.STARTED);
- reqs.clear();
- req1 = new ServiceComponentHostRequest(cluster1, serviceName1,
- componentName1, host1,
- State.STARTED.toString());
- req1.setDesiredStackId("HDP-0.2");
- reqs.add(req1);
- updateHostAndCompareExpectedFailure(reqs, "Component host is in an invalid state for upgrade");
-
- c1.setCurrentStackVersion(new StackId("HDP-0.2"));
- sch1.setState(State.UPGRADING);
- reqs.clear();
- req1 = new ServiceComponentHostRequest(cluster1, serviceName1,
- componentName1, host1,
- State.STARTED.toString());
- req1.setDesiredStackId("HDP-0.2");
- reqs.add(req1);
- updateHostAndCompareExpectedFailure(reqs, "The desired state for an upgrade request must be");
-
- c1.setCurrentStackVersion(new StackId("HDP-0.2"));
- sch1.setState(State.UPGRADING);
- reqs.clear();
- req1 = new ServiceComponentHostRequest(cluster1, serviceName1,
- componentName1, host1, null);
- req1.setDesiredStackId("HDP-0.2");
- reqs.add(req1);
- updateHostAndCompareExpectedFailure(reqs, "The desired state for an upgrade request must be");
-
- c1.setCurrentStackVersion(new StackId("HDP-0.2"));
- sch1.setState(State.INSTALLED);
- sch1.setDesiredState(State.INSTALLED);
- sch2.setState(State.INSTALLED);
- sch2.setDesiredState(State.INSTALLED);
- reqs.clear();
- req1 = new ServiceComponentHostRequest(cluster1, serviceName1,
- componentName1, host1,
- State.INSTALLED.toString());
- req1.setDesiredStackId("HDP-0.2");
- reqs.add(req1);
- req2 = new ServiceComponentHostRequest(cluster1, serviceName1,
- componentName1, host2,
- State.STARTED.toString());
- reqs.add(req2);
- updateHostAndCompareExpectedFailure(reqs, "An upgrade request cannot be combined with other");
-
- c1.setCurrentStackVersion(new StackId("HDP-0.2"));
- sch1.setState(State.INSTALLED);
- sch1.setStackVersion(new StackId("HDP-0.2"));
- reqs.clear();
- req1 = new ServiceComponentHostRequest(cluster1, serviceName1,
- componentName1, host1,
- null);
- req1.setDesiredStackId("HDP-0.2");
- reqs.add(req1);
-
- RequestStatusResponse resp = updateHostComponents(reqs,
- Collections.<String,String>emptyMap(), true);
- Assert.assertNull(resp);
-
- c1.setCurrentStackVersion(new StackId("HDP-0.2"));
- sch1.setState(State.INSTALLED);
- sch1.setStackVersion(new StackId("HDP-0.2"));
- reqs.clear();
- req1 = new ServiceComponentHostRequest(cluster1, serviceName1,
- componentName1, host1,
- State.INSTALLED.toString());
- req1.setDesiredStackId("HDP-0.2");
- reqs.add(req1);
- resp = updateHostComponents(reqs, Collections.<String,String>emptyMap(), true);
- Assert.assertNull(resp);
- }
-
- private void updateHostAndCompareExpectedFailure(Set<ServiceComponentHostRequest> reqs,
- String expectedMessage) {
- try {
- updateHostComponents(reqs, Collections.<String,String>emptyMap(), true);
- fail("Expected failure: " + expectedMessage);
- } catch (Exception e) {
- LOG.info("Actual exception message: " + e.getMessage());
- Assert.assertTrue(e.getMessage().contains(expectedMessage));
- }
- }
-
- @Test
- public void testStartClientComponent() {
- // FIXME write test after meta data integration
- // start should fail
- }
-
- @Test
- public void testStartClientHostComponent() {
- // FIXME write test after meta data integration
- // start should fail
- }
-
@Test
public void testCreateCustomActions() throws Exception {
final String cluster1 = getUniqueName();
@@ -4235,8 +3974,10 @@ public class AmbariManagementControllerTest {
put("test.password", "supersecret");
}}, new HashMap<String, Map<String,String>>());
- Service hdfs = cluster.addService("HDFS");
- Service mapred = cluster.addService("YARN");
+ RepositoryVersionEntity repositoryVersion = repositoryVersion206;
+
+ Service hdfs = cluster.addService("HDFS", repositoryVersion);
+ Service mapred = cluster.addService("YARN", repositoryVersion);
hdfs.addServiceComponent(Role.HDFS_CLIENT.name());
hdfs.addServiceComponent(Role.NAMENODE.name());
@@ -4396,7 +4137,9 @@ public class AmbariManagementControllerTest {
put("key1", "value1");
}}, new HashMap<String, Map<String,String>>());
- Service hdfs = cluster.addService("HDFS");
+ RepositoryVersionEntity repositoryVersion = repositoryVersion207;
+
+ Service hdfs = cluster.addService("HDFS", repositoryVersion);
hdfs.addServiceComponent(Role.HDFS_CLIENT.name());
hdfs.addServiceComponent(Role.NAMENODE.name());
@@ -4485,6 +4228,8 @@ public class AmbariManagementControllerTest {
cluster.setDesiredStackVersion(new StackId("HDP-2.0.7"));
cluster.setCurrentStackVersion(new StackId("HDP-2.0.7"));
+ RepositoryVersionEntity repositoryVersion = repositoryVersion207;
+
ConfigFactory cf = injector.getInstance(ConfigFactory.class);
Config config1 = cf.createNew(cluster, "global", "version1",
new HashMap<String, String>() {{
@@ -4501,8 +4246,8 @@ public class AmbariManagementControllerTest {
cluster.addDesiredConfig("_test", Collections.singleton(config1));
cluster.addDesiredConfig("_test", Collections.singleton(config2));
- Service hdfs = cluster.addService("HDFS");
- Service hive = cluster.addService("HIVE");
+ Service hdfs = cluster.addService("HDFS", repositoryVersion);
+ Service hive = cluster.addService("HIVE", repositoryVersion);
hdfs.addServiceComponent(Role.HDFS_CLIENT.name());
hdfs.addServiceComponent(Role.NAMENODE.name());
@@ -4769,6 +4514,8 @@ public class AmbariManagementControllerTest {
cluster.setDesiredStackVersion(new StackId("HDP-0.1"));
cluster.setCurrentStackVersion(new StackId("HDP-0.1"));
+ RepositoryVersionEntity repositoryVersion = repositoryVersion01;
+
ConfigFactory cf = injector.getInstance(ConfigFactory.class);
Config config1 = cf.createNew(cluster, "global", "version1",
new HashMap<String, String>(){{ put("key1", "value1"); }}, new HashMap<String, Map<String,String>>());
@@ -4781,8 +4528,8 @@ public class AmbariManagementControllerTest {
cluster.addDesiredConfig("_test", Collections.singleton(config1));
cluster.addDesiredConfig("_test", Collections.singleton(config2));
- Service hdfs = cluster.addService("HDFS");
- Service mapReduce = cluster.addService("MAPREDUCE");
+ Service hdfs = cluster.addService("HDFS", repositoryVersion);
+ Service mapReduce = cluster.addService("MAPREDUCE", repositoryVersion);
hdfs.addServiceComponent(Role.HDFS_CLIENT.name());
mapReduce.addServiceComponent(Role.MAPREDUCE_CLIENT.name());
@@ -4996,8 +4743,8 @@ public class AmbariManagementControllerTest {
.getServiceComponentHost(host2));
// Install
- ServiceRequest r = new ServiceRequest(cluster1, serviceName,
- State.INSTALLED.toString());
+ ServiceRequest r = new ServiceRequest(cluster1, serviceName, "HDP-0.1", "0.1-1234",
+ State.INSTALLED.toString(), null);
Set<ServiceRequest> requests = new HashSet<>();
requests.add(r);
@@ -5016,8 +4763,8 @@ public class AmbariManagementControllerTest {
}
// Start
- r = new ServiceRequest(cluster1, serviceName,
- State.STARTED.toString());
+ r = new ServiceRequest(cluster1, serviceName, "HDP-0.1", "0.1-1234",
+ State.STARTED.toString(), null);
requests.clear();
requests.add(r);
ServiceResourceProviderTest.updateServices(controller, requests, mapRequestProps, true, false);
@@ -5108,7 +4855,7 @@ public class AmbariManagementControllerTest {
configVersions.put("typeC", "v2");
configVersions.put("typeE", "v1");
sReqs.clear();
- sReqs.add(new ServiceRequest(cluster1, serviceName, null));
+ sReqs.add(new ServiceRequest(cluster1, serviceName, "HDP-0.1", "0.1-1234", null, null));
Assert.assertNull(ServiceResourceProviderTest.updateServices(controller, sReqs, mapRequestProps, true, false));
@@ -5257,7 +5004,7 @@ public class AmbariManagementControllerTest {
configVersions.put("typeC", "v2");
configVersions.put("typeE", "v1");
sReqs.clear();
- sReqs.add(new ServiceRequest(cluster1, serviceName, null));
+ sReqs.add(new ServiceRequest(cluster1, serviceName, "HDP-0.1", "0.1-1234", null, null));
Assert.assertNull(ServiceResourceProviderTest.updateServices(controller, sReqs, mapRequestProps, true, false));
// update configs at SCH level
@@ -5323,7 +5070,7 @@ public class AmbariManagementControllerTest {
host2, null);
// Install
- ServiceRequest r = new ServiceRequest(cluster1, serviceName,
+ ServiceRequest r = new ServiceRequest(cluster1, serviceName, "HDP-0.1", "0.1-1234",
State.INSTALLED.toString());
Set<ServiceRequest> requests = new HashSet<>();
requests.add(r);
@@ -5423,7 +5170,7 @@ public class AmbariManagementControllerTest {
configVersions.put("core-site", "version1");
configVersions.put("hdfs-site", "version1");
sReqs.clear();
- sReqs.add(new ServiceRequest(cluster1, serviceName, null));
+ sReqs.add(new ServiceRequest(cluster1, serviceName, "HDP-0.1", "0.1-1234", null));
Assert.assertNull(ServiceResourceProviderTest.updateServices(controller, sReqs, mapRequestProps, true, false));
// Reconfigure S Level
@@ -5431,7 +5178,7 @@ public class AmbariManagementControllerTest {
configVersions.put("core-site", "version122");
sReqs.clear();
- sReqs.add(new ServiceRequest(cluster1, serviceName, null));
+ sReqs.add(new ServiceRequest(cluster1, serviceName, "HDP-0.1", "0.1-1234", null));
Assert.assertNull(ServiceResourceProviderTest.updateServices(controller, sReqs, mapRequestProps, true, false));
entityManager.clear();
@@ -5724,13 +5471,10 @@ public class AmbariManagementControllerTest {
public void testClientServiceSmokeTests() throws AmbariException, AuthorizationException {
String cluster1 = getUniqueName();
createCluster(cluster1);
- clusters.getCluster(cluster1)
- .setDesiredStackVersion(new StackId("HDP-0.1"));
String serviceName = "PIG";
- createService(cluster1, serviceName, null);
+ createService(cluster1, serviceName, repositoryVersion01, null);
String componentName1 = "PIG";
- createServiceComponent(cluster1, serviceName, componentName1,
- State.INIT);
+ createServiceComponent(cluster1, serviceName, componentName1, State.INIT);
String host1 = getUniqueName();
String host2 = getUniqueName();
@@ -5747,7 +5491,8 @@ public class AmbariManagementControllerTest {
createServiceComponentHost(cluster1, null, componentName1,
host2, null);
- ServiceRequest r = new ServiceRequest(cluster1, serviceName, State.INSTALLED.toString());
+ ServiceRequest r = new ServiceRequest(cluster1, serviceName, "HDP-0.1", "0.1-1234",
+ State.INSTALLED.toString());
Set<ServiceRequest> requests = new HashSet<>();
requests.add(r);
@@ -5783,7 +5528,7 @@ public class AmbariManagementControllerTest {
}
}
- r = new ServiceRequest(cluster1, serviceName, State.STARTED.toString());
+ r = new ServiceRequest(cluster1, serviceName, "HDP-0.1", "0.1-1234", State.STARTED.toString());
requests.clear();
requests.add(r);
@@ -6207,7 +5952,7 @@ public class AmbariManagementControllerTest {
// Start Service
ServiceRequest sr = new ServiceRequest(
- cluster1, serviceName, State.STARTED.name());
+ cluster1, serviceName, "HDP-2.0.6", "2.0.6-1234", State.STARTED.name());
Set<ServiceRequest> setReqs = new HashSet<>();
setReqs.add(sr);
RequestStatusResponse resp = ServiceResourceProviderTest.updateServices(controller,
@@ -6434,6 +6179,8 @@ public class AmbariManagementControllerTest {
cluster.setDesiredStackVersion(new StackId("HDP-2.0.6"));
cluster.setCurrentStackVersion(new StackId("HDP-2.0.6"));
+ RepositoryVersionEntity repositoryVersion = repositoryVersion206;
+
ConfigFactory cf = injector.getInstance(ConfigFactory.class);
Config config1 = cf.createNew(cluster, "global", "version1",
new HashMap<String, String>() {{
@@ -6445,8 +6192,8 @@ public class AmbariManagementControllerTest {
put("key1", "value1");
}}, new HashMap<String, Map<String,String>>());
- Service hdfs = cluster.addService("HDFS");
- Service mapred = cluster.addService("YARN");
+ Service hdfs = cluster.addService("HDFS", repositoryVersion);
+ Service mapred = cluster.addService("YARN", repositoryVersion);
hdfs.addServiceComponent(Role.HDFS_CLIENT.name());
hdfs.addServiceComponent(Role.NAMENODE.name());
@@ -6535,6 +6282,8 @@ public class AmbariManagementControllerTest {
cluster.setDesiredStackVersion(new StackId("HDP-2.0.6"));
cluster.setCurrentStackVersion(new StackId("HDP-2.0.6"));
+ RepositoryVersionEntity repositoryVersion = repositoryVersion206;
+
ConfigFactory cf = injector.getInstance(ConfigFactory.class);
Config config1 = cf.createNew(cluster, "global", "version1",
new HashMap<String, String>() {{
@@ -6546,8 +6295,8 @@ public class AmbariManagementControllerTest {
put("key1", "value1");
}}, new HashMap<String, Map<String,String>>());
- Service hdfs = cluster.addService("HDFS");
- Service mapred = cluster.addService("YARN");
+ Service hdfs = cluster.addService("HDFS", repositoryVersion);
+ Service mapred = cluster.addService("YARN", repositoryVersion);
hdfs.addServiceComponent(Role.HDFS_CLIENT.name());
hdfs.addServiceComponent(Role.NAMENODE.name());
@@ -6806,7 +6555,7 @@ public class AmbariManagementControllerTest {
put("core-site", "version1");
put("hdfs-site", "version1");
}};
- ServiceRequest sr = new ServiceRequest(cluster1, serviceName, null);
+ ServiceRequest sr = new ServiceRequest(cluster1, serviceName, "HDP-0.1", "0.1-1234", null);
ServiceResourceProviderTest.updateServices(controller, Collections.singleton(sr), new HashMap<String,String>(), false, false);
// Install
@@ -6834,10 +6583,8 @@ public class AmbariManagementControllerTest {
public void testHostLevelParamsSentWithCommands() throws AmbariException, AuthorizationException {
String cluster1 = getUniqueName();
createCluster(cluster1);
- clusters.getCluster(cluster1)
- .setDesiredStackVersion(new StackId("HDP-0.1"));
String serviceName = "PIG";
- createService(cluster1, serviceName, null);
+ createService(cluster1, serviceName, repositoryVersion01, null);
String componentName1 = "PIG";
createServiceComponent(cluster1, serviceName, componentName1,
State.INIT);
@@ -6859,7 +6606,8 @@ public class AmbariManagementControllerTest {
- ServiceRequest r = new ServiceRequest(cluster1, serviceName, State.INSTALLED.toString());
+ ServiceRequest r = new ServiceRequest(cluster1, serviceName, "HDP-0.1", "0.1-1234",
+ State.INSTALLED.toString());
Set<ServiceRequest> requests = new HashSet<>();
requests.add(r);
@@ -6896,21 +6644,17 @@ public class AmbariManagementControllerTest {
cluster.setDesiredStackVersion(new StackId("HDP-2.0.6"));
String serviceName1 = "HDFS";
String serviceName2 = "MAPREDUCE2";
- createService(cluster1, serviceName1, null);
- createService(cluster1, serviceName2, null);
+ createService(cluster1, serviceName1, repositoryVersion206, null);
+ createService(cluster1, serviceName2, repositoryVersion206, null);
String componentName1 = "NAMENODE";
String componentName2 = "DATANODE";
String componentName3 = "HDFS_CLIENT";
String componentName4 = "HISTORYSERVER";
- createServiceComponent(cluster1, serviceName1, componentName1,
- State.INIT);
- createServiceComponent(cluster1, serviceName1, componentName2,
- State.INIT);
- createServiceComponent(cluster1, serviceName1, componentName3,
- State.INIT);
- createServiceComponent(cluster1, serviceName2, componentName4,
- State.INIT);
+ createServiceComponent(cluster1, serviceName1, componentName1, State.INIT);
+ createServiceComponent(cluster1, serviceName1, componentName2, State.INIT);
+ createServiceComponent(cluster1, serviceName1, componentName3, State.INIT);
+ createServiceComponent(cluster1, serviceName2, componentName4, State.INIT);
final String host1 = getUniqueName();
final String host2 = getUniqueName();
@@ -6920,28 +6664,20 @@ public class AmbariManagementControllerTest {
addHostToCluster(host2, cluster1);
addHostToCluster(host3, cluster1);
- createServiceComponentHost(cluster1, serviceName1, componentName1,
- host1, null);
- createServiceComponentHost(cluster1, serviceName1, componentName2,
- host2, null);
- createServiceComponentHost(cluster1, serviceName1, componentName3,
- host2, null);
- createServiceComponentHost(cluster1, serviceName1, componentName3,
- host3, null);
- createServiceComponentHost(cluster1, serviceName2, componentName4,
- host3, null);
+ createServiceComponentHost(cluster1, serviceName1, componentName1, host1, null);
+ createServiceComponentHost(cluster1, serviceName1, componentName2, host2, null);
+ createServiceComponentHost(cluster1, serviceName1, componentName3, host2, null);
+ createServiceComponentHost(cluster1, serviceName1, componentName3, host3, null);
+ createServiceComponentHost(cluster1, serviceName2, componentName4, host3, null);
// Create and attach config
Map<String, String> configs = new HashMap<>();
configs.put("a", "b");
ConfigurationRequest cr1,cr2,cr3;
- cr1 = new ConfigurationRequest(cluster1, "core-site","version1",
- configs, null);
- cr2 = new ConfigurationRequest(cluster1, "hdfs-site","version1",
- configs, null);
- cr3 = new ConfigurationRequest(cluster1, "mapred-site","version1",
- configs, null);
+ cr1 = new ConfigurationRequest(cluster1, "core-site", "version1", configs, null);
+ cr2 = new ConfigurationRequest(cluster1, "hdfs-site", "version1", configs, null);
+ cr3 = new ConfigurationRequest(cluster1, "mapred-site", "version1", configs, null);
ClusterRequest crReq = new ClusterRequest(cluster.getClusterId(), cluster1, null, null);
crReq.setDesiredConfig(Collections.singletonList(cr1));
@@ -7651,140 +7387,6 @@ public class AmbariManagementControllerTest {
}
}
- // disabled as upgrade feature is disabled
- @Ignore
- @Test
- public void testUpdateClusterVersionBasic() throws AmbariException, AuthorizationException {
- String cluster1 = getUniqueName();
- String serviceName = "MAPREDUCE";
- String host1 = getUniqueName();
- String host2 = getUniqueName();
- String componentName = "JOBTRACKER";
- StackId currentStackId = new StackId("HDP-0.1");
-
- Map<String, String> mapRequestProps = new HashMap<>();
- mapRequestProps.put("context", "Called from a test");
-
- createCluster(cluster1);
- Cluster c = clusters.getCluster(cluster1);
- c.setDesiredStackVersion(currentStackId);
- createService(cluster1, serviceName, State.INIT);
- createServiceComponent(cluster1, serviceName, componentName, null);
-
- addHostToCluster(host1, cluster1);
- addHostToCluster(host2, cluster1);
-
- createServiceComponentHost(cluster1, null, componentName,
- host1, null);
- createServiceComponentHost(cluster1, null, componentName,
- host2, null);
-
- c.getService(serviceName).setDesiredState(State.INSTALLED);
- c.getService(serviceName).getServiceComponent(componentName).setDesiredState(State.INSTALLED);
- c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host1)
- .setDesiredState(State.INSTALLED);
- c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host2)
- .setDesiredState(State.STARTED);
- c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host1)
- .setState(State.INSTALLED);
- c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host2)
- .setState(State.STARTED);
- c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host1)
- .setStackVersion(currentStackId);
- c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host2)
- .setStackVersion(currentStackId);
-
- ClusterRequest r = new ClusterRequest(c.getClusterId(), cluster1, "HDP-0.0.1", null);
- try {
- controller.updateClusters(Collections.singleton(r), mapRequestProps);
- fail("Update cluster should fail");
- } catch (AmbariException e) {
- Assert.assertTrue(e.getMessage().contains("must be greater than current version"));
- }
-
- r = new ClusterRequest(c.getClusterId(), cluster1, "HDPLocal-1.2.2", null);
- try {
- controller.updateClusters(Collections.singleton(r), mapRequestProps);
- fail("Update cluster should fail");
- } catch (AmbariException e) {
- Assert.assertTrue(e.getMessage().contains("Upgrade not possible between different stacks"));
- }
-
- r = new ClusterRequest(c.getClusterId(), cluster1, "HDP-0.2", null);
- try {
- controller.updateClusters(Collections.singleton(r), mapRequestProps);
- fail("Update cluster should fail");
- } catch (AmbariException e) {
- Assert.assertTrue(e.getMessage().contains("Upgrade needs all services to be stopped"));
- Assert.assertTrue(e.getMessage().contains(serviceName));
- }
-
- c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host2)
- .setDesiredState(State.INSTALLED);
-
- r = new ClusterRequest(c.getClusterId(), cluster1, "HDP-0.2", null);
- try {
- controller.updateClusters(Collections.singleton(r), mapRequestProps);
- fail("Update cluster should fail");
- } catch (AmbariException e) {
- Assert.assertTrue(e.getMessage().contains("Upgrade needs all services to be stopped"));
- Assert.assertTrue(e.getMessage().contains(componentName));
- }
-
- c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host2)
- .setState(State.INSTALLED);
- controller.updateClusters(Collections.singleton(r), mapRequestProps);
- StackId expectedStackId = new StackId("HDP-0.2");
- Assert.assertTrue(expectedStackId.equals(c.getDesiredStackVersion()));
- Assert.assertTrue(expectedStackId.equals(c.getService(serviceName).getDesiredStackVersion()));
- Assert.assertTrue(expectedStackId.equals(c.getService(serviceName)
- .getServiceComponent(componentName).getDesiredStackVersion()));
- Assert.assertTrue(expectedStackId.equals(c.getService(serviceName)
- .getServiceComponent(componentName).getServiceComponentHost(host1).getDesiredStackVersion()));
- Assert.assertTrue(expectedStackId.equals(c.getService(serviceName)
- .getServiceComponent(componentName).getServiceComponentHost(host2).getDesiredStackVersion()));
- Assert.assertTrue(currentStackId.equals(c.getService(serviceName)
- .getServiceComponent(componentName).getServiceComponentHost(host1).getStackVersion()));
- Assert.assertTrue(currentStackId.equals(c.getService(serviceName)
- .getServiceComponent(componentName).getServiceComponentHost(host2).getStackVersion()));
- ServiceComponent sc = c.getService(serviceName).getServiceComponent(componentName);
- Assert.assertEquals(State.UPGRADING, sc.getServiceComponentHost(host1).getState());
- Assert.assertEquals(State.UPGRADING, sc.getServiceComponentHost(host2).getState());
-
- // Fail as another request is active
- try {
- controller.updateClusters(Collections.singleton(r), mapRequestProps);
- fail("Update cluster should fail");
- } catch (AmbariException e) {
- Assert.assertTrue(e.getMessage().contains("A prior upgrade request with id"));
- }
-
- // cases where there is no update required
- c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host1)
- .setDesiredState(State.INSTALLED);
- c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host2)
- .setDesiredState(State.INSTALLED);
- c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host1)
- .setState(State.INSTALLED);
- c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host2)
- .setState(State.INSTALLED);
- c.setCurrentStackVersion(expectedStackId);
- r = new ClusterRequest(c.getClusterId(), cluster1, "", null);
- controller.updateClusters(Collections.singleton(r), mapRequestProps);
- Assert.assertEquals(State.INSTALLED, sc.getServiceComponentHost(host1).getState());
- Assert.assertEquals(State.INSTALLED, sc.getServiceComponentHost(host2).getState());
-
- r = new ClusterRequest(c.getClusterId(), cluster1, null, null);
- controller.updateClusters(Collections.singleton(r), mapRequestProps);
- Assert.assertEquals(State.INSTALLED, sc.getServiceComponentHost(host1).getState());
- Assert.assertEquals(State.INSTALLED, sc.getServiceComponentHost(host2).getState());
-
- r = new ClusterRequest(c.getClusterId(), cluster1, "HDP-0.2", null);
- controller.updateClusters(Collections.singleton(r), mapRequestProps);
- Assert.assertEquals(State.INSTALLED, sc.getServiceComponentHost(host1).getState());
- Assert.assertEquals(State.INSTALLED, sc.getServiceComponentHost(host2).getState());
- }
-
@Test
public void testUpdateClusterUpgradabilityCheck() throws AmbariException, AuthorizationException {
String cluster1 = getUniqueName();
@@ -7815,159 +7417,6 @@ public class AmbariManagementControllerTest {
}
}
- // disabled as cluster upgrade feature is disabled
- @Ignore
- @Test
- public void testUpdateClusterVersionCombinations() throws AmbariException, AuthorizationException {
- String cluster1 = getUniqueName();
- String pigServiceName = "PIG";
- String mrServiceName = "MAPREDUCE";
- final String host1 = getUniqueName();
- final String host2 = getUniqueName();
- String pigComponentName = "PIG";
- String mrJobTrackerComp = "JOBTRACKER";
- String mrTaskTrackerComp = "TASKTRACKER";
- String mrClientComp = "MAPREDUCE_CLIENT";
- String hdfsService = "HDFS";
- String hdfsNameNode = "NAMENODE";
- String hdfsDataNode = "DATANODE";
- String hdfsClient = "HDFS_CLIENT";
- StackId currentStackId = new StackId("HDP-0.1");
- StackId desiredStackId = new StackId("HDP-0.2");
-
- List<String> hosts = new ArrayList<>();
- hosts.add(host1);
- hosts.add(host2);
-
- Map<String, String> mapRequestProps = new HashMap<>();
- mapRequestProps.put("context", "Called from a test");
-
- createCluster(cluster1);
- Cluster c = clusters.getCluster(cluster1);
- c.setDesiredStackVersion(currentStackId);
- createService(cluster1, pigServiceName, State.INIT);
- createServiceComponent(cluster1, pigServiceName, pigComponentName, null);
-
- addHostToCluster(host1, cluster1);
- addHostToCluster(host2, cluster1);
-
- createServiceComponentHost(cluster1, null, pigComponentName,
- host1, null);
- createServiceComponentHost(cluster1, null, pigComponentName,
- host2, null);
-
- resetServiceState(pigServiceName, currentStackId, c);
-
- ClusterRequest r = new ClusterRequest(c.getClusterId(), cluster1, "HDP-0.2", null);
- RequestStatusResponse trackAction = controller.updateClusters(Collections.singleton(r), mapRequestProps);
- List<Stage> stages = actionDB.getAllStages(trackAction.getRequestId());
-
- // Upgrade a cluster with one service
- ExpectedUpgradeTasks expectedTasks = new ExpectedUpgradeTasks(hosts);
- expectedTasks.expectTask(Role.PIG, host1);
- expectedTasks.expectTask(Role.PIG, host2);
- expectedTasks.expectTask(Role.AMBARI_SERVER_ACTION);
- validateGeneratedStages(stages, 2, expectedTasks);
-
- resetCluster(c, currentStackId);
-
- createService(cluster1, mrServiceName, State.INIT);
- createServiceComponent(cluster1, mrServiceName, mrJobTrackerComp, null);
- createServiceComponent(cluster1, mrServiceName, mrTaskTrackerComp, null);
- createServiceComponent(cluster1, mrServiceName, mrClientComp, null);
-
- createServiceComponentHost(cluster1, null, mrJobTrackerComp, host1, null);
- createServiceComponentHost(cluster1, null, mrTaskTrackerComp, host2, null);
- createServiceComponentHost(cluster1, null, mrClientComp, host2, null);
-
- resetServiceState(mrServiceName, currentStackId, c);
-
- // Upgrade a cluster with two service
- actionDB.abortOperation(trackAction.getRequestId());
- r = new ClusterRequest(c.getClusterId(), cluster1, "HDP-0.2", null);
- trackAction = controller.updateClusters(Collections.singleton(r), mapRequestProps);
- stages = actionDB.getAllStages(trackAction.getRequestId());
-
- expectedTasks.expectTask(Role.JOBTRACKER, host1);
- expectedTasks.expectTask(Role.TASKTRACKER, host2);
- expectedTasks.expectTask(Role.MAPREDUCE_CLIENT, host2);
- validateGeneratedStages(stages, 5, expectedTasks);
-
- // Upgrade again
- actionDB.abortOperation(trackAction.getRequestId());
- trackAction = controller.updateClusters(Collections.singleton(r), mapRequestProps);
- stages = actionDB.getAllStages(trackAction.getRequestId());
- validateGeneratedStages(stages, 5, expectedTasks);
-
- // some host components are upgraded
- c.getService(pigServiceName).getServiceComponent(pigComponentName).getServiceComponentHost(host1)
- .setState(State.INSTALLED);
- c.getService(pigServiceName).getServiceComponent(pigComponentName).getServiceComponentHost(host2)
- .setState(State.INSTALLED);
- c.getService(pigServiceName).getServiceComponent(pigComponentName).getServiceComponentHost(host1)
- .setStackVersion(desiredStackId);
- c.getService(pigServiceName).getServiceComponent(pigComponentName).getServiceComponentHost(host2)
- .setStackVersion(desiredStackId);
-
- actionDB.abortOperation(trackAction.getRequestId());
- trackAction = controller.updateClusters(Collections.singleton(r), mapRequestProps);
- stages = actionDB.getAllStages(trackAction.getRequestId());
- validateGeneratedStages(stages, 5, expectedTasks);
-
- c.getService(mrServiceName).getServiceComponent(mrJobTrackerComp).getServiceComponentHost(host1)
- .setState(State.UPGRADING);
- c.getService(mrServiceName).getServiceComponent(mrTaskTrackerComp).getServiceComponentHost(host2)
- .setState(State.UPGRADING);
- actionDB.abortOperation(trackAction.getRequestId());
- trackAction = controller.updateClusters(Collections.singleton(r), mapRequestProps);
- stages = actionDB.getAllStages(trackAction.getRequestId());
- validateGeneratedStages(stages, 5, expectedTasks);
-
- // Add HDFS and upgrade
- createService(cluster1, hdfsService, State.INIT);
- createServiceComponent(cluster1, hdfsService, hdfsNameNode, null);
- createServiceComponent(cluster1, hdfsService, hdfsDataNode, null);
- createServiceComponent(cluster1, hdfsService, hdfsClient, null);
-
- createServiceComponentHost(cluster1, null, hdfsNameNode, host1, null);
- createServiceComponentHost(cluster1, null, hdfsDataNode, host1, null);
- createServiceComponentHost(cluster1, null, hdfsDataNode, host2, null);
- createServiceComponentHost(cluster1, null, hdfsClient, host2, null);
-
- resetServiceState(hdfsService, currentStackId, c);
- resetServiceState(mrServiceName, currentStackId, c);
- resetServiceState(pigServiceName, currentStackId, c);
-
- actionDB.abortOperation(trackAction.getRequestId());
- trackAction = controller.updateClusters(Collections.singleton(r), mapRequestProps);
- stages = actionDB.getAllStages(trackAction.getRequestId());
-
- expectedTasks.resetAll();
- expectedTasks.expectTask(Role.PIG, host1);
- expectedTasks.expectTask(Role.PIG, host2);
- expectedTasks.expectTask(Role.JOBTRACKER, host1);
- expectedTasks.expectTask(Role.TASKTRACKER, host2);
- expectedTasks.expectTask(Role.MAPREDUCE_CLIENT, host2);
- expectedTasks.expectTask(Role.DATANODE, host1);
- expectedTasks.expectTask(Role.DATANODE, host2);
- expectedTasks.expectTask(Role.NAMENODE, host1);
- expectedTasks.expectTask(Role.HDFS_CLIENT, host2);
- expectedTasks.expectTask(Role.AMBARI_SERVER_ACTION);
- validateGeneratedStages(stages, 8, expectedTasks);
- }
-
- private void resetServiceState(String service, StackId currentStackId, Cluster c) throws AmbariException {
- c.getService(service).setDesiredState(State.INSTALLED);
- for (ServiceComponent sc : c.getService(service).getServiceComponents().values()) {
- sc.setDesiredState(State.INSTALLED);
- for (ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
- sch.setDesiredState(State.INSTALLED);
- sch.setState(State.INSTALLED);
- sch.setStackVersion(currentStackId);
- }
- }
- }
-
private void validateGeneratedStages(List<Stage> stages, int expectedStageCount, ExpectedUpgradeTasks expectedTasks) {
Assert.assertEquals(expectedStageCount, stages.size());
int prevRoleOrder = -1;
@@ -8003,20 +7452,6 @@ public class AmbariManagementControllerTest {
}
}
- private void resetCluster(Cluster cluster, StackId currentStackId) throws AmbariException{
- cluster.setDesiredStackVersion(currentStackId);
- for (Service service : cluster.getServices().values()) {
- service.setDesiredStackVersion(currentStackId);
- for (ServiceComponent component : service.getServiceComponents().values()) {
- component.setDesiredStackVersion(currentStackId);
- for (ServiceComponentHost componentHost : component.getServiceComponentHosts().values()) {
- componentHost.setDesiredStackVersion(currentStackId);
- componentHost.setState(State.INSTALLED);
- }
- }
- }
- }
-
class ExpectedUpgradeTasks {
private static final int ROLE_COUNT = 25;
private static final String DEFAULT_HOST = "default_host";
@@ -8163,7 +7598,7 @@ public class AmbariManagementControllerTest {
.getServiceComponentHost(host2));
// Install
- ServiceRequest r = new ServiceRequest(cluster1, serviceName, State.INSTALLED.toString());
+ ServiceRequest r = new ServiceRequest(cluster1, serviceName, "HDP-0.1", "0.1-1234", State.INSTALLED.toString());
Set<ServiceRequest> requests = new HashSet<>();
requests.add(r);
@@ -8182,7 +7617,7 @@ public class AmbariManagementControllerTest {
}
// Start
- r = new ServiceRequest(cluster1, serviceName, State.STARTED.toString());
+ r = new ServiceRequest(cluster1, serviceName, "HDP-0.1", "0.1-1234", State.STARTED.toString());
requests.clear();
requests.add(r);
ServiceResourceProviderTest.updateServices(controller, requests, mapRequestProps, true, false);
@@ -8227,7 +7662,7 @@ public class AmbariManagementControllerTest {
}
// Stop all services
- r = new ServiceRequest(cluster1, serviceName, State.INSTALLED.toString());
+ r = new ServiceRequest(cluster1, serviceName, "HDP-0.1", "0.1-1234", State.INSTALLED.toString());
requests.clear();
requests.add(r);
ServiceResourceProviderTest.updateServices(controller, requests, mapRequestProps, true, false);
@@ -8429,7 +7864,7 @@ public class AmbariManagementControllerTest {
// Install
- ServiceRequest r = new ServiceRequest(cluster1, serviceName, State.INSTALLED.toString());
+ ServiceRequest r = new ServiceRequest(cluster1, serviceName, "HDP-0.1", "0.1-1234", State.INSTALLED.toString());
Set<ServiceRequest> requests = new HashSet<>();
requests.add(r);
@@ -8527,7 +7962,7 @@ public class AmbariManagementControllerTest {
sch3.setState(State.INSTALLED);
// an UNKOWN failure will throw an exception
- ServiceRequest req = new ServiceRequest(cluster1, serviceName1,
+ ServiceRequest req = new ServiceRequest(cluster1, serviceName1, "HDP-0.2", "0.2-1234",
State.INSTALLED.toString());
ServiceResourceProviderTest.updateServices(controller, Collections.singleton(req), Collections.<String, String>emptyMap(), true, false);
}
@@ -9255,9 +8690,9 @@ public class AmbariManagementControllerTest {
amc.createCluster(clusterRequest);
Set<ServiceRequest> serviceRequests = new HashSet<>();
- serviceRequests.add(new ServiceRequest(cluster1, "HDFS", null));
+ serviceRequests.add(new ServiceRequest(cluster1, "HDFS", "HDP-1.2.0", "1.2.0-1234", null));
- ServiceResourceProviderTest.createServices(amc, serviceRequests);
+ ServiceResourceProviderTest.createServices(amc, repositoryVersionDAO, serviceRequests);
Type confType = new TypeToken<Map<String, String>>() {
}.getType();
@@ -9316,11 +8751,11 @@ public class AmbariManagementControllerTest {
HostResourceProviderTest.createHosts(amc, hrs);
Set<ServiceRequest> serviceRequests = new HashSet<>();
- serviceRequests.add(new ServiceRequest(CLUSTER_NAME, "HDFS", null));
- serviceRequests.add(new ServiceRequest(CLUSTER_NAME, "MAPREDUCE2", null));
- serviceRequests.add(new ServiceRequest(CLUSTER_NAME, "YARN", null));
+ serviceRequests.add(new ServiceRequest(CLUSTER_NAME, "HDFS", STACK_ID, "2.0.1-1234", null));
+ serviceRequests.add(new ServiceRequest(CLUSTER_NAME, "MAPREDUCE2", STACK_ID, "2.0.1-1234", null));
+ serviceRequests.add(new ServiceRequest(CLUSTER_NAME, "YARN", STACK_ID, "2.0.1-1234", null));
- ServiceResourceProviderTest.createServices(amc, serviceRequests);
+ ServiceResourceProviderTest.createServices(amc, repositoryVersionDAO, serviceRequests);
Set<ServiceComponentRequest> serviceComponentRequests = new HashSet<>();
serviceComponentRequests.add(new ServiceComponentRequest(CLUSTER_NAME, "HDFS", "NAMENODE", null));
@@ -9392,10 +8827,10 @@ public class AmbariManagementControllerTest {
amc.createCluster(clusterRequest);
Set<ServiceRequest> serviceRequests = new HashSet<>();
- serviceRequests.add(new ServiceRequest(cluster1, "HDFS", null));
- serviceRequests.add(new ServiceRequest(cluster1, "HIVE", null));
+ serviceRequests.add(new ServiceRequest(cluster1, "HDFS", "HDP-1.2.0", "1.2.0-1234", null));
+ serviceRequests.add(new ServiceRequest(cluster1, "HIVE", "HDP-1.2.0", "1.2.0-1234", null));
- ServiceResourceProviderTest.createServices(amc, serviceRequests);
+ ServiceResourceProviderTest.createServices(amc, repositoryVersionDAO, serviceRequests);
Type confType = new TypeToken<Map<String, String>>() {}.getType();
@@ -9414,7 +8849,7 @@ public class AmbariManagementControllerTest {
Assert.assertTrue(clusters.getCluster(cluster1).getDesiredConfigs().containsKey("hive-site"));
serviceRequests.clear();
- serviceRequests.add(new ServiceRequest(cluster1, "HDFS", null));
+ serviceRequests.add(new ServiceRequest(cluster1, "HDFS", "HDP-1.2.0", "1.2.0-1234", null));
ServiceResourceProviderTest.updateServices(amc, serviceRequests, mapRequestProps, true, false);
@@ -9444,7 +8879,7 @@ public class AmbariManagementControllerTest {
amc.createHostComponents(componentHostRequests);
serviceRequests.clear();
- serviceRequests.add(new ServiceRequest(cluster1, "HDFS", "INSTALLED"));
+ serviceRequests.add(new ServiceRequest(cluster1, "HDFS", "HDP-1.2.0", "1.2.0-1234", "INSTALLED"));
ServiceResourceProviderTest.updateServices(amc, serviceRequests, mapRequestProps, true, false);
Cluster cluster = clusters.getCluster(cluster1);
@@ -9511,7 +8946,7 @@ public class AmbariManagementControllerTest {
componentHost.handleEvent(new ServiceComponentHostOpSucceededEvent(componentHost.getServiceComponentName(), componentHost.getHostName(), System.currentTimeMillis()));
serviceRequests.clear();
- serviceRequests.add(new ServiceRequest(cluster1, "HDFS", "STARTED"));
+ serviceRequests.add(new ServiceRequest(cluster1, "HDFS", "HDP-1.2.0", "1.2.0-1234", "STARTED"));
RequestStatusResponse response = ServiceResourceProviderTest.updateServices(amc, serviceRequests,
mapRequestProps
<TRUNCATED>