Repository: ambari
Updated Branches:
  refs/heads/trunk 8d91e7109 -> 6f61de093


AMBARI-15643. During cluster creation using Blueprints the cluster creation 
request has incorrect COMPLETED state instead of PENDING. (stoader)


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

Branch: refs/heads/trunk
Commit: 6f61de093943a75868925cb7f76cbceea6215ae9
Parents: 8d91e71
Author: Toader, Sebastian <[email protected]>
Authored: Thu Mar 31 16:39:29 2016 +0200
Committer: Toader, Sebastian <[email protected]>
Committed: Thu Mar 31 18:37:26 2016 +0200

----------------------------------------------------------------------
 .../internal/RequestResourceProvider.java       |   2 +-
 .../internal/RequestResourceProviderTest.java   | 335 ++++++++++++-------
 2 files changed, 224 insertions(+), 113 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/6f61de09/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java
index 2cebbb4..c1e9053 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java
@@ -677,7 +677,7 @@ public class RequestResourceProvider extends 
AbstractControllerResourceProvider
     LogicalRequest logicalRequest = 
topologyManager.getRequest(entity.getRequestId());
 
     CalculatedStatus status = CalculatedStatus.statusFromStageSummary(summary, 
summary.keySet());
-    if (summary.isEmpty() && (logicalRequest == null || 
logicalRequest.hasCompleted())) {
+    if (summary.isEmpty() && logicalRequest == null) {
 
       // summary might be empty due to delete host have cleared all 
HostRoleCommands
       // or due to hosts haven't registered yet with the cluster when the 
cluster is provisioned

http://git-wip-us.apache.org/repos/asf/ambari/blob/6f61de09/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java
index 22921fb..bbb55f3 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java
@@ -18,6 +18,20 @@
 
 package org.apache.ambari.server.controller.internal;
 
+
+import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.actionmanager.ActionManager;
 import org.apache.ambari.server.actionmanager.HostRoleCommand;
@@ -25,6 +39,7 @@ import org.apache.ambari.server.actionmanager.HostRoleStatus;
 import org.apache.ambari.server.actionmanager.Stage;
 import org.apache.ambari.server.api.services.BaseRequest;
 import org.apache.ambari.server.controller.AmbariManagementController;
+import org.apache.ambari.server.controller.AmbariServer;
 import org.apache.ambari.server.controller.ExecuteActionRequest;
 import org.apache.ambari.server.controller.RequestStatusResponse;
 import org.apache.ambari.server.controller.spi.NoSuchParentResourceException;
@@ -44,8 +59,11 @@ import 
org.apache.ambari.server.security.TestAuthenticationFactory;
 import org.apache.ambari.server.security.authorization.AuthorizationException;
 import org.apache.ambari.server.state.Cluster;
 import org.apache.ambari.server.state.Clusters;
+import org.apache.ambari.server.topology.ClusterTopology;
+import org.apache.ambari.server.topology.HostGroupInfo;
 import org.apache.ambari.server.topology.LogicalRequest;
 import org.apache.ambari.server.topology.TopologyManager;
+import org.apache.ambari.server.topology.TopologyRequest;
 import org.easymock.Capture;
 import org.easymock.EasyMock;
 import org.junit.After;
@@ -58,18 +76,10 @@ import 
org.powermock.core.classloader.annotations.PrepareForTest;
 import org.powermock.modules.junit4.PowerMockRunner;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.context.SecurityContextHolder;
-import java.lang.reflect.Field;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Lists;
+
 import static 
org.apache.ambari.server.controller.internal.HostComponentResourceProvider.HOST_COMPONENT_STALE_CONFIGS_PROPERTY_ID;
 import static org.easymock.EasyMock.anyObject;
 import static org.easymock.EasyMock.capture;
@@ -100,17 +110,19 @@ public class RequestResourceProviderTest {
     hrcDAO = createNiceMock(HostRoleCommandDAO.class);
     topologyManager = createNiceMock(TopologyManager.class);
 
+    reset(topologyManager);
+
     //todo: add assertions for topology manager interactions
     
expect(topologyManager.getStageSummaries(EasyMock.<Long>anyObject())).andReturn(
-        Collections.<Long, 
HostRoleCommandStatusSummaryDTO>emptyMap()).anyTimes();
+      Collections.<Long, 
HostRoleCommandStatusSummaryDTO>emptyMap()).anyTimes();
 
     
expect(topologyManager.getRequests(EasyMock.<Collection<Long>>anyObject())).andReturn(
-        Collections.<LogicalRequest>emptyList()).anyTimes();
+      Collections.<LogicalRequest>emptyList()).anyTimes();
 
     replay(topologyManager);
 
 
-        // !!! don't mess with injectors for this test
+    // !!! don't mess with injectors for this test
     Field field = 
RequestResourceProvider.class.getDeclaredField("s_requestDAO");
     field.setAccessible(true);
     field.set(null, requestDAO);
@@ -141,10 +153,10 @@ public class RequestResourceProviderTest {
     replay(managementController, response);
 
     ResourceProvider provider = 
AbstractControllerResourceProvider.getResourceProvider(
-        type,
-        PropertyHelper.getPropertyIds(type),
-        PropertyHelper.getKeyPropertyIds(type),
-        managementController);
+      type,
+      PropertyHelper.getPropertyIds(type),
+      PropertyHelper.getKeyPropertyIds(type),
+      managementController);
 
     // add the property map to a set for the request.  add more maps for 
multiple creates
     Set<Map<String, Object>> propertySet = new LinkedHashSet<Map<String, 
Object>>();
@@ -210,7 +222,7 @@ public class RequestResourceProviderTest {
       .toPredicate();
 
     request = PropertyHelper.getReadRequest(new HashSet<String>(),
-        requestInfoProperties, null, null, null);
+      requestInfoProperties, null, null, null);
 
     expect(actionManager.getRequestsByStatus(null, 
BaseRequest.DEFAULT_PAGE_SIZE, false))
       .andReturn(Collections.<Long> emptyList());
@@ -222,7 +234,7 @@ public class RequestResourceProviderTest {
 
     requestInfoProperties.put(BaseRequest.PAGE_SIZE_PROPERTY_KEY, "20");
     request = PropertyHelper.getReadRequest(new HashSet<String>(),
-        requestInfoProperties, null, null, null);
+      requestInfoProperties, null, null, null);
     expect(actionManager.getRequestsByStatus(null, 20, false))
       .andReturn(Collections.<Long> emptyList());
     replay(actionManager);
@@ -232,7 +244,7 @@ public class RequestResourceProviderTest {
 
     requestInfoProperties.put(BaseRequest.ASC_ORDER_PROPERTY_KEY, "true");
     request = PropertyHelper.getReadRequest(new HashSet<String>(),
-        requestInfoProperties, null, null, null);
+      requestInfoProperties, null, null, null);
     expect(actionManager.getRequestsByStatus(null, 20, true))
       .andReturn(Collections.<Long> emptyList());
     replay(actionManager);
@@ -265,10 +277,10 @@ public class RequestResourceProviderTest {
     replay(managementController, actionManager, requestDAO, hrcDAO, 
requestMock);
 
     ResourceProvider provider = 
AbstractControllerResourceProvider.getResourceProvider(
-        type,
-        PropertyHelper.getPropertyIds(type),
-        PropertyHelper.getKeyPropertyIds(type),
-        managementController);
+      type,
+      PropertyHelper.getPropertyIds(type),
+      PropertyHelper.getKeyPropertyIds(type),
+      managementController);
 
     Set<String> propertyIds = new HashSet<String>();
 
@@ -276,7 +288,7 @@ public class RequestResourceProviderTest {
     propertyIds.add(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID);
 
     Predicate predicate = new 
PredicateBuilder().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").
-        toPredicate();
+      toPredicate();
     Request request = PropertyHelper.getReadRequest(propertyIds);
     Set<Resource> resources = provider.getResources(request, predicate);
 
@@ -315,10 +327,10 @@ public class RequestResourceProviderTest {
     replay(managementController, actionManager, requestDAO, hrcDAO, 
requestMock);
 
     ResourceProvider provider = 
AbstractControllerResourceProvider.getResourceProvider(
-        type,
-        PropertyHelper.getPropertyIds(type),
-        PropertyHelper.getKeyPropertyIds(type),
-        managementController);
+      type,
+      PropertyHelper.getPropertyIds(type),
+      PropertyHelper.getKeyPropertyIds(type),
+      managementController);
 
     Set<String> propertyIds = new HashSet<String>();
 
@@ -328,7 +340,7 @@ public class RequestResourceProviderTest {
 
 
     Predicate predicate = new 
PredicateBuilder().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").
-        toPredicate();
+      toPredicate();
     Request request = PropertyHelper.getReadRequest(propertyIds);
     Set<Resource> resources = provider.getResources(request, predicate);
 
@@ -368,10 +380,10 @@ public class RequestResourceProviderTest {
     replay(managementController, actionManager, requestMock, requestDAO, 
hrcDAO);
 
     ResourceProvider provider = 
AbstractControllerResourceProvider.getResourceProvider(
-        type,
-        PropertyHelper.getPropertyIds(type),
-        PropertyHelper.getKeyPropertyIds(type),
-        managementController);
+      type,
+      PropertyHelper.getPropertyIds(type),
+      PropertyHelper.getKeyPropertyIds(type),
+      managementController);
 
     Set<String> propertyIds = new HashSet<String>();
 
@@ -381,7 +393,7 @@ public class RequestResourceProviderTest {
 
 
     Predicate predicate = new 
PredicateBuilder().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").
-        toPredicate();
+      toPredicate();
     Request request = PropertyHelper.getReadRequest(propertyIds);
     Set<Resource> resources = provider.getResources(request, predicate);
 
@@ -429,10 +441,10 @@ public class RequestResourceProviderTest {
     replay(managementController, actionManager, clusters, cluster, 
requestMock, requestDAO, hrcDAO);
 
     ResourceProvider provider = 
AbstractControllerResourceProvider.getResourceProvider(
-        type,
-        PropertyHelper.getPropertyIds(type),
-        PropertyHelper.getKeyPropertyIds(type),
-        managementController);
+      type,
+      PropertyHelper.getPropertyIds(type),
+      PropertyHelper.getKeyPropertyIds(type),
+      managementController);
 
     Set<String> propertyIds = new HashSet<String>();
 
@@ -440,9 +452,9 @@ public class RequestResourceProviderTest {
     propertyIds.add(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID);
 
     Predicate predicate = new PredicateBuilder().
-        
property(RequestResourceProvider.REQUEST_CLUSTER_NAME_PROPERTY_ID).equals("c1").and().
-        property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").
-        toPredicate();
+      
property(RequestResourceProvider.REQUEST_CLUSTER_NAME_PROPERTY_ID).equals("c1").and().
+      property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").
+      toPredicate();
     Request request = PropertyHelper.getReadRequest(propertyIds);
     Set<Resource> resources = provider.getResources(request, predicate);
 
@@ -454,9 +466,9 @@ public class RequestResourceProviderTest {
 
     // try again with a bad cluster name
     predicate = new PredicateBuilder().
-        
property(RequestResourceProvider.REQUEST_CLUSTER_NAME_PROPERTY_ID).equals("bad-cluster").and().
-        property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").
-        toPredicate();
+      
property(RequestResourceProvider.REQUEST_CLUSTER_NAME_PROPERTY_ID).equals("bad-cluster").and().
+      property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").
+      toPredicate();
     try {
       provider.getResources(request, predicate);
     } catch (NoSuchParentResourceException e) {
@@ -487,7 +499,7 @@ public class RequestResourceProviderTest {
     // set expectations
     
expect(managementController.getActionManager()).andReturn(actionManager).anyTimes();
     expect(requestDAO.findByPks(capture(requestIdsCapture), eq(true))).
-        andReturn(Arrays.asList(requestMock, requestMock1)).anyTimes();
+      andReturn(Arrays.asList(requestMock, requestMock1)).anyTimes();
     expect(hrcDAO.findAggregateCounts((Long) anyObject())).andReturn(new 
HashMap<Long, HostRoleCommandStatusSummaryDTO>(){{
       put(1L, HostRoleCommandStatusSummaryDTO.create().inProgress(1));
     }}).anyTimes();
@@ -506,8 +518,8 @@ public class RequestResourceProviderTest {
     propertyIds.add(RequestResourceProvider.REQUEST_ID_PROPERTY_ID);
 
     Predicate predicate = new 
PredicateBuilder().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").
-        
or().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("101").
-        toPredicate();
+      
or().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("101").
+      toPredicate();
     Request request = PropertyHelper.getReadRequest(propertyIds);
     Set<Resource> resources = provider.getResources(request, predicate);
 
@@ -550,10 +562,10 @@ public class RequestResourceProviderTest {
     replay(managementController, actionManager, requestMock0, requestMock1, 
requestDAO, hrcDAO);
 
     ResourceProvider provider = 
AbstractControllerResourceProvider.getResourceProvider(
-        type,
-        PropertyHelper.getPropertyIds(type),
-        PropertyHelper.getKeyPropertyIds(type),
-        managementController);
+      type,
+      PropertyHelper.getPropertyIds(type),
+      PropertyHelper.getKeyPropertyIds(type),
+      managementController);
 
     Set<String> propertyIds = new HashSet<String>();
 
@@ -565,7 +577,7 @@ public class RequestResourceProviderTest {
     propertyIds.add(RequestResourceProvider.REQUEST_PROGRESS_PERCENT_ID);
 
     Predicate predicate = new 
PredicateBuilder().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").or().
-        
property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("101").toPredicate();
+      
property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("101").toPredicate();
     Request request = PropertyHelper.getReadRequest(propertyIds);
     Set<Resource> resources = provider.getResources(request, predicate);
 
@@ -621,10 +633,10 @@ public class RequestResourceProviderTest {
     replay(managementController, actionManager, requestMock0, requestMock1, 
requestDAO, hrcDAO);
 
     ResourceProvider provider = 
AbstractControllerResourceProvider.getResourceProvider(
-        type,
-        PropertyHelper.getPropertyIds(type),
-        PropertyHelper.getKeyPropertyIds(type),
-        managementController);
+      type,
+      PropertyHelper.getPropertyIds(type),
+      PropertyHelper.getKeyPropertyIds(type),
+      managementController);
 
     Set<String> propertyIds = new HashSet<String>();
 
@@ -637,7 +649,7 @@ public class RequestResourceProviderTest {
     propertyIds.add(RequestResourceProvider.REQUEST_PROGRESS_PERCENT_ID);
 
     Predicate predicate = new 
PredicateBuilder().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").or().
-        
property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("101").toPredicate();
+      
property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("101").toPredicate();
     Request request = PropertyHelper.getReadRequest(propertyIds);
     Set<Resource> resources = provider.getResources(request, predicate);
 
@@ -702,10 +714,10 @@ public class RequestResourceProviderTest {
     replay(managementController, actionManager, requestMock0, requestMock1, 
requestDAO, hrcDAO);
 
     ResourceProvider provider = 
AbstractControllerResourceProvider.getResourceProvider(
-        type,
-        PropertyHelper.getPropertyIds(type),
-        PropertyHelper.getKeyPropertyIds(type),
-        managementController);
+      type,
+      PropertyHelper.getPropertyIds(type),
+      PropertyHelper.getKeyPropertyIds(type),
+      managementController);
 
     Set<String> propertyIds = new HashSet<String>();
 
@@ -719,7 +731,7 @@ public class RequestResourceProviderTest {
     propertyIds.add(RequestResourceProvider.REQUEST_PROGRESS_PERCENT_ID);
 
     Predicate predicate = new 
PredicateBuilder().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").or().
-        
property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("101").toPredicate();
+      
property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("101").toPredicate();
     Request request = PropertyHelper.getReadRequest(propertyIds);
     Set<Resource> resources = provider.getResources(request, predicate);
 
@@ -764,7 +776,7 @@ public class RequestResourceProviderTest {
     stages.add(stage);
 
     org.apache.ambari.server.actionmanager.Request requestMock =
-            
createNiceMock(org.apache.ambari.server.actionmanager.Request.class);
+      createNiceMock(org.apache.ambari.server.actionmanager.Request.class);
     expect(requestMock.getCommands()).andReturn(hostRoleCommands).anyTimes();
     expect(requestMock.getStages()).andReturn(stages).anyTimes();
 
@@ -775,7 +787,7 @@ public class RequestResourceProviderTest {
     // set expectations
     
expect(managementController.getActionManager()).andReturn(actionManager).anyTimes();
     expect(actionManager.getRequests(capture(requestIdsCapture))).
-            andReturn(Collections.singletonList(requestMock)).anyTimes();
+      andReturn(Collections.singletonList(requestMock)).anyTimes();
     
expect(hostRoleCommand.getStatus()).andReturn(HostRoleStatus.IN_PROGRESS).anyTimes();
 
     RequestStatusResponse response = 
createNiceMock(RequestStatusResponse.class);
@@ -784,10 +796,10 @@ public class RequestResourceProviderTest {
     replay(managementController, actionManager, hostRoleCommand, clusters, 
requestMock, response, stage);
 
     ResourceProvider provider = 
AbstractControllerResourceProvider.getResourceProvider(
-        type,
-        PropertyHelper.getPropertyIds(type),
-        PropertyHelper.getKeyPropertyIds(type),
-        managementController);
+      type,
+      PropertyHelper.getPropertyIds(type),
+      PropertyHelper.getKeyPropertyIds(type),
+      managementController);
 
     // TEST CASE: Check update request validation (abort reason not specified)
     // add the property map to a set for the request.
@@ -795,7 +807,7 @@ public class RequestResourceProviderTest {
     // create the request
     Request request = PropertyHelper.getUpdateRequest(properties, null);
     Predicate predicate = new 
PredicateBuilder().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).
-        equals("100").toPredicate();
+      equals("100").toPredicate();
 
     try {
       provider.updateResources(request, predicate);
@@ -822,7 +834,7 @@ public class RequestResourceProviderTest {
     try {
       provider.updateResources(request, predicate);
       Assert.fail("Expected an java.lang.IllegalArgumentException: COMPLETED 
is wrong value. " +
-              "The only allowed value for updating request status is ABORTED");
+        "The only allowed value for updating request status is ABORTED");
     } catch (IllegalArgumentException e) {
       // expected
     }
@@ -836,16 +848,16 @@ public class RequestResourceProviderTest {
       replay(hostRoleCommand);
       request = PropertyHelper.getUpdateRequest(properties, null);
       if (status == HostRoleStatus.IN_PROGRESS ||
-          status == HostRoleStatus.PENDING ||
-          status == HostRoleStatus.HOLDING ||
-          status == HostRoleStatus.HOLDING_FAILED ||
-          status == HostRoleStatus.HOLDING_TIMEDOUT ||
-          status == HostRoleStatus.COMPLETED ||
-          status == HostRoleStatus.ABORTED ||
-          status == HostRoleStatus.FAILED ||
-          status == HostRoleStatus.TIMEDOUT ||
-          status == HostRoleStatus.QUEUED ||
-          status == HostRoleStatus.SKIPPED_FAILED) { // the only valid cases
+        status == HostRoleStatus.PENDING ||
+        status == HostRoleStatus.HOLDING ||
+        status == HostRoleStatus.HOLDING_FAILED ||
+        status == HostRoleStatus.HOLDING_TIMEDOUT ||
+        status == HostRoleStatus.COMPLETED ||
+        status == HostRoleStatus.ABORTED ||
+        status == HostRoleStatus.FAILED ||
+        status == HostRoleStatus.TIMEDOUT ||
+        status == HostRoleStatus.QUEUED ||
+        status == HostRoleStatus.SKIPPED_FAILED) { // the only valid cases
         provider.updateResources(request, predicate);
       } else {  // In other cases, should error out
         try {
@@ -870,13 +882,13 @@ public class RequestResourceProviderTest {
     replay(managementController);
 
     ResourceProvider provider = 
AbstractControllerResourceProvider.getResourceProvider(
-        type,
-        PropertyHelper.getPropertyIds(type),
-        PropertyHelper.getKeyPropertyIds(type),
-        managementController);
+      type,
+      PropertyHelper.getPropertyIds(type),
+      PropertyHelper.getKeyPropertyIds(type),
+      managementController);
 
     Predicate predicate = new 
PredicateBuilder().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).
-        equals("Request100").toPredicate();
+      equals("Request100").toPredicate();
     try {
       provider.deleteResources(predicate);
       Assert.fail("Expected an UnsupportedOperationException");
@@ -931,7 +943,7 @@ public class RequestResourceProviderTest {
 
     expect(managementController.getClusters()).andReturn(clusters).anyTimes();
     expect(managementController.createAction(capture(actionRequest), 
capture(propertyMap)))
-        .andReturn(response).anyTimes();
+      .andReturn(response).anyTimes();
     expect(response.getMessage()).andReturn("Message").anyTimes();
 
     // replay
@@ -963,10 +975,10 @@ public class RequestResourceProviderTest {
     // create the request
     Request request = PropertyHelper.getCreateRequest(propertySet, 
requestInfoProperties);
     ResourceProvider provider = 
AbstractControllerResourceProvider.getResourceProvider(
-        type,
-        PropertyHelper.getPropertyIds(type),
-        PropertyHelper.getKeyPropertyIds(type),
-        managementController);
+      type,
+      PropertyHelper.getPropertyIds(type),
+      PropertyHelper.getKeyPropertyIds(type),
+      managementController);
 
     provider.createResources(request);
     ExecuteActionRequest capturedRequest = actionRequest.getValue();
@@ -1028,7 +1040,7 @@ public class RequestResourceProviderTest {
 
     expect(managementController.getClusters()).andReturn(clusters).anyTimes();
     expect(managementController.createAction(capture(actionRequest), 
capture(propertyMap)))
-        .andReturn(response).anyTimes();
+      .andReturn(response).anyTimes();
     expect(response.getMessage()).andReturn("Message").anyTimes();
     // replay
     replay(cluster, clusters, managementController, response);
@@ -1066,10 +1078,10 @@ public class RequestResourceProviderTest {
     // create the request
     Request request = PropertyHelper.getCreateRequest(propertySet, 
requestInfoProperties);
     ResourceProvider provider = 
AbstractControllerResourceProvider.getResourceProvider(
-        type,
-        PropertyHelper.getPropertyIds(type),
-        PropertyHelper.getKeyPropertyIds(type),
-        managementController);
+      type,
+      PropertyHelper.getPropertyIds(type),
+      PropertyHelper.getKeyPropertyIds(type),
+      managementController);
 
     // Neither action nor commands are specified
     try {
@@ -1232,7 +1244,7 @@ public class RequestResourceProviderTest {
 
     expect(managementController.getClusters()).andReturn(clusters).anyTimes();
     expect(managementController.createAction(capture(actionRequest), 
capture(propertyMap)))
-            .andReturn(response).anyTimes();
+      .andReturn(response).anyTimes();
     expect(response.getMessage()).andReturn("Message").anyTimes();
 
     // replay
@@ -1267,7 +1279,7 @@ public class RequestResourceProviderTest {
     requestInfoProperties.put(RequestResourceProvider.COMMAND_ID, "RESTART");
 
     requestInfoProperties.put(RequestOperationLevel.OPERATION_LEVEL_ID,
-            host_component);
+      host_component);
     requestInfoProperties.put(RequestOperationLevel.OPERATION_CLUSTER_ID, c1);
     requestInfoProperties.put(RequestOperationLevel.OPERATION_SERVICE_ID,
       service_id);
@@ -1308,7 +1320,7 @@ public class RequestResourceProviderTest {
     RequestStatusResponse response = 
createNiceMock(RequestStatusResponse.class);
 
     expect(managementController.createAction(capture(actionRequest), 
capture(propertyMap)))
-        .andReturn(response).anyTimes();
+      .andReturn(response).anyTimes();
     expect(response.getMessage()).andReturn("Message").anyTimes();
 
     // replay
@@ -1334,10 +1346,10 @@ public class RequestResourceProviderTest {
     // create the request
     Request request = PropertyHelper.getCreateRequest(propertySet, 
requestInfoProperties);
     ResourceProvider provider = 
AbstractControllerResourceProvider.getResourceProvider(
-        type,
-        PropertyHelper.getPropertyIds(type),
-        PropertyHelper.getKeyPropertyIds(type),
-        managementController);
+      type,
+      PropertyHelper.getPropertyIds(type),
+      PropertyHelper.getKeyPropertyIds(type),
+      managementController);
     provider.createResources(request);
     ExecuteActionRequest capturedRequest = actionRequest.getValue();
 
@@ -1353,7 +1365,7 @@ public class RequestResourceProviderTest {
     Assert.assertNotNull(capturedResourceFilter.getHostNames());
     Assert.assertEquals(2, capturedResourceFilter.getHostNames().size());
     Assert.assertEquals(0, actionRequest.getValue().getParameters().size());
-    }
+  }
 
   @Test
   public void testGetResourcesWithoutCluster() throws Exception {
@@ -1384,10 +1396,10 @@ public class RequestResourceProviderTest {
     replay(managementController, actionManager, clusters, requestMock, 
requestDAO, hrcDAO);
 
     ResourceProvider provider = 
AbstractControllerResourceProvider.getResourceProvider(
-        type,
-        PropertyHelper.getPropertyIds(type),
-        PropertyHelper.getKeyPropertyIds(type),
-        managementController);
+      type,
+      PropertyHelper.getPropertyIds(type),
+      PropertyHelper.getKeyPropertyIds(type),
+      managementController);
 
     Set<String> propertyIds = new HashSet<String>();
 
@@ -1395,8 +1407,8 @@ public class RequestResourceProviderTest {
     propertyIds.add(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID);
 
     Predicate predicate = new PredicateBuilder().
-        property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").
-        toPredicate();
+      property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").
+      toPredicate();
     Request request = PropertyHelper.getReadRequest(propertyIds);
     Set<Resource> resources = provider.getResources(request, predicate);
 
@@ -1465,4 +1477,103 @@ public class RequestResourceProviderTest {
     // verify
     verify(managementController, actionManager, clusters, requestMock, 
requestDAO, hrcDAO);
   }
+
+  @Test
+  @PrepareForTest(AmbariServer.class)
+  public void testGetLogicalRequestStatusWithNoTasks() throws Exception {
+    // Given
+    Resource.Type type = Resource.Type.Request;
+
+    AmbariManagementController managementController = 
createMock(AmbariManagementController.class);
+    ActionManager actionManager = createNiceMock(ActionManager.class);
+
+    Clusters clusters = createNiceMock(Clusters.class);
+
+    RequestEntity requestMock = createNiceMock(RequestEntity.class);
+
+    expect(requestMock.getRequestContext()).andReturn("this is a 
context").anyTimes();
+    expect(requestMock.getRequestId()).andReturn(100L).anyTimes();
+    Capture<Collection<Long>> requestIdsCapture = Capture.newInstance();
+
+
+    ClusterTopology topology = createNiceMock(ClusterTopology.class);
+    expect(topology.getClusterId()).andReturn(2L).anyTimes();
+
+    Long clusterId = 2L;
+    String clusterName = "cluster1";
+    Cluster cluster = createNiceMock(Cluster.class);
+    expect(cluster.getClusterId()).andReturn(clusterId).anyTimes();
+    expect(cluster.getClusterName()).andReturn(clusterName).anyTimes();
+
+    
expect(managementController.getActionManager()).andReturn(actionManager).anyTimes();
+    expect(managementController.getClusters()).andReturn(clusters).anyTimes();
+    expect(clusters.getCluster(eq(clusterName))).andReturn(cluster).anyTimes();
+    expect(clusters.getClusterById(clusterId)).andReturn(cluster).anyTimes();
+    expect(requestDAO.findByPks(capture(requestIdsCapture), 
eq(true))).andReturn(Lists.newArrayList(requestMock));
+    expect(hrcDAO.findAggregateCounts((Long) anyObject())).andReturn(
+      Collections.<Long, 
HostRoleCommandStatusSummaryDTO>emptyMap()).anyTimes();
+
+    TopologyRequest topologyRequest = createNiceMock(TopologyRequest.class);
+    expect(topologyRequest.getHostGroupInfo()).andReturn(Collections.<String, 
HostGroupInfo>emptyMap()).anyTimes();
+    expect(topologyRequest.getBlueprint()).andReturn(null).anyTimes();
+
+
+
+    PowerMock.mockStatic(AmbariServer.class);
+    
expect(AmbariServer.getController()).andReturn(managementController).anyTimes();
+
+    PowerMock.replayAll(
+      topologyRequest,
+      topology,
+      managementController,
+      clusters);
+
+
+    LogicalRequest logicalRequest = new LogicalRequest(200L, topologyRequest, 
topology);
+
+    reset(topologyManager);
+
+    
expect(topologyManager.getRequest(100L)).andReturn(logicalRequest).anyTimes();
+    
expect(topologyManager.getRequests(eq(Collections.singletonList(100L)))).andReturn(
+      Collections.singletonList(logicalRequest)).anyTimes();
+    
expect(topologyManager.getStageSummaries(EasyMock.<Long>anyObject())).andReturn(
+      Collections.<Long, 
HostRoleCommandStatusSummaryDTO>emptyMap()).anyTimes();
+
+    replay(actionManager, requestMock, requestDAO, hrcDAO, topologyManager);
+
+    ResourceProvider provider = 
AbstractControllerResourceProvider.getResourceProvider(
+      type,
+      PropertyHelper.getPropertyIds(type),
+      PropertyHelper.getKeyPropertyIds(type),
+      managementController);
+
+    Set<String> propertyIds = ImmutableSet.of(
+      RequestResourceProvider.REQUEST_ID_PROPERTY_ID,
+      RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID,
+      RequestResourceProvider.REQUEST_PROGRESS_PERCENT_ID
+    );
+
+    Predicate predicate = new PredicateBuilder().
+      property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").
+      toPredicate();
+
+    Request request = PropertyHelper.getReadRequest(propertyIds);
+
+    // When
+    Set<Resource> resources = provider.getResources(request, predicate);
+
+    // Then
+
+
+    // verify
+    PowerMock.verifyAll();
+    verify(actionManager, requestMock, requestDAO, hrcDAO, topologyManager);
+
+    Assert.assertEquals(1, resources.size());
+    for (Resource resource : resources) {
+      Assert.assertEquals(100L, (long)(Long) 
resource.getPropertyValue(RequestResourceProvider.REQUEST_ID_PROPERTY_ID));
+      Assert.assertEquals("PENDING", 
resource.getPropertyValue(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID));
+      Assert.assertEquals(0.0, 
resource.getPropertyValue(RequestResourceProvider.REQUEST_PROGRESS_PERCENT_ID));
+    }
+  }
 }

Reply via email to