You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sw...@apache.org on 2013/03/22 21:42:13 UTC

svn commit: r1459976 - in /incubator/ambari/trunk: ./ ambari-server/src/main/java/org/apache/ambari/server/controller/ ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ ambari-server/src/main/resources/ ambari-server/src/test/ja...

Author: swagle
Date: Fri Mar 22 20:42:13 2013
New Revision: 1459976

URL: http://svn.apache.org/r1459976
Log:
AMBARI-1685. Remove running of smoke tests by default when services or master components are started. (Sumit Mohanty via swagle)

Modified:
    incubator/ambari/trunk/CHANGES.txt
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementController.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProvider.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java
    incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java
    incubator/ambari/trunk/ambari-server/src/main/resources/properties.json
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProviderTest.java
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java
    incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java

Modified: incubator/ambari/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/CHANGES.txt?rev=1459976&r1=1459975&r2=1459976&view=diff
==============================================================================
--- incubator/ambari/trunk/CHANGES.txt (original)
+++ incubator/ambari/trunk/CHANGES.txt Fri Mar 22 20:42:13 2013
@@ -509,6 +509,9 @@ Trunk (unreleased changes):
 
  BUG FIXES
 
+ AMBARI-1685. Remove running of smoke tests by default when services or 
+ master components are started. (Sumit Mohanty via swagle)
+
  AMBARI-1688. API support to return 10 most recent requests. (swagle)
 
  AMBARI-1439. rrd file location should be read from global config. 

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementController.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementController.java?rev=1459976&r1=1459975&r2=1459976&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementController.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementController.java Fri Mar 22 20:42:13 2013
@@ -256,24 +256,27 @@ public interface AmbariManagementControl
    *
    * @throws AmbariException thrown if the resource cannot be updated
    */
-  public RequestStatusResponse updateServices(Set<ServiceRequest> requests, Map<String, String> requestProperties)
-      throws AmbariException;
+  public RequestStatusResponse updateServices(Set<ServiceRequest> requests,
+      Map<String, String> requestProperties, boolean runSmokeTest) throws AmbariException;
 
   /**
    * Update the component identified by the given request object with the
    * values carried by the given request object.
    *
    *
+   *
    * @param requests    the request object which defines which component to
    *                   update and the values to set
    *
    * @param requestProperties
+   * @param runSmokeTest
    * @return a track action response
    *
    * @throws AmbariException thrown if the resource cannot be updated
    */
   public RequestStatusResponse updateComponents(
-      Set<ServiceComponentRequest> requests, Map<String, String> requestProperties) throws AmbariException;
+      Set<ServiceComponentRequest> requests, Map<String, String> requestProperties,
+      boolean runSmokeTest) throws AmbariException;
 
   /**
    * Update the host identified by the given request object with the
@@ -292,16 +295,18 @@ public interface AmbariManagementControl
    * values carried by the given request object.
    *
    *
+   *
    * @param requests    the request object which defines which host component to
    *                   update and the values to set
    *
    * @param requestProperties
+   * @param runSmokeTest
    * @return a track action response
    *
    * @throws AmbariException thrown if the resource cannot be updated
    */
   public RequestStatusResponse updateHostComponents(
-      Set<ServiceComponentHostRequest> requests, Map<String, String> requestProperties) throws AmbariException;
+      Set<ServiceComponentHostRequest> requests, Map<String, String> requestProperties, boolean runSmokeTest) throws AmbariException;
   
   /**
    * Updates the users specified.

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java?rev=1459976&r1=1459975&r2=1459976&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java Fri Mar 22 20:42:13 2013
@@ -1533,7 +1533,7 @@ public class AmbariManagementControllerI
 
       LOG.info("Creating stages for upgrade.");
       List<Stage> stages = doStageCreation(cluster, changedServices, changedComps, changedScHosts,
-          requestParameters, requestProperties.get(REQUEST_CONTEXT_PROPERTY));
+          requestParameters, requestProperties.get(REQUEST_CONTEXT_PROPERTY), false);
 
       if (stages == null || stages.isEmpty()) {
         return null;
@@ -1716,7 +1716,7 @@ public class AmbariManagementControllerI
       Map<State, List<Service>> changedServices,
       Map<State, List<ServiceComponent>> changedComps,
       Map<String, Map<State, List<ServiceComponentHost>>> changedScHosts,
-      Map<String, String> requestParameters, String requestContext)
+      Map<String, String> requestParameters, String requestContext, boolean runSmokeTest)
           throws AmbariException {
 
     // TODO handle different transitions?
@@ -1746,7 +1746,7 @@ public class AmbariManagementControllerI
           continue;
         }
         for (Service s : entry.getValue()) {
-          if (State.INSTALLED == s.getDesiredState()) {
+          if (runSmokeTest && (State.INSTALLED == s.getDesiredState())) {
             smokeTestServices.add(s.getName());
           }
         }
@@ -1789,7 +1789,7 @@ public class AmbariManagementControllerI
         changedComponentCount.entrySet()) {
       String serviceName = entry.getKey();
       // smoke test service if more than one component is started
-      if (entry.getValue().size() > 1) {
+      if (runSmokeTest && (entry.getValue().size() > 1)) {
         smokeTestServices.add(serviceName);
         continue;
       }
@@ -1801,7 +1801,7 @@ public class AmbariManagementControllerI
         ComponentInfo compInfo = ambariMetaInfo.getComponentCategory(
             stackId.getStackName(), stackId.getStackVersion(), serviceName,
             componentName);
-        if (compInfo.isMaster()) {
+        if (runSmokeTest && compInfo.isMaster()) {
           smokeTestServices.add(serviceName);
         }
 
@@ -2217,8 +2217,8 @@ public class AmbariManagementControllerI
 
   @Override
   public synchronized RequestStatusResponse updateServices(
-      Set<ServiceRequest> requests, Map<String, String> requestProperties)
-      throws AmbariException {
+      Set<ServiceRequest> requests, Map<String, String> requestProperties,
+      boolean runSmokeTest) throws AmbariException {
 
     if (requests.isEmpty()) {
       LOG.warn("Received an empty requests set");
@@ -2493,8 +2493,9 @@ public class AmbariManagementControllerI
 
     Cluster cluster = clusters.getCluster(clusterNames.iterator().next());
 
-    List<Stage> stages = doStageCreation(cluster, changedServices,
-        changedComps, changedScHosts, null, requestProperties.get(REQUEST_CONTEXT_PROPERTY));
+    List<Stage> stages = doStageCreation(cluster, changedServices, changedComps,
+        changedScHosts, null, requestProperties.get(REQUEST_CONTEXT_PROPERTY),
+        runSmokeTest);
     persistStages(stages);
     updateServiceStates(changedServices, changedComps, changedScHosts);
     if (stages == null || stages.isEmpty()) {
@@ -2506,7 +2507,7 @@ public class AmbariManagementControllerI
 
   @Override
   public synchronized RequestStatusResponse updateComponents(Set<ServiceComponentRequest> requests,
-                                                             Map<String, String> requestProperties)
+                                                             Map<String, String> requestProperties, boolean runSmokeTest)
                                                              throws AmbariException {
 
     if (requests.isEmpty()) {
@@ -2773,7 +2774,7 @@ public class AmbariManagementControllerI
     Cluster cluster = clusters.getCluster(clusterNames.iterator().next());
 
     List<Stage> stages = doStageCreation(cluster, null,
-        changedComps, changedScHosts, null, requestProperties.get(REQUEST_CONTEXT_PROPERTY));
+        changedComps, changedScHosts, null, requestProperties.get(REQUEST_CONTEXT_PROPERTY), runSmokeTest);
     persistStages(stages);
     updateServiceStates(null, changedComps, changedScHosts);
     if (stages == null || stages.isEmpty()) {
@@ -2855,7 +2856,7 @@ public class AmbariManagementControllerI
 
   @Override
   public synchronized RequestStatusResponse updateHostComponents(Set<ServiceComponentHostRequest> requests,
-                                                                 Map<String, String> requestProperties)
+                                                                 Map<String, String> requestProperties, boolean runSmokeTest)
                                                                  throws AmbariException {
 
     if (requests.isEmpty()) {
@@ -3147,7 +3148,7 @@ public class AmbariManagementControllerI
       requestParameters.put(Configuration.UPGRADE_FROM_STACK, gson.toJson(fromStackVersion));
     }
     List<Stage> stages = doStageCreation(cluster, null, null, changedScHosts, requestParameters,
-        requestProperties.get(REQUEST_CONTEXT_PROPERTY));
+        requestProperties.get(REQUEST_CONTEXT_PROPERTY), runSmokeTest);
     persistStages(stages);
     updateServiceStates(null, null, changedScHosts);
     if (stages == null || stages.isEmpty()) {

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProvider.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProvider.java?rev=1459976&r1=1459975&r2=1459976&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProvider.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProvider.java Fri Mar 22 20:42:13 2013
@@ -19,6 +19,10 @@
 package org.apache.ambari.server.controller.internal;
 
 import org.apache.ambari.server.controller.AmbariManagementController;
+import org.apache.ambari.server.controller.predicate.ArrayPredicate;
+import org.apache.ambari.server.controller.predicate.ComparisonPredicate;
+import org.apache.ambari.server.controller.predicate.EqualsPredicate;
+import org.apache.ambari.server.controller.spi.Predicate;
 import org.apache.ambari.server.controller.spi.Resource;
 import org.apache.ambari.server.controller.spi.ResourceProvider;
 
@@ -119,4 +123,28 @@ public abstract class AbstractController
         throw new IllegalArgumentException("Unknown type " + type);
     }
   }
+
+  /**
+   * Extracting given query_paramater value from the predicate(parsed http body)
+   * @param queryParameterId
+   * @param predicate
+   * @return
+   */
+  protected static Object getQueryParameterValue(String queryParameterId, Predicate predicate) {
+
+    if (predicate instanceof ArrayPredicate) {
+      ArrayPredicate arrayPredicate  = (ArrayPredicate) predicate;
+      for (Predicate predicateItem : arrayPredicate.getPredicates()) {
+        if (predicateItem instanceof ComparisonPredicate) {
+          EqualsPredicate equalsPredicate =
+              (EqualsPredicate) predicateItem;
+          if (queryParameterId.equals(equalsPredicate.getPropertyId())) {
+            return equalsPredicate.getValue();
+          }
+        }
+      }
+
+    }
+    return null;
+  }
 }

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java?rev=1459976&r1=1459975&r2=1459976&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java Fri Mar 22 20:42:13 2013
@@ -46,6 +46,9 @@ class ComponentResourceProvider extends 
   protected static final String COMPONENT_STATE_PROPERTY_ID           = PropertyHelper.getPropertyId("ServiceComponentInfo", "state");
   protected static final String COMPONENT_DESIRED_CONFIGS_PROPERTY_ID = PropertyHelper.getPropertyId("ServiceComponentInfo", "desired_configs");
 
+  //Parameters from the predicate
+  private static final String QUERY_PARAMETERS_RUN_SMOKE_TEST_ID =
+      "params/run_smoke_test";
 
   private static Set<String> pkPropertyIds =
       new HashSet<String>(Arrays.asList(new String[]{
@@ -151,10 +154,13 @@ class ComponentResourceProvider extends 
       requests.add(compRequest);
     }
 
+    final boolean runSmokeTest = "true".equals(getQueryParameterValue(
+        QUERY_PARAMETERS_RUN_SMOKE_TEST_ID, predicate)) ? true : false;
+
     RequestStatusResponse response = modifyResources(new Command<RequestStatusResponse>() {
       @Override
       public RequestStatusResponse invoke() throws AmbariException {
-        return getManagementController().updateComponents(requests, request.getRequestInfoProperties());
+        return getManagementController().updateComponents(requests, request.getRequestInfoProperties(), runSmokeTest);
       }
     });
 

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java?rev=1459976&r1=1459975&r2=1459976&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java Fri Mar 22 20:42:13 2013
@@ -63,6 +63,10 @@ class HostComponentResourceProvider exte
   protected static final String HOST_COMPONENT_DESIRED_STACK_ID_PROPERTY_ID
       = PropertyHelper.getPropertyId("HostRoles", "desired_stack_id");
 
+  //Parameters from the predicate
+  private static final String QUERY_PARAMETERS_RUN_SMOKE_TEST_ID =
+      "params/run_smoke_test";
+
   private static Set<String> pkPropertyIds =
       new HashSet<String>(Arrays.asList(new String[]{
           HOST_COMPONENT_CLUSTER_NAME_PROPERTY_ID,
@@ -165,6 +169,9 @@ class HostComponentResourceProvider exte
     final Set<ServiceComponentHostRequest> requests = new HashSet<ServiceComponentHostRequest>();
     RequestStatusResponse response = null;
 
+    final boolean runSmokeTest = "true".equals(getQueryParameterValue(
+        QUERY_PARAMETERS_RUN_SMOKE_TEST_ID, predicate)) ? true : false;
+
     Iterator<Map<String,Object>> iterator = request.getProperties().iterator();
     if (iterator.hasNext()) {
       for (Map<String, Object> propertyMap : getPropertyMaps(request.getProperties().iterator().next(), predicate)) {
@@ -173,7 +180,7 @@ class HostComponentResourceProvider exte
       response = modifyResources(new Command<RequestStatusResponse>() {
         @Override
         public RequestStatusResponse invoke() throws AmbariException {
-          return getManagementController().updateHostComponents(requests, request.getRequestInfoProperties());
+          return getManagementController().updateHostComponents(requests, request.getRequestInfoProperties(), runSmokeTest);
         }
       });
 

Modified: incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java?rev=1459976&r1=1459975&r2=1459976&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java (original)
+++ incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java Fri Mar 22 20:42:13 2013
@@ -45,6 +45,9 @@ class ServiceResourceProvider extends Ab
   protected static final String SERVICE_SERVICE_STATE_PROPERTY_ID   = PropertyHelper.getPropertyId("ServiceInfo", "state");
   protected static final String SERVICE_DESIRED_CONFIGS_PROPERTY_ID = PropertyHelper.getPropertyId("ServiceInfo", "desired_configs");
 
+  //Parameters from the predicate
+  private static final String QUERY_PARAMETERS_RUN_SMOKE_TEST_ID =
+      "params/run_smoke_test";
 
   private static Set<String> pkPropertyIds =
       new HashSet<String>(Arrays.asList(new String[]{
@@ -138,10 +141,14 @@ class ServiceResourceProvider extends Ab
       for (Map<String, Object> propertyMap : getPropertyMaps(iterator.next(), predicate)) {
         requests.add(getRequest(propertyMap));
       }
+
+      final boolean runSmokeTest = "true".equals(getQueryParameterValue(
+          QUERY_PARAMETERS_RUN_SMOKE_TEST_ID, predicate)) ? true : false;
+
       response = modifyResources(new Command<RequestStatusResponse>() {
         @Override
         public RequestStatusResponse invoke() throws AmbariException {
-          return getManagementController().updateServices(requests, request.getRequestInfoProperties());
+          return getManagementController().updateServices(requests, request.getRequestInfoProperties(), runSmokeTest);
         }
       });
     }

Modified: incubator/ambari/trunk/ambari-server/src/main/resources/properties.json
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/resources/properties.json?rev=1459976&r1=1459975&r2=1459976&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/main/resources/properties.json (original)
+++ incubator/ambari/trunk/ambari-server/src/main/resources/properties.json Fri Mar 22 20:42:13 2013
@@ -16,6 +16,7 @@
         "Services/display_name",
         "Services/attributes",
         "ServiceInfo/desired_configs",
+        "params/run_smoke_test",
         "_"
     ],
     "Host":[
@@ -47,6 +48,7 @@
         "ServiceComponents/display_name",
         "ServiceComponents/description",
         "ServiceComponentInfo/desired_configs",
+        "params/run_smoke_test",
         "_"
     ],
     "HostComponent":[
@@ -60,6 +62,7 @@
         "HostRoles/desired_configs",
         "HostRoles/stack_id",
         "HostRoles/desired_stack_id",
+        "params/run_smoke_test",
         "_"
     ],
     "Configuration":[

Modified: incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java?rev=1459976&r1=1459975&r2=1459976&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java (original)
+++ incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java Fri Mar 22 20:42:13 2013
@@ -23,13 +23,7 @@ import com.google.gson.reflect.TypeToken
 import com.google.inject.AbstractModule;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
-import org.apache.ambari.server.AmbariException;
-import org.apache.ambari.server.ClusterNotFoundException;
-import org.apache.ambari.server.HostNotFoundException;
-import org.apache.ambari.server.ParentObjectNotFoundException;
-import org.apache.ambari.server.ServiceComponentHostNotFoundException;
-import org.apache.ambari.server.ServiceComponentNotFoundException;
-import org.apache.ambari.server.ServiceNotFoundException;
+import org.apache.ambari.server.*;
 import org.apache.ambari.server.api.services.AmbariMetaInfo;
 import org.apache.ambari.server.configuration.Configuration;
 import org.apache.ambari.server.orm.GuiceJpaInitializer;
@@ -1551,7 +1545,7 @@ public class AmbariManagementControllerI
 //        gson.<Map<String, String>>fromJson("{\"nagios-global\": \"version2\" }", confType)
 //        , null));
 
-    amc.updateServices(serviceRequests, mapRequestProps);
+    amc.updateServices(serviceRequests, mapRequestProps, true);
 
 
     Set<ServiceComponentRequest> serviceComponentRequests = new HashSet<ServiceComponentRequest>();
@@ -1581,7 +1575,7 @@ public class AmbariManagementControllerI
 
     serviceRequests.clear();
     serviceRequests.add(new ServiceRequest("c1", "HDFS", null, "INSTALLED"));
-    amc.updateServices(serviceRequests, mapRequestProps);
+    amc.updateServices(serviceRequests, mapRequestProps, true);
 
     Cluster cluster = clusters.getCluster("c1");
     Map<String, ServiceComponentHost> namenodes = cluster.getService("HDFS").getServiceComponent("NAMENODE").getServiceComponentHosts();
@@ -1611,21 +1605,21 @@ public class AmbariManagementControllerI
     componentHostRequests.clear();
     componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "NAMENODE", "host1", null, "MAINTENANCE"));
 
-    amc.updateHostComponents(componentHostRequests, mapRequestProps);
+    amc.updateHostComponents(componentHostRequests, mapRequestProps, true);
 
     assertEquals(State.MAINTENANCE, componentHost.getState());
 
     componentHostRequests.clear();
     componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "NAMENODE", "host1", null, "INSTALLED"));
 
-    amc.updateHostComponents(componentHostRequests, mapRequestProps);
+    amc.updateHostComponents(componentHostRequests, mapRequestProps, true);
 
     assertEquals(State.INSTALLED, componentHost.getState());
 
     componentHostRequests.clear();
     componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "NAMENODE", "host1", null, "MAINTENANCE"));
 
-    amc.updateHostComponents(componentHostRequests, mapRequestProps);
+    amc.updateHostComponents(componentHostRequests, mapRequestProps, true);
 
     assertEquals(State.MAINTENANCE, componentHost.getState());
 
@@ -1637,7 +1631,7 @@ public class AmbariManagementControllerI
     componentHostRequests.clear();
     componentHostRequests.add(new ServiceComponentHostRequest("c1", null, "NAMENODE", "host2", null, "INSTALLED"));
 
-    amc.updateHostComponents(componentHostRequests, mapRequestProps);
+    amc.updateHostComponents(componentHostRequests, mapRequestProps, true);
 
     namenodes = cluster.getService("HDFS").getServiceComponent("NAMENODE").getServiceComponentHosts();
     assertEquals(2, namenodes.size());
@@ -1649,7 +1643,7 @@ public class AmbariManagementControllerI
     serviceRequests.clear();
     serviceRequests.add(new ServiceRequest("c1", "HDFS", null, "STARTED"));
 
-    RequestStatusResponse response = amc.updateServices(serviceRequests, mapRequestProps);
+    RequestStatusResponse response = amc.updateServices(serviceRequests, mapRequestProps, true);
     for (ShortTaskStatus shortTaskStatus : response.getTasks()) {
       assertFalse("host1".equals(shortTaskStatus.getHostName()) && "NAMENODE".equals(shortTaskStatus.getRole()));
     }
@@ -1663,6 +1657,48 @@ public class AmbariManagementControllerI
 
     assertEquals(1, namenodes.size());
 
+
+    //Stopping HDFS service
+    serviceRequests.clear();
+    serviceRequests.add(new ServiceRequest("c1", "HDFS", null, "INSTALLED"));
+    response = amc.updateServices(serviceRequests, mapRequestProps, false);
+
+    //Starting HDFS service. No run_smoke_test flag is set, smoke
+    // test(HDFS_SERVICE_CHECK) won't run
+    boolean runSmokeTest = false;
+    serviceRequests.clear();
+    serviceRequests.add(new ServiceRequest("c1", "HDFS", null, "STARTED"));
+    response = amc.updateServices(serviceRequests, mapRequestProps, runSmokeTest);
+
+    List<ShortTaskStatus> taskStatuses = response.getTasks();
+    boolean smokeTestRequired = false;
+    for (ShortTaskStatus shortTaskStatus : taskStatuses) {
+      if (shortTaskStatus.getRole().equals(Role.HDFS_SERVICE_CHECK.toString())) {
+         smokeTestRequired= true;
+      }
+    }
+    assertFalse(smokeTestRequired);
+
+    //Stopping HDFS service
+    serviceRequests.clear();
+    serviceRequests.add(new ServiceRequest("c1", "HDFS", null, "INSTALLED"));
+    response = amc.updateServices(serviceRequests, mapRequestProps, false);
+
+    //Starting HDFS service again.
+    //run_smoke_test flag is set, smoke test will be run
+    runSmokeTest = true;
+    serviceRequests.clear();
+    serviceRequests.add(new ServiceRequest("c1", "HDFS", null, "STARTED"));
+    response = amc.updateServices(serviceRequests, mapRequestProps, runSmokeTest);
+
+    taskStatuses = response.getTasks();
+    smokeTestRequired = false;
+    for (ShortTaskStatus shortTaskStatus : taskStatuses) {
+      if (shortTaskStatus.getRole().equals(Role.HDFS_SERVICE_CHECK.toString())) {
+        smokeTestRequired= true;
+      }
+    }
+    assertTrue(smokeTestRequired);
   }
 
   //todo other resources

Modified: incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java?rev=1459976&r1=1459975&r2=1459976&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java (original)
+++ incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java Fri Mar 22 20:42:13 2013
@@ -1327,7 +1327,7 @@ public class AmbariManagementControllerT
     requests.add(r);
 
     RequestStatusResponse trackAction =
-        controller.updateServices(requests, mapRequestProps);
+        controller.updateServices(requests, mapRequestProps, true);
     Assert.assertEquals(State.INSTALLED,
         clusters.getCluster(clusterName).getService(serviceName)
         .getDesiredState());
@@ -1450,7 +1450,7 @@ public class AmbariManagementControllerT
         State.STARTED.toString());
     requests.clear();
     requests.add(r);
-    trackAction = controller.updateServices(requests, mapRequestProps);
+    trackAction = controller.updateServices(requests, mapRequestProps, true);
 
     Assert.assertEquals(State.STARTED,
         clusters.getCluster(clusterName).getService(serviceName)
@@ -1526,7 +1526,7 @@ public class AmbariManagementControllerT
         State.INSTALLED.toString());
     requests.clear();
     requests.add(r);
-    trackAction = controller.updateServices(requests, mapRequestProps);
+    trackAction = controller.updateServices(requests, mapRequestProps, true);
 
     Assert.assertEquals(State.INSTALLED,
         clusters.getCluster(clusterName).getService(serviceName)
@@ -2200,7 +2200,7 @@ public class AmbariManagementControllerT
           null, State.INSTALLING.toString());
       reqs.clear();
       reqs.add(r);
-      controller.updateServices(reqs, mapRequestProps);
+      controller.updateServices(reqs, mapRequestProps, true);
       fail("Expected fail for invalid state transition");
     } catch (Exception e) {
       // Expected
@@ -2210,7 +2210,8 @@ public class AmbariManagementControllerT
         null, State.INSTALLED.toString());
     reqs.clear();
     reqs.add(r);
-    RequestStatusResponse trackAction = controller.updateServices(reqs, mapRequestProps);
+    RequestStatusResponse trackAction = controller.updateServices(reqs,
+        mapRequestProps, true);
     Assert.assertNull(trackAction);
   }
 
@@ -2256,7 +2257,7 @@ public class AmbariManagementControllerT
           State.INSTALLED.toString());
       reqs.add(req1);
       reqs.add(req2);
-      controller.updateServices(reqs, mapRequestProps);
+      controller.updateServices(reqs, mapRequestProps, true);
       fail("Expected failure for multi cluster update");
     } catch (Exception e) {
       // Expected
@@ -2270,7 +2271,7 @@ public class AmbariManagementControllerT
           State.INSTALLED.toString());
       reqs.add(req1);
       reqs.add(req2);
-      controller.updateServices(reqs, mapRequestProps);
+      controller.updateServices(reqs, mapRequestProps, true);
       fail("Expected failure for dups services");
     } catch (Exception e) {
       // Expected
@@ -2287,7 +2288,7 @@ public class AmbariManagementControllerT
           State.STARTED.toString());
       reqs.add(req1);
       reqs.add(req2);
-      controller.updateServices(reqs, mapRequestProps);
+      controller.updateServices(reqs, mapRequestProps, true);
       fail("Expected failure for different states");
     } catch (Exception e) {
       // Expected
@@ -2406,7 +2407,7 @@ public class AmbariManagementControllerT
       req1 = new ServiceRequest(clusterName, serviceName1, null,
           State.STARTED.toString());
       reqs.add(req1);
-      controller.updateServices(reqs, mapRequestProps);
+      controller.updateServices(reqs, mapRequestProps, true);
       fail("Expected failure for invalid state update");
     } catch (Exception e) {
       // Expected
@@ -2433,7 +2434,7 @@ public class AmbariManagementControllerT
       req1 = new ServiceRequest(clusterName, serviceName1, null,
           State.STARTED.toString());
       reqs.add(req1);
-      controller.updateServices(reqs, mapRequestProps);
+      controller.updateServices(reqs, mapRequestProps, true);
       fail("Expected failure for invalid state update");
     } catch (Exception e) {
       // Expected
@@ -2462,7 +2463,7 @@ public class AmbariManagementControllerT
         State.STARTED.toString());
     reqs.add(req1);
     reqs.add(req2);
-    RequestStatusResponse trackAction = controller.updateServices(reqs, mapRequestProps);
+    RequestStatusResponse trackAction = controller.updateServices(reqs, mapRequestProps, true);
 
     Assert.assertEquals(State.STARTED, s1.getDesiredState());
     Assert.assertEquals(State.STARTED, s2.getDesiredState());
@@ -2532,7 +2533,7 @@ public class AmbariManagementControllerT
         State.STARTED.toString());
     reqs.add(req1);
     reqs.add(req2);
-    trackAction = controller.updateServices(reqs, mapRequestProps);
+    trackAction = controller.updateServices(reqs, mapRequestProps, true);
     Assert.assertNull(trackAction);
 
   }
@@ -2622,7 +2623,7 @@ public class AmbariManagementControllerT
       req1 = new ServiceComponentRequest(clusterName, serviceName1,
           sc1.getName(), null, State.INIT.toString());
       reqs.add(req1);
-      controller.updateComponents(reqs, Collections.<String, String>emptyMap());
+      controller.updateComponents(reqs, Collections.<String, String>emptyMap(), true);
       fail("Expected failure for invalid state update");
     } catch (Exception e) {
       // Expected
@@ -2648,7 +2649,7 @@ public class AmbariManagementControllerT
       req1 = new ServiceComponentRequest(clusterName, serviceName1,
           sc1.getName(), null, State.STARTED.toString());
       reqs.add(req1);
-      controller.updateComponents(reqs, Collections.<String, String>emptyMap());
+      controller.updateComponents(reqs, Collections.<String, String>emptyMap(), true);
       fail("Expected failure for invalid state update");
     } catch (Exception e) {
       // Expected
@@ -2679,7 +2680,7 @@ public class AmbariManagementControllerT
     reqs.add(req1);
     reqs.add(req2);
     reqs.add(req3);
-    RequestStatusResponse trackAction = controller.updateComponents(reqs, Collections.<String, String>emptyMap());
+    RequestStatusResponse trackAction = controller.updateComponents(reqs, Collections.<String, String>emptyMap(), true);
 
     Assert.assertEquals(State.INSTALLED, s1.getDesiredState());
     Assert.assertEquals(State.INSTALLED, sc1.getDesiredState());
@@ -2723,7 +2724,7 @@ public class AmbariManagementControllerT
         sc2.getName(), null, State.INSTALLED.toString());
     reqs.add(req1);
     reqs.add(req2);
-    trackAction = controller.updateComponents(reqs, Collections.<String, String>emptyMap());
+    trackAction = controller.updateComponents(reqs, Collections.<String, String>emptyMap(), true);
     Assert.assertNull(trackAction);
   }
 
@@ -2814,7 +2815,7 @@ public class AmbariManagementControllerT
           componentName1, host1,
           null, State.STARTED.toString());
       reqs.add(req1);
-      controller.updateHostComponents(reqs, Collections.<String, String>emptyMap());
+      controller.updateHostComponents(reqs, Collections.<String, String>emptyMap(), true);
       fail("Expected failure for invalid transition");
     } catch (Exception e) {
       // Expected
@@ -2842,7 +2843,7 @@ public class AmbariManagementControllerT
       reqs.add(req3);
       reqs.add(req4);
       reqs.add(req5);
-      controller.updateHostComponents(reqs, Collections.<String, String>emptyMap());
+      controller.updateHostComponents(reqs, Collections.<String, String>emptyMap(), true);
       fail("Expected failure for invalid states");
     } catch (Exception e) {
       // Expected
@@ -2869,7 +2870,8 @@ public class AmbariManagementControllerT
     reqs.add(req3);
     reqs.add(req4);
     reqs.add(req5);
-    RequestStatusResponse trackAction = controller.updateHostComponents(reqs, Collections.<String, String>emptyMap());
+    RequestStatusResponse trackAction = controller.updateHostComponents(reqs,
+        Collections.<String, String>emptyMap(), true);
     Assert.assertNotNull(trackAction);
 
     long requestId = trackAction.getRequestId();
@@ -2901,7 +2903,8 @@ public class AmbariManagementControllerT
         null, State.INSTALLED.toString());
     reqs.add(req1);
     reqs.add(req2);
-    trackAction = controller.updateHostComponents(reqs, Collections.<String, String>emptyMap());
+    trackAction = controller.updateHostComponents(reqs, Collections.<String,
+        String>emptyMap(), true);
     Assert.assertNull(trackAction);
   }
 
@@ -2991,7 +2994,7 @@ public class AmbariManagementControllerT
 
     Map<String,String> mapRequestProps = new HashMap<String, String>();
     mapRequestProps.put("context", "testServiceComponentHostUpdateStackId");
-    RequestStatusResponse resp = controller.updateHostComponents(reqs, mapRequestProps);
+    RequestStatusResponse resp = controller.updateHostComponents(reqs, mapRequestProps, true);
     List<Stage> stages = actionDB.getAllStages(resp.getRequestId());
     Assert.assertEquals(1, stages.size());
     Assert.assertEquals(2, stages.get(0).getOrderedHostRoleCommands().size());
@@ -3036,7 +3039,7 @@ public class AmbariManagementControllerT
     req3.setDesiredStackId("HDP-0.2");
     reqs.add(req3);
 
-    resp = controller.updateHostComponents(reqs, Collections.<String, String>emptyMap());
+    resp = controller.updateHostComponents(reqs, Collections.<String, String>emptyMap(), true);
     stages = actionDB.getAllStages(resp.getRequestId());
     Assert.assertEquals(2, stages.size());
     Assert.assertEquals(2, stages.get(0).getOrderedHostRoleCommands().size());
@@ -3211,7 +3214,8 @@ public class AmbariManagementControllerT
     req1.setDesiredStackId("HDP-0.2");
     reqs.add(req1);
 
-    RequestStatusResponse resp = controller.updateHostComponents(reqs, Collections.<String,String>emptyMap());
+    RequestStatusResponse resp = controller.updateHostComponents(reqs,
+        Collections.<String,String>emptyMap(), true);
     Assert.assertNull(resp);
 
     c1.setCurrentStackVersion(new StackId("HDP-0.2"));
@@ -3223,14 +3227,14 @@ public class AmbariManagementControllerT
         null, State.INSTALLED.toString());
     req1.setDesiredStackId("HDP-0.2");
     reqs.add(req1);
-    resp = controller.updateHostComponents(reqs, Collections.<String,String>emptyMap());
+    resp = controller.updateHostComponents(reqs, Collections.<String,String>emptyMap(), true);
     Assert.assertNull(resp);
   }
 
   private void updateHostAndCompareExpectedFailure(Set<ServiceComponentHostRequest> reqs,
                                                    String expectedMessage) {
     try {
-      controller.updateHostComponents(reqs, Collections.<String,String>emptyMap());
+      controller.updateHostComponents(reqs, Collections.<String,String>emptyMap(), true);
       fail("Expected failure: " + expectedMessage);
     } catch (Exception e) {
       LOG.info("Actual exception message: " + e.getMessage());
@@ -3534,7 +3538,7 @@ public class AmbariManagementControllerT
     sReqs.clear();
     sReqs.add(new ServiceRequest(clusterName, serviceName, configVersions,
         "INSTALLED"));
-    RequestStatusResponse trackAction = controller.updateServices(sReqs, mapRequestProps);
+    RequestStatusResponse trackAction = controller.updateServices(sReqs, mapRequestProps, true);
     List<Stage> stages = actionDB.getAllStages(trackAction.getRequestId());
     for (ExecutionCommandWrapper cmd : stages.get(0)
         .getExecutionCommands(host1)) {
@@ -3626,7 +3630,7 @@ public class AmbariManagementControllerT
     Set<ServiceRequest> requests = new HashSet<ServiceRequest>();
     requests.add(r);
 
-    controller.updateServices(requests, mapRequestProps);
+    controller.updateServices(requests, mapRequestProps, true);
     Assert.assertEquals(State.INSTALLED,
             clusters.getCluster(clusterName).getService(serviceName)
                     .getDesiredState());
@@ -3645,7 +3649,7 @@ public class AmbariManagementControllerT
             State.STARTED.toString());
     requests.clear();
     requests.add(r);
-    controller.updateServices(requests, mapRequestProps);
+    controller.updateServices(requests, mapRequestProps, true);
 
     // manually change live state to started as no running action manager
     for (ServiceComponent sc :
@@ -3718,7 +3722,7 @@ public class AmbariManagementControllerT
     schReqs.clear();
     schReqs.add(new ServiceComponentHostRequest(clusterName, serviceName,
             componentName1, host1, configVersions, null));
-    Assert.assertNull(controller.updateHostComponents(schReqs, Collections.<String, String>emptyMap()));
+    Assert.assertNull(controller.updateHostComponents(schReqs, Collections.<String, String>emptyMap(), true));
 
     Assert.assertEquals(0, s.getDesiredConfigs().size());
     Assert.assertEquals(0, sc1.getDesiredConfigs().size());
@@ -3730,7 +3734,7 @@ public class AmbariManagementControllerT
     scReqs.clear();
     scReqs.add(new ServiceComponentRequest(clusterName, serviceName,
             componentName2, configVersions, null));
-    Assert.assertNull(controller.updateComponents(scReqs, Collections.<String, String>emptyMap()));
+    Assert.assertNull(controller.updateComponents(scReqs, Collections.<String, String>emptyMap(), true));
 
     Assert.assertEquals(0, s.getDesiredConfigs().size());
     Assert.assertEquals(0, sc1.getDesiredConfigs().size());
@@ -3745,7 +3749,7 @@ public class AmbariManagementControllerT
     sReqs.clear();
     sReqs.add(new ServiceRequest(clusterName, serviceName, configVersions,
             null));
-    Assert.assertNull(controller.updateServices(sReqs, mapRequestProps));
+    Assert.assertNull(controller.updateServices(sReqs, mapRequestProps, true));
 
     Assert.assertEquals(3, s.getDesiredConfigs().size());
     Assert.assertEquals(3, sc1.getDesiredConfigs().size());
@@ -3792,7 +3796,7 @@ public class AmbariManagementControllerT
     schReqs.clear();
     schReqs.add(new ServiceComponentHostRequest(clusterName, serviceName,
             componentName1, host1, configVersions, null));
-    Assert.assertNull(controller.updateHostComponents(schReqs, Collections.<String, String>emptyMap()));
+    Assert.assertNull(controller.updateHostComponents(schReqs, Collections.<String, String>emptyMap(), true));
 
     Assert.assertEquals(3, s.getDesiredConfigs().size());
     Assert.assertEquals(3, sc1.getDesiredConfigs().size());
@@ -3815,7 +3819,7 @@ public class AmbariManagementControllerT
     scReqs.clear();
     scReqs.add(new ServiceComponentRequest(clusterName, serviceName,
             componentName1, configVersions, null));
-    Assert.assertNull(controller.updateComponents(scReqs, Collections.<String, String>emptyMap()));
+    Assert.assertNull(controller.updateComponents(scReqs, Collections.<String, String>emptyMap(), true));
 
     Assert.assertEquals(3, s.getDesiredConfigs().size());
     Assert.assertEquals(4, sc1.getDesiredConfigs().size());
@@ -3953,7 +3957,7 @@ public class AmbariManagementControllerT
     schReqs.clear();
     schReqs.add(new ServiceComponentHostRequest(clusterName, serviceName,
         componentName1, host1, configVersions, null));
-    Assert.assertNull(controller.updateHostComponents(schReqs, Collections.<String, String>emptyMap()));
+    Assert.assertNull(controller.updateHostComponents(schReqs, Collections.<String, String>emptyMap(), true));
 
     Assert.assertEquals(0, s.getDesiredConfigs().size());
     Assert.assertEquals(0, sc1.getDesiredConfigs().size());
@@ -3965,7 +3969,7 @@ public class AmbariManagementControllerT
     scReqs.clear();
     scReqs.add(new ServiceComponentRequest(clusterName, serviceName,
         componentName2, configVersions, null));
-    Assert.assertNull(controller.updateComponents(scReqs, Collections.<String, String>emptyMap()));
+    Assert.assertNull(controller.updateComponents(scReqs, Collections.<String, String>emptyMap(), true));
 
     Assert.assertEquals(0, s.getDesiredConfigs().size());
     Assert.assertEquals(0, sc1.getDesiredConfigs().size());
@@ -3980,7 +3984,7 @@ public class AmbariManagementControllerT
     sReqs.clear();
     sReqs.add(new ServiceRequest(clusterName, serviceName, configVersions,
         null));
-    Assert.assertNull(controller.updateServices(sReqs, mapRequestProps));
+    Assert.assertNull(controller.updateServices(sReqs, mapRequestProps, true));
 
     Assert.assertEquals(3, s.getDesiredConfigs().size());
     Assert.assertEquals(3, sc1.getDesiredConfigs().size());
@@ -4027,7 +4031,7 @@ public class AmbariManagementControllerT
     schReqs.clear();
     schReqs.add(new ServiceComponentHostRequest(clusterName, serviceName,
         componentName1, host1, configVersions, null));
-    Assert.assertNull(controller.updateHostComponents(schReqs, Collections.<String, String>emptyMap()));
+    Assert.assertNull(controller.updateHostComponents(schReqs, Collections.<String, String>emptyMap(), true));
 
     Assert.assertEquals(3, s.getDesiredConfigs().size());
     Assert.assertEquals(3, sc1.getDesiredConfigs().size());
@@ -4050,7 +4054,7 @@ public class AmbariManagementControllerT
     scReqs.clear();
     scReqs.add(new ServiceComponentRequest(clusterName, serviceName,
         componentName1, configVersions, null));
-    Assert.assertNull(controller.updateComponents(scReqs, Collections.<String, String>emptyMap()));
+    Assert.assertNull(controller.updateComponents(scReqs, Collections.<String, String>emptyMap(), true));
 
     Assert.assertEquals(3, s.getDesiredConfigs().size());
     Assert.assertEquals(4, sc1.getDesiredConfigs().size());
@@ -4132,7 +4136,7 @@ public class AmbariManagementControllerT
     Set<ServiceRequest> requests = new HashSet<ServiceRequest>();
     requests.add(r);
 
-    controller.updateServices(requests, mapRequestProps);
+    controller.updateServices(requests, mapRequestProps, true);
     Assert.assertEquals(State.INSTALLED,
       clusters.getCluster(clusterName).getService(serviceName)
         .getDesiredState());
@@ -4181,7 +4185,7 @@ public class AmbariManagementControllerT
     schReqs.clear();
     schReqs.add(new ServiceComponentHostRequest(clusterName, serviceName,
       componentName1, host1, configVersions, null));
-    Assert.assertNull(controller.updateHostComponents(schReqs, Collections.<String, String>emptyMap()));
+    Assert.assertNull(controller.updateHostComponents(schReqs, Collections.<String, String>emptyMap(), true));
     Assert.assertEquals(2, sch1.getDesiredConfigs().size());
 
     // Reconfigure SCH level
@@ -4190,7 +4194,7 @@ public class AmbariManagementControllerT
     schReqs.clear();
     schReqs.add(new ServiceComponentHostRequest(clusterName, serviceName,
       componentName1, host1, configVersions, null));
-    Assert.assertNull(controller.updateHostComponents(schReqs, Collections.<String, String>emptyMap()));
+    Assert.assertNull(controller.updateHostComponents(schReqs, Collections.<String, String>emptyMap(), true));
 
     // Clear Entity Manager
     entityManager.clear();
@@ -4205,11 +4209,11 @@ public class AmbariManagementControllerT
     configVersions.put("hdfs-site", "version1");
     scReqs.add(new ServiceComponentRequest(clusterName, serviceName,
       componentName2, configVersions, null));
-    Assert.assertNull(controller.updateComponents(scReqs, Collections.<String, String>emptyMap()));
+    Assert.assertNull(controller.updateComponents(scReqs, Collections.<String, String>emptyMap(), true));
 
     scReqs.add(new ServiceComponentRequest(clusterName, serviceName,
       componentName1, configVersions, null));
-    Assert.assertNull(controller.updateComponents(scReqs, Collections.<String, String>emptyMap()));
+    Assert.assertNull(controller.updateComponents(scReqs, Collections.<String, String>emptyMap(), true));
     Assert.assertEquals(2, sc1.getDesiredConfigs().size());
     Assert.assertEquals(2, sc2.getDesiredConfigs().size());
 
@@ -4220,7 +4224,7 @@ public class AmbariManagementControllerT
     scReqs.clear();
     scReqs.add(new ServiceComponentRequest(clusterName, serviceName,
       componentName2, configVersions, null));
-    Assert.assertNull(controller.updateComponents(scReqs, Collections.<String, String>emptyMap()));
+    Assert.assertNull(controller.updateComponents(scReqs, Collections.<String, String>emptyMap(), true));
 
     Assert.assertEquals(2, sc2.getDesiredConfigs().size());
     Assert.assertEquals("version122", sc2.getDesiredConfigs().get
@@ -4228,7 +4232,7 @@ public class AmbariManagementControllerT
     scReqs.clear();
     scReqs.add(new ServiceComponentRequest(clusterName, serviceName,
       componentName1, configVersions, null));
-    Assert.assertNull(controller.updateComponents(scReqs, Collections.<String, String>emptyMap()));
+    Assert.assertNull(controller.updateComponents(scReqs, Collections.<String, String>emptyMap(), true));
 
     entityManager.clear();
 
@@ -4243,7 +4247,7 @@ public class AmbariManagementControllerT
     sReqs.clear();
     sReqs.add(new ServiceRequest(clusterName, serviceName, configVersions,
       null));
-    Assert.assertNull(controller.updateServices(sReqs, mapRequestProps));
+    Assert.assertNull(controller.updateServices(sReqs, mapRequestProps, true));
     Assert.assertEquals(2, s.getDesiredConfigs().size());
 
     // Reconfigure S Level
@@ -4253,7 +4257,7 @@ public class AmbariManagementControllerT
     sReqs.clear();
     sReqs.add(new ServiceRequest(clusterName, serviceName, configVersions,
       null));
-    Assert.assertNull(controller.updateServices(sReqs, mapRequestProps));
+    Assert.assertNull(controller.updateServices(sReqs, mapRequestProps, true));
 
     entityManager.clear();
 
@@ -4301,7 +4305,7 @@ public class AmbariManagementControllerT
     requests.add(r);
 
     RequestStatusResponse trackAction =
-        controller.updateServices(requests, mapRequestProps);
+        controller.updateServices(requests, mapRequestProps, true);
     Assert.assertEquals(State.INSTALLED,
         clusters.getCluster(clusterName).getService(serviceName)
         .getDesiredState());
@@ -4335,7 +4339,7 @@ public class AmbariManagementControllerT
     requests.clear();
     requests.add(r);
 
-    trackAction = controller.updateServices(requests, mapRequestProps);
+    trackAction = controller.updateServices(requests, mapRequestProps, true);
     Assert.assertNotNull(trackAction);
     Assert.assertEquals(State.INSTALLED,
         clusters.getCluster(clusterName).getService(serviceName)
@@ -5067,7 +5071,7 @@ public class AmbariManagementControllerT
     requests.add(r);
 
     RequestStatusResponse trackAction =
-      controller.updateServices(requests, mapRequestProps);
+      controller.updateServices(requests, mapRequestProps, true);
     Assert.assertEquals(State.INSTALLED,
       clusters.getCluster(clusterName).getService(serviceName)
         .getDesiredState());
@@ -5086,7 +5090,7 @@ public class AmbariManagementControllerT
       State.STARTED.toString());
     requests.clear();
     requests.add(r);
-    trackAction = controller.updateServices(requests, mapRequestProps);
+    trackAction = controller.updateServices(requests, mapRequestProps, true);
 
     // manually change live state to started as no running action manager
     for (ServiceComponent sc :
@@ -5120,7 +5124,7 @@ public class AmbariManagementControllerT
           Set<ServiceComponentHostRequest> reqs1 = new
             HashSet<ServiceComponentHostRequest>();
           reqs1.add(r1);
-          controller.updateHostComponents(reqs1, Collections.<String, String>emptyMap());
+          controller.updateHostComponents(reqs1, Collections.<String, String>emptyMap(), true);
           Assert.assertEquals(State.INSTALLED, sch.getDesiredState());
         }
       }
@@ -5131,7 +5135,7 @@ public class AmbariManagementControllerT
       State.INSTALLED.toString());
     requests.clear();
     requests.add(r);
-    controller.updateServices(requests, mapRequestProps);
+    controller.updateServices(requests, mapRequestProps, true);
 
     for (ServiceComponent sc :
       clusters.getCluster(clusterName).getService(serviceName)

Modified: incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProviderTest.java?rev=1459976&r1=1459975&r2=1459976&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProviderTest.java (original)
+++ incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProviderTest.java Fri Mar 22 20:42:13 2013
@@ -20,7 +20,10 @@ package org.apache.ambari.server.control
 
 import junit.framework.Assert;
 import org.apache.ambari.server.controller.AmbariManagementController;
+import org.apache.ambari.server.controller.spi.Predicate;
 import org.apache.ambari.server.controller.spi.Resource;
+import org.apache.ambari.server.controller.utilities.PredicateBuilder;
+import org.codehaus.jackson.map.ser.PropertyBuilder;
 import org.junit.Test;
 
 import java.util.HashMap;
@@ -28,6 +31,7 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 
+import static org.easymock.EasyMock.and;
 import static org.easymock.EasyMock.createMock;
 
 /**
@@ -58,4 +62,21 @@ public class AbstractControllerResourceP
 
     Assert.assertTrue(provider instanceof ServiceResourceProvider);
   }
-}
+
+  @Test
+  public void testGetQueryParameterValue() {
+
+    String queryParameterId1 = "qp/variable1";
+    String queryParameterValue1 = "value1";
+    String queryParameterId2 = "qp/variable2";
+    String queryParameterValue2 = "value2";
+
+    Predicate  predicate = new PredicateBuilder().property(queryParameterId1).equals(queryParameterValue1).
+        and().property(queryParameterId2).equals(queryParameterValue2).toPredicate();
+
+    Assert.assertEquals(queryParameterValue1, AbstractControllerResourceProvider.getQueryParameterValue(queryParameterId1, predicate));
+    Assert.assertFalse(queryParameterValue2.equals(AbstractControllerResourceProvider.getQueryParameterValue(queryParameterId1, predicate)));
+    Assert.assertNull(AbstractControllerResourceProvider.getQueryParameterValue("queryParameterIdNotFound", predicate));
+  }
+
+  }

Modified: incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java?rev=1459976&r1=1459975&r2=1459976&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java (original)
+++ incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java Fri Mar 22 20:42:13 2013
@@ -157,7 +157,7 @@ public class ComponentResourceProviderTe
         andReturn(nameResponse).once();
     expect(managementController.updateComponents(
         AbstractResourceProviderTest.Matcher.getComponentRequestSet(
-            "Cluster102", "Service", "Component", null, "STARTED"), eq(mapRequestProps))).andReturn(response).once();
+            "Cluster102", "Service", "Component", null, "STARTED"), eq(mapRequestProps), eq(false))).andReturn(response).once();
 
     // replay
     replay(managementController, response);

Modified: incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java?rev=1459976&r1=1459975&r2=1459976&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java (original)
+++ incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java Fri Mar 22 20:42:13 2013
@@ -250,7 +250,7 @@ public class HostComponentResourceProvid
     expect(managementController.updateHostComponents(
         AbstractResourceProviderTest.Matcher.getHostComponentRequestSet(
             "Cluster102", null, "Component100", "Host100", null, "STARTED"),
-            eq(mapRequestProps))).andReturn(response).once();
+            eq(mapRequestProps), eq(false))).andReturn(response).once();
 
     // replay
     replay(managementController, response);

Modified: incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java?rev=1459976&r1=1459975&r2=1459976&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java (original)
+++ incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java Fri Mar 22 20:42:13 2013
@@ -154,7 +154,7 @@ public class JMXHostProviderTest {
     configVersions.put("hdfs-site", "version1");
     sReqs.add(new ServiceRequest(clusterName, serviceName, configVersions,
       null));
-    controller.updateServices(sReqs, mapRequestProps);
+    controller.updateServices(sReqs, mapRequestProps, true);
   }
 
 

Modified: incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java?rev=1459976&r1=1459975&r2=1459976&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java (original)
+++ incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java Fri Mar 22 20:42:13 2013
@@ -194,7 +194,7 @@ public class ServiceResourceProviderTest
 
     // set expectations
     expect(managementController.updateServices(capture(requestsCapture),
-        eq(mapRequestProps))).andReturn(response).once();
+        eq(mapRequestProps), eq(false))).andReturn(response).once();
 
     // replay
     replay(managementController, response);