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:50 UTC
[3/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/internal/UpgradeResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
index e587f28..a814ba8 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
@@ -95,6 +95,8 @@ import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.ServiceComponent;
import org.apache.ambari.server.state.ServiceComponentHost;
import org.apache.ambari.server.state.StackId;
+import org.apache.ambari.server.state.UpgradeContext;
+import org.apache.ambari.server.state.UpgradeContextFactory;
import org.apache.ambari.server.state.UpgradeHelper;
import org.apache.ambari.server.state.UpgradeState;
import org.apache.ambari.server.state.stack.UpgradePack;
@@ -140,6 +142,11 @@ public class UpgradeResourceProviderTest {
private TopologyManager topologyManager;
private ConfigFactory configFactory;
private HostRoleCommandDAO hrcDAO;
+ private UpgradeContextFactory upgradeContextFactory;
+
+ RepositoryVersionEntity repoVersionEntity2110;
+ RepositoryVersionEntity repoVersionEntity2111;
+ RepositoryVersionEntity repoVersionEntity2200;
@Before
public void before() throws Exception {
@@ -176,6 +183,7 @@ public class UpgradeResourceProviderTest {
amc = injector.getInstance(AmbariManagementController.class);
ambariMetaInfo = injector.getInstance(AmbariMetaInfo.class);
configFactory = injector.getInstance(ConfigFactory.class);
+ upgradeContextFactory = injector.getInstance(UpgradeContextFactory.class);
Field field = AmbariServer.class.getDeclaredField("clusterController");
field.setAccessible(true);
@@ -199,26 +207,26 @@ public class UpgradeResourceProviderTest {
StackId stack211 = new StackId("HDP-2.1.1");
StackId stack220 = new StackId("HDP-2.2.0");
- RepositoryVersionEntity repoVersionEntity = new RepositoryVersionEntity();
- repoVersionEntity.setDisplayName("My New Version 1");
- repoVersionEntity.setOperatingSystems("");
- repoVersionEntity.setStack(stackEntity211);
- repoVersionEntity.setVersion("2.1.1.0");
- repoVersionDao.create(repoVersionEntity);
-
- repoVersionEntity = new RepositoryVersionEntity();
- repoVersionEntity.setDisplayName("My New Version 2 for patch upgrade");
- repoVersionEntity.setOperatingSystems("");
- repoVersionEntity.setStack(stackEntity211);
- repoVersionEntity.setVersion("2.1.1.1");
- repoVersionDao.create(repoVersionEntity);
-
- repoVersionEntity = new RepositoryVersionEntity();
- repoVersionEntity.setDisplayName("My New Version 3 for major upgrade");
- repoVersionEntity.setOperatingSystems("");
- repoVersionEntity.setStack(stackEntity220);
- repoVersionEntity.setVersion("2.2.0.0");
- repoVersionDao.create(repoVersionEntity);
+ repoVersionEntity2110 = new RepositoryVersionEntity();
+ repoVersionEntity2110.setDisplayName("My New Version 1");
+ repoVersionEntity2110.setOperatingSystems("");
+ repoVersionEntity2110.setStack(stackEntity211);
+ repoVersionEntity2110.setVersion("2.1.1.0");
+ repoVersionDao.create(repoVersionEntity2110);
+
+ repoVersionEntity2111 = new RepositoryVersionEntity();
+ repoVersionEntity2111.setDisplayName("My New Version 2 for patch upgrade");
+ repoVersionEntity2111.setOperatingSystems("");
+ repoVersionEntity2111.setStack(stackEntity211);
+ repoVersionEntity2111.setVersion("2.1.1.1");
+ repoVersionDao.create(repoVersionEntity2111);
+
+ repoVersionEntity2200 = new RepositoryVersionEntity();
+ repoVersionEntity2200.setDisplayName("My New Version 3 for major upgrade");
+ repoVersionEntity2200.setOperatingSystems("");
+ repoVersionEntity2200.setStack(stackEntity220);
+ repoVersionEntity2200.setVersion("2.2.0.0");
+ repoVersionDao.create(repoVersionEntity2200);
clusters = injector.getInstance(Clusters.class);
@@ -242,8 +250,7 @@ public class UpgradeResourceProviderTest {
clusters.mapHostToCluster("h1", "c1");
// add a single ZK server
- Service service = cluster.addService("ZOOKEEPER");
- service.setDesiredStackVersion(cluster.getDesiredStackVersion());
+ Service service = cluster.addService("ZOOKEEPER", repoVersionEntity2110);
ServiceComponent component = service.addServiceComponent("ZOOKEEPER_SERVER");
ServiceComponentHost sch = component.addServiceComponentHost("h1");
@@ -745,8 +752,7 @@ public class UpgradeResourceProviderTest {
Cluster cluster = clusters.getCluster("c1");
// add additional service for the test
- Service service = cluster.addService("HIVE");
- service.setDesiredStackVersion(cluster.getDesiredStackVersion());
+ Service service = cluster.addService("HIVE", repoVersionEntity2110);
ServiceComponent component = service.addServiceComponent("HIVE_SERVER");
ServiceComponentHost sch = component.addServiceComponentHost("h1");
@@ -796,7 +802,7 @@ public class UpgradeResourceProviderTest {
// create downgrade with one upgraded service
StackId stackId = new StackId("HDP", "2.2.0");
- cluster.setDesiredStackVersion(stackId, true);
+ service.setDesiredRepositoryVersion(repoVersionEntity2200);
requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME, "c1");
requestProps.put(UpgradeResourceProvider.UPGRADE_VERSION, "2.1.1.0");
@@ -1057,7 +1063,7 @@ public class UpgradeResourceProviderTest {
assertEquals(oldStack, sc.getDesiredStackVersion());
for (ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
- assertEquals(oldStack, sch.getDesiredStackVersion());
+ assertEquals(oldStack.getStackVersion(), sch.getVersion());
}
}
}
@@ -1103,7 +1109,7 @@ public class UpgradeResourceProviderTest {
assertEquals(newStack, sc.getDesiredStackVersion());
for (ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
- assertEquals(newStack, sch.getDesiredStackVersion());
+ assertEquals(newStack.getStackVersion(), sch.getVersion());
}
}
}
@@ -1200,7 +1206,11 @@ public class UpgradeResourceProviderTest {
Map<String, UpgradePack> upgradePacks = ambariMetaInfo.getUpgradePacks("HDP", "2.1.1");
UpgradePack upgrade = upgradePacks.get("upgrade_to_new_stack");
- upgradeResourceProvider.applyStackAndProcessConfigurations(stack211.getStackName(), cluster, "2.2.0.0", Direction.UPGRADE, upgrade, "admin");
+
+ UpgradeContext upgradeContext = upgradeContextFactory.create(cluster, upgrade.getType(),
+ Direction.UPGRADE, "2.2.0.0", new HashMap<String, Object>());
+
+ upgradeResourceProvider.applyStackAndProcessConfigurations(upgradeContext);
Map<String, Map<String, String>> expectedConfigurations = expectedConfigurationsCapture.getValue();
Map<String, String> expectedFooType = expectedConfigurations.get("foo-site");
@@ -1511,8 +1521,7 @@ public class UpgradeResourceProviderTest {
@Test
public void testCreateUpgradeDowngradeCycleAdvertisingVersion() throws Exception {
Cluster cluster = clusters.getCluster("c1");
- Service service = cluster.addService("STORM");
- service.setDesiredStackVersion(cluster.getDesiredStackVersion());
+ Service service = cluster.addService("STORM", repoVersionEntity2110);
ServiceComponent component = service.addServiceComponent("DRPC_SERVER");
ServiceComponentHost sch = component.addServiceComponentHost("h1");
http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeSummaryResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeSummaryResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeSummaryResourceProviderTest.java
index bee8983..094706e 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeSummaryResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeSummaryResourceProviderTest.java
@@ -178,8 +178,7 @@ public class UpgradeSummaryResourceProviderTest {
clusters.mapHostToCluster("h1", "c1");
// add a single ZOOKEEPER server
- Service service = cluster.addService("ZOOKEEPER");
- service.setDesiredStackVersion(cluster.getDesiredStackVersion());
+ Service service = cluster.addService("ZOOKEEPER", repoVersionEntity);
ServiceComponent component = service.addServiceComponent("ZOOKEEPER_SERVER");
ServiceComponentHost sch = component.addServiceComponentHost("h1");
http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/state/GeneralServiceCalculatedStateTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/state/GeneralServiceCalculatedStateTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/state/GeneralServiceCalculatedStateTest.java
index 09d5569..eb41ba6 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/state/GeneralServiceCalculatedStateTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/state/GeneralServiceCalculatedStateTest.java
@@ -26,6 +26,8 @@ import org.apache.ambari.server.H2DatabaseCleaner;
import org.apache.ambari.server.actionmanager.ActionManager;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
+import org.apache.ambari.server.orm.OrmTestHelper;
+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.Service;
@@ -59,10 +61,13 @@ public abstract class GeneralServiceCalculatedStateTest {
@Inject
protected Clusters clusters;
+ @Inject
+ private OrmTestHelper ormTestHelper;
@Before
public void setup() throws Exception {
final StackId stack211 = new StackId("HDP-2.1.1");
+ final String version = "2.1.1-1234";
injector = Guice.createInjector(Modules.override(
new InMemoryDefaultTestModule()).with(new Module() {
@@ -75,11 +80,13 @@ public abstract class GeneralServiceCalculatedStateTest {
injector.getInstance(GuiceJpaInitializer.class);
injector.injectMembers(this);
+ RepositoryVersionEntity repositoryVersion = ormTestHelper.getOrCreateRepositoryVersion(stack211,
+ version);
+
clusters.addCluster(clusterName, stack211);
cluster = clusters.getCluster(clusterName);
- service = cluster.addService(getServiceName());
- service.setDesiredStackVersion(cluster.getDesiredStackVersion());
+ service = cluster.addService(getServiceName(), repositoryVersion);
createComponentsAndHosts();
http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/events/EventsTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/events/EventsTest.java b/ambari-server/src/test/java/org/apache/ambari/server/events/EventsTest.java
index 6fb0028..9907153 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/events/EventsTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/events/EventsTest.java
@@ -33,6 +33,7 @@ import org.apache.ambari.server.orm.dao.AlertDefinitionDAO;
import org.apache.ambari.server.orm.dao.AlertDispatchDAO;
import org.apache.ambari.server.orm.entities.AlertDefinitionEntity;
import org.apache.ambari.server.orm.entities.AlertGroupEntity;
+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;
@@ -78,6 +79,10 @@ public class EventsTest {
private AlertDefinitionDAO m_definitionDao;
private AlertDispatchDAO m_alertDispatchDao;
+ private final String STACK_VERSION = "2.0.6";
+ private final String REPO_VERSION = "2.0.6-1234";
+ private RepositoryVersionEntity m_repositoryVersion;
+
/**
*
*/
@@ -101,7 +106,7 @@ public class EventsTest {
m_alertDispatchDao = m_injector.getInstance(AlertDispatchDAO.class);
m_clusterName = "foo";
- StackId stackId = new StackId("HDP", "2.0.6");
+ StackId stackId = new StackId("HDP", STACK_VERSION);
m_clusters.addCluster(m_clusterName, stackId);
m_clusters.addHost(HOSTNAME);
@@ -117,8 +122,8 @@ public class EventsTest {
Assert.assertNotNull(m_cluster);
m_cluster.setDesiredStackVersion(stackId);
- m_helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
- m_cluster.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+ m_repositoryVersion = m_helper.getOrCreateRepositoryVersion(stackId, REPO_VERSION);
+ m_cluster.createClusterVersion(stackId, REPO_VERSION, "admin",
RepositoryVersionState.INSTALLING);
m_clusters.mapHostToCluster(HOSTNAME, m_clusterName);
@@ -282,8 +287,6 @@ public class EventsTest {
// make sure there are at least 1
Assert.assertTrue(hdfsDefinitions.size() > 0);
- AlertDefinitionEntity definition = hdfsDefinitions.get(0);
-
// delete the default alert group
m_alertDispatchDao.remove(group);
@@ -378,7 +381,7 @@ public class EventsTest {
private void installHdfsService() throws Exception {
String serviceName = "HDFS";
- Service service = m_serviceFactory.createNew(m_cluster, serviceName);
+ Service service = m_serviceFactory.createNew(m_cluster, serviceName, m_repositoryVersion);
service = m_cluster.getService(serviceName);
Assert.assertNotNull(service);
@@ -391,7 +394,5 @@ public class EventsTest {
component.addServiceComponentHost(sch);
sch.setDesiredState(State.INSTALLED);
sch.setState(State.INSTALLED);
- sch.setDesiredStackVersion(new StackId("HDP-2.0.6"));
- sch.setStackVersion(new StackId("HDP-2.0.6"));
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/HostVersionOutOfSyncListenerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/HostVersionOutOfSyncListenerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/HostVersionOutOfSyncListenerTest.java
index fef9276..6184d6d 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/HostVersionOutOfSyncListenerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/HostVersionOutOfSyncListenerTest.java
@@ -123,7 +123,8 @@ public class HostVersionOutOfSyncListenerTest {
* @param stackId Stack Id to use
* @throws AmbariException
*/
- private void createClusterAndHosts(String INSTALLED_VERSION, StackId stackId) throws AmbariException {
+ private RepositoryVersionEntity createClusterAndHosts(String INSTALLED_VERSION, StackId stackId)
+ throws AmbariException {
Host h1 = clusters.getHost("h1");
h1.setState(HostState.HEALTHY);
@@ -152,7 +153,7 @@ public class HostVersionOutOfSyncListenerTest {
Map<String, List<Integer>> zkTopology = new HashMap<>();
List<Integer> zkServerHosts = Arrays.asList(0, 1, 2);
zkTopology.put("ZOOKEEPER_SERVER", new ArrayList<>(zkServerHosts));
- addService(c1, hostList, zkTopology, "ZOOKEEPER");
+ addService(c1, hostList, zkTopology, "ZOOKEEPER", repositoryVersionEntity);
// install new version
helper.createHostVersion("h1", repositoryVersionEntity, RepositoryVersionState.INSTALLED);
@@ -173,6 +174,8 @@ public class HostVersionOutOfSyncListenerTest {
assertEquals(hostVersionEntity.getState(), RepositoryVersionState.INSTALLED);
}
}
+
+ return repositoryVersionEntity;
}
/***
@@ -182,7 +185,7 @@ public class HostVersionOutOfSyncListenerTest {
* @param stackId Stack Id to use
* @throws AmbariException
*/
- private void addRepoVersion(String INSTALLED_VERSION, StackId stackId) throws AmbariException {
+ private RepositoryVersionEntity addRepoVersion(String INSTALLED_VERSION, StackId stackId) throws AmbariException {
// Register and install new version
RepositoryVersionEntity repositoryVersionEntity = helper.getOrCreateRepositoryVersion(stackId,
INSTALLED_VERSION);
@@ -200,6 +203,8 @@ public class HostVersionOutOfSyncListenerTest {
assertEquals(hostVersionEntity.getState(), RepositoryVersionState.INSTALLED);
}
}
+
+ return repositoryVersionEntity;
}
/**
@@ -215,7 +220,7 @@ public class HostVersionOutOfSyncListenerTest {
StackId yaStackId = new StackId(yetAnotherStackId);
// get new hosts installed with the first repo
- createClusterAndHosts(INSTALLED_VERSION, stackId);
+ RepositoryVersionEntity repositoryVersion = createClusterAndHosts(INSTALLED_VERSION, stackId);
// register the new repo
addRepoVersion(INSTALLED_VERSION_2, yaStackId);
@@ -234,7 +239,7 @@ public class HostVersionOutOfSyncListenerTest {
hdfsTopology.put("SECONDARY_NAMENODE", Collections.singletonList(1));
List<Integer> datanodeHosts = Arrays.asList(0, 1);
hdfsTopology.put("DATANODE", new ArrayList<>(datanodeHosts));
- addService(c1, hostList, hdfsTopology, "HDFS");
+ addService(c1, hostList, hdfsTopology, "HDFS", repositoryVersion);
// Check result
Set<String> changedHosts = new HashSet<>();
@@ -272,7 +277,7 @@ public class HostVersionOutOfSyncListenerTest {
String INSTALLED_VERSION = "2.2.0-1000";
StackId stackId = new StackId(this.stackId);
- createClusterAndHosts(INSTALLED_VERSION, stackId);
+ RepositoryVersionEntity repositoryVersion = createClusterAndHosts(INSTALLED_VERSION, stackId);
//Add Ganglia service
List<String> hostList = new ArrayList<>();
@@ -283,7 +288,7 @@ public class HostVersionOutOfSyncListenerTest {
hdfsTopology.put("GANGLIA_SERVER", Collections.singletonList(0));
List<Integer> monitorHosts = Arrays.asList(0, 1);
hdfsTopology.put("GANGLIA_MONITOR", new ArrayList<>(monitorHosts));
- addService(c1, hostList, hdfsTopology, "GANGLIA");
+ addService(c1, hostList, hdfsTopology, "GANGLIA", repositoryVersion);
// Check result
Set<String> changedHosts = new HashSet<>();
@@ -319,7 +324,7 @@ public class HostVersionOutOfSyncListenerTest {
assertRepoVersionState(stackId.getStackId(), INSTALLED_VERSION, RepositoryVersionState.INSTALLED);
assertRepoVersionState(stackId.getStackId(), INSTALLED_VERSION_2, RepositoryVersionState.INSTALLED);
-
+
//Add ZOOKEEPER_CLIENT component
List<String> hostList = new ArrayList<>();
hostList.add("h1");
@@ -334,7 +339,7 @@ public class HostVersionOutOfSyncListenerTest {
changedHosts.add("h3");
assertRepoVersionState(stackId.getStackId(), INSTALLED_VERSION,RepositoryVersionState.OUT_OF_SYNC);
-
+
List<HostVersionEntity> hostVersions = hostVersionDAO.findAll();
for (HostVersionEntity hostVersionEntity : hostVersions) {
@@ -481,13 +486,13 @@ public class HostVersionOutOfSyncListenerTest {
.put("NAMENODE", Lists.newArrayList(0))
.put("DATANODE", Lists.newArrayList(1))
.build();
- addService(c1, allHosts, topology, "HDFS");
+ addService(c1, allHosts, topology, "HDFS", repo);
topology = new ImmutableMap.Builder<String, List<Integer>>()
.put("GANGLIA_SERVER", Lists.newArrayList(0))
.put("GANGLIA_MONITOR", Lists.newArrayList(2))
.build();
- addService(c1, allHosts, topology, "GANGLIA");
+ addService(c1, allHosts, topology, "GANGLIA", repo);
List<HostVersionEntity> hostVersions = hostVersionDAO.findAll();
assertEquals(3, hostVersions.size());
@@ -552,12 +557,11 @@ public class HostVersionOutOfSyncListenerTest {
host1.setHostAttributes(hostAttributes);
}
- private void addService(Cluster cl, List<String> hostList,
- Map<String, List<Integer>> topology, String serviceName
- ) throws AmbariException {
+ private void addService(Cluster cl, List<String> hostList, Map<String, List<Integer>> topology,
+ String serviceName, RepositoryVersionEntity repositoryVersionEntity) throws AmbariException {
StackId stackIdObj = new StackId(stackId);
cl.setDesiredStackVersion(stackIdObj);
- cl.addService(serviceName);
+ cl.addService(serviceName, repositoryVersionEntity);
for (Map.Entry<String, List<Integer>> component : topology.entrySet()) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java
index 7b8b68a..d5b2d46 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java
@@ -167,8 +167,6 @@ public class StackVersionListenerTest extends EasyMockSupport {
public void testRecalculateHostVersionStateWhenComponentDesiredVersionIsUnknownAndNewVersionIsNotValid() throws AmbariException {
expect(serviceComponent.getDesiredVersion()).andReturn(UNKNOWN_VERSION);
expect(serviceComponent.isVersionAdvertised()).andReturn(Boolean.TRUE);
- serviceComponent.setDesiredVersion(INVALID_NEW_VERSION);
- expectLastCall().once();
sch.setUpgradeState(UpgradeState.NONE);
expectLastCall().once();
sch.setVersion(INVALID_NEW_VERSION);
@@ -184,8 +182,6 @@ public class StackVersionListenerTest extends EasyMockSupport {
public void testRecalculateClusterVersionStateWhenComponentDesiredVersionIsUnknownAndNewVersionIsValid() throws AmbariException {
expect(serviceComponent.getDesiredVersion()).andReturn(UNKNOWN_VERSION);
expect(serviceComponent.isVersionAdvertised()).andReturn(Boolean.TRUE);
- serviceComponent.setDesiredVersion(VALID_NEW_VERSION);
- expectLastCall().once();
sch.setUpgradeState(UpgradeState.NONE);
expectLastCall().once();
sch.setVersion(VALID_NEW_VERSION);
http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java
index 574ffa4..e84e0f6 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java
@@ -435,8 +435,11 @@ public class OrmTestHelper {
public void installHdfsService(Cluster cluster,
ServiceFactory serviceFactory, ServiceComponentFactory componentFactory,
ServiceComponentHostFactory schFactory, String hostName) throws Exception {
+
+ RepositoryVersionEntity repositoryVersion = cluster.getCurrentClusterVersion().getRepositoryVersion();
+
String serviceName = "HDFS";
- Service service = serviceFactory.createNew(cluster, serviceName);
+ Service service = serviceFactory.createNew(cluster, serviceName, repositoryVersion);
service = cluster.getService(serviceName);
assertNotNull(service);
@@ -450,8 +453,6 @@ public class OrmTestHelper {
datanode.addServiceComponentHost(sch);
sch.setDesiredState(State.INSTALLED);
sch.setState(State.INSTALLED);
- sch.setDesiredStackVersion(new StackId("HDP-2.0.6"));
- sch.setStackVersion(new StackId("HDP-2.0.6"));
ServiceComponent namenode = componentFactory.createNew(service, "NAMENODE");
@@ -462,15 +463,16 @@ public class OrmTestHelper {
namenode.addServiceComponentHost(sch);
sch.setDesiredState(State.INSTALLED);
sch.setState(State.INSTALLED);
- sch.setDesiredStackVersion(new StackId("HDP-2.0.6"));
- sch.setStackVersion(new StackId("HDP-2.0.6"));
}
public void installYarnService(Cluster cluster,
ServiceFactory serviceFactory, ServiceComponentFactory componentFactory,
ServiceComponentHostFactory schFactory, String hostName) throws Exception {
+
+ RepositoryVersionEntity repositoryVersion = cluster.getCurrentClusterVersion().getRepositoryVersion();
+
String serviceName = "YARN";
- Service service = serviceFactory.createNew(cluster, serviceName);
+ Service service = serviceFactory.createNew(cluster, serviceName, repositoryVersion);
service = cluster.getService(serviceName);
assertNotNull(service);
@@ -485,8 +487,6 @@ public class OrmTestHelper {
resourceManager.addServiceComponentHost(sch);
sch.setDesiredState(State.INSTALLED);
sch.setState(State.INSTALLED);
- sch.setDesiredStackVersion(new StackId("HDP-2.0.6"));
- sch.setStackVersion(new StackId("HDP-2.0.6"));
}
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/ComponentVersionCheckActionTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/ComponentVersionCheckActionTest.java b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/ComponentVersionCheckActionTest.java
index 73ab5e6..91d5f04 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/ComponentVersionCheckActionTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/ComponentVersionCheckActionTest.java
@@ -21,7 +21,6 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
-import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -46,10 +45,15 @@ import org.apache.ambari.server.orm.dao.ClusterVersionDAO;
import org.apache.ambari.server.orm.dao.HostDAO;
import org.apache.ambari.server.orm.dao.HostVersionDAO;
import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
+import org.apache.ambari.server.orm.dao.RequestDAO;
import org.apache.ambari.server.orm.dao.StackDAO;
+import org.apache.ambari.server.orm.dao.UpgradeDAO;
import org.apache.ambari.server.orm.entities.ClusterVersionEntity;
import org.apache.ambari.server.orm.entities.HostVersionEntity;
+import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
+import org.apache.ambari.server.orm.entities.RequestEntity;
import org.apache.ambari.server.orm.entities.StackEntity;
+import org.apache.ambari.server.orm.entities.UpgradeEntity;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.ConfigFactory;
@@ -64,6 +68,7 @@ import org.apache.ambari.server.state.ServiceComponentHostFactory;
import org.apache.ambari.server.state.ServiceFactory;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.State;
+import org.apache.ambari.server.state.stack.upgrade.UpgradeType;
import org.apache.ambari.server.utils.EventBusSynchronizer;
import org.junit.After;
import org.junit.Assert;
@@ -146,6 +151,9 @@ public class ComponentVersionCheckActionTest {
clusters.addCluster(clusterName, sourceStack);
StackDAO stackDAO = m_injector.getInstance(StackDAO.class);
+ RequestDAO requestDAO = m_injector.getInstance(RequestDAO.class);
+ UpgradeDAO upgradeDAO = m_injector.getInstance(UpgradeDAO.class);
+
StackEntity stackEntitySource = stackDAO.find(sourceStack.getStackName(), sourceStack.getStackVersion());
StackEntity stackEntityTarget = stackDAO.find(targetStack.getStackName(), targetStack.getStackVersion());
assertNotNull(stackEntitySource);
@@ -180,9 +188,6 @@ public class ComponentVersionCheckActionTest {
c.transitionClusterVersion(targetStack, targetRepo, RepositoryVersionState.INSTALLED);
c.setCurrentStackVersion(targetStack);
- c.mapHostVersions(Collections.singleton(hostName), c.getCurrentClusterVersion(),
- RepositoryVersionState.CURRENT);
-
HostDAO hostDAO = m_injector.getInstance(HostDAO.class);
HostVersionEntity entity = new HostVersionEntity();
@@ -190,6 +195,25 @@ public class ComponentVersionCheckActionTest {
entity.setRepositoryVersion(repoVersionDAO.findByStackAndVersion(targetStack, targetRepo));
entity.setState(RepositoryVersionState.INSTALLED);
hostVersionDAO.create(entity);
+
+ RequestEntity requestEntity = new RequestEntity();
+ requestEntity.setClusterId(c.getClusterId());
+ requestEntity.setRequestId(1L);
+ requestEntity.setStartTime(System.currentTimeMillis());
+ requestEntity.setCreateTime(System.currentTimeMillis());
+ requestDAO.create(requestEntity);
+
+ UpgradeEntity upgradeEntity = new UpgradeEntity();
+ upgradeEntity.setId(1L);
+ upgradeEntity.setClusterId(c.getClusterId());
+ upgradeEntity.setRequestEntity(requestEntity);
+ upgradeEntity.setUpgradePackage("");
+ upgradeEntity.setFromVersion(sourceRepo);
+ upgradeEntity.setToVersion(targetRepo);
+ upgradeEntity.setUpgradeType(UpgradeType.NON_ROLLING);
+ upgradeDAO.create(upgradeEntity);
+
+ c.setUpgradeEntity(upgradeEntity);
}
private void makeCrossStackUpgradeCluster(StackId sourceStack, String sourceRepo, StackId targetStack,
@@ -199,6 +223,9 @@ public class ComponentVersionCheckActionTest {
clusters.addCluster(clusterName, sourceStack);
StackDAO stackDAO = m_injector.getInstance(StackDAO.class);
+ RequestDAO requestDAO = m_injector.getInstance(RequestDAO.class);
+ UpgradeDAO upgradeDAO = m_injector.getInstance(UpgradeDAO.class);
+
StackEntity stackEntitySource = stackDAO.find(sourceStack.getStackName(), sourceStack.getStackVersion());
StackEntity stackEntityTarget = stackDAO.find(targetStack.getStackName(), targetStack.getStackVersion());
@@ -225,6 +252,24 @@ public class ComponentVersionCheckActionTest {
c.createClusterVersion(sourceStack, sourceRepo, "admin", RepositoryVersionState.INSTALLING);
c.transitionClusterVersion(sourceStack, sourceRepo, RepositoryVersionState.CURRENT);
+ RequestEntity requestEntity = new RequestEntity();
+ requestEntity.setClusterId(c.getClusterId());
+ requestEntity.setRequestId(1L);
+ requestEntity.setStartTime(System.currentTimeMillis());
+ requestEntity.setCreateTime(System.currentTimeMillis());
+ requestDAO.create(requestEntity);
+
+ UpgradeEntity upgradeEntity = new UpgradeEntity();
+ upgradeEntity.setId(1L);
+ upgradeEntity.setClusterId(c.getClusterId());
+ upgradeEntity.setRequestEntity(requestEntity);
+ upgradeEntity.setUpgradePackage("");
+ upgradeEntity.setFromVersion(sourceRepo);
+ upgradeEntity.setToVersion(targetRepo);
+ upgradeEntity.setUpgradeType(UpgradeType.NON_ROLLING);
+ upgradeDAO.create(upgradeEntity);
+
+ c.setUpgradeEntity(upgradeEntity);
}
private void createNewRepoVersion(StackId targetStack, String targetRepo, String clusterName,
@@ -245,9 +290,6 @@ public class ComponentVersionCheckActionTest {
c.createClusterVersion(targetStack, targetRepo, "admin", RepositoryVersionState.INSTALLING);
c.transitionClusterVersion(targetStack, targetRepo, RepositoryVersionState.INSTALLED);
- c.mapHostVersions(Collections.singleton(hostName), c.getCurrentClusterVersion(),
- RepositoryVersionState.CURRENT);
-
HostDAO hostDAO = m_injector.getInstance(HostDAO.class);
HostVersionEntity entity = new HostVersionEntity();
@@ -389,12 +431,16 @@ public class ComponentVersionCheckActionTest {
Cluster cluster = clusters.getCluster("c1");
clusters.mapHostToCluster("h1", "c1");
+ RepositoryVersionEntity repositoryVersion2110 = m_helper.getOrCreateRepositoryVersion(
+ HDP_21_STACK, HDP_2_1_1_0);
+
+ RepositoryVersionEntity repositoryVersion2111 = m_helper.getOrCreateRepositoryVersion(
+ HDP_21_STACK, HDP_2_1_1_1);
+
Service service = installService(cluster, "HDFS");
+ service.setDesiredRepositoryVersion(repositoryVersion2110);
ServiceComponent sc = addServiceComponent(cluster, service, "NAMENODE");
- sc.setDesiredVersion(HDP_2_1_1_0);
-
sc = addServiceComponent(cluster, service, "DATANODE");
- sc.setDesiredVersion(HDP_2_1_1_0);
ServiceComponentHost sch = createNewServiceComponentHost(cluster, "HDFS", "NAMENODE", "h1");
sch.setVersion(HDP_2_1_1_0);
@@ -402,8 +448,8 @@ public class ComponentVersionCheckActionTest {
sch.setVersion(HDP_2_1_1_0);
service = installService(cluster, "ZOOKEEPER");
+ service.setDesiredRepositoryVersion(repositoryVersion2111);
sc = addServiceComponent(cluster, service, "ZOOKEEPER_SERVER");
- sc.setDesiredVersion(HDP_2_1_1_1);
sch = createNewServiceComponentHost(cluster, "ZOOKEEPER", "ZOOKEEPER_SERVER", "h1");
sch.setVersion(HDP_2_1_1_1);
@@ -415,7 +461,7 @@ public class ComponentVersionCheckActionTest {
assertEquals(HDP_211_CENTOS6_REPO_URL, repo.getBaseUrl());
// Finalize the upgrade
- Map<String, String> commandParams = new HashMap<String, String>();
+ Map<String, String> commandParams = new HashMap<>();
commandParams.put(FinalizeUpgradeAction.UPGRADE_DIRECTION_KEY, "upgrade");
commandParams.put(FinalizeUpgradeAction.VERSION_KEY, targetRepo);
commandParams.put(FinalizeUpgradeAction.SUPPORTED_SERVICES_KEY, "ZOOKEEPER");
@@ -450,8 +496,6 @@ public class ComponentVersionCheckActionTest {
sc.addServiceComponentHost(sch);
sch.setDesiredState(State.INSTALLED);
sch.setState(State.INSTALLED);
- sch.setDesiredStackVersion(cluster.getDesiredStackVersion());
- sch.setStackVersion(cluster.getCurrentStackVersion());
return sch;
}
@@ -462,7 +506,8 @@ public class ComponentVersionCheckActionTest {
try {
service = cluster.getService(serviceName);
} catch (ServiceNotFoundException e) {
- service = serviceFactory.createNew(cluster, serviceName);
+ RepositoryVersionEntity repositoryVersion = cluster.getCurrentClusterVersion().getRepositoryVersion();
+ service = serviceFactory.createNew(cluster, serviceName, repositoryVersion);
cluster.addService(service);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/ConfigureActionTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/ConfigureActionTest.java b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/ConfigureActionTest.java
index 976dea4..860369b 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/ConfigureActionTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/ConfigureActionTest.java
@@ -46,6 +46,7 @@ import org.apache.ambari.server.orm.dao.HostVersionDAO;
import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
import org.apache.ambari.server.orm.dao.StackDAO;
import org.apache.ambari.server.orm.entities.HostVersionEntity;
+import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
import org.apache.ambari.server.orm.entities.StackEntity;
import org.apache.ambari.server.serveraction.ServerAction;
import org.apache.ambari.server.state.Cluster;
@@ -1695,7 +1696,6 @@ public class ConfigureActionTest {
clusters.addCluster(clusterName, HDP_220_STACK);
-
StackEntity stackEntity = stackDAO.find(HDP_220_STACK.getStackName(),
HDP_220_STACK.getStackVersion());
@@ -1704,9 +1704,13 @@ public class ConfigureActionTest {
Cluster c = clusters.getCluster(clusterName);
c.setDesiredStackVersion(HDP_220_STACK);
+ // Creating starting repo
+ RepositoryVersionEntity repositoryVersionEntity = m_helper.getOrCreateRepositoryVersion(
+ HDP_220_STACK, HDP_2_2_0_0);
+
// !!! very important, otherwise the loops that walk the list of installed
// service properties will not run!
- installService(c, "ZOOKEEPER");
+ installService(c, "ZOOKEEPER", repositoryVersionEntity);
Config config = cf.createNew(c, "zoo.cfg", "version1", new HashMap<String, String>() {
{
@@ -1726,8 +1730,6 @@ public class ConfigureActionTest {
hostAttributes.put("os_release_version", "6");
host.setHostAttributes(hostAttributes);
- // Creating starting repo
- m_helper.getOrCreateRepositoryVersion(HDP_220_STACK, HDP_2_2_0_0);
c.createClusterVersion(HDP_220_STACK, HDP_2_2_0_0, "admin", RepositoryVersionState.INSTALLING);
c.transitionClusterVersion(HDP_220_STACK, HDP_2_2_0_0, RepositoryVersionState.CURRENT);
@@ -1741,10 +1743,6 @@ public class ConfigureActionTest {
c.transitionClusterVersion(HDP_220_STACK, HDP_2_2_0_1, RepositoryVersionState.INSTALLED);
c.setCurrentStackVersion(HDP_220_STACK);
- c.mapHostVersions(Collections.singleton(hostName), c.getCurrentClusterVersion(),
- RepositoryVersionState.CURRENT);
-
-
HostVersionEntity entity = new HostVersionEntity();
entity.setHostEntity(hostDAO.findByName(hostName));
entity.setRepositoryVersion(repoVersionDAO.findByStackAndVersion(HDP_220_STACK, HDP_2_2_0_1));
@@ -1764,13 +1762,14 @@ public class ConfigureActionTest {
* @return
* @throws AmbariException
*/
- private Service installService(Cluster cluster, String serviceName) throws AmbariException {
+ private Service installService(Cluster cluster, String serviceName,
+ RepositoryVersionEntity repositoryVersion) throws AmbariException {
Service service = null;
try {
service = cluster.getService(serviceName);
} catch (ServiceNotFoundException e) {
- service = serviceFactory.createNew(cluster, serviceName);
+ service = serviceFactory.createNew(cluster, serviceName, repositoryVersion);
cluster.addService(service);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/UpgradeActionTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/UpgradeActionTest.java b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/UpgradeActionTest.java
index 5513271..0a583ae 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/UpgradeActionTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/UpgradeActionTest.java
@@ -24,7 +24,6 @@ import static org.junit.Assert.assertTrue;
import java.lang.reflect.Field;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -51,8 +50,6 @@ import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
import org.apache.ambari.server.orm.OrmTestHelper;
import org.apache.ambari.server.orm.dao.ClusterVersionDAO;
-import org.apache.ambari.server.orm.dao.HostComponentDesiredStateDAO;
-import org.apache.ambari.server.orm.dao.HostComponentStateDAO;
import org.apache.ambari.server.orm.dao.HostDAO;
import org.apache.ambari.server.orm.dao.HostVersionDAO;
import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
@@ -118,6 +115,8 @@ public class UpgradeActionTest {
private static final String HDP_211_CENTOS6_REPO_URL = "http://s3.amazonaws.com/dev.hortonworks.com/HDP/centos6/2.x/BUILDS/2.1.1.0-118";
+ private RepositoryVersionEntity sourceRepositoryVersion;
+
private Injector m_injector;
private AmbariManagementController amc;
@@ -148,10 +147,6 @@ public class UpgradeActionTest {
@Inject
private ServiceComponentDesiredStateDAO serviceComponentDesiredStateDAO;
@Inject
- private HostComponentDesiredStateDAO hostComponentDesiredStateDAO;
- @Inject
- private HostComponentStateDAO hostComponentStateDAO;
- @Inject
private StackDAO stackDAO;
@Inject
private AmbariMetaInfo ambariMetaInfo;
@@ -209,9 +204,6 @@ public class UpgradeActionTest {
c.createClusterVersion(targetStack, targetRepo, "admin", RepositoryVersionState.INSTALLING);
c.transitionClusterVersion(targetStack, targetRepo, RepositoryVersionState.INSTALLED);
- c.mapHostVersions(Collections.singleton(hostName), c.getCurrentClusterVersion(),
- RepositoryVersionState.CURRENT);
-
HostVersionEntity entity = new HostVersionEntity();
entity.setHostEntity(hostDAO.findByName(hostName));
entity.setRepositoryVersion(repoVersionDAO.findByStackAndVersion(targetStack, targetRepo));
@@ -266,10 +258,6 @@ public class UpgradeActionTest {
entitySource.setState(RepositoryVersionState.INSTALL_FAILED);
hostVersionDAO.create(entitySource);
- // Create a host version for the mid repo in CURRENT
- c.mapHostVersions(Collections.singleton(hostName), c.getCurrentClusterVersion(),
- RepositoryVersionState.CURRENT);
-
// Create a host version for the target repo in UPGRADED
HostVersionEntity entityTarget = new HostVersionEntity();
entityTarget.setHostEntity(hostDAO.findByName(hostName));
@@ -278,7 +266,8 @@ public class UpgradeActionTest {
hostVersionDAO.create(entityTarget);
}
- private void createUpgradeClusterAndSourceRepo(StackId sourceStack, String sourceRepo,
+ private RepositoryVersionEntity createUpgradeClusterAndSourceRepo(StackId sourceStack,
+ String sourceRepo,
String hostName) throws Exception {
clusters.addCluster(clusterName, sourceStack);
@@ -303,8 +292,8 @@ public class UpgradeActionTest {
clusters.mapHostToCluster(hostName, clusterName);
// Create the starting repo version
- RepositoryVersionEntity repoEntity = m_helper.getOrCreateRepositoryVersion(sourceStack, sourceRepo);
- repoEntity.setOperatingSystems("[\n" +
+ sourceRepositoryVersion = m_helper.getOrCreateRepositoryVersion(sourceStack, sourceRepo);
+ sourceRepositoryVersion.setOperatingSystems("[\n" +
" {\n" +
" \"repositories\":[\n" +
" {\n" +
@@ -316,14 +305,14 @@ public class UpgradeActionTest {
" \"OperatingSystems/os_type\":\"redhat6\"\n" +
" }\n" +
"]");
- repoVersionDAO.merge(repoEntity);
+ repoVersionDAO.merge(sourceRepositoryVersion);
c.createClusterVersion(sourceStack, sourceRepo, "admin", RepositoryVersionState.INSTALLING);
c.transitionClusterVersion(sourceStack, sourceRepo, RepositoryVersionState.CURRENT);
-
+ return sourceRepositoryVersion;
}
- private void createUpgradeClusterTargetRepo(StackId targetStack, String targetRepo,
+ private RepositoryVersionEntity createUpgradeClusterTargetRepo(StackId targetStack, String targetRepo,
String hostName) throws AmbariException {
Cluster c = clusters.getCluster(clusterName);
StackEntity stackEntityTarget = stackDAO.find(targetStack.getStackName(), targetStack.getStackVersion());
@@ -341,9 +330,6 @@ public class UpgradeActionTest {
c.transitionClusterVersion(targetStack, targetRepo, RepositoryVersionState.INSTALLED);
c.setCurrentStackVersion(targetStack);
- c.mapHostVersions(Collections.singleton(hostName), c.getCurrentClusterVersion(),
- RepositoryVersionState.CURRENT);
-
// create a single host with the UPGRADED HostVersionEntity
HostDAO hostDAO = m_injector.getInstance(HostDAO.class);
@@ -361,6 +347,8 @@ public class UpgradeActionTest {
assertEquals(1, hostVersions.size());
assertEquals(RepositoryVersionState.INSTALLED, hostVersions.get(0).getState());
+
+ return repositoryVersionEntity;
}
private void makeCrossStackUpgradeClusterAndSourceRepo(StackId sourceStack, String sourceRepo,
@@ -388,7 +376,7 @@ public class UpgradeActionTest {
clusters.mapHostToCluster(hostName, clusterName);
// Create the starting repo version
- m_helper.getOrCreateRepositoryVersion(sourceStack, sourceRepo);
+ sourceRepositoryVersion = m_helper.getOrCreateRepositoryVersion(sourceStack, sourceRepo);
c.createClusterVersion(sourceStack, sourceRepo, "admin", RepositoryVersionState.INSTALLING);
c.transitionClusterVersion(sourceStack, sourceRepo, RepositoryVersionState.CURRENT);
}
@@ -409,9 +397,6 @@ public class UpgradeActionTest {
c.createClusterVersion(targetStack, targetRepo, "admin", RepositoryVersionState.INSTALLING);
c.transitionClusterVersion(targetStack, targetRepo, RepositoryVersionState.INSTALLED);
- c.mapHostVersions(Collections.singleton(hostName), c.getCurrentClusterVersion(),
- RepositoryVersionState.CURRENT);
-
HostDAO hostDAO = m_injector.getInstance(HostDAO.class);
HostVersionEntity entity = new HostVersionEntity();
@@ -442,10 +427,11 @@ public class UpgradeActionTest {
Assert.assertTrue(packs.containsKey(upgradePackName));
makeCrossStackUpgradeClusterAndSourceRepo(sourceStack, sourceRepo, hostName);
-// makeCrossStackUpgradeCluster(sourceStack, sourceRepo, targetStack, targetRepo);
Cluster cluster = clusters.getCluster(clusterName);
+ createUpgrade(cluster, sourceStack, sourceRepo, targetRepo);
+
// Install ZK and HDFS with some components
Service zk = installService(cluster, "ZOOKEEPER");
addServiceComponent(cluster, zk, "ZOOKEEPER_SERVER");
@@ -515,6 +501,10 @@ public class UpgradeActionTest {
makeDowngradeCluster(sourceStack, sourceRepo, targetStack, targetRepo);
+ Cluster cluster = clusters.getCluster(clusterName);
+
+ createUpgrade(cluster, sourceStack, sourceRepo, targetRepo);
+
Map<String, String> commandParams = new HashMap<>();
commandParams.put(FinalizeUpgradeAction.UPGRADE_DIRECTION_KEY, "downgrade");
commandParams.put(FinalizeUpgradeAction.VERSION_KEY, sourceRepo);
@@ -573,6 +563,10 @@ public class UpgradeActionTest {
makeTwoUpgradesWhereLastDidNotComplete(sourceStack, sourceRepo, midStack, midRepo, targetStack, targetRepo);
+ Cluster cluster = clusters.getCluster(clusterName);
+
+ createUpgrade(cluster, sourceStack, sourceRepo, targetRepo);
+
Map<String, String> commandParams = new HashMap<>();
commandParams.put(FinalizeUpgradeAction.UPGRADE_DIRECTION_KEY, "downgrade");
commandParams.put(FinalizeUpgradeAction.VERSION_KEY, midRepo);
@@ -606,10 +600,13 @@ public class UpgradeActionTest {
createUpgradeClusterAndSourceRepo(sourceStack, sourceRepo, hostName);
createUpgradeClusterTargetRepo(targetStack, targetRepo, hostName);
+ Cluster cluster = clusters.getCluster(clusterName);
+
+ createUpgrade(cluster, sourceStack, sourceRepo, targetRepo);
+
// Verify the repo before calling Finalize
AmbariCustomCommandExecutionHelper helper = m_injector.getInstance(AmbariCustomCommandExecutionHelper.class);
Host host = clusters.getHost("h1");
- Cluster cluster = clusters.getCluster(clusterName);
RepositoryInfo repo = ambariMetaInfo.getRepository(sourceStack.getStackName(), sourceStack.getStackVersion(), "redhat6", sourceStack.getStackId());
assertEquals(HDP_211_CENTOS6_REPO_URL, repo.getBaseUrl());
@@ -671,6 +668,8 @@ public class UpgradeActionTest {
Host host = clusters.getHost("h1");
Cluster cluster = clusters.getCluster(clusterName);
+ createUpgrade(cluster, sourceStack, sourceRepo, targetRepo);
+
RepositoryInfo repo = ambariMetaInfo.getRepository(sourceStack.getStackName(),
sourceStack.getStackVersion(), "redhat6", sourceStack.getStackId());
assertEquals(HDP_211_CENTOS6_REPO_URL, repo.getBaseUrl());
@@ -734,6 +733,8 @@ public class UpgradeActionTest {
cluster.setCurrentStackVersion(sourceStack);
cluster.setDesiredStackVersion(targetStack);
+ createUpgrade(cluster, sourceStack, sourceRepo, targetRepo);
+
Map<String, String> commandParams = new HashMap<>();
commandParams.put(FinalizeUpgradeAction.UPGRADE_DIRECTION_KEY, "upgrade");
commandParams.put(FinalizeUpgradeAction.VERSION_KEY, targetRepo);
@@ -781,7 +782,6 @@ public class UpgradeActionTest {
makeCrossStackUpgradeClusterAndSourceRepo(sourceStack, sourceRepo, hostName);
Cluster cluster = clusters.getCluster(clusterName);
-
// install HDFS with some components
Service service = installService(cluster, "HDFS");
addServiceComponent(cluster, service, "NAMENODE");
@@ -791,6 +791,8 @@ public class UpgradeActionTest {
makeCrossStackUpgradeTargetRepo(targetStack, targetRepo, hostName);
+ createUpgrade(cluster, sourceStack, sourceRepo, targetRepo);
+
// create some configs
createConfigs(cluster);
@@ -889,6 +891,8 @@ public class UpgradeActionTest {
cluster.setCurrentStackVersion(sourceStack);
cluster.setDesiredStackVersion(targetStack);
+ createUpgrade(cluster, sourceStack, sourceRepo, targetRepo);
+
// set the SCH versions to the new stack so that the finalize action is
// happy
cluster.getServiceComponentHosts("HDFS", "NAMENODE").get(0).setVersion(targetRepo);
@@ -966,32 +970,15 @@ public class UpgradeActionTest {
ServiceComponentHost nnSCH = createNewServiceComponentHost(cluster, "HDFS", "NAMENODE", "h1");
ServiceComponentHost dnSCH = createNewServiceComponentHost(cluster, "HDFS", "DATANODE", "h1");
- createUpgradeClusterTargetRepo(targetStack, targetRepo, hostName);
+ RepositoryVersionEntity targetRepositoryVersion = createUpgradeClusterTargetRepo(targetStack,
+ targetRepo, hostName);
// fake their upgrade
- nnSCH.setStackVersion(nnSCH.getDesiredStackVersion());
+ service.setDesiredRepositoryVersion(targetRepositoryVersion);
nnSCH.setVersion(targetRepo);
- dnSCH.setStackVersion(nnSCH.getDesiredStackVersion());
dnSCH.setVersion(targetRepo);
- // create some entities for the finalize action to work with for patch
- // history
- RequestEntity requestEntity = new RequestEntity();
- requestEntity.setClusterId(cluster.getClusterId());
- requestEntity.setRequestId(1L);
- requestEntity.setStartTime(System.currentTimeMillis());
- requestEntity.setCreateTime(System.currentTimeMillis());
- requestDAO.create(requestEntity);
-
- UpgradeEntity upgradeEntity = new UpgradeEntity();
- upgradeEntity.setId(1L);
- upgradeEntity.setClusterId(cluster.getClusterId());
- upgradeEntity.setRequestEntity(requestEntity);
- upgradeEntity.setUpgradePackage("");
- upgradeEntity.setFromVersion(sourceRepo);
- upgradeEntity.setToVersion(targetRepo);
- upgradeEntity.setUpgradeType(UpgradeType.NON_ROLLING);
- upgradeDAO.create(upgradeEntity);
+ UpgradeEntity upgrade = createUpgrade(cluster, sourceStack, sourceRepo, targetRepo);
// verify that no history exist exists yet
List<ServiceComponentHistoryEntity> historyEntites = serviceComponentDesiredStateDAO.findHistory(
@@ -1007,7 +994,7 @@ public class UpgradeActionTest {
// Finalize the upgrade, passing in the request ID so that history is
// created
Map<String, String> commandParams = new HashMap<>();
- commandParams.put(FinalizeUpgradeAction.REQUEST_ID, String.valueOf(requestEntity.getRequestId()));
+ commandParams.put(FinalizeUpgradeAction.REQUEST_ID, String.valueOf(upgrade.getRequestId()));
commandParams.put(FinalizeUpgradeAction.UPGRADE_DIRECTION_KEY, "upgrade");
commandParams.put(FinalizeUpgradeAction.VERSION_KEY, targetRepo);
@@ -1044,8 +1031,6 @@ public class UpgradeActionTest {
sc.addServiceComponentHost(sch);
sch.setDesiredState(State.INSTALLED);
sch.setState(State.INSTALLED);
- sch.setDesiredStackVersion(cluster.getDesiredStackVersion());
- sch.setStackVersion(cluster.getCurrentStackVersion());
return sch;
}
@@ -1055,7 +1040,7 @@ public class UpgradeActionTest {
try {
service = cluster.getService(serviceName);
} catch (ServiceNotFoundException e) {
- service = serviceFactory.createNew(cluster, serviceName);
+ service = serviceFactory.createNew(cluster, serviceName, sourceRepositoryVersion);
cluster.addService(service);
}
@@ -1100,4 +1085,40 @@ public class UpgradeActionTest {
configFactory.createNew(cluster, "foo-site", "version-" + System.currentTimeMillis(),
properties, propertiesAttributes);
}
+
+ /**
+ * Creates an upgrade an associates it with the cluster.
+ *
+ * @param cluster
+ * @param sourceRepo
+ * @param targetRepo
+ * @throws Exception
+ */
+ private UpgradeEntity createUpgrade(Cluster cluster, StackId sourceStack, String sourceRepo,
+ String targetRepo) throws Exception {
+
+ // create some entities for the finalize action to work with for patch
+ // history
+ RequestEntity requestEntity = new RequestEntity();
+ requestEntity.setClusterId(cluster.getClusterId());
+ requestEntity.setRequestId(1L);
+ requestEntity.setStartTime(System.currentTimeMillis());
+ requestEntity.setCreateTime(System.currentTimeMillis());
+ requestDAO.create(requestEntity);
+
+ UpgradeEntity upgradeEntity = new UpgradeEntity();
+ upgradeEntity.setId(1L);
+ upgradeEntity.setClusterId(cluster.getClusterId());
+ upgradeEntity.setRequestEntity(requestEntity);
+ upgradeEntity.setUpgradePackage("");
+ upgradeEntity.setFromVersion(sourceRepo);
+ upgradeEntity.setToVersion(targetRepo);
+ upgradeEntity.setUpgradeType(UpgradeType.NON_ROLLING);
+
+ upgradeDAO.create(upgradeEntity);
+
+ cluster.setUpgradeEntity(upgradeEntity);
+
+ return upgradeEntity;
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java
index 2d589ed..d72f018 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java
@@ -31,9 +31,7 @@ import java.util.Map;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.H2DatabaseCleaner;
import org.apache.ambari.server.actionmanager.HostRoleStatus;
-import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.controller.ServiceComponentResponse;
-import org.apache.ambari.server.events.listeners.upgrade.StackVersionListener;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
import org.apache.ambari.server.orm.OrmTestHelper;
@@ -43,6 +41,7 @@ import org.apache.ambari.server.orm.dao.HostDAO;
import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
import org.apache.ambari.server.orm.dao.RequestDAO;
import org.apache.ambari.server.orm.dao.ServiceComponentDesiredStateDAO;
+import org.apache.ambari.server.orm.dao.StackDAO;
import org.apache.ambari.server.orm.dao.UpgradeDAO;
import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntity;
import org.apache.ambari.server.orm.entities.HostComponentStateEntity;
@@ -52,6 +51,7 @@ import org.apache.ambari.server.orm.entities.RequestEntity;
import org.apache.ambari.server.orm.entities.ServiceComponentDesiredStateEntity;
import org.apache.ambari.server.orm.entities.ServiceComponentHistoryEntity;
import org.apache.ambari.server.orm.entities.ServiceComponentVersionEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
import org.apache.ambari.server.orm.entities.StageEntity;
import org.apache.ambari.server.orm.entities.UpgradeEntity;
import org.apache.ambari.server.state.stack.upgrade.Direction;
@@ -76,7 +76,6 @@ public class ServiceComponentTest {
private ServiceFactory serviceFactory;
private ServiceComponentFactory serviceComponentFactory;
private ServiceComponentHostFactory serviceComponentHostFactory;
- private AmbariMetaInfo metaInfo;
private OrmTestHelper helper;
private HostDAO hostDAO;
@@ -92,7 +91,6 @@ public class ServiceComponentTest {
ServiceComponentHostFactory.class);
helper = injector.getInstance(OrmTestHelper.class);
hostDAO = injector.getInstance(HostDAO.class);
- metaInfo = injector.getInstance(AmbariMetaInfo.class);
clusterName = "foo";
serviceName = "HDFS";
@@ -103,11 +101,14 @@ public class ServiceComponentTest {
cluster.setDesiredStackVersion(stackId);
Assert.assertNotNull(cluster);
- helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+
+ RepositoryVersionEntity repositoryVersion = helper.getOrCreateRepositoryVersion(stackId,
+ stackId.getStackVersion());
+
cluster.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
RepositoryVersionState.INSTALLING);
- Service s = serviceFactory.createNew(cluster, serviceName);
+ Service s = serviceFactory.createNew(cluster, serviceName, repositoryVersion);
cluster.addService(s);
service = cluster.getService(serviceName);
Assert.assertNotNull(service);
@@ -154,8 +155,12 @@ public class ServiceComponentTest {
sc.setDesiredState(State.INSTALLED);
Assert.assertEquals(State.INSTALLED, sc.getDesiredState());
- sc.setDesiredStackVersion(new StackId("HDP-1.2.0"));
- Assert.assertEquals("HDP-1.2.0", sc.getDesiredStackVersion().getStackId());
+ StackId newStackId = new StackId("HDP-1.2.0");
+ RepositoryVersionEntity repositoryVersion = helper.getOrCreateRepositoryVersion(newStackId,
+ newStackId.getStackVersion());
+
+ sc.setDesiredRepositoryVersion(repositoryVersion);
+ Assert.assertEquals(newStackId.toString(), sc.getDesiredStackVersion().getStackId());
ServiceComponentDesiredStateDAO serviceComponentDesiredStateDAO =
injector.getInstance(ServiceComponentDesiredStateDAO.class);
@@ -199,8 +204,7 @@ public class ServiceComponentTest {
@Test
public void testAddAndGetServiceComponentHosts() throws AmbariException {
String componentName = "NAMENODE";
- ServiceComponent component = serviceComponentFactory.createNew(service,
- componentName);
+ ServiceComponent component = serviceComponentFactory.createNew(service, componentName);
service.addServiceComponent(component);
ServiceComponent sc = service.getServiceComponent(componentName);
@@ -224,6 +228,8 @@ public class ServiceComponentTest {
ServiceComponentHost sch1 = sc.addServiceComponentHost("h1");
ServiceComponentHost sch2 = sc.addServiceComponentHost("h2");
+ assertNotNull(sch1);
+ assertNotNull(sch2);
try {
sc.addServiceComponentHost("h2");
@@ -241,9 +247,7 @@ public class ServiceComponentTest {
sc.addServiceComponentHost("h3");
Assert.assertNotNull(sc.getServiceComponentHost("h3"));
- sch1.setDesiredStackVersion(new StackId("HDP-1.2.0"));
sch1.setState(State.STARTING);
- sch1.setStackVersion(new StackId("HDP-1.2.0"));
sch1.setDesiredState(State.STARTED);
HostComponentDesiredStateDAO desiredStateDAO = injector.getInstance(
@@ -268,17 +272,14 @@ public class ServiceComponentTest {
Assert.assertNotNull(sch);
Assert.assertEquals(State.STARTING, sch.getState());
Assert.assertEquals(State.STARTED, sch.getDesiredState());
- Assert.assertEquals("HDP-1.2.0",
- sch.getStackVersion().getStackId());
- Assert.assertEquals("HDP-1.2.0",
- sch.getDesiredStackVersion().getStackId());
+ Assert.assertEquals(service.getDesiredRepositoryVersion().getVersion(),
+ sch.getServiceComponent().getDesiredVersion());
}
@Test
public void testConvertToResponse() throws AmbariException {
String componentName = "NAMENODE";
- ServiceComponent component = serviceComponentFactory.createNew(service,
- componentName);
+ ServiceComponent component = serviceComponentFactory.createNew(service, componentName);
service.addServiceComponent(component);
addHostToCluster("h1", service.getCluster().getClusterName());
@@ -295,7 +296,6 @@ public class ServiceComponentTest {
ServiceComponent sc = service.getServiceComponent(componentName);
Assert.assertNotNull(sc);
sc.setDesiredState(State.INSTALLED);
- sc.setDesiredStackVersion(new StackId("HDP-1.2.0"));
ServiceComponentResponse r = sc.convertToResponse();
Assert.assertEquals(sc.getClusterName(), r.getClusterName());
@@ -362,7 +362,12 @@ public class ServiceComponentTest {
sc.setDesiredState(State.INSTALLED);
Assert.assertEquals(State.INSTALLED, sc.getDesiredState());
- sc.setDesiredStackVersion(new StackId("HDP-2.2.0"));
+ StackId newStackId = new StackId("HDP-2.2.0");
+ RepositoryVersionEntity repositoryVersion = helper.getOrCreateRepositoryVersion(newStackId,
+ newStackId.getStackVersion());
+
+ sc.setDesiredRepositoryVersion(repositoryVersion);
+
StackId stackId = sc.getDesiredStackVersion();
Assert.assertEquals(new StackId("HDP", "2.2.0"), stackId);
@@ -479,7 +484,12 @@ public class ServiceComponentTest {
sc.setDesiredState(State.INSTALLED);
Assert.assertEquals(State.INSTALLED, sc.getDesiredState());
- sc.setDesiredStackVersion(new StackId("HDP-2.2.0"));
+ StackId newStackId = new StackId("HDP-2.2.0");
+ RepositoryVersionEntity repositoryVersion = helper.getOrCreateRepositoryVersion(newStackId,
+ newStackId.getStackVersion());
+
+ sc.setDesiredRepositoryVersion(repositoryVersion);
+
StackId stackId = sc.getDesiredStackVersion();
Assert.assertEquals(new StackId("HDP", "2.2.0"), stackId);
@@ -545,23 +555,28 @@ public class ServiceComponentTest {
sc.setDesiredState(State.INSTALLED);
Assert.assertEquals(State.INSTALLED, sc.getDesiredState());
- sc.setDesiredStackVersion(new StackId("HDP-2.2.0"));
- StackId stackId = sc.getDesiredStackVersion();
- Assert.assertEquals(new StackId("HDP", "2.2.0"), stackId);
-
- Assert.assertEquals("HDP-2.2.0", sc.getDesiredStackVersion().getStackId());
-
ServiceComponentDesiredStateEntity serviceComponentDesiredStateEntity = serviceComponentDesiredStateDAO.findByName(
cluster.getClusterId(), serviceName, componentName);
- Assert.assertNotNull(serviceComponentDesiredStateEntity);
+ StackDAO stackDAO = injector.getInstance(StackDAO.class);
+ StackEntity stackEntity = stackDAO.find("HDP", "2.2.0");
- RepositoryVersionEntity rve = new RepositoryVersionEntity(
- serviceComponentDesiredStateEntity.getDesiredStack(), "HDP-2.2.0", "2.2.0.1-1111", "[]");
+ RepositoryVersionEntity rve = new RepositoryVersionEntity(stackEntity, "HDP-2.2.0",
+ "2.2.0.1-1111", "[]");
RepositoryVersionDAO repositoryDAO = injector.getInstance(RepositoryVersionDAO.class);
repositoryDAO.create(rve);
+ sc.setDesiredRepositoryVersion(rve);
+
+ Assert.assertEquals(rve, sc.getDesiredRepositoryVersion());
+
+ Assert.assertEquals(new StackId("HDP", "2.2.0"), sc.getDesiredStackVersion());
+
+ Assert.assertEquals("HDP-2.2.0", sc.getDesiredStackVersion().getStackId());
+
+ Assert.assertNotNull(serviceComponentDesiredStateEntity);
+
ServiceComponentVersionEntity version = new ServiceComponentVersionEntity();
version.setState(RepositoryVersionState.CURRENT);
version.setRepositoryVersion(rve);
@@ -595,23 +610,27 @@ public class ServiceComponentTest {
sc.setDesiredState(State.INSTALLED);
Assert.assertEquals(State.INSTALLED, sc.getDesiredState());
- sc.setDesiredStackVersion(new StackId("HDP-2.2.0"));
- StackId stackId = sc.getDesiredStackVersion();
- Assert.assertEquals(new StackId("HDP", "2.2.0"), stackId);
-
- Assert.assertEquals("HDP-2.2.0", sc.getDesiredStackVersion().getStackId());
-
ServiceComponentDesiredStateEntity serviceComponentDesiredStateEntity = serviceComponentDesiredStateDAO.findByName(
cluster.getClusterId(), serviceName, componentName);
- Assert.assertNotNull(serviceComponentDesiredStateEntity);
+ StackDAO stackDAO = injector.getInstance(StackDAO.class);
+ StackEntity stackEntity = stackDAO.find("HDP", "2.2.0");
- RepositoryVersionEntity rve = new RepositoryVersionEntity(
- serviceComponentDesiredStateEntity.getDesiredStack(), "HDP-2.2.0", "2.2.0.1-1111", "[]");
+ RepositoryVersionEntity rve = new RepositoryVersionEntity(stackEntity, "HDP-2.2.0",
+ "2.2.0.1-1111", "[]");
RepositoryVersionDAO repositoryDAO = injector.getInstance(RepositoryVersionDAO.class);
repositoryDAO.create(rve);
+ sc.setDesiredRepositoryVersion(rve);
+
+ StackId stackId = sc.getDesiredStackVersion();
+ Assert.assertEquals(new StackId("HDP", "2.2.0"), stackId);
+
+ Assert.assertEquals("HDP-2.2.0", sc.getDesiredStackVersion().getStackId());
+
+ Assert.assertNotNull(serviceComponentDesiredStateEntity);
+
ServiceComponentVersionEntity version = new ServiceComponentVersionEntity();
version.setState(RepositoryVersionState.CURRENT);
version.setRepositoryVersion(rve);
@@ -650,7 +669,13 @@ public class ServiceComponentTest {
String componentName = "NAMENODE";
ServiceComponent component = serviceComponentFactory.createNew(service, componentName);
- component.setDesiredStackVersion(new StackId("HDP-2.2.0"));
+
+ StackId newStackId = new StackId("HDP-2.2.0");
+ RepositoryVersionEntity repositoryVersion = helper.getOrCreateRepositoryVersion(newStackId,
+ newStackId.getStackVersion());
+
+ component.setDesiredRepositoryVersion(repositoryVersion);
+
service.addServiceComponent(component);
ServiceComponent sc = service.getServiceComponent(componentName);
@@ -658,8 +683,11 @@ public class ServiceComponentTest {
ServiceComponentDesiredStateEntity entity = serviceComponentDesiredStateDAO.findByName(cluster.getClusterId(), serviceName, componentName);
- helper.getOrCreateRepositoryVersion(component.getDesiredStackVersion(), "2.2.0.1");
- helper.getOrCreateRepositoryVersion(component.getDesiredStackVersion(), "2.2.0.2");
+ RepositoryVersionEntity repoVersion2201 = helper.getOrCreateRepositoryVersion(
+ component.getDesiredStackVersion(), "2.2.0.1");
+
+ RepositoryVersionEntity repoVersion2202 = helper.getOrCreateRepositoryVersion(
+ component.getDesiredStackVersion(), "2.2.0.2");
addHostToCluster("h1", clusterName);
addHostToCluster("h2", clusterName);
@@ -671,7 +699,7 @@ public class ServiceComponentTest {
ServiceComponentHost sch2 = sc.addServiceComponentHost("h2");
// !!! case 1: component desired is UNKNOWN, mix of h-c versions
- sc.setDesiredVersion(StackVersionListener.UNKNOWN_VERSION);
+ sc.setDesiredRepositoryVersion(repositoryVersion);
sch1.setVersion("2.2.0.1");
sch2.setVersion("2.2.0.2");
sc.updateRepositoryState("2.2.0.2");
@@ -679,15 +707,15 @@ public class ServiceComponentTest {
assertEquals(RepositoryVersionState.OUT_OF_SYNC, entity.getRepositoryState());
// !!! case 2: component desired is UNKNOWN, all h-c same version
- sc.setDesiredVersion(StackVersionListener.UNKNOWN_VERSION);
+ sc.setDesiredRepositoryVersion(repositoryVersion);
sch1.setVersion("2.2.0.1");
sch2.setVersion("2.2.0.1");
sc.updateRepositoryState("2.2.0.1");
entity = serviceComponentDesiredStateDAO.findByName(cluster.getClusterId(), serviceName, componentName);
- assertEquals(RepositoryVersionState.CURRENT, entity.getRepositoryState());
+ assertEquals(RepositoryVersionState.OUT_OF_SYNC, entity.getRepositoryState());
// !!! case 3: component desired is known, any component reports different version
- sc.setDesiredVersion("2.2.0.1");
+ sc.setDesiredRepositoryVersion(repoVersion2201);
sch1.setVersion("2.2.0.1");
sch2.setVersion("2.2.0.2");
sc.updateRepositoryState("2.2.0.2");
@@ -695,7 +723,7 @@ public class ServiceComponentTest {
assertEquals(RepositoryVersionState.OUT_OF_SYNC, entity.getRepositoryState());
// !!! case 4: component desired is known, component reports same as desired, mix of h-c versions
- sc.setDesiredVersion("2.2.0.1");
+ sc.setDesiredRepositoryVersion(repoVersion2201);
sch1.setVersion("2.2.0.1");
sch2.setVersion("2.2.0.2");
sc.updateRepositoryState("2.2.0.1");
@@ -703,7 +731,7 @@ public class ServiceComponentTest {
assertEquals(RepositoryVersionState.OUT_OF_SYNC, entity.getRepositoryState());
// !!! case 5: component desired is known, component reports same as desired, all h-c the same
- sc.setDesiredVersion("2.2.0.1");
+ sc.setDesiredRepositoryVersion(repoVersion2201);
sch1.setVersion("2.2.0.1");
sch2.setVersion("2.2.0.1");
sc.updateRepositoryState("2.2.0.1");
http://git-wip-us.apache.org/repos/asf/ambari/blob/dcbd826c/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceTest.java
index fc12e44..dfe8f59 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceTest.java
@@ -27,12 +27,13 @@ import java.util.Map;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.H2DatabaseCleaner;
-import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.controller.ServiceResponse;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
+import org.apache.ambari.server.orm.OrmTestHelper;
import org.apache.ambari.server.orm.dao.ClusterServiceDAO;
import org.apache.ambari.server.orm.entities.ClusterServiceEntity;
+import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -51,7 +52,12 @@ public class ServiceTest {
private ServiceFactory serviceFactory;
private ServiceComponentFactory serviceComponentFactory;
private ServiceComponentHostFactory serviceComponentHostFactory;
- private AmbariMetaInfo metaInfo;
+ private OrmTestHelper ormTestHelper;
+
+ private final String STACK_VERSION = "0.1";
+ private final String REPO_VERSION = "0.1-1234";
+ private final StackId STACK_ID = new StackId("HDP", STACK_VERSION);
+ private RepositoryVersionEntity repositoryVersion;
@Before
public void setup() throws Exception {
@@ -59,13 +65,14 @@ public class ServiceTest {
injector.getInstance(GuiceJpaInitializer.class);
clusters = injector.getInstance(Clusters.class);
serviceFactory = injector.getInstance(ServiceFactory.class);
- serviceComponentFactory = injector.getInstance(
- ServiceComponentFactory.class);
- serviceComponentHostFactory = injector.getInstance(
- ServiceComponentHostFactory.class);
- metaInfo = injector.getInstance(AmbariMetaInfo.class);
+ serviceComponentFactory = injector.getInstance(ServiceComponentFactory.class);
+ serviceComponentHostFactory = injector.getInstance(ServiceComponentHostFactory.class);
+
+ ormTestHelper = injector.getInstance(OrmTestHelper.class);
+ repositoryVersion = ormTestHelper.getOrCreateRepositoryVersion(STACK_ID, REPO_VERSION);
+
clusterName = "foo";
- clusters.addCluster(clusterName, new StackId("HDP-0.1"));
+ clusters.addCluster(clusterName, STACK_ID);
cluster = clusters.getCluster(clusterName);
Assert.assertNotNull(cluster);
}
@@ -77,7 +84,7 @@ public class ServiceTest {
@Test
public void testCanBeRemoved() throws Exception{
- Service service = cluster.addService("HDFS");
+ Service service = cluster.addService("HDFS", repositoryVersion);
for (State state : State.values()) {
service.setDesiredState(state);
@@ -119,15 +126,20 @@ public class ServiceTest {
@Test
public void testGetAndSetServiceInfo() throws AmbariException {
String serviceName = "HDFS";
- Service s = serviceFactory.createNew(cluster, serviceName);
+ Service s = serviceFactory.createNew(cluster, serviceName, repositoryVersion);
cluster.addService(s);
Service service = cluster.getService(serviceName);
Assert.assertNotNull(service);
- service.setDesiredStackVersion(new StackId("HDP-1.2.0"));
- Assert.assertEquals("HDP-1.2.0",
- service.getDesiredStackVersion().getStackId());
+ StackId desiredStackId = new StackId("HDP-1.2.0");
+ String desiredVersion = "1.2.0-1234";
+
+ RepositoryVersionEntity desiredRepositoryVersion = ormTestHelper.getOrCreateRepositoryVersion(
+ desiredStackId, desiredVersion);
+
+ service.setDesiredRepositoryVersion(desiredRepositoryVersion);
+ Assert.assertEquals(desiredStackId, service.getDesiredStackVersion());
service.setDesiredState(State.INSTALLING);
Assert.assertEquals(State.INSTALLING, service.getDesiredState());
@@ -140,7 +152,7 @@ public class ServiceTest {
@Test
public void testAddGetDeleteServiceComponents() throws AmbariException {
String serviceName = "HDFS";
- Service s = serviceFactory.createNew(cluster, serviceName);
+ Service s = serviceFactory.createNew(cluster, serviceName, repositoryVersion);
cluster.addService(s);
Service service = cluster.getService(serviceName);
@@ -223,30 +235,30 @@ public class ServiceTest {
@Test
public void testConvertToResponse() throws AmbariException {
String serviceName = "HDFS";
- Service s = serviceFactory.createNew(cluster, serviceName);
+ Service s = serviceFactory.createNew(cluster, serviceName, repositoryVersion);
cluster.addService(s);
Service service = cluster.getService(serviceName);
Assert.assertNotNull(service);
ServiceResponse r = s.convertToResponse();
Assert.assertEquals(s.getName(), r.getServiceName());
- Assert.assertEquals(s.getCluster().getClusterName(),
- r.getClusterName());
- Assert.assertEquals(s.getDesiredStackVersion().getStackId(),
- r.getDesiredStackVersion());
- Assert.assertEquals(s.getDesiredState().toString(),
- r.getDesiredState());
-
- service.setDesiredStackVersion(new StackId("HDP-1.2.0"));
+ Assert.assertEquals(s.getCluster().getClusterName(), r.getClusterName());
+ Assert.assertEquals(s.getDesiredStackVersion().getStackId(), r.getDesiredStackVersion());
+ Assert.assertEquals(s.getDesiredState().toString(), r.getDesiredState());
+
+ StackId desiredStackId = new StackId("HDP-1.2.0");
+ String desiredVersion = "1.2.0-1234";
+
+ RepositoryVersionEntity desiredRepositoryVersion = ormTestHelper.getOrCreateRepositoryVersion(
+ desiredStackId, desiredVersion);
+
+ service.setDesiredRepositoryVersion(desiredRepositoryVersion);
service.setDesiredState(State.INSTALLING);
r = s.convertToResponse();
Assert.assertEquals(s.getName(), r.getServiceName());
- Assert.assertEquals(s.getCluster().getClusterName(),
- r.getClusterName());
- Assert.assertEquals(s.getDesiredStackVersion().getStackId(),
- r.getDesiredStackVersion());
- Assert.assertEquals(s.getDesiredState().toString(),
- r.getDesiredState());
+ Assert.assertEquals(s.getCluster().getClusterName(), r.getClusterName());
+ Assert.assertEquals(s.getDesiredStackVersion().getStackId(), r.getDesiredStackVersion());
+ Assert.assertEquals(s.getDesiredState().toString(), r.getDesiredState());
// FIXME add checks for configs
StringBuilder sb = new StringBuilder();
@@ -259,7 +271,7 @@ public class ServiceTest {
@Test
public void testServiceMaintenance() throws Exception {
String serviceName = "HDFS";
- Service s = serviceFactory.createNew(cluster, serviceName);
+ Service s = serviceFactory.createNew(cluster, serviceName, repositoryVersion);
cluster.addService(s);
Service service = cluster.getService(serviceName);
@@ -282,7 +294,7 @@ public class ServiceTest {
@Test
public void testSecurityState() throws Exception {
String serviceName = "HDFS";
- Service s = serviceFactory.createNew(cluster, serviceName);
+ Service s = serviceFactory.createNew(cluster, serviceName, repositoryVersion);
cluster.addService(s);
Service service = cluster.getService(serviceName);