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/06/16 14:16:27 UTC

ambari git commit: AMBARI-11939 - Upgrades Placed Into ABORTED Status Show As COMPLETED (jonathanhurley)

Repository: ambari
Updated Branches:
  refs/heads/trunk f84ef816c -> d13f7098b


AMBARI-11939 - Upgrades Placed Into ABORTED Status Show As COMPLETED (jonathanhurley)


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

Branch: refs/heads/trunk
Commit: d13f7098b3bd220413bd13534877383e0bfe66a2
Parents: f84ef81
Author: Jonathan Hurley <jh...@hortonworks.com>
Authored: Mon Jun 15 21:27:48 2015 -0400
Committer: Jonathan Hurley <jh...@hortonworks.com>
Committed: Tue Jun 16 08:16:15 2015 -0400

----------------------------------------------------------------------
 .../controller/internal/CalculatedStatus.java   |  6 +-
 .../internal/CalculatedStatusTest.java          | 59 +++++++++++++++-----
 2 files changed, 46 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/d13f7098/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CalculatedStatus.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CalculatedStatus.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CalculatedStatus.java
index 34fed41..55d91c7 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CalculatedStatus.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CalculatedStatus.java
@@ -337,15 +337,13 @@ public class CalculatedStatus {
    * @return summary request status based on statuses of tasks in different states.
    */
   private static HostRoleStatus calculateSummaryStatus(Map<HostRoleStatus, Integer> counters,
-                                                      int total,
-                                                      boolean skippable) {
-
+      int total, boolean skippable) {
     return counters.get(HostRoleStatus.PENDING) == total ? HostRoleStatus.PENDING :
         counters.get(HostRoleStatus.HOLDING) > 0 ? HostRoleStatus.HOLDING :
         counters.get(HostRoleStatus.HOLDING_FAILED) > 0 ? HostRoleStatus.HOLDING_FAILED :
         counters.get(HostRoleStatus.HOLDING_TIMEDOUT) > 0 ? HostRoleStatus.HOLDING_TIMEDOUT :
         counters.get(HostRoleStatus.FAILED) > 0 && !skippable ? HostRoleStatus.FAILED :
-        counters.get(HostRoleStatus.ABORTED) > 0 && !skippable ? HostRoleStatus.ABORTED :
+        counters.get(HostRoleStatus.ABORTED) > 0 ? HostRoleStatus.ABORTED:
         counters.get(HostRoleStatus.TIMEDOUT) > 0 && !skippable ? HostRoleStatus.TIMEDOUT :
         counters.get(HostRoleStatus.COMPLETED) == total ? HostRoleStatus.COMPLETED : HostRoleStatus.IN_PROGRESS;
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/d13f7098/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CalculatedStatusTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CalculatedStatusTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CalculatedStatusTest.java
index 79674cb..4700202 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CalculatedStatusTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CalculatedStatusTest.java
@@ -27,16 +27,12 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
-import com.google.inject.Guice;
-import com.google.inject.Inject;
-import com.google.inject.Injector;
 import org.apache.ambari.server.Role;
 import org.apache.ambari.server.RoleCommand;
 import org.apache.ambari.server.actionmanager.HostRoleCommand;
 import org.apache.ambari.server.actionmanager.HostRoleCommandFactory;
 import org.apache.ambari.server.actionmanager.HostRoleStatus;
 import org.apache.ambari.server.actionmanager.Stage;
-import org.apache.ambari.server.actionmanager.StageFactory;
 import org.apache.ambari.server.orm.GuiceJpaInitializer;
 import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
 import org.apache.ambari.server.orm.entities.HostRoleCommandEntity;
@@ -44,6 +40,10 @@ import org.apache.ambari.server.orm.entities.StageEntity;
 import org.junit.Before;
 import org.junit.Test;
 
+import com.google.inject.Guice;
+import com.google.inject.Inject;
+import com.google.inject.Injector;
+
 /**
  * CalculatedStatus tests.
  */
@@ -95,8 +95,6 @@ public class CalculatedStatusTest {
 
   @Test
   public void testStatusFromTaskEntities() throws Exception {
-
-
     // Pending stage
     Collection<HostRoleCommandEntity> tasks =
         getTaskEntities(HostRoleStatus.PENDING, HostRoleStatus.PENDING, HostRoleStatus.PENDING, HostRoleStatus.PENDING);
@@ -116,8 +114,8 @@ public class CalculatedStatusTest {
     assertEquals(100.0, status.getPercent(), 0.1);
 
     // failed skippable stage
-    tasks = getTaskEntities(HostRoleStatus.COMPLETED, HostRoleStatus.FAILED, HostRoleStatus.ABORTED,
-        HostRoleStatus.ABORTED, HostRoleStatus.ABORTED);
+    tasks = getTaskEntities(HostRoleStatus.COMPLETED, HostRoleStatus.FAILED, HostRoleStatus.FAILED,
+        HostRoleStatus.FAILED, HostRoleStatus.FAILED);
 
     status = CalculatedStatus.statusFromTaskEntities(tasks, true);
 
@@ -125,17 +123,17 @@ public class CalculatedStatusTest {
     assertEquals(100.0, status.getPercent(), 0.1);
 
     // timed out stage
-    tasks = getTaskEntities(HostRoleStatus.COMPLETED, HostRoleStatus.TIMEDOUT, HostRoleStatus.ABORTED,
-        HostRoleStatus.ABORTED, HostRoleStatus.ABORTED);
+    tasks = getTaskEntities(HostRoleStatus.COMPLETED, HostRoleStatus.TIMEDOUT,
+        HostRoleStatus.TIMEDOUT, HostRoleStatus.TIMEDOUT, HostRoleStatus.TIMEDOUT);
 
     status = CalculatedStatus.statusFromTaskEntities(tasks, false);
 
-    assertEquals(HostRoleStatus.ABORTED, status.getStatus());
+    assertEquals(HostRoleStatus.TIMEDOUT, status.getStatus());
     assertEquals(100.0, status.getPercent(), 0.1);
 
     // timed out skippable stage
-    tasks = getTaskEntities(HostRoleStatus.COMPLETED, HostRoleStatus.TIMEDOUT, HostRoleStatus.ABORTED,
-        HostRoleStatus.ABORTED, HostRoleStatus.ABORTED);
+    tasks = getTaskEntities(HostRoleStatus.COMPLETED, HostRoleStatus.TIMEDOUT,
+        HostRoleStatus.FAILED, HostRoleStatus.TIMEDOUT, HostRoleStatus.TIMEDOUT);
 
     status = CalculatedStatus.statusFromTaskEntities(tasks, true);
 
@@ -151,13 +149,13 @@ public class CalculatedStatusTest {
     assertEquals(HostRoleStatus.ABORTED, status.getStatus());
     assertEquals(100.0, status.getPercent(), 0.1);
 
-    // aborted skippable stage
+    // aborted skippable stage (same as non-skippable)
     tasks = getTaskEntities(HostRoleStatus.COMPLETED, HostRoleStatus.ABORTED, HostRoleStatus.ABORTED,
         HostRoleStatus.ABORTED, HostRoleStatus.ABORTED);
 
     status = CalculatedStatus.statusFromTaskEntities(tasks, true);
 
-    assertEquals(HostRoleStatus.COMPLETED, status.getStatus());
+    assertEquals(HostRoleStatus.ABORTED, status.getStatus());
     assertEquals(100.0, status.getPercent(), 0.1);
 
     // in progress stage
@@ -206,6 +204,37 @@ public class CalculatedStatusTest {
     assertEquals(54.0, status.getPercent(), 0.1);
   }
 
+  /**
+   * Tests that aborted states calculate correctly. This is needed for upgrades
+   * where the upgrade can be ABORTED and must not be calculated as COMPLETED.
+   *
+   * @throws Exception
+   */
+  @Test
+  public void testAbortedCalculation() throws Exception {
+    // a single task that is aborted
+    Collection<HostRoleCommandEntity> tasks = getTaskEntities(HostRoleStatus.ABORTED);
+    CalculatedStatus status = CalculatedStatus.statusFromTaskEntities(tasks, false);
+    assertEquals(HostRoleStatus.ABORTED, status.getStatus());
+    assertEquals(100.0, status.getPercent(), 0.1);
+
+    // skippable
+    status = CalculatedStatus.statusFromTaskEntities(tasks, true);
+    assertEquals(HostRoleStatus.ABORTED, status.getStatus());
+    assertEquals(100.0, status.getPercent(), 0.1);
+
+    // a completed task and an aborted one
+    tasks = getTaskEntities(HostRoleStatus.COMPLETED, HostRoleStatus.ABORTED);
+    status = CalculatedStatus.statusFromTaskEntities(tasks, false);
+    assertEquals(HostRoleStatus.ABORTED, status.getStatus());
+    assertEquals(100.0, status.getPercent(), 0.1);
+
+    // skippable
+    status = CalculatedStatus.statusFromTaskEntities(tasks, true);
+    assertEquals(HostRoleStatus.ABORTED, status.getStatus());
+    assertEquals(100.0, status.getPercent(), 0.1);
+  }
+
   @Test
   public void testStatusFromStageEntities() throws Exception {