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 2015/04/16 16:37:26 UTC

[3/8] ambari git commit: AMBARI-10511 - Use Stack Table For Entity Relationships (jonathanhurley)

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ClusterVersionDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ClusterVersionDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ClusterVersionDAOTest.java
index 4837764..6a1c80d 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ClusterVersionDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ClusterVersionDAOTest.java
@@ -18,21 +18,21 @@
 
 package org.apache.ambari.server.orm.dao;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
 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.ClusterEntity;
+import org.apache.ambari.server.orm.entities.ClusterVersionEntity;
 import org.apache.ambari.server.state.RepositoryVersionState;
+import org.apache.ambari.server.state.StackId;
 import org.junit.After;
+import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
-import org.apache.ambari.server.orm.entities.ClusterVersionEntity;
-import org.junit.Assert;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.persist.PersistService;
 
 /**
  * ClusterVersionDAO unit tests.
@@ -57,6 +57,9 @@ public class ClusterVersionDAOTest {
   ClusterVersionEntity cvC;
   long cvCId = 0L;
 
+  private final static StackId HDP_22_STACK = new StackId("HDP", "2.2.0");
+  private final static StackId BAD_STACK = new StackId("BADSTACK", "1.0");
+
   @Before
   public void before() {
     injector = Guice.createInjector(new InMemoryDefaultTestModule());
@@ -76,7 +79,7 @@ public class ClusterVersionDAOTest {
       clusterId = helper.createCluster();
       cluster = clusterDAO.findById(clusterId);
 
-      cvA = new ClusterVersionEntity(cluster, helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.0.0-995"), RepositoryVersionState.CURRENT, System.currentTimeMillis(), System.currentTimeMillis(), "admin");
+      cvA = new ClusterVersionEntity(cluster, helper.getOrCreateRepositoryVersion(HDP_22_STACK, "2.2.0.0-995"), RepositoryVersionState.CURRENT, System.currentTimeMillis(), System.currentTimeMillis(), "admin");
       clusterVersionDAO.create(cvA);
       cvAId = cvA.getId();
     } else {
@@ -87,7 +90,7 @@ public class ClusterVersionDAOTest {
     // Install B
     if (currStep >= 2) {
       if (lastStep <= 1) {
-        cvB = new ClusterVersionEntity(cluster, helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.0.1-998"), RepositoryVersionState.INSTALLED, System.currentTimeMillis(), System.currentTimeMillis(), "admin");
+        cvB = new ClusterVersionEntity(cluster, helper.getOrCreateRepositoryVersion(HDP_22_STACK, "2.2.0.1-998"), RepositoryVersionState.INSTALLED, System.currentTimeMillis(), System.currentTimeMillis(), "admin");
         clusterVersionDAO.create(cvB);
         cvBId = cvB.getId();
       } else {
@@ -106,7 +109,7 @@ public class ClusterVersionDAOTest {
     // Start upgrading C
     if (currStep >= 4) {
       if (lastStep <= 3) {
-        cvC = new ClusterVersionEntity(cluster, helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.1.0-100"), RepositoryVersionState.UPGRADING, System.currentTimeMillis(), "admin");
+        cvC = new ClusterVersionEntity(cluster, helper.getOrCreateRepositoryVersion(HDP_22_STACK, "2.2.1.0-100"), RepositoryVersionState.UPGRADING, System.currentTimeMillis(), "admin");
         clusterVersionDAO.create(cvC);
         cvCId = cvC.getId();
       } else {
@@ -140,14 +143,21 @@ public class ClusterVersionDAOTest {
         clusterVersionDAO.merge(cvB);
     }
 
-    this.lastStep = currStep;
+    lastStep = currStep;
   }
 
   @Test
   public void testFindByStackAndVersion() {
     createRecordsUntilStep(1);
-    Assert.assertEquals(0, clusterVersionDAO.findByStackAndVersion("non existing", "non existing").size());
-    Assert.assertEquals(1, clusterVersionDAO.findByStackAndVersion("HDP-2.2", "2.2.0.0-995").size());
+    Assert.assertEquals(
+        0,
+        clusterVersionDAO.findByStackAndVersion("non existing", "non existing",
+            "non existing").size());
+
+    Assert.assertEquals(
+        1,
+        clusterVersionDAO.findByStackAndVersion(HDP_22_STACK.getStackName(),
+            HDP_22_STACK.getStackVersion(), "2.2.0.0-995").size());
   }
 
   @Test
@@ -160,8 +170,11 @@ public class ClusterVersionDAOTest {
   @Test
   public void testFindByClusterAndStackAndVersion() {
     createRecordsUntilStep(1);
-    Assert.assertNull(clusterVersionDAO.findByClusterAndStackAndVersion(cluster.getClusterName(), "non existing", "non existing"));
-    Assert.assertNotNull(clusterVersionDAO.findByClusterAndStackAndVersion(cluster.getClusterName(), "HDP-2.2", "2.2.0.0-995"));
+    Assert.assertNull(clusterVersionDAO.findByClusterAndStackAndVersion(
+        cluster.getClusterName(), BAD_STACK, "non existing"));
+
+    Assert.assertNotNull(clusterVersionDAO.findByClusterAndStackAndVersion(
+        cluster.getClusterName(), HDP_22_STACK, "2.2.0.0-995"));
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ConfigGroupDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ConfigGroupDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ConfigGroupDAOTest.java
index 304f5b6..2adbf9d 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ConfigGroupDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ConfigGroupDAOTest.java
@@ -17,11 +17,15 @@
  */
 package org.apache.ambari.server.orm.dao;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+
 import junit.framework.Assert;
+
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
 import org.apache.ambari.server.orm.GuiceJpaInitializer;
 import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
 import org.apache.ambari.server.orm.cache.ConfigGroupHostMapping;
@@ -33,13 +37,14 @@ import org.apache.ambari.server.orm.entities.ConfigGroupHostMappingEntity;
 import org.apache.ambari.server.orm.entities.HostEntity;
 import org.apache.ambari.server.orm.entities.ResourceEntity;
 import org.apache.ambari.server.orm.entities.ResourceTypeEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.persist.PersistService;
 
 public class ConfigGroupDAOTest {
   private Injector injector;
@@ -49,12 +54,17 @@ public class ConfigGroupDAOTest {
   private ConfigGroupHostMappingDAO configGroupHostMappingDAO;
   private HostDAO hostDAO;
   private ResourceTypeDAO resourceTypeDAO;
+  private StackDAO stackDAO;
 
   @Before
   public void setup() throws Exception {
     injector = Guice.createInjector(new InMemoryDefaultTestModule());
     injector.getInstance(GuiceJpaInitializer.class);
 
+    // required to populate the database with stacks
+    injector.getInstance(AmbariMetaInfo.class);
+
+    stackDAO = injector.getInstance(StackDAO.class);
     clusterDAO = injector.getInstance(ClusterDAO.class);
     configGroupDAO = injector.getInstance(ConfigGroupDAO.class);
     configGroupConfigMappingDAO = injector.getInstance
@@ -83,12 +93,17 @@ public class ConfigGroupDAOTest {
       resourceTypeEntity.setName(ResourceTypeEntity.CLUSTER_RESOURCE_TYPE_NAME);
       resourceTypeEntity = resourceTypeDAO.merge(resourceTypeEntity);
     }
+
+    StackEntity stackEntity = stackDAO.find("HDP", "0.1");
+
     ResourceEntity resourceEntity = new ResourceEntity();
     resourceEntity.setResourceType(resourceTypeEntity);
 
     ClusterEntity clusterEntity = new ClusterEntity();
     clusterEntity.setClusterName(clusterName);
     clusterEntity.setResource(resourceEntity);
+    clusterEntity.setDesiredStack(stackEntity);
+
     clusterDAO.create(clusterEntity);
 
     configGroupEntity.setClusterEntity(clusterEntity);
@@ -104,6 +119,7 @@ public class ConfigGroupDAOTest {
         ArrayList<ConfigGroupHostMappingEntity>();
 
       for (HostEntity host : hosts) {
+        host.setClusterEntities(Arrays.asList(clusterEntity));
         hostDAO.create(host);
 
         ConfigGroupHostMappingEntity hostMappingEntity = new
@@ -213,9 +229,9 @@ public class ConfigGroupDAOTest {
       .findByHost("h1");
 
     Assert.assertNotNull(hostMappingEntities);
-    
+
     for (ConfigGroupHostMapping hostMappingEntity : hostMappingEntities) {
-    
+
       Assert.assertEquals("h1", hostMappingEntity.getHostname());
       Assert.assertEquals("centOS", hostMappingEntity.getHost().getOsType());
     }
@@ -223,11 +239,14 @@ public class ConfigGroupDAOTest {
 
   @Test
   public void testFindConfigsByGroup() throws Exception {
+    StackEntity stackEntity = stackDAO.find("HDP", "0.1");
+
     ClusterConfigEntity configEntity = new ClusterConfigEntity();
     configEntity.setType("core-site");
     configEntity.setTag("version1");
     configEntity.setData("someData");
     configEntity.setAttributes("someAttributes");
+    configEntity.setStack(stackEntity);
 
     List<ClusterConfigEntity> configEntities = new
       ArrayList<ClusterConfigEntity>();

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/CrudDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/CrudDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/CrudDAOTest.java
index 7568150..8777d33 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/CrudDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/CrudDAOTest.java
@@ -18,9 +18,12 @@
 
 package org.apache.ambari.server.orm.dao;
 
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
 import org.apache.ambari.server.orm.GuiceJpaInitializer;
 import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
 import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
+import org.apache.ambari.server.state.StackId;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -41,18 +44,31 @@ public class CrudDAOTest {
   private int uniqueCounter = 0;
   private static final long FIRST_ID = 1L;
 
+  private static final StackId HDP_206 = new StackId("HDP", "2.0.6");
+
+  private StackDAO stackDAO;
+
   @Before
   public void before() {
     injector = Guice.createInjector(new InMemoryDefaultTestModule());
+    stackDAO = injector.getInstance(StackDAO.class);
     repositoryVersionDAO = injector.getInstance(RepositoryVersionDAO.class);
     injector.getInstance(GuiceJpaInitializer.class);
+
+    // required to populate stacks into the database
+    injector.getInstance(AmbariMetaInfo.class);
   }
 
   private void createSingleRecord() {
+    StackEntity stackEntity = stackDAO.find(HDP_206.getStackName(),
+        HDP_206.getStackVersion());
+
+    Assert.assertNotNull(stackEntity);
+
     final RepositoryVersionEntity entity = new RepositoryVersionEntity();
     entity.setDisplayName("display name" + uniqueCounter);
     entity.setOperatingSystems("repositories");
-    entity.setStack("stack" + uniqueCounter);
+    entity.setStack(stackEntity);
     entity.setUpgradePackage("upgrade package");
     entity.setVersion("version");
     repositoryVersionDAO.create(entity);

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/HostVersionDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/HostVersionDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/HostVersionDAOTest.java
index 7cf59e9..5ae9f0c 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/HostVersionDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/HostVersionDAOTest.java
@@ -18,23 +18,31 @@
 
 package org.apache.ambari.server.orm.dao;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
 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.*;
+import org.apache.ambari.server.orm.entities.ClusterEntity;
+import org.apache.ambari.server.orm.entities.ClusterVersionEntity;
+import org.apache.ambari.server.orm.entities.HostEntity;
+import org.apache.ambari.server.orm.entities.HostVersionEntity;
+import org.apache.ambari.server.orm.entities.ResourceEntity;
+import org.apache.ambari.server.orm.entities.ResourceTypeEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
 import org.apache.ambari.server.state.RepositoryVersionState;
+import org.apache.ambari.server.state.StackId;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.persist.PersistService;
 
 
 /**
@@ -45,11 +53,15 @@ public class HostVersionDAOTest {
   private static Injector injector;
   private ResourceTypeDAO resourceTypeDAO;
   private ClusterDAO clusterDAO;
+  private StackDAO stackDAO;
   private ClusterVersionDAO clusterVersionDAO;
   private HostDAO hostDAO;
   private HostVersionDAO hostVersionDAO;
   private OrmTestHelper helper;
 
+  private final static StackId HDP_22_STACK = new StackId("HDP", "2.2.0");
+  private final static StackId BAD_STACK = new StackId("BADSTACK", "1.0");
+
   @Before
   public void before() {
     injector = Guice.createInjector(new InMemoryDefaultTestModule());
@@ -57,11 +69,15 @@ public class HostVersionDAOTest {
 
     resourceTypeDAO = injector.getInstance(ResourceTypeDAO.class);
     clusterDAO = injector.getInstance(ClusterDAO.class);
+    stackDAO = injector.getInstance(StackDAO.class);
     clusterVersionDAO = injector.getInstance(ClusterVersionDAO.class);
     hostDAO = injector.getInstance(HostDAO.class);
     hostVersionDAO = injector.getInstance(HostVersionDAO.class);
     helper = injector.getInstance(OrmTestHelper.class);
 
+    // required to populate the database with stacks
+    injector.getInstance(AmbariMetaInfo.class);
+
     createDefaultData();
   }
 
@@ -69,6 +85,9 @@ public class HostVersionDAOTest {
    * Helper function to bootstrap some basic data about clusters, cluster version, host, and host versions.
    */
   private void createDefaultData() {
+    StackEntity stackEntity = stackDAO.find(HDP_22_STACK.getStackName(), HDP_22_STACK.getStackVersion());
+    Assert.assertNotNull(stackEntity);
+
     // Create the cluster
     ResourceTypeEntity resourceTypeEntity = new ResourceTypeEntity();
     resourceTypeEntity.setId(ResourceTypeEntity.CLUSTER_RESOURCE_TYPE);
@@ -82,10 +101,15 @@ public class HostVersionDAOTest {
     clusterEntity.setClusterName("test_cluster1");
     clusterEntity.setClusterInfo("test_cluster_info1");
     clusterEntity.setResource(resourceEntity);
+    clusterEntity.setDesiredStack(stackEntity);
+
     clusterDAO.create(clusterEntity);
 
     // Create the Cluster Version and link it to the cluster
-    ClusterVersionEntity clusterVersionEntity = new ClusterVersionEntity(clusterEntity, helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.0.0-995"), RepositoryVersionState.CURRENT, System.currentTimeMillis(), System.currentTimeMillis(), "admin");
+    ClusterVersionEntity clusterVersionEntity = new ClusterVersionEntity(
+        clusterEntity, helper.getOrCreateRepositoryVersion(HDP_22_STACK,
+            "2.2.0.0-995"), RepositoryVersionState.CURRENT,
+        System.currentTimeMillis(), System.currentTimeMillis(), "admin");
     List<ClusterVersionEntity> clusterVersionEntities = new ArrayList<ClusterVersionEntity>();
     clusterVersionEntities.add(clusterVersionEntity);
     clusterEntity.setClusterVersionEntities(clusterVersionEntities);
@@ -110,7 +134,6 @@ public class HostVersionDAOTest {
     hostEntities.add(host2);
     hostEntities.add(host3);
 
-    clusterEntity.setHostEntities(hostEntities);
     // Both sides of relation should be set when modifying in runtime
     host1.setClusterEntities(Arrays.asList(clusterEntity));
     host2.setClusterEntities(Arrays.asList(clusterEntity));
@@ -119,6 +142,8 @@ public class HostVersionDAOTest {
     hostDAO.create(host1);
     hostDAO.create(host2);
     hostDAO.create(host3);
+
+    clusterEntity.setHostEntities(hostEntities);
     clusterDAO.merge(clusterEntity);
 
     // Create the Host Versions
@@ -149,7 +174,7 @@ public class HostVersionDAOTest {
       Assert.fail("Cluster is expected to have at least one cluster version");
     }
 
-    ClusterVersionEntity newClusterVersionEntity = new ClusterVersionEntity(clusterEntity, helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.0.1-996"), RepositoryVersionState.CURRENT, System.currentTimeMillis(), System.currentTimeMillis(), "admin");
+    ClusterVersionEntity newClusterVersionEntity = new ClusterVersionEntity(clusterEntity, helper.getOrCreateRepositoryVersion(HDP_22_STACK, "2.2.0.1-996"), RepositoryVersionState.CURRENT, System.currentTimeMillis(), System.currentTimeMillis(), "admin");
     clusterEntity.addClusterVersionEntity(newClusterVersionEntity);
     clusterVersionDAO.create(newClusterVersionEntity);
 
@@ -159,7 +184,7 @@ public class HostVersionDAOTest {
 
     // For each of the hosts, add a host version
     for (HostEntity host : hostEntities) {
-      HostVersionEntity hostVersionEntity = new HostVersionEntity(host.getHostName(), helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.0.1-996"), RepositoryVersionState.INSTALLED);
+      HostVersionEntity hostVersionEntity = new HostVersionEntity(host.getHostName(), helper.getOrCreateRepositoryVersion(HDP_22_STACK, "2.2.0.1-996"), RepositoryVersionState.INSTALLED);
       hostVersionEntity.setHostEntity(host);
       hostVersionDAO.create(hostVersionEntity);
     }
@@ -177,7 +202,7 @@ public class HostVersionDAOTest {
         desiredState = RepositoryVersionState.UPGRADE_FAILED;
       }
 
-      HostVersionEntity hostVersionEntity = new HostVersionEntity(hostEntities[i].getHostName(), helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.1.0-500"), desiredState);
+      HostVersionEntity hostVersionEntity = new HostVersionEntity(hostEntities[i].getHostName(), helper.getOrCreateRepositoryVersion(HDP_22_STACK, "2.2.1.0-500"), desiredState);
       hostVersionEntity.setHostEntity(hostEntities[i]);
       hostVersionDAO.create(hostVersionEntity);
     }
@@ -212,13 +237,13 @@ public class HostVersionDAOTest {
    */
   @Test
   public void testFindByClusterStackAndVersion() {
-    Assert.assertEquals(3, hostVersionDAO.findByClusterStackAndVersion("test_cluster1", "HDP-2.2", "2.2.0.0-995").size());
+    Assert.assertEquals(3, hostVersionDAO.findByClusterStackAndVersion("test_cluster1", HDP_22_STACK, "2.2.0.0-995").size());
     Assert.assertEquals(3, hostVersionDAO.findAll().size());
 
     addMoreVersions();
 
-    Assert.assertEquals(3, hostVersionDAO.findByClusterStackAndVersion("test_cluster1", "HDP-2.2", "2.2.0.1-996").size());
-    Assert.assertEquals(3, hostVersionDAO.findByClusterStackAndVersion("test_cluster1", "HDP-2.2", "2.2.1.0-500").size());
+    Assert.assertEquals(3, hostVersionDAO.findByClusterStackAndVersion("test_cluster1", HDP_22_STACK, "2.2.0.1-996").size());
+    Assert.assertEquals(3, hostVersionDAO.findByClusterStackAndVersion("test_cluster1", HDP_22_STACK, "2.2.1.0-500").size());
     Assert.assertEquals(9, hostVersionDAO.findAll().size());
   }
 
@@ -264,37 +289,37 @@ public class HostVersionDAOTest {
    */
   @Test
   public void testFindByClusterStackVersionAndHost() {
-    HostVersionEntity hostVersionEntity1 = new HostVersionEntity("test_host1", helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.0.0-995"), RepositoryVersionState.CURRENT);
+    HostVersionEntity hostVersionEntity1 = new HostVersionEntity("test_host1", helper.getOrCreateRepositoryVersion(HDP_22_STACK, "2.2.0.0-995"), RepositoryVersionState.CURRENT);
     hostVersionEntity1.setId(1L);
     hostVersionEntity1.setHostEntity(hostDAO.findByName("test_host1"));
-    HostVersionEntity hostVersionEntity2 = new HostVersionEntity("test_host2", helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.0.0-995"), RepositoryVersionState.INSTALLED);
+    HostVersionEntity hostVersionEntity2 = new HostVersionEntity("test_host2", helper.getOrCreateRepositoryVersion(HDP_22_STACK, "2.2.0.0-995"), RepositoryVersionState.INSTALLED);
     hostVersionEntity2.setId(2L);
     hostVersionEntity2.setHostEntity(hostDAO.findByName("test_host2"));
-    HostVersionEntity hostVersionEntity3 = new HostVersionEntity("test_host3", helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.0.0-995"), RepositoryVersionState.INSTALLED);
+    HostVersionEntity hostVersionEntity3 = new HostVersionEntity("test_host3", helper.getOrCreateRepositoryVersion(HDP_22_STACK, "2.2.0.0-995"), RepositoryVersionState.INSTALLED);
     hostVersionEntity3.setId(3L);
     hostVersionEntity3.setHostEntity(hostDAO.findByName("test_host3"));
 
-    Assert.assertEquals(hostVersionEntity1, hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", "HDP-2.2", "2.2.0.0-995", "test_host1"));
-    Assert.assertEquals(hostVersionEntity2, hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", "HDP-2.2", "2.2.0.0-995", "test_host2"));
-    Assert.assertEquals(hostVersionEntity3, hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", "HDP-2.2", "2.2.0.0-995", "test_host3"));
+    Assert.assertEquals(hostVersionEntity1, hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", HDP_22_STACK, "2.2.0.0-995", "test_host1"));
+    Assert.assertEquals(hostVersionEntity2, hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", HDP_22_STACK, "2.2.0.0-995", "test_host2"));
+    Assert.assertEquals(hostVersionEntity3, hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", HDP_22_STACK, "2.2.0.0-995", "test_host3"));
 
     // Test non-existent objects
-    Assert.assertEquals(null, hostVersionDAO.findByClusterStackVersionAndHost("non_existent_cluster", "HDP-2.2", "2.2.0.0-995", "test_host3"));
-    Assert.assertEquals(null, hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", "non_existent_stack", "2.2.0.0-995", "test_host3"));
-    Assert.assertEquals(null, hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", "HDP-2.2", "non_existent_version", "test_host3"));
-    Assert.assertEquals(null, hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", "HDP-2.2", "non_existent_version", "non_existent_host"));
+    Assert.assertEquals(null, hostVersionDAO.findByClusterStackVersionAndHost("non_existent_cluster", HDP_22_STACK, "2.2.0.0-995", "test_host3"));
+    Assert.assertEquals(null, hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", BAD_STACK, "2.2.0.0-995", "test_host3"));
+    Assert.assertEquals(null, hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", HDP_22_STACK, "non_existent_version", "test_host3"));
+    Assert.assertEquals(null, hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", HDP_22_STACK, "non_existent_version", "non_existent_host"));
 
     addMoreVersions();
 
     // Expected
-    HostVersionEntity hostVersionEntity1LastExpected = new HostVersionEntity("test_host1", helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.1.0-500"), RepositoryVersionState.INSTALLED);
-    HostVersionEntity hostVersionEntity2LastExpected = new HostVersionEntity("test_host2", helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.1.0-500"), RepositoryVersionState.UPGRADING);
-    HostVersionEntity hostVersionEntity3LastExpected = new HostVersionEntity("test_host3", helper.getOrCreateRepositoryVersion("HDP-2.2", "2.2.1.0-500"), RepositoryVersionState.UPGRADE_FAILED);
+    HostVersionEntity hostVersionEntity1LastExpected = new HostVersionEntity("test_host1", helper.getOrCreateRepositoryVersion(HDP_22_STACK, "2.2.1.0-500"), RepositoryVersionState.INSTALLED);
+    HostVersionEntity hostVersionEntity2LastExpected = new HostVersionEntity("test_host2", helper.getOrCreateRepositoryVersion(HDP_22_STACK, "2.2.1.0-500"), RepositoryVersionState.UPGRADING);
+    HostVersionEntity hostVersionEntity3LastExpected = new HostVersionEntity("test_host3", helper.getOrCreateRepositoryVersion(HDP_22_STACK, "2.2.1.0-500"), RepositoryVersionState.UPGRADE_FAILED);
 
     // Actual
-    HostVersionEntity hostVersionEntity1LastActual = hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", "HDP-2.2", "2.2.1.0-500", "test_host1");
-    HostVersionEntity hostVersionEntity2LastActual = hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", "HDP-2.2", "2.2.1.0-500", "test_host2");
-    HostVersionEntity hostVersionEntity3LastActual = hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", "HDP-2.2", "2.2.1.0-500", "test_host3");
+    HostVersionEntity hostVersionEntity1LastActual = hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", HDP_22_STACK, "2.2.1.0-500", "test_host1");
+    HostVersionEntity hostVersionEntity2LastActual = hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", HDP_22_STACK, "2.2.1.0-500", "test_host2");
+    HostVersionEntity hostVersionEntity3LastActual = hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1", HDP_22_STACK, "2.2.1.0-500", "test_host3");
 
     // Trying to Mock the actual objects to override the getId() method will not work because the class that mockito creates
     // is still a Mockito wrapper. Instead, take advantage of an overloaded constructor that ignores the Id.

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAOTest.java
index 09c8453..9a4ee5c 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAOTest.java
@@ -18,32 +18,40 @@
 
 package org.apache.ambari.server.orm.dao;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
 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.ClusterEntity;
 import org.apache.ambari.server.orm.entities.ClusterVersionEntity;
 import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
 import org.apache.ambari.server.state.RepositoryVersionState;
+import org.apache.ambari.server.state.StackId;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.persist.PersistService;
+
 /**
  * RepositoryVersionDAO unit tests.
  */
 public class RepositoryVersionDAOTest {
 
   private static Injector injector;
+
+  private static final StackId HDP_206 = new StackId("HDP", "2.0.6");
+  private static final StackId BAD_STACK = new StackId("BADSTACK", "1.0");
+
   private RepositoryVersionDAO repositoryVersionDAO;
   private ClusterVersionDAO clusterVersionDAO;
-  private HostVersionDAO hostVersionDAO;
-  
+
   private ClusterDAO clusterDAO;
+  private StackDAO stackDAO;
   private OrmTestHelper helper;
 
   @Before
@@ -51,17 +59,25 @@ public class RepositoryVersionDAOTest {
     injector = Guice.createInjector(new InMemoryDefaultTestModule());
     repositoryVersionDAO = injector.getInstance(RepositoryVersionDAO.class);
     clusterVersionDAO = injector.getInstance(ClusterVersionDAO.class);
-    hostVersionDAO = injector.getInstance(HostVersionDAO.class);
     clusterDAO = injector.getInstance(ClusterDAO.class);
-    helper = injector.getInstance(OrmTestHelper.class);    
+    stackDAO = injector.getInstance(StackDAO.class);
+    helper = injector.getInstance(OrmTestHelper.class);
     injector.getInstance(GuiceJpaInitializer.class);
+
+    // required to populate stacks into the database
+    injector.getInstance(AmbariMetaInfo.class);
   }
 
   private void createSingleRecord() {
+    StackEntity stackEntity = stackDAO.find(HDP_206.getStackName(),
+        HDP_206.getStackVersion());
+
+    Assert.assertNotNull(stackEntity);
+
     final RepositoryVersionEntity entity = new RepositoryVersionEntity();
     entity.setDisplayName("display name");
     entity.setOperatingSystems("repositories");
-    entity.setStack("stack");
+    entity.setStack(stackEntity);
     entity.setUpgradePackage("upgrade package");
     entity.setVersion("version");
     repositoryVersionDAO.create(entity);
@@ -77,49 +93,58 @@ public class RepositoryVersionDAOTest {
   @Test
   public void testFindByStackAndVersion() {
     createSingleRecord();
-    Assert.assertNull(repositoryVersionDAO.findByStackAndVersion("non existing", "non existing"));
-    Assert.assertNotNull(repositoryVersionDAO.findByStackAndVersion("stack", "version"));
+    Assert.assertNull(repositoryVersionDAO.findByStackAndVersion(BAD_STACK,
+        "non existing"));
+    Assert.assertNotNull(repositoryVersionDAO.findByStackAndVersion(HDP_206,
+        "version"));
   }
 
   @Test
   public void testFindByStack() {
     createSingleRecord();
-    Assert.assertEquals(0, repositoryVersionDAO.findByStack("non existing").size());
-    Assert.assertEquals(1, repositoryVersionDAO.findByStack("stack").size());
+    Assert.assertEquals(0, repositoryVersionDAO.findByStack(BAD_STACK).size());
+    Assert.assertEquals(1, repositoryVersionDAO.findByStack(HDP_206).size());
   }
 
   @Test
   public void testDelete() {
     createSingleRecord();
-    Assert.assertNotNull(repositoryVersionDAO.findByStackAndVersion("stack", "version"));
-    final RepositoryVersionEntity entity = repositoryVersionDAO.findByStackAndVersion("stack", "version");
+    Assert.assertNotNull(repositoryVersionDAO.findByStackAndVersion(HDP_206,
+        "version"));
+
+    final RepositoryVersionEntity entity = repositoryVersionDAO.findByStackAndVersion(
+        HDP_206, "version");
+
     repositoryVersionDAO.remove(entity);
-    Assert.assertNull(repositoryVersionDAO.findByStackAndVersion("stack", "version"));
-  }  
+    Assert.assertNull(repositoryVersionDAO.findByStackAndVersion(HDP_206,
+        "version"));
+  }
 
   @Test
-  public void testDeleteCascade() {   
+  public void testDeleteCascade() {
     long clusterId = helper.createCluster();
     ClusterEntity cluster = clusterDAO.findById(clusterId);
     createSingleRecord();
-    final RepositoryVersionEntity entity = repositoryVersionDAO.findByStackAndVersion("stack", "version");
-    
+    final RepositoryVersionEntity entity = repositoryVersionDAO.findByStackAndVersion(
+        HDP_206, "version");
+
     ClusterVersionEntity cvA = new ClusterVersionEntity(cluster, entity, RepositoryVersionState.INSTALLED, System.currentTimeMillis(), System.currentTimeMillis(), "admin");
     clusterVersionDAO.create(cvA);
     long cvAId = cvA.getId();
     cvA = clusterVersionDAO.findByPK(cvAId);
     Assert.assertNotNull(cvA.getRepositoryVersion());
-    final RepositoryVersionEntity newEntity = repositoryVersionDAO.findByStackAndVersion("stack", "version");
+    final RepositoryVersionEntity newEntity = repositoryVersionDAO.findByStackAndVersion(
+        HDP_206, "version");
     try {
       repositoryVersionDAO.remove(newEntity);
     } catch (Exception e) {
       //Cascade deletion will fail because absent integrity in in-memory DB
       Assert.assertNotNull(clusterVersionDAO.findByPK(cvAId));
-    } 
+    }
     //
-   
-  }    
-  
+
+  }
+
   @After
   public void after() {
     injector.getInstance(PersistService.class).stop();

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RequestDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RequestDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RequestDAOTest.java
index 8ca53f7..7ebcdf9 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RequestDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RequestDAOTest.java
@@ -28,6 +28,7 @@ import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.Role;
 import org.apache.ambari.server.RoleCommand;
 import org.apache.ambari.server.actionmanager.HostRoleStatus;
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
 import org.apache.ambari.server.controller.internal.CalculatedStatus;
 import org.apache.ambari.server.orm.GuiceJpaInitializer;
 import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
@@ -54,15 +55,16 @@ import com.google.inject.persist.PersistService;
 public class RequestDAOTest {
   private Injector injector;
   private ClusterDAO clusterDAO;
-  StageDAO stageDAO;
-  HostRoleCommandDAO hostRoleCommandDAO;
-  HostDAO hostDAO;
-  RequestDAO requestDAO;
+  private StageDAO stageDAO;
+  private HostRoleCommandDAO hostRoleCommandDAO;
+  private HostDAO hostDAO;
+  private RequestDAO requestDAO;
 
   @Before
   public void setup() throws Exception {
     injector = Guice.createInjector(new InMemoryDefaultTestModule());
     injector.getInstance(GuiceJpaInitializer.class);
+    injector.getInstance(AmbariMetaInfo.class);
 
     clusterDAO = injector.getInstance(ClusterDAO.class);
     stageDAO = injector.getInstance(StageDAO.class);

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RequestScheduleDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RequestScheduleDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RequestScheduleDAOTest.java
index b3a3ef2..75b937c 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RequestScheduleDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RequestScheduleDAOTest.java
@@ -17,11 +17,12 @@
  */
 package org.apache.ambari.server.orm.dao;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
+import java.util.List;
+
 import junit.framework.Assert;
+
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
 import org.apache.ambari.server.orm.GuiceJpaInitializer;
 import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
 import org.apache.ambari.server.orm.entities.ClusterEntity;
@@ -30,12 +31,15 @@ import org.apache.ambari.server.orm.entities.RequestScheduleBatchRequestEntity;
 import org.apache.ambari.server.orm.entities.RequestScheduleEntity;
 import org.apache.ambari.server.orm.entities.ResourceEntity;
 import org.apache.ambari.server.orm.entities.ResourceTypeEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
 import org.apache.ambari.server.state.scheduler.BatchRequest;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-import java.util.List;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.persist.PersistService;
 
 public class RequestScheduleDAOTest {
   private Injector injector;
@@ -53,6 +57,9 @@ public class RequestScheduleDAOTest {
     injector = Guice.createInjector(new InMemoryDefaultTestModule());
     injector.getInstance(GuiceJpaInitializer.class);
 
+    // required to load stacks into the DB
+    injector.getInstance(AmbariMetaInfo.class);
+
     clusterDAO = injector.getInstance(ClusterDAO.class);
     hostDAO = injector.getInstance(HostDAO.class);
     clusterDAO = injector.getInstance(ClusterDAO.class);
@@ -77,12 +84,18 @@ public class RequestScheduleDAOTest {
       resourceTypeEntity.setName(ResourceTypeEntity.CLUSTER_RESOURCE_TYPE_NAME);
       resourceTypeEntity = resourceTypeDAO.merge(resourceTypeEntity);
     }
+
+    StackDAO stackDAO = injector.getInstance(StackDAO.class);
+    StackEntity stackEntity = stackDAO.find("HDP", "2.2.0");
+
     ResourceEntity resourceEntity = new ResourceEntity();
     resourceEntity.setResourceType(resourceTypeEntity);
 
     ClusterEntity clusterEntity = new ClusterEntity();
     clusterEntity.setClusterName("c1");
     clusterEntity.setResource(resourceEntity);
+    clusterEntity.setDesiredStack(stackEntity);
+
     clusterDAO.create(clusterEntity);
 
     scheduleEntity.setClusterEntity(clusterEntity);

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ServiceConfigDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ServiceConfigDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ServiceConfigDAOTest.java
index 5118156..3cde243 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ServiceConfigDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ServiceConfigDAOTest.java
@@ -17,45 +17,46 @@
  */
 package org.apache.ambari.server.orm.dao;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.persist.PersistService;
+import java.util.List;
+import java.util.Map;
+
 import junit.framework.Assert;
+
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
 import org.apache.ambari.server.orm.GuiceJpaInitializer;
 import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
-import org.apache.ambari.server.orm.cache.ConfigGroupHostMapping;
 import org.apache.ambari.server.orm.entities.ClusterConfigEntity;
 import org.apache.ambari.server.orm.entities.ClusterEntity;
-import org.apache.ambari.server.orm.entities.ConfigGroupConfigMappingEntity;
-import org.apache.ambari.server.orm.entities.ConfigGroupEntity;
-import org.apache.ambari.server.orm.entities.ConfigGroupHostMappingEntity;
-import org.apache.ambari.server.orm.entities.HostEntity;
 import org.apache.ambari.server.orm.entities.ResourceEntity;
 import org.apache.ambari.server.orm.entities.ResourceTypeEntity;
 import org.apache.ambari.server.orm.entities.ServiceConfigEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.persist.PersistService;
 
 public class ServiceConfigDAOTest {
   private Injector injector;
   private ServiceConfigDAO serviceConfigDAO;
   private ClusterDAO clusterDAO;
   private ResourceTypeDAO resourceTypeDAO;
-
+  private StackDAO stackDAO;
 
   @Before
   public void setup() throws Exception {
     injector = Guice.createInjector(new InMemoryDefaultTestModule());
     injector.getInstance(GuiceJpaInitializer.class);
 
+    // required to load stack information into the DB
+    injector.getInstance(AmbariMetaInfo.class);
+
     clusterDAO = injector.getInstance(ClusterDAO.class);
+    stackDAO = injector.getInstance(StackDAO.class);
     serviceConfigDAO = injector.getInstance(ServiceConfigDAO.class);
     resourceTypeDAO = injector.getInstance(ResourceTypeDAO.class);
   }
@@ -78,6 +79,9 @@ public class ServiceConfigDAOTest {
       resourceTypeEntity.setName(ResourceTypeEntity.CLUSTER_RESOURCE_TYPE_NAME);
       resourceTypeEntity = resourceTypeDAO.merge(resourceTypeEntity);
     }
+
+    StackEntity stackEntity = stackDAO.find("HDP", "0.1");
+
     ResourceEntity resourceEntity = new ResourceEntity();
     resourceEntity.setResourceType(resourceTypeEntity);
 
@@ -86,6 +90,8 @@ public class ServiceConfigDAOTest {
       clusterEntity = new ClusterEntity();
       clusterEntity.setClusterName("c1");
       clusterEntity.setResource(resourceEntity);
+      clusterEntity.setDesiredStack(stackEntity);
+
       clusterDAO.create(clusterEntity);
     }
 
@@ -98,6 +104,7 @@ public class ServiceConfigDAOTest {
     serviceConfigEntity.setCreateTimestamp(createTimestamp);
     serviceConfigEntity.setClusterConfigEntities(clusterConfigEntities);
     serviceConfigEntity.setClusterEntity(clusterEntity);
+    serviceConfigEntity.setStack(clusterEntity.getDesiredStack());
 
     serviceConfigDAO.create(serviceConfigEntity);
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/BlueprintEntityTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/BlueprintEntityTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/BlueprintEntityTest.java
index b965554..2587f6d 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/BlueprintEntityTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/BlueprintEntityTest.java
@@ -18,12 +18,13 @@
 
 package org.apache.ambari.server.orm.entities;
 
-import com.google.gson.Gson;
-
-import org.apache.ambari.server.api.services.AmbariMetaInfo;
-import org.apache.ambari.server.state.PropertyInfo;
-import org.apache.ambari.server.state.ServiceInfo;
-import org.junit.Test;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -34,18 +35,28 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
+import org.apache.ambari.server.state.PropertyInfo;
+import org.apache.ambari.server.state.ServiceInfo;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.google.gson.Gson;
 
 /**
  * BlueprintEntity unit tests
  */
 public class BlueprintEntityTest {
+
+  private StackEntity stackEntity = new StackEntity();
+
+  @Before
+  public void setup() {
+    stackEntity = new StackEntity();
+    stackEntity.setStackName("HDP");
+    stackEntity.setStackVersion("2.0.6");
+  }
+
   @Test
   public void testSetGetBlueprintName() {
     BlueprintEntity entity = new BlueprintEntity();
@@ -54,17 +65,10 @@ public class BlueprintEntityTest {
   }
 
   @Test
-  public void testSetGetStackName() {
-    BlueprintEntity entity = new BlueprintEntity();
-    entity.setStackName("foo");
-    assertEquals("foo", entity.getStackName());
-  }
-
-  @Test
-  public void testSetGetStackVersion() {
+  public void testSetGetStack() {
     BlueprintEntity entity = new BlueprintEntity();
-    entity.setStackVersion("1");
-    assertEquals("1", entity.getStackVersion());
+    entity.setStack(stackEntity);
+    assertEquals(stackEntity, entity.getStack());
   }
 
   @Test
@@ -104,8 +108,7 @@ public class BlueprintEntityTest {
     service.getProperties().addAll(serviceProperties);
 
     BlueprintEntity entity = new BlueprintEntity();
-    entity.setStackName("stackName");
-    entity.setStackVersion("version");
+    entity.setStack(stackEntity);
 
     Collection<BlueprintConfigEntity> configurations = new HashSet<BlueprintConfigEntity>();
     BlueprintConfigEntity configEntity = new BlueprintConfigEntity();
@@ -137,8 +140,8 @@ public class BlueprintEntityTest {
     hostGroupEntities.add(hostGroupEntity);
     entity.setHostGroups(hostGroupEntities);
 
-    expect(metaInfo.getComponentToService("stackName", "version", "component1")).andReturn("service1");
-    expect(metaInfo.getService("stackName", "version", "service1")).andReturn(service);
+    expect(metaInfo.getComponentToService("HDP", "2.0.6", "component1")).andReturn("service1");
+    expect(metaInfo.getService("HDP", "2.0.6", "service1")).andReturn(service);
 
     replay(metaInfo);
 
@@ -169,8 +172,7 @@ public class BlueprintEntityTest {
     service.getProperties().addAll(serviceProperties);
 
     BlueprintEntity entity = new BlueprintEntity();
-    entity.setStackName("stackName");
-    entity.setStackVersion("version");
+    entity.setStack(stackEntity);
 
     entity.setConfigurations(Collections.<BlueprintConfigEntity>emptyList());
 
@@ -203,8 +205,8 @@ public class BlueprintEntityTest {
     hostGroupEntities.add(hostGroupEntity);
     entity.setHostGroups(hostGroupEntities);
 
-    expect(metaInfo.getComponentToService("stackName", "version", "component1")).andReturn("service1");
-    expect(metaInfo.getService("stackName", "version", "service1")).andReturn(service);
+    expect(metaInfo.getComponentToService("HDP", "2.0.6", "component1")).andReturn("service1");
+    expect(metaInfo.getService("HDP", "2.0.6", "service1")).andReturn(service);
 
     replay(metaInfo);
 
@@ -247,8 +249,7 @@ public class BlueprintEntityTest {
     service.getProperties().addAll(serviceProperties);
 
     BlueprintEntity entity = new BlueprintEntity();
-    entity.setStackName("stackName");
-    entity.setStackVersion("version");
+    entity.setStack(stackEntity);
 
     Collection<BlueprintConfigEntity> configurations = new HashSet<BlueprintConfigEntity>();
     BlueprintConfigEntity configEntity = new BlueprintConfigEntity();
@@ -280,8 +281,9 @@ public class BlueprintEntityTest {
     hostGroupEntities.add(hostGroupEntity);
     entity.setHostGroups(hostGroupEntities);
 
-    expect(metaInfo.getComponentToService("stackName", "version", "component1")).andReturn("service1");
-    expect(metaInfo.getService("stackName", "version", "service1")).andReturn(service);
+    expect(metaInfo.getComponentToService("HDP", "2.0.6", "component1")).andReturn(
+        "service1");
+    expect(metaInfo.getService("HDP", "2.0.6", "service1")).andReturn(service);
 
     replay(metaInfo);
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/scheduler/ExecutionScheduleManagerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/scheduler/ExecutionScheduleManagerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/scheduler/ExecutionScheduleManagerTest.java
index 41050c6..8743142 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/scheduler/ExecutionScheduleManagerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/scheduler/ExecutionScheduleManagerTest.java
@@ -117,9 +117,8 @@ public class ExecutionScheduleManagerTest {
     requestExecutionFactory = injector.getInstance(RequestExecutionFactory.class);
 
     clusterName = "c1";
-    clusters.addCluster(clusterName);
+    clusters.addCluster(clusterName, new StackId("HDP-0.1"));
     cluster = clusters.getCluster(clusterName);
-    cluster.setDesiredStackVersion(new StackId("HDP-0.1"));
     Assert.assertNotNull(cluster);
     assertThat(executionScheduler, instanceOf(TestExecutionScheduler.class));
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/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 87dd18b..df65319 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
@@ -39,8 +39,10 @@ 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.StackDAO;
 import org.apache.ambari.server.orm.entities.ClusterVersionEntity;
 import org.apache.ambari.server.orm.entities.HostVersionEntity;
+import org.apache.ambari.server.orm.entities.StackEntity;
 import org.apache.ambari.server.state.Cluster;
 import org.apache.ambari.server.state.Clusters;
 import org.apache.ambari.server.state.Host;
@@ -84,13 +86,11 @@ public class UpgradeActionTest {
     String clusterName = "c1";
     String hostName = "h1";
 
-    Clusters clusters = m_injector.getInstance(Clusters.class);
-    clusters.addCluster(clusterName);
-
     StackId stackId = new StackId("HDP-2.1.1");
+    Clusters clusters = m_injector.getInstance(Clusters.class);
+    clusters.addCluster(clusterName, stackId);
 
     Cluster c = clusters.getCluster(clusterName);
-    c.setDesiredStackVersion(stackId);
 
     // add a host component
     clusters.addHost(hostName);
@@ -106,20 +106,23 @@ public class UpgradeActionTest {
 
     OrmTestHelper helper = m_injector.getInstance(OrmTestHelper.class);
 
-    helper.getOrCreateRepositoryVersion(stackId.getStackId(), DOWNGRADE_VERSION);
-    helper.getOrCreateRepositoryVersion(stackId.getStackId(), UPGRADE_VERSION);
+    helper.getOrCreateRepositoryVersion(stackId, DOWNGRADE_VERSION);
+    helper.getOrCreateRepositoryVersion(stackId, UPGRADE_VERSION);
 
     RepositoryVersionDAO repoVersionDao = m_injector.getInstance(RepositoryVersionDAO.class);
     HostVersionDAO hostVersionDao = m_injector.getInstance(HostVersionDAO.class);
 
-    c.createClusterVersion(stackId.getStackId(), DOWNGRADE_VERSION, "admin",
+    c.createClusterVersion(stackId, DOWNGRADE_VERSION, "admin",
         RepositoryVersionState.UPGRADING);
-    c.createClusterVersion(stackId.getStackId(), UPGRADE_VERSION, "admin",
+    c.createClusterVersion(stackId, UPGRADE_VERSION, "admin",
         RepositoryVersionState.INSTALLING);
 
-    c.transitionClusterVersion(stackId.getStackId(), DOWNGRADE_VERSION, RepositoryVersionState.CURRENT);
-    c.transitionClusterVersion(stackId.getStackId(), UPGRADE_VERSION, RepositoryVersionState.INSTALLED);
-    c.transitionClusterVersion(stackId.getStackId(), UPGRADE_VERSION, RepositoryVersionState.UPGRADING);
+    c.transitionClusterVersion(stackId, DOWNGRADE_VERSION,
+        RepositoryVersionState.CURRENT);
+    c.transitionClusterVersion(stackId, UPGRADE_VERSION,
+        RepositoryVersionState.INSTALLED);
+    c.transitionClusterVersion(stackId, UPGRADE_VERSION,
+        RepositoryVersionState.UPGRADING);
 
     c.mapHostVersions(Collections.singleton(hostName), c.getCurrentClusterVersion(),
         RepositoryVersionState.CURRENT);
@@ -129,8 +132,8 @@ public class UpgradeActionTest {
     HostVersionEntity entity = new HostVersionEntity();
     entity.setHostEntity(hostDAO.findByName(hostName));
     entity.setHostName(hostName);
-    entity.setRepositoryVersion(
-        repoVersionDao.findByStackAndVersion(stackId.getStackId(), UPGRADE_VERSION));
+    entity.setRepositoryVersion(repoVersionDao.findByStackAndVersion(stackId,
+        UPGRADE_VERSION));
     entity.setState(RepositoryVersionState.UPGRADING);
     hostVersionDao.create(entity);
   }
@@ -139,10 +142,15 @@ public class UpgradeActionTest {
     String clusterName = "c1";
     String hostName = "h1";
 
+    StackId stackId = new StackId("HDP-2.1.1");
     Clusters clusters = m_injector.getInstance(Clusters.class);
-    clusters.addCluster(clusterName);
+    clusters.addCluster(clusterName, stackId);
 
-    StackId stackId = new StackId("HDP-2.1.1");
+    StackDAO stackDAO = m_injector.getInstance(StackDAO.class);
+    StackEntity stackEntity = stackDAO.find(stackId.getStackName(),
+        stackId.getStackVersion());
+
+    assertNotNull(stackEntity);
 
     Cluster c = clusters.getCluster(clusterName);
     c.setDesiredStackVersion(stackId);
@@ -165,24 +173,28 @@ public class UpgradeActionTest {
         "{'Repositories/base_url':'http://foo1','Repositories/repo_name':'HDP','Repositories/repo_id':'HDP-2.1.1'}" +
         "], 'OperatingSystems/os_type':'redhat6'}]";
 
-    helper.getOrCreateRepositoryVersion(stackId.getStackId(), DOWNGRADE_VERSION);
-//    helper.getOrCreateRepositoryVersion(stackId.getStackId(), UPGRADE_VERSION);
-    repositoryVersionDAO.create(
-        stackId.getStackId (), UPGRADE_VERSION, String.valueOf(System.currentTimeMillis()), "pack",
+    helper.getOrCreateRepositoryVersion(stackId, DOWNGRADE_VERSION);
+
+    repositoryVersionDAO.create(stackEntity, UPGRADE_VERSION,
+        String.valueOf(System.currentTimeMillis()), "pack",
           urlInfo);
 
     RepositoryVersionDAO repoVersionDao = m_injector.getInstance(RepositoryVersionDAO.class);
     HostVersionDAO hostVersionDao = m_injector.getInstance(HostVersionDAO.class);
 
-    c.createClusterVersion(stackId.getStackId(), DOWNGRADE_VERSION, "admin",
+    c.createClusterVersion(stackId, DOWNGRADE_VERSION, "admin",
         RepositoryVersionState.UPGRADING);
-    c.createClusterVersion(stackId.getStackId(), UPGRADE_VERSION, "admin",
+    c.createClusterVersion(stackId, UPGRADE_VERSION, "admin",
         RepositoryVersionState.INSTALLING);
 
-    c.transitionClusterVersion(stackId.getStackId(), DOWNGRADE_VERSION, RepositoryVersionState.CURRENT);
-    c.transitionClusterVersion(stackId.getStackId(), UPGRADE_VERSION, RepositoryVersionState.INSTALLED);
-    c.transitionClusterVersion(stackId.getStackId(), UPGRADE_VERSION, RepositoryVersionState.UPGRADING);
-    c.transitionClusterVersion(stackId.getStackId(), UPGRADE_VERSION, RepositoryVersionState.UPGRADED);
+    c.transitionClusterVersion(stackId, DOWNGRADE_VERSION,
+        RepositoryVersionState.CURRENT);
+    c.transitionClusterVersion(stackId, UPGRADE_VERSION,
+        RepositoryVersionState.INSTALLED);
+    c.transitionClusterVersion(stackId, UPGRADE_VERSION,
+        RepositoryVersionState.UPGRADING);
+    c.transitionClusterVersion(stackId, UPGRADE_VERSION,
+        RepositoryVersionState.UPGRADED);
     c.setCurrentStackVersion(stackId);
 
     c.mapHostVersions(Collections.singleton(hostName), c.getCurrentClusterVersion(),
@@ -193,8 +205,8 @@ public class UpgradeActionTest {
     HostVersionEntity entity = new HostVersionEntity();
     entity.setHostEntity(hostDAO.findByName(hostName));
     entity.setHostName(hostName);
-    entity.setRepositoryVersion(
-        repoVersionDao.findByStackAndVersion(stackId.getStackId(), UPGRADE_VERSION));
+    entity.setRepositoryVersion(repoVersionDao.findByStackAndVersion(stackId,
+        UPGRADE_VERSION));
     entity.setState(RepositoryVersionState.UPGRADED);
     hostVersionDao.create(entity);
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/state/ConfigGroupTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/ConfigGroupTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/ConfigGroupTest.java
index 4d4d674..28059c0 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/ConfigGroupTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/ConfigGroupTest.java
@@ -71,9 +71,8 @@ public class ConfigGroupTest {
       (ConfigGroupHostMappingDAO.class);
 
     clusterName = "foo";
-    clusters.addCluster(clusterName);
+    clusters.addCluster(clusterName, new StackId("HDP-0.1"));
     cluster = clusters.getCluster(clusterName);
-    cluster.setDesiredStackVersion(new StackId("HDP-0.1"));
     Assert.assertNotNull(cluster);
     clusters.addHost("h1");
     clusters.addHost("h2");

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/state/ConfigHelperTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/ConfigHelperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/ConfigHelperTest.java
index 751583e..930e45f 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/ConfigHelperTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/ConfigHelperTest.java
@@ -94,9 +94,8 @@ public class ConfigHelperTest {
       managementController = injector.getInstance(AmbariManagementController.class);
 
       clusterName = "c1";
-      clusters.addCluster(clusterName);
+      clusters.addCluster(clusterName, new StackId("HDP-2.0.6"));
       cluster = clusters.getCluster(clusterName);
-      cluster.setDesiredStackVersion(new StackId("HDP-2.0.6"));
       Assert.assertNotNull(cluster);
       clusters.addHost("h1");
       clusters.addHost("h2");

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/state/RequestExecutionTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/RequestExecutionTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/RequestExecutionTest.java
index abbee45..46dcc8d 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/RequestExecutionTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/RequestExecutionTest.java
@@ -65,9 +65,8 @@ public class RequestExecutionTest {
     requestScheduleDAO = injector.getInstance(RequestScheduleDAO.class);
 
     clusterName = "foo";
-    clusters.addCluster(clusterName);
+    clusters.addCluster(clusterName, new StackId("HDP-0.1"));
     cluster = clusters.getCluster(clusterName);
-    cluster.setDesiredStackVersion(new StackId("HDP-0.1"));
     Assert.assertNotNull(cluster);
     clusters.addHost("h1");
     clusters.addHost("h2");

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/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 00894f1..96bbb1d 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
@@ -82,13 +82,16 @@ public class ServiceComponentTest {
 
     clusterName = "foo";
     serviceName = "HDFS";
-    clusters.addCluster(clusterName);
-    cluster = clusters.getCluster(clusterName);
+
     StackId stackId = new StackId("HDP-0.1");
+    clusters.addCluster(clusterName, stackId);
+    cluster = clusters.getCluster(clusterName);
+
     cluster.setDesiredStackVersion(stackId);
     Assert.assertNotNull(cluster);
-    helper.getOrCreateRepositoryVersion(stackId.getStackName(), stackId.getStackVersion());
-    cluster.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
+    helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+    cluster.createClusterVersion(stackId, stackId.getStackVersion(), "admin",
+        RepositoryVersionState.UPGRADING);
 
     Service s = serviceFactory.createNew(cluster, serviceName);
     cluster.addService(s);
@@ -140,8 +143,8 @@ public class ServiceComponentTest {
     sc.setDesiredState(State.INSTALLED);
     Assert.assertEquals(State.INSTALLED, sc.getDesiredState());
 
-    sc.setDesiredStackVersion(new StackId("HDP-1.0.0"));
-    Assert.assertEquals("HDP-1.0.0", sc.getDesiredStackVersion().getStackId());
+    sc.setDesiredStackVersion(new StackId("HDP-1.2.0"));
+    Assert.assertEquals("HDP-1.2.0", sc.getDesiredStackVersion().getStackId());
 
     ServiceComponentDesiredStateDAO serviceComponentDesiredStateDAO =
         injector.getInstance(ServiceComponentDesiredStateDAO.class);
@@ -159,7 +162,7 @@ public class ServiceComponentTest {
         serviceComponentDesiredStateEntity);
     Assert.assertNotNull(sc1);
     Assert.assertEquals(State.INSTALLED, sc1.getDesiredState());
-    Assert.assertEquals("HDP-1.0.0",
+    Assert.assertEquals("HDP-1.2.0",
         sc1.getDesiredStackVersion().getStackId());
 
   }
@@ -256,9 +259,9 @@ public class ServiceComponentTest {
     sch3.persist();
     Assert.assertNotNull(sc.getServiceComponentHost("h3"));
 
-    sch1.setDesiredStackVersion(new StackId("HDP-1.1.0"));
+    sch1.setDesiredStackVersion(new StackId("HDP-1.2.0"));
     sch1.setState(State.STARTING);
-    sch1.setStackVersion(new StackId("HDP-1.0.0"));
+    sch1.setStackVersion(new StackId("HDP-1.2.0"));
     sch1.setDesiredState(State.STARTED);
 
     HostComponentDesiredStateDAO desiredStateDAO = injector.getInstance(
@@ -290,9 +293,9 @@ public class ServiceComponentTest {
     Assert.assertNotNull(sch);
     Assert.assertEquals(State.STARTING, sch.getState());
     Assert.assertEquals(State.STARTED, sch.getDesiredState());
-    Assert.assertEquals("HDP-1.0.0",
+    Assert.assertEquals("HDP-1.2.0",
         sch.getStackVersion().getStackId());
-    Assert.assertEquals("HDP-1.1.0",
+    Assert.assertEquals("HDP-1.2.0",
         sch.getDesiredStackVersion().getStackId());
   }
 
@@ -319,7 +322,7 @@ public class ServiceComponentTest {
     ServiceComponent sc = service.getServiceComponent(componentName);
     Assert.assertNotNull(sc);
     sc.setDesiredState(State.INSTALLED);
-    sc.setDesiredStackVersion(new StackId("HDP-1.0.0"));
+    sc.setDesiredStackVersion(new StackId("HDP-1.2.0"));
 
     ServiceComponentResponse r = sc.convertToResponse();
     Assert.assertEquals(sc.getClusterName(), r.getClusterName());

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/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 552edec..ccceac9 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
@@ -63,9 +63,8 @@ public class ServiceTest {
         ServiceComponentFactory.class);
     metaInfo = injector.getInstance(AmbariMetaInfo.class);
     clusterName = "foo";
-    clusters.addCluster(clusterName);
+    clusters.addCluster(clusterName, new StackId("HDP-0.1"));
     cluster = clusters.getCluster(clusterName);
-    cluster.setDesiredStackVersion(new StackId("HDP-0.1"));
     Assert.assertNotNull(cluster);
   }
 
@@ -104,8 +103,8 @@ public class ServiceTest {
     Service service = cluster.getService(serviceName);
     Assert.assertNotNull(service);
 
-    service.setDesiredStackVersion(new StackId("HDP-1.1.0"));
-    Assert.assertEquals("HDP-1.1.0",
+    service.setDesiredStackVersion(new StackId("HDP-1.2.0"));
+    Assert.assertEquals("HDP-1.2.0",
         service.getDesiredStackVersion().getStackId());
 
     service.setDesiredState(State.INSTALLING);
@@ -210,7 +209,7 @@ public class ServiceTest {
     Assert.assertEquals(s.getDesiredState().toString(),
         r.getDesiredState());
 
-    service.setDesiredStackVersion(new StackId("HDP-1.1.0"));
+    service.setDesiredStackVersion(new StackId("HDP-1.2.0"));
     service.setDesiredState(State.INSTALLING);
     r = s.convertToResponse();
     Assert.assertEquals(s.getName(), r.getServiceName());

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java
index e05d16e..9c129e8 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java
@@ -536,16 +536,17 @@ public class UpgradeHelperTest {
 
     String clusterName = "c1";
 
-    clusters.addCluster(clusterName);
-
+    StackId stackId = new StackId("HDP-2.1.1");
+    clusters.addCluster(clusterName, stackId);
     Cluster c = clusters.getCluster(clusterName);
-    c.setDesiredStackVersion(new StackId("HDP-2.1.1"));
 
-    helper.getOrCreateRepositoryVersion(c.getDesiredStackVersion().getStackName(),
+    helper.getOrCreateRepositoryVersion(stackId,
         c.getDesiredStackVersion().getStackVersion());
 
-    c.createClusterVersion(c.getDesiredStackVersion().getStackName(),
-        c.getDesiredStackVersion().getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
+    c.createClusterVersion(stackId,
+        c.getDesiredStackVersion().getStackVersion(), "admin",
+        RepositoryVersionState.UPGRADING);
+
     for (int i = 0; i < 4; i++) {
       String hostName = "h" + (i+1);
       clusters.addHost(hostName);

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/AlertEventPublisherTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/AlertEventPublisherTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/AlertEventPublisherTest.java
index 1c4567f..d1b27a9 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/AlertEventPublisherTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/AlertEventPublisherTest.java
@@ -93,9 +93,8 @@ public class AlertEventPublisherTest {
     aggregateMapping = injector.getInstance(AggregateDefinitionMapping.class);
 
     clusterName = "foo";
-    clusters.addCluster(clusterName);
+    clusters.addCluster(clusterName, new StackId("HDP", "2.0.6"));
     cluster = clusters.getCluster(clusterName);
-    cluster.setDesiredStackVersion(new StackId("HDP", "2.0.6"));
     Assert.assertNotNull(cluster);
   }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/InitialAlertEventTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/InitialAlertEventTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/InitialAlertEventTest.java
index 73bf6c4..f3694c9 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/InitialAlertEventTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/alerts/InitialAlertEventTest.java
@@ -91,9 +91,8 @@ public class InitialAlertEventTest {
     m_alertsDao = m_injector.getInstance(AlertsDAO.class);
 
     m_clusterName = "c1";
-    m_clusters.addCluster(m_clusterName);
+    m_clusters.addCluster(m_clusterName, new StackId("HDP", "2.0.6"));
     m_cluster = m_clusters.getCluster(m_clusterName);
-    m_cluster.setDesiredStackVersion(new StackId("HDP", "2.0.6"));
     Assert.assertNotNull(m_cluster);
 
     // install HDFS to get 6 definitions

http://git-wip-us.apache.org/repos/asf/ambari/blob/746df034/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterDeadlockTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterDeadlockTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterDeadlockTest.java
index ff039a9..2f064ab 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterDeadlockTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterDeadlockTest.java
@@ -27,6 +27,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.ServiceComponentNotFoundException;
 import org.apache.ambari.server.ServiceNotFoundException;
+import org.apache.ambari.server.events.listeners.upgrade.HostVersionOutOfSyncListener;
 import org.apache.ambari.server.orm.GuiceJpaInitializer;
 import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
 import org.apache.ambari.server.orm.OrmTestHelper;
@@ -43,15 +44,19 @@ 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.easymock.EasyMock;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
+import com.google.inject.Binder;
 import com.google.inject.Guice;
 import com.google.inject.Inject;
 import com.google.inject.Injector;
+import com.google.inject.Module;
 import com.google.inject.persist.PersistService;
+import com.google.inject.util.Modules;
 
 /**
  * Tests AMBARI-9368 and AMBARI-9761 which produced a deadlock during read and
@@ -100,14 +105,15 @@ public class ClusterDeadlockTest {
    */
   @Before
   public void setup() throws Exception {
-    injector = Guice.createInjector(new InMemoryDefaultTestModule());
+    injector = Guice.createInjector(Modules.override(
+        new InMemoryDefaultTestModule()).with(new MockModule()));
+
     injector.getInstance(GuiceJpaInitializer.class);
     injector.injectMembers(this);
-    clusters.addCluster("c1");
+    clusters.addCluster("c1", stackId);
     cluster = clusters.getCluster("c1");
-    cluster.setDesiredStackVersion(stackId);
-    helper.getOrCreateRepositoryVersion(stackId.getStackName(), stackId.getStackVersion());
-    cluster.createClusterVersion(stackId.getStackName(),
+    helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion());
+    cluster.createClusterVersion(stackId,
         stackId.getStackVersion(), "admin", RepositoryVersionState.UPGRADING);
 
     // 100 hosts
@@ -199,7 +205,7 @@ public class ClusterDeadlockTest {
    *
    * @throws Exception
    */
-  @Test(timeout = 60000)
+  @Test(timeout = 75000)
   public void testDeadlockWhileRestartingComponents() throws Exception {
     // for each host, install both components
     List<ServiceComponentHost> serviceComponentHosts = new ArrayList<ServiceComponentHost>();
@@ -509,4 +515,20 @@ public class ClusterDeadlockTest {
 
     return serviceComponent;
   }
+
+  /**
+  *
+  */
+  private class MockModule implements Module {
+    /**
+    *
+    */
+    @Override
+    public void configure(Binder binder) {
+      // this listener gets in the way of actually testing the concurrency
+      // between the threads; it slows them down too much, so mock it out
+      binder.bind(HostVersionOutOfSyncListener.class).toInstance(
+          EasyMock.createNiceMock(HostVersionOutOfSyncListener.class));
+    }
+  }
 }