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 {