Author: tbeerbower
Date: Fri Feb 1 20:07:43 2013
New Revision: 1441612
URL: http://svn.apache.org/viewvc?rev=1441612&view=rev
Log:
AMBARI-1331 - Step 8 hangs on deploy task 2 of 59, server has exception
Added:
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/ConfigurationResourceProviderTest.java
Modified:
incubator/ambari/trunk/CHANGES.txt
incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ActionResourceProvider.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/ConfigurationResourceProvider.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/test/java/org/apache/ambari/server/controller/internal/AbstractResourceProviderTest.java
Modified: incubator/ambari/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/incubator/ambari/trunk/CHANGES.txt?rev=1441612&r1=1441611&r2=1441612&view=diff
==============================================================================
--- incubator/ambari/trunk/CHANGES.txt (original)
+++ incubator/ambari/trunk/CHANGES.txt Fri Feb 1 20:07:43 2013
@@ -223,6 +223,8 @@ Trunk (unreleased changes):
BUG FIXES
+ AMBARI-1331. Step 8 hangs on deploy tas 2 of 59, server has exception
(tbeerbower)
+
AMBARI-1164. Disk info ganglia metrics is broken for some OS. (Dmytro Shkvyra
via jspeidel)
AMBARI-1325. Left border is missing from the main nav. (srimanth)
Modified:
incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ActionResourceProvider.java
URL:
http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ActionResourceProvider.java?rev=1441612&r1=1441611&r2=1441612&view=diff
==============================================================================
---
incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ActionResourceProvider.java
(original)
+++
incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ActionResourceProvider.java
Fri Feb 1 20:07:43 2013
@@ -120,8 +120,11 @@ class ActionResourceProvider extends Abs
Map<String, String> params = new HashMap<String, String>();
for (Entry<String, Object> entry : properties.entrySet()) {
String propertyid = entry.getKey();
- if (PropertyHelper.getPropertyCategory(propertyid).equals("parameters")
- && null != entry.getValue()) {
+
+ String propertyCategory = PropertyHelper.getPropertyCategory(propertyid);
+ if (propertyCategory != null &&
+ propertyCategory.equals("parameters") &&
+ null != entry.getValue()) {
params.put(PropertyHelper.getPropertyName(propertyid),
entry.getValue().toString());
}
}
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=1441612&r1=1441611&r2=1441612&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 Feb 1 20:07:43 2013
@@ -139,7 +139,8 @@ class ComponentResourceProvider extends
Map<String, String> configMap = new HashMap<String,String>();
for (Map.Entry<String,Object> entry : propertyMap.entrySet()) {
- if
(PropertyHelper.getPropertyCategory(entry.getKey()).equals("config")) {
+ String propertyCategory =
PropertyHelper.getPropertyCategory(entry.getKey());
+ if (propertyCategory != null && propertyCategory.equals("config")) {
configMap.put(PropertyHelper.getPropertyName(entry.getKey()),
(String) entry.getValue());
}
}
Modified:
incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigurationResourceProvider.java
URL:
http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigurationResourceProvider.java?rev=1441612&r1=1441611&r2=1441612&view=diff
==============================================================================
---
incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigurationResourceProvider.java
(original)
+++
incubator/ambari/trunk/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigurationResourceProvider.java
Fri Feb 1 20:07:43 2013
@@ -1,5 +1,3 @@
-package org.apache.ambari.server.controller.internal;
-
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -18,6 +16,8 @@ package org.apache.ambari.server.control
* limitations under the License.
*/
+package org.apache.ambari.server.controller.internal;
+
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.controller.AmbariManagementController;
import org.apache.ambari.server.controller.ConfigurationRequest;
@@ -56,23 +56,37 @@ class ConfigurationResourceProvider exte
protected static final String CONFIGURATION_CONFIG_TYPE_PROPERTY_ID =
PropertyHelper.getPropertyId(null, "type");
protected static final String CONFIGURATION_CONFIG_TAG_PROPERTY_ID =
PropertyHelper.getPropertyId(null, "tag");
- private static final String CONFIG_HOST_NAME =
PropertyHelper.getPropertyId("Config", "host_name");
+ private static final String CONFIG_HOST_NAME =
PropertyHelper.getPropertyId("Config", "host_name");
private static final String CONFIG_COMPONENT_NAME =
PropertyHelper.getPropertyId("Config", "component_name");
-
+ /**
+ * The primary key property ids for the configuration resource type.
+ */
private static Set<String> pkPropertyIds =
new HashSet<String>(Arrays.asList(new String[]{
CONFIGURATION_CLUSTER_NAME_PROPERTY_ID,
CONFIGURATION_CONFIG_TYPE_PROPERTY_ID}));
+
+ // ----- Constructors ------------------------------------------------------
+
+ /**
+ * Constructor
+ *
+ * @param propertyIds the property ids supported by this provider
+ * @param keyPropertyIds the key properties for this provider
+ * @param managementController the associated management controller
+ */
ConfigurationResourceProvider(Set<String> propertyIds,
Map<Resource.Type, String> keyPropertyIds,
AmbariManagementController
managementController) {
super(propertyIds, keyPropertyIds, managementController);
-
}
+
+ // ----- ResourceProvider --------------------------------------------------
+
@Override
public RequestStatus createResources(Request request)
throws SystemException,
@@ -83,15 +97,14 @@ class ConfigurationResourceProvider exte
for (Map<String, Object> map : request.getProperties()) {
String cluster = (String)
map.get(CONFIGURATION_CLUSTER_NAME_PROPERTY_ID);
- // TODO : why not CONFIGURATION_CONFIG_TYPE_PROPERTY_ID?
- String type = (String) map.get(PropertyHelper.getPropertyId("", "type"));
- // TODO : why not CONFIGURATION_CONFIG_TAG_PROPERTY_ID?
- String tag = (String) map.get(PropertyHelper.getPropertyId("", "tag"));
+ String type = (String) map.get(CONFIGURATION_CONFIG_TYPE_PROPERTY_ID);
+ String tag = (String) map.get(CONFIGURATION_CONFIG_TAG_PROPERTY_ID);
Map<String, String> configMap = new HashMap<String, String>();
for (Entry<String, Object> entry : map.entrySet()) {
- if
(PropertyHelper.getPropertyCategory(entry.getKey()).equals("properties") &&
null != entry.getValue()) {
+ String propertyCategory =
PropertyHelper.getPropertyCategory(entry.getKey());
+ if (propertyCategory != null && propertyCategory.equals("properties")
&& null != entry.getValue()) {
configMap.put(PropertyHelper.getPropertyName(entry.getKey()),
entry.getValue().toString());
}
}
@@ -145,8 +158,6 @@ class ConfigurationResourceProvider exte
resources.add(resource);
}
-
-
return resources;
} else {
@@ -175,10 +186,8 @@ class ConfigurationResourceProvider exte
resource.setProperty(id, entry.getValue());
}
}
-
resources.add(resource);
}
-
return resources;
}
}
@@ -196,7 +205,8 @@ class ConfigurationResourceProvider exte
* Throws an exception, as Configurations cannot be deleted.
*/
@Override
- public RequestStatus deleteResources(Predicate predicate) throws
SystemException, UnsupportedPropertyException, NoSuchResourceException,
NoSuchParentResourceException {
+ public RequestStatus deleteResources(Predicate predicate) throws
SystemException,
+ UnsupportedPropertyException, NoSuchResourceException,
NoSuchParentResourceException {
throw new UnsupportedOperationException("Cannot delete a Configuration
resource.");
}
@@ -214,7 +224,8 @@ class ConfigurationResourceProvider exte
// TODO : hack to allow for inconsistent property names
// for example, the tag property can come here as Config/tag, /tag or tag
if (!propertyId.equals("tag") && !propertyId.equals("type") &&
- !propertyId.equals("/tag") && !propertyId.equals("/type")) {
+ !propertyId.equals("/tag") && !propertyId.equals("/type") &&
+ !propertyId.equals("properties")) {
String propertyCategory =
PropertyHelper.getPropertyCategory(propertyId);
@@ -226,15 +237,28 @@ class ConfigurationResourceProvider exte
return unsupportedProperties;
}
+ // ----- AbstractResourceProvider ------------------------------------------
+
@Override
protected Set<String> getPKPropertyIds() {
return pkPropertyIds;
}
- public static Map<String, String> getConfigPropertyValues(Map<String,
Object> propertyMap) {
+
+ // ----- utility methods ---------------------------------------------------
+
+ /**
+ * Get the config related property ids from the given map of property ids.
+ *
+ * @param propertyIdMap the map of property ids
+ *
+ * @return a subset of the given map containing olny the property ids that
have a
+ * category of "config"
+ */
+ public static Map<String, String> getConfigPropertyValues(Map<String,
Object> propertyIdMap) {
Map<String, String> configMap = new HashMap<String, String>();
- for (Map.Entry<String,Object> entry : propertyMap.entrySet()) {
+ for (Map.Entry<String,Object> entry : propertyIdMap.entrySet()) {
String propertyId = entry.getKey();
if (PropertyHelper.getPropertyCategory(propertyId).equals("config")) {
configMap.put(PropertyHelper.getPropertyName(propertyId), (String)
entry.getValue());
@@ -243,10 +267,16 @@ class ConfigurationResourceProvider exte
return configMap;
}
+ /**
+ * Get a configuration request object from the given map of properties.
+ *
+ * @param properties the map of properties
+ *
+ * @return a configuration request
+ */
private ConfigurationRequest getRequest(Map<String, Object> properties) {
String type = (String)
properties.get(CONFIGURATION_CONFIG_TYPE_PROPERTY_ID);
-
- String tag = (String) properties.get(CONFIGURATION_CONFIG_TAG_PROPERTY_ID);
+ String tag = (String)
properties.get(CONFIGURATION_CONFIG_TAG_PROPERTY_ID);
return new ConfigurationRequest(
(String) properties.get(CONFIGURATION_CLUSTER_NAME_PROPERTY_ID),
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=1441612&r1=1441611&r2=1441612&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 Feb 1 20:07:43 2013
@@ -186,9 +186,11 @@ class HostComponentResourceProvider exte
Set<String> unsupportedProperties = new HashSet<String>();
for (String propertyId : propertyIds) {
- String propertyCategory = PropertyHelper.getPropertyCategory(propertyId);
- if (propertyCategory == null || !propertyCategory.equals("config")) {
- unsupportedProperties.add(propertyId);
+ if (!propertyId.equals("config")) {
+ String propertyCategory =
PropertyHelper.getPropertyCategory(propertyId);
+ if (propertyCategory == null || !propertyCategory.equals("config")) {
+ unsupportedProperties.add(propertyId);
+ }
}
}
return unsupportedProperties;
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=1441612&r1=1441611&r2=1441612&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 Feb 1 20:07:43 2013
@@ -179,9 +179,11 @@ class ServiceResourceProvider extends Ab
Set<String> unsupportedProperties = new HashSet<String>();
for (String propertyId : propertyIds) {
- String propertyCategory = PropertyHelper.getPropertyCategory(propertyId);
- if (propertyCategory == null || !propertyCategory.equals("config")) {
- unsupportedProperties.add(propertyId);
+ if (!propertyId.equals("config")) {
+ String propertyCategory =
PropertyHelper.getPropertyCategory(propertyId);
+ if (propertyCategory == null || !propertyCategory.equals("config")) {
+ unsupportedProperties.add(propertyId);
+ }
}
}
return unsupportedProperties;
Modified:
incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractResourceProviderTest.java
URL:
http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractResourceProviderTest.java?rev=1441612&r1=1441611&r2=1441612&view=diff
==============================================================================
---
incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractResourceProviderTest.java
(original)
+++
incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractResourceProviderTest.java
Fri Feb 1 20:07:43 2013
@@ -31,7 +31,6 @@ import org.easymock.IArgumentMatcher;
import org.junit.Assert;
import org.junit.Test;
-import static org.easymock.EasyMock.anyObject;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.createNiceMock;
import static org.easymock.EasyMock.expect;
@@ -135,9 +134,9 @@ public class AbstractResourceProviderTes
idResponse.add(new ClusterResponse(103L, "Cluster103", null, null));
// set expectations
-
expect(managementController.getClusters(anyObject(Set.class))).andReturn(allResponse).once();
-
expect(managementController.getClusters(anyObject(Set.class))).andReturn(nameResponse).once();
-
expect(managementController.getClusters(anyObject(Set.class))).andReturn(idResponse).once();
+
expect(managementController.getClusters(EasyMock.<Set<ClusterRequest>>anyObject())).andReturn(allResponse).once();
+
expect(managementController.getClusters(EasyMock.<Set<ClusterRequest>>anyObject())).andReturn(nameResponse).once();
+
expect(managementController.getClusters(EasyMock.<Set<ClusterRequest>>anyObject())).andReturn(idResponse).once();
// replay
replay(managementController);
@@ -197,7 +196,7 @@ public class AbstractResourceProviderTes
nameResponse.add(new ClusterResponse(102L, "Cluster102", null, null));
// set expectations
-
expect(managementController.getClusters(anyObject(Set.class))).andReturn(nameResponse).once();
+
expect(managementController.getClusters(EasyMock.<Set<ClusterRequest>>anyObject())).andReturn(nameResponse).once();
expect(managementController.updateCluster(Matchers.clusterRequest(102L,
"Cluster102", "HDP-0.1", null))).andReturn(response).once();
expect(managementController.updateCluster(Matchers.clusterRequest(103L,
null, "HDP-0.1", null))).andReturn(response).once();
@@ -247,9 +246,6 @@ public class AbstractResourceProviderTes
AmbariManagementController managementController =
createMock(AmbariManagementController.class);
RequestStatusResponse response =
createNiceMock(RequestStatusResponse.class);
- Set<ClusterResponse> nameResponse = new HashSet<ClusterResponse>();
- nameResponse.add(new ClusterResponse(102L, "Cluster102", null, null));
-
// set expectations
managementController.deleteCluster(Matchers.clusterRequest(null,
"Cluster102", null, null));
managementController.deleteCluster(Matchers.clusterRequest(103L, null,
null, null));
@@ -293,9 +289,7 @@ public class AbstractResourceProviderTes
AmbariManagementController managementController =
createMock(AmbariManagementController.class);
RequestStatusResponse response =
createNiceMock(RequestStatusResponse.class);
-// Set<ServiceRequest> requests = new HashSet<ServiceRequest>();
-// requests.add(Matchers.serviceRequest("Cluster100", "Service100", null,
"DEPLOYED"));
- managementController.createServices(anyObject(Set.class));
+
managementController.createServices(Matchers.serviceRequestSet("Cluster100",
"Service100", null, "DEPLOYED"));
// replay
replay(managementController, response);
@@ -350,9 +344,9 @@ public class AbstractResourceProviderTes
stateResponse.add(new ServiceResponse(100L, "Cluster100", "Service104",
null, "HDP-0.1", "DEPLOYED"));
// set expectations
-
expect(managementController.getServices(anyObject(Set.class))).andReturn(allResponse).once();
-
expect(managementController.getServices(anyObject(Set.class))).andReturn(nameResponse).once();
-
expect(managementController.getServices(anyObject(Set.class))).andReturn(stateResponse).once();
+
expect(managementController.getServices(EasyMock.<Set<ServiceRequest>>anyObject())).andReturn(allResponse).once();
+
expect(managementController.getServices(EasyMock.<Set<ServiceRequest>>anyObject())).andReturn(nameResponse).once();
+
expect(managementController.getServices(EasyMock.<Set<ServiceRequest>>anyObject())).andReturn(stateResponse).once();
// replay
replay(managementController);
@@ -422,7 +416,7 @@ public class AbstractResourceProviderTes
RequestStatusResponse response =
createNiceMock(RequestStatusResponse.class);
// set expectations
-
expect(managementController.updateServices(anyObject(Set.class))).andReturn(response).once();
+
expect(managementController.updateServices(EasyMock.<Set<ServiceRequest>>anyObject())).andReturn(response).once();
// replay
replay(managementController, response);
@@ -527,9 +521,22 @@ public class AbstractResourceProviderTes
return null;
}
- public static ServiceRequest serviceRequest(String clusterName, String
serviceName, Map<String, String> configVersions, String desiredState)
+ public static Set<ServiceRequest> serviceRequestSet(String clusterName,
String serviceName, Map<String, String> configVersions, String desiredState)
+ {
+ EasyMock.reportMatcher(new ServiceRequestSetMatcher(clusterName,
serviceName, configVersions, desiredState));
+ return null;
+ }
+
+ public static Set<ServiceComponentRequest> componentRequestSet(String
clusterName, String serviceName, String componentName,
+ Map<String, String>
configVersions, String desiredState)
+ {
+ EasyMock.reportMatcher(new ComponentRequestSetMatcher(clusterName,
serviceName, componentName, configVersions, desiredState));
+ return null;
+ }
+
+ public static ConfigurationRequest configurationRequest(String
clusterName, String type, String tag, Map<String, String> configs)
{
- EasyMock.reportMatcher(new ServiceRequestMatcher(clusterName,
serviceName, configVersions, desiredState));
+ EasyMock.reportMatcher(new ConfigurationRequestMatcher(clusterName,
type, tag, configs));
return null;
}
}
@@ -562,25 +569,100 @@ public class AbstractResourceProviderTes
}
}
- public static class ServiceRequestMatcher extends ServiceRequest implements
IArgumentMatcher {
+ public static class ServiceRequestSetMatcher extends HashSet<ServiceRequest>
implements IArgumentMatcher {
+
+ private final ServiceRequest serviceRequest;
+
+ public ServiceRequestSetMatcher(String clusterName, String serviceName,
Map<String, String> configVersions, String desiredState) {
+ this.serviceRequest = new ServiceRequest(clusterName, serviceName,
configVersions, desiredState);
+ add(this.serviceRequest);
+ }
+
+ @Override
+ public boolean matches(Object o) {
+ if (!(o instanceof Set)) {
+ return false;
+ }
+
+ Set set = (Set) o;
+
+ if (set.size() != 1) {
+ return false;
+ }
+
+ Object request = set.iterator().next();
+
+ return request instanceof ServiceRequest &&
+ eq(((ServiceRequest) request).getClusterName(),
serviceRequest.getClusterName()) &&
+ eq(((ServiceRequest) request).getServiceName(),
serviceRequest.getServiceName()) &&
+ eq(((ServiceRequest) request).getConfigVersions(),
serviceRequest.getConfigVersions()) &&
+ eq(((ServiceRequest) request).getDesiredState(),
serviceRequest.getDesiredState());
+ }
+
+ @Override
+ public void appendTo(StringBuffer stringBuffer) {
+ stringBuffer.append("ServiceRequestSetMatcher(" + "" + ")");
+ }
+ }
+
+ public static class ComponentRequestSetMatcher extends
HashSet<ServiceComponentRequest> implements IArgumentMatcher {
+
+ private final ServiceComponentRequest serviceComponentRequest;
- public ServiceRequestMatcher(String clusterName, String serviceName,
Map<String, String> configVersions, String desiredState) {
- super(clusterName, serviceName, configVersions, desiredState);
+ public ComponentRequestSetMatcher(String clusterName, String serviceName,
String componentName,
+ Map<String, String> configVersions, String
desiredState) {
+ this.serviceComponentRequest = new ServiceComponentRequest(clusterName,
serviceName, componentName, configVersions, desiredState);
+ add(this.serviceComponentRequest);
}
@Override
public boolean matches(Object o) {
- return o instanceof ServiceRequest &&
- eq(((ServiceRequest) o).getClusterName(), getClusterName()) &&
- eq(((ServiceRequest) o).getServiceName(), getServiceName()) &&
- eq(((ServiceRequest) o).getConfigVersions(), getConfigVersions()) &&
- eq(((ServiceRequest) o).getDesiredState(), getDesiredState());
+ if (!(o instanceof Set)) {
+ return false;
+ }
+
+ Set set = (Set) o;
+
+ if (set.size() != 1) {
+ return false;
+ }
+
+ Object request = set.iterator().next();
+
+ return request instanceof ServiceComponentRequest &&
+ eq(((ServiceComponentRequest) request).getClusterName(),
serviceComponentRequest.getClusterName()) &&
+ eq(((ServiceComponentRequest) request).getServiceName(),
serviceComponentRequest.getServiceName()) &&
+ eq(((ServiceComponentRequest) request).getComponentName(),
serviceComponentRequest.getComponentName()) &&
+ eq(((ServiceComponentRequest) request).getConfigVersions(),
serviceComponentRequest.getConfigVersions()) &&
+ eq(((ServiceComponentRequest) request).getDesiredState(),
serviceComponentRequest.getDesiredState());
}
@Override
public void appendTo(StringBuffer stringBuffer) {
- stringBuffer.append("ClusterRequestMatcher(" + "" + ")");
+ stringBuffer.append("ComponentRequestMatcher(" + "" + ")");
+ }
+ }
+
+ public static class ConfigurationRequestMatcher extends ConfigurationRequest
implements IArgumentMatcher {
+
+ public ConfigurationRequestMatcher(String clusterName, String type, String
tag, Map<String, String> configs) {
+ super(clusterName, type, tag, configs);
+ }
+
+ @Override
+ public boolean matches(Object o) {
+ return o instanceof ConfigurationRequest &&
+ eq(((ConfigurationRequest) o).getClusterName(), getClusterName()) &&
+ eq(((ConfigurationRequest) o).getType(), getType()) &&
+ eq(((ConfigurationRequest) o).getVersionTag(), getVersionTag()) &&
+ eq(((ConfigurationRequest) o).getConfigs(), getConfigs());
+
+ }
+
+ @Override
+ public void appendTo(StringBuffer stringBuffer) {
+ stringBuffer.append("ConfigurationRequestMatcher(" + "" + ")");
}
}
@@ -597,5 +679,4 @@ public class AbstractResourceProviderTes
return lastEvent;
}
}
-
}
Added:
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=1441612&view=auto
==============================================================================
---
incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
(added)
+++
incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
Fri Feb 1 20:07:43 2013
@@ -0,0 +1,87 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ambari.server.controller.internal;
+
+import org.apache.ambari.server.controller.AmbariManagementController;
+import org.apache.ambari.server.controller.RequestStatusResponse;
+import org.apache.ambari.server.controller.ServiceComponentRequest;
+import org.apache.ambari.server.controller.ServiceComponentResponse;
+import org.apache.ambari.server.controller.spi.Predicate;
+import org.apache.ambari.server.controller.spi.Request;
+import org.apache.ambari.server.controller.spi.Resource;
+import org.apache.ambari.server.controller.spi.ResourceProvider;
+import org.apache.ambari.server.controller.utilities.PredicateBuilder;
+import org.apache.ambari.server.controller.utilities.PropertyHelper;
+import org.easymock.EasyMock;
+import org.junit.Test;
+
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Set;
+
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.createNiceMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+
+/**
+ * Tests for the component resource provider.
+ */
+public class ComponentResourceProviderTest {
+ @Test
+ public void testUpdateResources() throws Exception {
+ Resource.Type type = Resource.Type.Component;
+
+ AmbariManagementController managementController =
createMock(AmbariManagementController.class);
+ RequestStatusResponse response =
createNiceMock(RequestStatusResponse.class);
+
+ Set<ServiceComponentResponse> nameResponse = new
HashSet<ServiceComponentResponse>();
+ nameResponse.add(new ServiceComponentResponse(102L, "Cluster102",
"Service", "Component", null, "1", "STARTED"));
+
+ // set expectations
+
expect(managementController.getComponents(EasyMock.<Set<ServiceComponentRequest>>anyObject())).andReturn(nameResponse).once();
+ expect(managementController.updateComponents(
+
AbstractResourceProviderTest.Matchers.componentRequestSet("Cluster102",
"Service", "Component", null, "STARTED"))).andReturn(response).once();
+
+ // replay
+ replay(managementController, response);
+
+ ResourceProvider provider = AbstractResourceProvider.getResourceProvider(
+ type,
+ PropertyHelper.getPropertyIds(type),
+ PropertyHelper.getKeyPropertyIds(type),
+ managementController);
+
+ Map<String, Object> properties = new LinkedHashMap<String, Object>();
+
+ properties.put(ComponentResourceProvider.COMPONENT_STATE_PROPERTY_ID,
"STARTED");
+
+ // create the request
+ Request request = PropertyHelper.getUpdateRequest(properties);
+
+ // update the cluster named Cluster102
+ Predicate predicate = new
PredicateBuilder().property(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID).equals("Cluster102").toPredicate();
+ provider.updateResources(request, predicate);
+
+ // verify
+ verify(managementController, response);
+ }
+}
Added:
incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigurationResourceProviderTest.java
URL:
http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigurationResourceProviderTest.java?rev=1441612&view=auto
==============================================================================
---
incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigurationResourceProviderTest.java
(added)
+++
incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigurationResourceProviderTest.java
Fri Feb 1 20:07:43 2013
@@ -0,0 +1,78 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ambari.server.controller.internal;
+
+import org.apache.ambari.server.controller.AmbariManagementController;
+import org.apache.ambari.server.controller.RequestStatusResponse;
+import org.apache.ambari.server.controller.spi.Request;
+import org.apache.ambari.server.controller.spi.Resource;
+import org.apache.ambari.server.controller.utilities.PropertyHelper;
+import org.junit.Test;
+
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.createNiceMock;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+
+/**
+ * Tests for the configuration resource provider.
+ */
+public class ConfigurationResourceProviderTest {
+ @Test
+ public void testCreateResources() throws Exception {
+
+ AmbariManagementController managementController =
createMock(AmbariManagementController.class);
+ RequestStatusResponse response =
createNiceMock(RequestStatusResponse.class);
+
+
managementController.createConfiguration(AbstractResourceProviderTest.Matchers.configurationRequest(
+ "Cluster100", "type", "tag", new HashMap<String, String>()));
+
+ // replay
+ replay(managementController, response);
+
+ ConfigurationResourceProvider provider = new ConfigurationResourceProvider(
+ PropertyHelper.getPropertyIds(Resource.Type.Configuration ),
+ PropertyHelper.getKeyPropertyIds(Resource.Type.Configuration),
+ managementController);
+
+ Set<Map<String, Object>> propertySet = new LinkedHashSet<Map<String,
Object>>();
+
+ Map<String, Object> properties = new LinkedHashMap<String, Object>();
+
+
properties.put(ConfigurationResourceProvider.CONFIGURATION_CLUSTER_NAME_PROPERTY_ID,
"Cluster100");
+
properties.put(ConfigurationResourceProvider.CONFIGURATION_CONFIG_TAG_PROPERTY_ID,
"tag");
+
properties.put(ConfigurationResourceProvider.CONFIGURATION_CONFIG_TYPE_PROPERTY_ID,
"type");
+
+ propertySet.add(properties);
+
+ // create the request
+ Request request = PropertyHelper.getCreateRequest(propertySet);
+
+ provider.createResources(request);
+
+ // verify
+ verify(managementController, response);
+ }
+}