You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by dm...@apache.org on 2015/12/08 14:46:12 UTC

ambari git commit: AMBARI-14242. test-case for EU: Downgrade goes through all steps even if initiated at first prompt, should exit since hasn't changed stack/configs (dlysnichenko)

Repository: ambari
Updated Branches:
  refs/heads/trunk c776ec588 -> 59b891c60


AMBARI-14242. test-case for EU: Downgrade goes through all steps even if initiated at first prompt, should exit since hasn't changed stack/configs (dlysnichenko)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/59b891c6
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/59b891c6
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/59b891c6

Branch: refs/heads/trunk
Commit: 59b891c60509ad541d34dd36a7acb7eac9d95697
Parents: c776ec5
Author: Lisnichenko Dmitro <dl...@hortonworks.com>
Authored: Tue Dec 8 15:46:39 2015 +0200
Committer: Lisnichenko Dmitro <dl...@hortonworks.com>
Committed: Tue Dec 8 15:46:39 2015 +0200

----------------------------------------------------------------------
 .../internal/UpgradeResourceProviderTest.java   | 109 ++++++++++++++++++-
 1 file changed, 103 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/59b891c6/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 6a53076..11c785f 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
@@ -237,6 +237,18 @@ public class UpgradeResourceProviderTest {
     injector = null;
   }
 
+  /**
+   * Obtain request id from the {@code RequestStatus}
+   * @param requestStatus reqult of the {@code createResources}
+   * @return id of the request
+   */
+  private long getRequestId(RequestStatus requestStatus){
+    assertEquals(1, requestStatus.getAssociatedResources().size());
+    Resource r = requestStatus.getAssociatedResources().iterator().next();
+    String id = r.getPropertyValue("Upgrade/request_id").toString();
+    return Long.parseLong(id);
+  }
+
   @Test
   public void testCreateResourcesWithAutoSkipFailures() throws Exception {
     Cluster cluster = clusters.getCluster("c1");
@@ -605,7 +617,7 @@ public class UpgradeResourceProviderTest {
   public void testDowngradeToBase() throws Exception {
     Cluster cluster = clusters.getCluster("c1");
 
-    Map<String, Object> requestProps = new HashMap<String, Object>();
+    Map<String, Object> requestProps = new HashMap<>();
     requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME, "c1");
     requestProps.put(UpgradeResourceProvider.UPGRADE_VERSION, "2.1.1.1");
     requestProps.put(UpgradeResourceProvider.UPGRADE_PACK, "upgrade_test");
@@ -614,19 +626,19 @@ public class UpgradeResourceProviderTest {
     ResourceProvider upgradeResourceProvider = createProvider(amc);
 
     Request request = PropertyHelper.getCreateRequest(Collections.singleton(requestProps), null);
-    RequestStatus status = upgradeResourceProvider.createResources(request);
+    upgradeResourceProvider.createResources(request);
 
     List<UpgradeEntity> upgrades = upgradeDao.findUpgrades(cluster.getClusterId());
     assertEquals(1, upgrades.size());
 
-    requestProps = new HashMap<String, Object>();
+    requestProps = new HashMap<>();
     requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME, "c1");
     requestProps.put(UpgradeResourceProvider.UPGRADE_VERSION, "2.2");
     requestProps.put(UpgradeResourceProvider.UPGRADE_PACK, "upgrade_test");
     requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS, "true");
     request = PropertyHelper.getCreateRequest(Collections.singleton(requestProps), null);
     try {
-      status = upgradeResourceProvider.createResources(request);
+      upgradeResourceProvider.createResources(request);
       Assert.fail("Expected an exception going downgrade with no upgrade pack");
     } catch (Exception e) {
       // !!! expected
@@ -638,11 +650,11 @@ public class UpgradeResourceProviderTest {
     requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS, "true");
     requestProps.put(UpgradeResourceProvider.UPGRADE_FROM_VERSION, "2.1.1.0");
 
-    Map<String, String> requestInfoProperties = new HashMap<String, String>();
+    Map<String, String> requestInfoProperties = new HashMap<>();
     requestInfoProperties.put(UpgradeResourceDefinition.DOWNGRADE_DIRECTIVE, "true");
 
     request = PropertyHelper.getCreateRequest(Collections.singleton(requestProps), requestInfoProperties);
-    status = upgradeResourceProvider.createResources(request);
+    RequestStatus status = upgradeResourceProvider.createResources(request);
     assertEquals(1, status.getAssociatedResources().size());
     Resource r = status.getAssociatedResources().iterator().next();
     String id = r.getPropertyValue("Upgrade/request_id").toString();
@@ -665,6 +677,91 @@ public class UpgradeResourceProviderTest {
 
   }
 
+  
+
+  /**
+   * Test Downgrade from the partially completed upgrade
+   */
+  @Test
+  public void testNotFullDowngrade() throws Exception {
+    Cluster cluster = clusters.getCluster("c1");
+
+    // add additional service for the test
+    Service service = cluster.addService("HIVE");
+    service.setDesiredStackVersion(cluster.getDesiredStackVersion());
+    service.persist();
+
+    ServiceComponent component = service.addServiceComponent("HIVE_SERVER");
+    ServiceComponentHost sch = component.addServiceComponentHost("h1");
+    sch.setVersion("2.1.1.0");
+
+    // create upgrade request
+    Map<String, Object> requestProps = new HashMap<>();
+    requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME, "c1");
+    requestProps.put(UpgradeResourceProvider.UPGRADE_VERSION, "2.2.0.0");
+    requestProps.put(UpgradeResourceProvider.UPGRADE_PACK, "upgrade_nonrolling_new_stack");
+    requestProps.put(UpgradeResourceProvider.UPGRADE_TYPE, "NON_ROLLING");
+    requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS, "true");
+
+    ResourceProvider upgradeResourceProvider = createProvider(amc);
+
+    Request request = PropertyHelper.getCreateRequest(Collections.singleton(requestProps), null);
+    upgradeResourceProvider.createResources(request);
+
+    // check that upgrade was created and groups for the tested services are on place
+    List<UpgradeEntity> upgrades = upgradeDao.findUpgrades(cluster.getClusterId());
+    assertEquals(1, upgrades.size());
+
+    List<UpgradeGroupEntity> groups = upgrades.get(0).getUpgradeGroups();
+    boolean isHiveGroupFound = false;
+    boolean isZKGroupFound = false;
+
+    // look only for testing groups
+    for (UpgradeGroupEntity group: groups) {
+      if (group.getName().equalsIgnoreCase("hive")) {
+        isHiveGroupFound = true;
+      } else if (group.getName().equalsIgnoreCase("zookeeper")){
+        isZKGroupFound = true;
+      }
+    }
+
+    assertTrue(isHiveGroupFound);
+    assertTrue(isZKGroupFound);
+
+    isHiveGroupFound = false;
+    isZKGroupFound = false;
+    sch.setVersion("2.2.0.0");
+
+    // create downgrade with one upgraded service
+    StackId stackId = new StackId("HDP", "2.2.0");
+    cluster.setDesiredStackVersion(stackId, true);
+
+    requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME, "c1");
+    requestProps.put(UpgradeResourceProvider.UPGRADE_VERSION, "2.1.1.0");
+    requestProps.put(UpgradeResourceProvider.UPGRADE_PACK, "upgrade_nonrolling_new_stack");
+    requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS, "true");
+    requestProps.put(UpgradeResourceProvider.UPGRADE_FROM_VERSION, "2.2.0.0");
+
+    Map<String, String> requestInfoProperties = new HashMap<>();
+    requestInfoProperties.put(UpgradeResourceDefinition.DOWNGRADE_DIRECTIVE, "true");
+
+    request = PropertyHelper.getCreateRequest(Collections.singleton(requestProps), requestInfoProperties);
+    RequestStatus status = upgradeResourceProvider.createResources(request);
+    UpgradeEntity upgradeEntity = upgradeDao.findUpgradeByRequestId(getRequestId(status));
+
+    for (UpgradeGroupEntity group: upgradeEntity.getUpgradeGroups()) {
+      if (group.getName().equalsIgnoreCase("hive")) {
+        isHiveGroupFound = true;
+      } else if (group.getName().equalsIgnoreCase("zookeeper")){
+        isZKGroupFound = true;
+      }
+    }
+
+    // as services not updated, nothing to downgrade
+    assertTrue(isHiveGroupFound);
+    assertFalse(isZKGroupFound);
+  }
+
 
   @Test
   public void testAbort() throws Exception {