You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by tb...@apache.org on 2013/02/13 16:50:14 UTC
svn commit: r1445689 [1/2] - in /incubator/ambari/trunk: ./
ambari-server/src/test/java/org/apache/ambari/server/controller/internal/
Author: tbeerbower
Date: Wed Feb 13 15:50:13 2013
New Revision: 1445689
URL: http://svn.apache.org/r1445689
Log:
AMBARI-1411. Missing unit test coverage for resource providers
Added:
incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ActionResourceProviderTest.java
incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.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/HostResourceProviderTest.java
incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java
incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java
incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/TaskResourceProviderTest.java
incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserResourceProviderTest.java
Modified:
incubator/ambari/trunk/CHANGES.txt
incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractResourceProviderTest.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/ConfigurationResourceProviderTest.java
Modified: incubator/ambari/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/CHANGES.txt?rev=1445689&r1=1445688&r2=1445689&view=diff
==============================================================================
--- incubator/ambari/trunk/CHANGES.txt (original)
+++ incubator/ambari/trunk/CHANGES.txt Wed Feb 13 15:50:13 2013
@@ -269,6 +269,8 @@ Trunk (unreleased changes):
AMBARI-1260. Remove hard coded JMX port mappings. (Siddharth Wagle via
mahadev)
+ AMBARI-1411. Missing unit test coverage for resource providers. (tbeerbower)
+
BUG FIXES
AMBARI-1376. Wrong calculation of duration filter on apps page. (jaimin via
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=1445689&r1=1445688&r2=1445689&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 Wed Feb 13 15:50:13 2013
@@ -18,433 +18,37 @@
package org.apache.ambari.server.controller.internal;
-import org.apache.ambari.server.controller.*;
-import org.apache.ambari.server.controller.utilities.PredicateBuilder;
-import org.apache.ambari.server.controller.utilities.PropertyHelper;
-import org.apache.ambari.server.controller.RequestStatusResponse;
-import org.apache.ambari.server.controller.spi.Predicate;
-import org.apache.ambari.server.controller.spi.Request;
+import org.apache.ambari.server.controller.ActionRequest;
+import org.apache.ambari.server.controller.AmbariManagementController;
+import org.apache.ambari.server.controller.ClusterRequest;
+import org.apache.ambari.server.controller.ConfigurationRequest;
+import org.apache.ambari.server.controller.HostRequest;
+import org.apache.ambari.server.controller.RequestStatusRequest;
+import org.apache.ambari.server.controller.ServiceComponentHostRequest;
+import org.apache.ambari.server.controller.ServiceComponentRequest;
+import org.apache.ambari.server.controller.ServiceRequest;
+import org.apache.ambari.server.controller.TaskStatusRequest;
+import org.apache.ambari.server.controller.UserRequest;
import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.spi.ResourceProvider;
import org.easymock.EasyMock;
import org.easymock.IArgumentMatcher;
import org.junit.Assert;
import org.junit.Test;
-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;
-
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
+import static org.easymock.EasyMock.createMock;
+
/**
* Resource provider tests.
*/
public class AbstractResourceProviderTest {
@Test
- public void testCreateClusterResources() throws Exception{
- Resource.Type type = Resource.Type.Cluster;
-
- AmbariManagementController managementController = createMock(AmbariManagementController.class);
- RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
-
- managementController.createCluster(Matchers.clusterRequest(null, "Cluster100", "HDP-0.1", null));
- managementController.createCluster(Matchers.clusterRequest(99L, null, "HDP-0.1", null));
-
- // replay
- replay(managementController, response);
-
- ResourceProvider provider = AbstractResourceProvider.getResourceProvider(
- type,
- PropertyHelper.getPropertyIds(type),
- PropertyHelper.getKeyPropertyIds(type),
- managementController);
-
- TestObserver observer = new TestObserver();
-
- ((ObservableResourceProvider)provider).addObserver(observer);
-
- // add the property map to a set for the request. add more maps for multiple creates
- Set<Map<String, Object>> propertySet = new LinkedHashSet<Map<String, Object>>();
-
- // Cluster 1: create a map of properties for the request
- Map<String, Object> properties = new LinkedHashMap<String, Object>();
-
- // add the cluster name to the properties map
- properties.put(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID, "Cluster100");
-
- // add the version to the properties map
- properties.put(ClusterResourceProvider.CLUSTER_VERSION_PROPERTY_ID, "HDP-0.1");
-
- propertySet.add(properties);
-
- // Cluster 2: create a map of properties for the request
- properties = new LinkedHashMap<String, Object>();
-
- // add the cluster id to the properties map
- properties.put(ClusterResourceProvider.CLUSTER_ID_PROPERTY_ID, 99L);
-
- // add the version to the properties map
- properties.put(ClusterResourceProvider.CLUSTER_VERSION_PROPERTY_ID, "HDP-0.1");
-
- propertySet.add(properties);
-
- // create the request
- Request request = PropertyHelper.getCreateRequest(propertySet);
-
- provider.createResources(request);
-
- ResourceProviderEvent lastEvent = observer.getLastEvent();
- Assert.assertNotNull(lastEvent);
- Assert.assertEquals(Resource.Type.Cluster, lastEvent.getResourceType());
- Assert.assertEquals(ResourceProviderEvent.Type.Create, lastEvent.getType());
- Assert.assertEquals(request, lastEvent.getRequest());
- Assert.assertNull(lastEvent.getPredicate());
-
- // verify
- verify(managementController, response);
- }
-
- @Test
- public void testGetClusterResources() throws Exception{
- Resource.Type type = Resource.Type.Cluster;
-
- AmbariManagementController managementController = createMock(AmbariManagementController.class);
-
- Set<ClusterResponse> allResponse = new HashSet<ClusterResponse>();
- allResponse.add(new ClusterResponse(100L, "Cluster100", null, null));
- allResponse.add(new ClusterResponse(101L, "Cluster101", null, null));
- allResponse.add(new ClusterResponse(102L, "Cluster102", null, null));
- allResponse.add(new ClusterResponse(103L, "Cluster103", null, null));
- allResponse.add(new ClusterResponse(104L, "Cluster104", null, null));
-
- Set<ClusterResponse> nameResponse = new HashSet<ClusterResponse>();
- nameResponse.add(new ClusterResponse(102L, "Cluster102", null, null));
-
- Set<ClusterResponse> idResponse = new HashSet<ClusterResponse>();
- idResponse.add(new ClusterResponse(103L, "Cluster103", null, null));
-
- // set expectations
- 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);
-
- ResourceProvider provider = AbstractResourceProvider.getResourceProvider(
- type,
- PropertyHelper.getPropertyIds(type),
- PropertyHelper.getKeyPropertyIds(type),
- managementController);
-
- Set<String> propertyIds = new HashSet<String>();
-
- propertyIds.add(ClusterResourceProvider.CLUSTER_ID_PROPERTY_ID);
- propertyIds.add(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID);
-
- // create the request
- Request request = PropertyHelper.getReadRequest(propertyIds);
-
- // get all ... no predicate
- Set<Resource> resources = provider.getResources(request, null);
-
- Assert.assertEquals(5, resources.size());
- for (Resource resource : resources) {
- Long id = (Long) resource.getPropertyValue(ClusterResourceProvider.CLUSTER_ID_PROPERTY_ID);
- String name = (String) resource.getPropertyValue(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID);
- Assert.assertEquals(name, "Cluster" + id);
- }
-
- // get cluster named Cluster102
- Predicate predicate = new PredicateBuilder().property(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID).equals("Cluster102").toPredicate();
- resources = provider.getResources(request, predicate);
-
- Assert.assertEquals(1, resources.size());
- Assert.assertEquals(102L, resources.iterator().next().getPropertyValue(ClusterResourceProvider.CLUSTER_ID_PROPERTY_ID));
- Assert.assertEquals("Cluster102", resources.iterator().next().getPropertyValue(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID));
-
- // get cluster with id == 103
- predicate = new PredicateBuilder().property(ClusterResourceProvider.CLUSTER_ID_PROPERTY_ID).equals(103L).toPredicate();
- resources = provider.getResources(request, predicate);
-
- Assert.assertEquals(1, resources.size());
- Assert.assertEquals(103L, resources.iterator().next().getPropertyValue(ClusterResourceProvider.CLUSTER_ID_PROPERTY_ID));
- Assert.assertEquals("Cluster103", resources.iterator().next().getPropertyValue(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID));
-
- // verify
- verify(managementController);
- }
-
- @Test
- public void testUpdateClusterResources() throws Exception{
- Resource.Type type = Resource.Type.Cluster;
-
- 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
- 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();
-
- // replay
- replay(managementController, response);
-
- ResourceProvider provider = AbstractResourceProvider.getResourceProvider(
- type,
- PropertyHelper.getPropertyIds(type),
- PropertyHelper.getKeyPropertyIds(type),
- managementController);
-
- TestObserver observer = new TestObserver();
-
- ((ObservableResourceProvider)provider).addObserver(observer);
-
- Map<String, Object> properties = new LinkedHashMap<String, Object>();
-
- properties.put(ClusterResourceProvider.CLUSTER_VERSION_PROPERTY_ID, "HDP-0.1");
-
- // 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);
-
- // update the cluster where id == 103
- predicate = new PredicateBuilder().property(ClusterResourceProvider.CLUSTER_ID_PROPERTY_ID).equals(103L).toPredicate();
- provider.updateResources(request, predicate);
-
- ResourceProviderEvent lastEvent = observer.getLastEvent();
- Assert.assertNotNull(lastEvent);
- Assert.assertEquals(Resource.Type.Cluster, lastEvent.getResourceType());
- Assert.assertEquals(ResourceProviderEvent.Type.Update, lastEvent.getType());
- Assert.assertEquals(request, lastEvent.getRequest());
- Assert.assertEquals(predicate, lastEvent.getPredicate());
-
- // verify
- verify(managementController, response);
- }
-
- @Test
- public void testDeleteClusterResources() throws Exception{
- Resource.Type type = Resource.Type.Cluster;
-
- AmbariManagementController managementController = createMock(AmbariManagementController.class);
- RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
-
- // set expectations
- managementController.deleteCluster(Matchers.clusterRequest(null, "Cluster102", null, null));
- managementController.deleteCluster(Matchers.clusterRequest(103L, null, null, null));
-
- // replay
- replay(managementController, response);
-
- ResourceProvider provider = AbstractResourceProvider.getResourceProvider(
- type,
- PropertyHelper.getPropertyIds(type),
- PropertyHelper.getKeyPropertyIds(type),
- managementController);
-
- TestObserver observer = new TestObserver();
-
- ((ObservableResourceProvider)provider).addObserver(observer);
-
- // delete the cluster named Cluster102
- Predicate predicate = new PredicateBuilder().property(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID).equals("Cluster102").toPredicate();
- provider.deleteResources(predicate);
-
- // delete the cluster where id == 103
- predicate = new PredicateBuilder().property(ClusterResourceProvider.CLUSTER_ID_PROPERTY_ID).equals(103L).toPredicate();
- provider.deleteResources(predicate);
-
- ResourceProviderEvent lastEvent = observer.getLastEvent();
- Assert.assertNotNull(lastEvent);
- Assert.assertEquals(Resource.Type.Cluster, lastEvent.getResourceType());
- Assert.assertEquals(ResourceProviderEvent.Type.Delete, lastEvent.getType());
- Assert.assertEquals(predicate, lastEvent.getPredicate());
- Assert.assertNull(lastEvent.getRequest());
-
- // verify
- verify(managementController, response);
- }
-
- @Test
- public void testCreateServiceResources() throws Exception{
- Resource.Type type = Resource.Type.Service;
-
- AmbariManagementController managementController = createMock(AmbariManagementController.class);
- RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
-
- managementController.createServices(Matchers.serviceRequestSet("Cluster100", "Service100", null, "DEPLOYED"));
-
- // replay
- replay(managementController, response);
-
- ResourceProvider provider = AbstractResourceProvider.getResourceProvider(
- type,
- PropertyHelper.getPropertyIds(type),
- PropertyHelper.getKeyPropertyIds(type),
- managementController);
-
- // add the property map to a set for the request. add more maps for multiple creates
- Set<Map<String, Object>> propertySet = new LinkedHashSet<Map<String, Object>>();
-
- // Service 1: create a map of properties for the request
- Map<String, Object> properties = new LinkedHashMap<String, Object>();
-
- // add properties to the request map
- properties.put(ServiceResourceProvider.SERVICE_CLUSTER_NAME_PROPERTY_ID, "Cluster100");
- properties.put(ServiceResourceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID, "Service100");
- properties.put(ServiceResourceProvider.SERVICE_SERVICE_STATE_PROPERTY_ID, "DEPLOYED");
-
- propertySet.add(properties);
-
- // create the request
- Request request = PropertyHelper.getCreateRequest(propertySet);
-
- provider.createResources(request);
-
- // verify
- verify(managementController, response);
- }
-
- @Test
- public void testGetServiceResources() throws Exception{
- Resource.Type type = Resource.Type.Service;
-
- AmbariManagementController managementController = createMock(AmbariManagementController.class);
-
- Set<ServiceResponse> allResponse = new HashSet<ServiceResponse>();
- allResponse.add(new ServiceResponse(100L, "Cluster100", "Service100", null, "HDP-0.1", "DEPLOYED"));
- allResponse.add(new ServiceResponse(100L, "Cluster100", "Service101", null, "HDP-0.1", "DEPLOYED"));
- allResponse.add(new ServiceResponse(100L, "Cluster100", "Service102", null, "HDP-0.1", "DEPLOYED"));
- allResponse.add(new ServiceResponse(100L, "Cluster100", "Service103", null, "HDP-0.1", "DEPLOYED"));
- allResponse.add(new ServiceResponse(100L, "Cluster100", "Service104", null, "HDP-0.1", "DEPLOYED"));
-
- Set<ServiceResponse> nameResponse = new HashSet<ServiceResponse>();
- nameResponse.add(new ServiceResponse(100L, "Cluster100", "Service102", null, "HDP-0.1", "DEPLOYED"));
-
- Set<ServiceResponse> stateResponse = new HashSet<ServiceResponse>();
- stateResponse.add(new ServiceResponse(100L, "Cluster100", "Service100", null, "HDP-0.1", "DEPLOYED"));
- stateResponse.add(new ServiceResponse(100L, "Cluster100", "Service102", null, "HDP-0.1", "DEPLOYED"));
- stateResponse.add(new ServiceResponse(100L, "Cluster100", "Service104", null, "HDP-0.1", "DEPLOYED"));
-
- // set expectations
- 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);
-
- ResourceProvider provider = AbstractResourceProvider.getResourceProvider(
- type,
- PropertyHelper.getPropertyIds(type),
- PropertyHelper.getKeyPropertyIds(type),
- managementController);
-
- Set<String> propertyIds = new HashSet<String>();
-
- propertyIds.add(ServiceResourceProvider.SERVICE_CLUSTER_NAME_PROPERTY_ID);
- propertyIds.add(ServiceResourceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID);
-
- // create the request
- Request request = PropertyHelper.getReadRequest(propertyIds);
- // get all ... no predicate
- Set<Resource> resources = provider.getResources(request, null);
-
- Assert.assertEquals(5, resources.size());
- Set<String> names = new HashSet<String>();
- for (Resource resource : resources) {
- String clusterName = (String) resource.getPropertyValue(ServiceResourceProvider.SERVICE_CLUSTER_NAME_PROPERTY_ID);
- Assert.assertEquals("Cluster100", clusterName);
- names.add((String) resource.getPropertyValue(ServiceResourceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID));
- }
- // Make sure that all of the response objects got moved into resources
- for (ServiceResponse serviceResponse : allResponse ) {
- Assert.assertTrue(names.contains(serviceResponse.getServiceName()));
- }
-
- // get service named Service102
- Predicate predicate = new PredicateBuilder().property(ServiceResourceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID).equals("Service102").toPredicate();
- request = PropertyHelper.getReadRequest("ServiceInfo");
- resources = provider.getResources(request, predicate);
-
- Assert.assertEquals(1, resources.size());
- Assert.assertEquals("Service102", resources.iterator().next().getPropertyValue(ServiceResourceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID));
-
- // get services where state == "DEPLOYED"
- predicate = new PredicateBuilder().property(ServiceResourceProvider.SERVICE_SERVICE_STATE_PROPERTY_ID).equals("DEPLOYED").toPredicate();
- request = PropertyHelper.getReadRequest(propertyIds);
- resources = provider.getResources(request, predicate);
-
- Assert.assertEquals(3, resources.size());
- names = new HashSet<String>();
- for (Resource resource : resources) {
- String clusterName = (String) resource.getPropertyValue(ServiceResourceProvider.SERVICE_CLUSTER_NAME_PROPERTY_ID);
- Assert.assertEquals("Cluster100", clusterName);
- names.add((String) resource.getPropertyValue(ServiceResourceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID));
- }
- // Make sure that all of the response objects got moved into resources
- for (ServiceResponse serviceResponse : stateResponse ) {
- Assert.assertTrue(names.contains(serviceResponse.getServiceName()));
- }
-
- // verify
- verify(managementController);
- }
-
- @Test
- public void testUpdateServiceResources() throws Exception{
- Resource.Type type = Resource.Type.Service;
-
- AmbariManagementController managementController = createMock(AmbariManagementController.class);
- RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
-
- // set expectations
- expect(managementController.updateServices(EasyMock.<Set<ServiceRequest>>anyObject())).andReturn(response).once();
-
- // replay
- replay(managementController, response);
-
- ResourceProvider provider = AbstractResourceProvider.getResourceProvider(
- type,
- PropertyHelper.getPropertyIds(type),
- PropertyHelper.getKeyPropertyIds(type),
- managementController);
-
- // add the property map to a set for the request.
- Map<String, Object> properties = new LinkedHashMap<String, Object>();
-
- properties.put(ServiceResourceProvider.SERVICE_SERVICE_STATE_PROPERTY_ID, "DEPLOYED");
-
- // create the request
- Request request = PropertyHelper.getUpdateRequest(properties);
-
- // update the service named Service102
- Predicate predicate = new PredicateBuilder().property(ServiceResourceProvider.SERVICE_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").
- and().property(ServiceResourceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID).equals("Service102").toPredicate();
- provider.updateResources(request, predicate);
-
- // verify
- verify(managementController, response);
- }
-
- @Test
public void testCheckPropertyIds() {
Set<String> propertyIds = new HashSet<String>();
propertyIds.add("foo");
@@ -513,41 +117,108 @@ public class AbstractResourceProviderTes
// ----- helper methods ----------------------------------------------------
- public static class Matchers
+ /**
+ * Equals check that accounts for nulls.
+ *
+ * @param left the left object
+ * @param right the right object
+ *
+ * @return true if the left and right object are equal or both null
+ */
+ private static boolean eq(Object left, Object right) {
+ return left == null ? right == null : right != null && left.equals(right);
+ }
+
+
+ // ----- inner classes -----------------------------------------------------
+
+ /**
+ * Utility class for getting various AmbariManagmentController request related matchers.
+ */
+ public static class Matcher
{
- public static ClusterRequest clusterRequest(Long clusterId, String clusterName, String stackVersion, Set<String> hostNames)
+ public static ClusterRequest getClusterRequest(
+ Long clusterId, String clusterName, String stackVersion, Set<String> hostNames)
{
EasyMock.reportMatcher(new ClusterRequestMatcher(clusterId, clusterName, stackVersion, hostNames));
return null;
}
- public static Set<ServiceRequest> serviceRequestSet(String clusterName, String serviceName, Map<String, String> configVersions, String desiredState)
+ public static ConfigurationRequest getConfigurationRequest(
+ String clusterName, String type, String tag, Map<String, String> configs)
{
- EasyMock.reportMatcher(new ServiceRequestSetMatcher(clusterName, serviceName, configVersions, desiredState));
+ EasyMock.reportMatcher(new ConfigurationRequestMatcher(clusterName, type, tag, configs));
return null;
}
- public static Set<ServiceComponentRequest> componentRequestSet(String clusterName, String serviceName, String componentName,
- Map<String, String> configVersions, String desiredState)
+ public static RequestStatusRequest getRequestRequest(Long requestId)
{
- EasyMock.reportMatcher(new ComponentRequestSetMatcher(clusterName, serviceName, componentName, configVersions, desiredState));
+ EasyMock.reportMatcher(new RequestRequestMatcher(requestId));
return null;
}
- public static ConfigurationRequest configurationRequest(String clusterName, String type, String tag, Map<String, String> configs)
+ public static Set<ActionRequest> getActionRequestSet(String clusterName, String serviceName, String actionName)
{
- EasyMock.reportMatcher(new ConfigurationRequestMatcher(clusterName, type, tag, configs));
+ EasyMock.reportMatcher(new ActionRequestSetMatcher(clusterName, serviceName, actionName));
return null;
}
- }
- public static boolean eq(Object left, Object right) {
- return left == null ? right == null : right != null && left.equals(right);
- }
+ public static Set<ServiceComponentRequest> getComponentRequestSet(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 Set<ConfigurationRequest> getConfigurationRequestSet(String clusterName, String type,
+ String tag, Map<String, String> configs)
+ {
+ EasyMock.reportMatcher(new ConfigurationRequestSetMatcher(clusterName, type, tag, configs));
+ return null;
+ }
- // ----- inner classes -----------------------------------------------------
+ public static Set<HostRequest> getHostRequestSet(String hostname, String clusterName,
+ Map<String, String> hostAttributes)
+ {
+ EasyMock.reportMatcher(new HostRequestSetMatcher(hostname, clusterName, hostAttributes));
+ return null;
+ }
+ public static Set<ServiceComponentHostRequest> getHostComponentRequestSet(
+ String clusterName, String serviceName, String componentName, String hostName,
+ Map<String, String> configVersions, String desiredState)
+ {
+ EasyMock.reportMatcher(new HostComponentRequestSetMatcher(
+ clusterName, serviceName, componentName, hostName, configVersions, desiredState));
+ return null;
+ }
+
+ public static Set<ServiceRequest> getServiceRequestSet(String clusterName, String serviceName,
+ Map<String, String> configVersions, String desiredState)
+ {
+ EasyMock.reportMatcher(new ServiceRequestSetMatcher(clusterName, serviceName, configVersions, desiredState));
+ return null;
+ }
+
+ public static Set<TaskStatusRequest> getTaskRequestSet(Long requestId, Long taskId)
+ {
+ EasyMock.reportMatcher(new TaskRequestSetMatcher(requestId, taskId));
+ return null;
+ }
+
+ public static Set<UserRequest> getUserRequestSet(String name)
+ {
+ EasyMock.reportMatcher(new UserRequestSetMatcher(name));
+ return null;
+ }
+ }
+
+ /**
+ * Matcher for a ClusterRequest.
+ */
public static class ClusterRequestMatcher extends ClusterRequest implements IArgumentMatcher {
public ClusterRequestMatcher(Long clusterId, String clusterName, String stackVersion, Set<String> hostNames) {
@@ -565,17 +236,67 @@ public class AbstractResourceProviderTes
@Override
public void appendTo(StringBuffer stringBuffer) {
- stringBuffer.append("ClusterRequestMatcher(" + "" + ")");
+ stringBuffer.append("ClusterRequestMatcher(" + super.toString() + ")");
}
}
- public static class ServiceRequestSetMatcher extends HashSet<ServiceRequest> implements IArgumentMatcher {
+ /**
+ * Matcher for a ConfigurationRequest.
+ */
+ public static class ConfigurationRequestMatcher extends ConfigurationRequest implements IArgumentMatcher {
- private final ServiceRequest serviceRequest;
+ 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());
- 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 void appendTo(StringBuffer stringBuffer) {
+ stringBuffer.append("ConfigurationRequestMatcher(" + super.toString() + ")");
+ }
+ }
+
+ /**
+ * Matcher for a RequestStatusRequest.
+ */
+ public static class RequestRequestMatcher extends RequestStatusRequest implements IArgumentMatcher {
+
+ public RequestRequestMatcher(Long requestId) {
+ super(requestId, "");
+ }
+
+ @Override
+ public boolean matches(Object o) {
+
+ return o instanceof RequestStatusRequest &&
+ eq(((RequestStatusRequest) o).getRequestId(), getRequestId());
+ }
+
+ @Override
+ public void appendTo(StringBuffer stringBuffer) {
+ stringBuffer.append("RequestRequestMatcher(" + super.toString() + ")");
+ }
+ }
+
+ /**
+ * Matcher for a ActionRequest set containing a single request.
+ */
+ public static class ActionRequestSetMatcher extends HashSet<ActionRequest> implements IArgumentMatcher {
+
+ private final ActionRequest actionRequest;
+
+ public ActionRequestSetMatcher(String clusterName, String serviceName, String actionName) {
+ this.actionRequest = new ActionRequest(clusterName, serviceName, actionName, null);
+ add(this.actionRequest);
}
@Override
@@ -592,26 +313,29 @@ public class AbstractResourceProviderTes
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());
+ return request instanceof ActionRequest &&
+ eq(((ActionRequest) request).getClusterName(), actionRequest.getClusterName()) &&
+ eq(((ActionRequest) request).getServiceName(), actionRequest.getServiceName()) &&
+ eq(((ActionRequest) request).getActionName(), actionRequest.getActionName());
}
@Override
public void appendTo(StringBuffer stringBuffer) {
- stringBuffer.append("ServiceRequestSetMatcher(" + "" + ")");
+ stringBuffer.append("ActionRequestSetMatcher(" + actionRequest + ")");
}
}
+ /**
+ * Matcher for a ServiceComponentRequest set containing a single request.
+ */
public static class ComponentRequestSetMatcher extends HashSet<ServiceComponentRequest> implements IArgumentMatcher {
private final ServiceComponentRequest serviceComponentRequest;
public ComponentRequestSetMatcher(String clusterName, String serviceName, String componentName,
Map<String, String> configVersions, String desiredState) {
- this.serviceComponentRequest = new ServiceComponentRequest(clusterName, serviceName, componentName, configVersions, desiredState);
+ this.serviceComponentRequest =
+ new ServiceComponentRequest(clusterName, serviceName, componentName, configVersions, desiredState);
add(this.serviceComponentRequest);
}
@@ -640,33 +364,252 @@ public class AbstractResourceProviderTes
@Override
public void appendTo(StringBuffer stringBuffer) {
- stringBuffer.append("ComponentRequestMatcher(" + "" + ")");
+ stringBuffer.append("ComponentRequestSetMatcher(" + serviceComponentRequest + ")");
}
}
- public static class ConfigurationRequestMatcher extends ConfigurationRequest implements IArgumentMatcher {
+ /**
+ * Matcher for a ConfigurationRequest set containing a single request.
+ */
+ public static class ConfigurationRequestSetMatcher extends HashSet<ConfigurationRequest> implements IArgumentMatcher {
- public ConfigurationRequestMatcher(String clusterName, String type, String tag, Map<String, String> configs) {
- super(clusterName, type, tag, configs);
+ private final ConfigurationRequest configurationRequest;
+
+ public ConfigurationRequestSetMatcher(String clusterName, String type, String tag, Map<String, String> configs) {
+ this.configurationRequest = new ConfigurationRequest(clusterName, type, tag, configs);
+ add(this.configurationRequest);
}
@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());
+ if (!(o instanceof Set)) {
+ return false;
+ }
+
+ Set set = (Set) o;
+
+ if (set.size() != 1) {
+ return false;
+ }
+
+ Object request = set.iterator().next();
+
+ return request instanceof ConfigurationRequest &&
+ eq(((ConfigurationRequest) request).getClusterName(), configurationRequest.getClusterName()) &&
+ eq(((ConfigurationRequest) request).getType(), configurationRequest.getType()) &&
+ eq(((ConfigurationRequest) request).getVersionTag(), configurationRequest.getVersionTag()) &&
+ eq(((ConfigurationRequest) request).getConfigs(), configurationRequest.getConfigs());
+ }
+
+ @Override
+ public void appendTo(StringBuffer stringBuffer) {
+ stringBuffer.append("ConfigurationRequestSetMatcher(" + configurationRequest + ")");
+ }
+ }
+
+ /**
+ * Matcher for a HostRequest set containing a single request.
+ */
+ public static class HostRequestSetMatcher extends HashSet<HostRequest> implements IArgumentMatcher {
+
+ private final HostRequest hostRequest;
+
+ public HostRequestSetMatcher(String hostname, String clusterName, Map<String, String> hostAttributes) {
+ this.hostRequest = new HostRequest(hostname, clusterName, hostAttributes);
+ add(this.hostRequest);
+ }
+
+ @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 HostRequest &&
+ eq(((HostRequest) request).getClusterName(), hostRequest.getClusterName()) &&
+ eq(((HostRequest) request).getHostname(), hostRequest.getHostname()) &&
+ eq(((HostRequest) request).getHostAttributes(), hostRequest.getHostAttributes());
+ }
+
+ @Override
+ public void appendTo(StringBuffer stringBuffer) {
+ stringBuffer.append("HostRequestSetMatcher(" + hostRequest + ")");
+ }
+ }
+
+ /**
+ * Matcher for a ServiceComponentHostRequest set containing a single request.
+ */
+ public static class HostComponentRequestSetMatcher extends HashSet<ServiceComponentHostRequest>
+ implements IArgumentMatcher {
+
+ private final ServiceComponentHostRequest hostComponentRequest;
+
+ public HostComponentRequestSetMatcher(String clusterName, String serviceName, String componentName, String hostName,
+ Map<String, String> configVersions, String desiredState) {
+ this.hostComponentRequest =
+ new ServiceComponentHostRequest(clusterName, serviceName, componentName,
+ hostName, configVersions, desiredState);
+ add(this.hostComponentRequest);
+ }
+
+ @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 ServiceComponentHostRequest &&
+ eq(((ServiceComponentHostRequest) request).getClusterName(), hostComponentRequest.getClusterName()) &&
+ eq(((ServiceComponentHostRequest) request).getServiceName(), hostComponentRequest.getServiceName()) &&
+ eq(((ServiceComponentHostRequest) request).getComponentName(), hostComponentRequest.getComponentName()) &&
+ eq(((ServiceComponentHostRequest) request).getHostname(), hostComponentRequest.getHostname()) &&
+ eq(((ServiceComponentHostRequest) request).getConfigVersions(), hostComponentRequest.getConfigVersions()) &&
+ eq(((ServiceComponentHostRequest) request).getDesiredState(), hostComponentRequest.getDesiredState());
+ }
+
+ @Override
+ public void appendTo(StringBuffer stringBuffer) {
+ stringBuffer.append("HostComponentRequestSetMatcher(" + hostComponentRequest + ")");
+ }
+ }
+
+ /**
+ * Matcher for a ServiceRequest set containing a single request.
+ */
+ 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(" + serviceRequest + ")");
+ }
+ }
+
+ /**
+ * Matcher for a TaskStatusRequest set containing a single request.
+ */
+ public static class TaskRequestSetMatcher extends HashSet<TaskStatusRequest> implements IArgumentMatcher {
+
+ private final TaskStatusRequest taskStatusRequest;
+
+ public TaskRequestSetMatcher(Long requestId, Long taskId) {
+ this.taskStatusRequest = new TaskStatusRequest(requestId, taskId);
+ add(this.taskStatusRequest);
+ }
+
+ @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 TaskStatusRequest &&
+ eq(((TaskStatusRequest) request).getRequestId(), taskStatusRequest.getRequestId());
+ }
+
+ @Override
+ public void appendTo(StringBuffer stringBuffer) {
+ stringBuffer.append("TaskRequestSetMatcher(" + taskStatusRequest + ")");
+ }
+ }
+
+ /**
+ * Matcher for a UserRequest set containing a single request.
+ */
+ public static class UserRequestSetMatcher extends HashSet<UserRequest> implements IArgumentMatcher {
+
+ private final UserRequest userRequest;
+
+ public UserRequestSetMatcher(String name) {
+ this.userRequest = new UserRequest(name);
+ add(this.userRequest);
+ }
+
+ @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 UserRequest &&
+ eq(((UserRequest) request).getUsername(), userRequest.getUsername());
}
@Override
public void appendTo(StringBuffer stringBuffer) {
- stringBuffer.append("ConfigurationRequestMatcher(" + "" + ")");
+ stringBuffer.append("UserRequestSetMatcher(" + userRequest + ")");
}
}
- public class TestObserver implements ResourceProviderObserver {
+ /**
+ * A test observer that records the last event.
+ */
+ public static class TestObserver implements ResourceProviderObserver {
ResourceProviderEvent lastEvent = null;
Added: incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ActionResourceProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ActionResourceProviderTest.java?rev=1445689&view=auto
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ActionResourceProviderTest.java (added)
+++ incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ActionResourceProviderTest.java Wed Feb 13 15:50:13 2013
@@ -0,0 +1,237 @@
+/**
+ * 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.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.junit.Assert;
+import org.junit.Test;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+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.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+
+/**
+ * ActionResourceProvider tests.
+ */
+public class ActionResourceProviderTest {
+ @Test
+ public void testCreateResources() throws Exception {
+ Resource.Type type = Resource.Type.Action;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+ RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
+
+ expect(managementController.createActions(AbstractResourceProviderTest.Matcher.getActionRequestSet(
+ "Cluster100", "Service100", "Action100"))).andReturn(response);
+
+ // replay
+ replay(managementController, response);
+
+ ResourceProvider provider = AbstractResourceProvider.getResourceProvider(
+ type,
+ PropertyHelper.getPropertyIds(type),
+ PropertyHelper.getKeyPropertyIds(type),
+ managementController);
+
+ // add the property map to a set for the request. add more maps for multiple creates
+ Set<Map<String, Object>> propertySet = new LinkedHashSet<Map<String, Object>>();
+
+ // Service 1: create a map of properties for the request
+ Map<String, Object> properties = new LinkedHashMap<String, Object>();
+
+ // add properties to the request map
+ properties.put(ActionResourceProvider.ACTION_CLUSTER_NAME_PROPERTY_ID, "Cluster100");
+ properties.put(ActionResourceProvider.ACTION_SERVICE_NAME_PROPERTY_ID, "Service100");
+ properties.put(ActionResourceProvider.ACTION_ACTION_NAME_PROPERTY_ID, "Action100");
+
+ propertySet.add(properties);
+
+ // create the request
+ Request request = PropertyHelper.getCreateRequest(propertySet);
+
+ provider.createResources(request);
+
+ // verify
+ verify(managementController, response);
+ }
+
+ @Test
+ public void testGetResources() throws Exception {
+ Resource.Type type = Resource.Type.Action;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+
+ // replay
+ replay(managementController);
+
+ ResourceProvider provider = AbstractResourceProvider.getResourceProvider(
+ type,
+ PropertyHelper.getPropertyIds(type),
+ PropertyHelper.getKeyPropertyIds(type),
+ managementController);
+
+ Set<String> propertyIds = new HashSet<String>();
+
+ propertyIds.add(ActionResourceProvider.ACTION_CLUSTER_NAME_PROPERTY_ID);
+ propertyIds.add(ActionResourceProvider.ACTION_SERVICE_NAME_PROPERTY_ID);
+ propertyIds.add(ActionResourceProvider.ACTION_ACTION_NAME_PROPERTY_ID);
+
+ // create the request
+ Request request = PropertyHelper.getReadRequest(propertyIds);
+
+ // get all ... no predicate
+ try {
+ provider.getResources(request, null);
+ Assert.fail("Expected an UnsupportedOperationException");
+ } catch (UnsupportedOperationException e) {
+ // expected
+ }
+
+ // verify
+ verify(managementController);
+ }
+
+
+ @Test
+ public void testUpdateResources() throws Exception {
+ Resource.Type type = Resource.Type.Action;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+ RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
+
+ // replay
+ replay(managementController, response);
+
+ ResourceProvider provider = AbstractResourceProvider.getResourceProvider(
+ type,
+ PropertyHelper.getPropertyIds(type),
+ PropertyHelper.getKeyPropertyIds(type),
+ managementController);
+
+ // add the property map to a set for the request.
+ Map<String, Object> properties = new LinkedHashMap<String, Object>();
+
+ // create the request
+ Request request = PropertyHelper.getUpdateRequest(properties);
+
+ Predicate predicate =
+ new PredicateBuilder().property(ActionResourceProvider.ACTION_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").
+ and().property(ActionResourceProvider.ACTION_SERVICE_NAME_PROPERTY_ID).equals("Service102").
+ and().property(ActionResourceProvider.ACTION_ACTION_NAME_PROPERTY_ID).equals("Action100").toPredicate();
+ try {
+ provider.updateResources(request, predicate);
+ Assert.fail("Expected an UnsupportedOperationException");
+ } catch (UnsupportedOperationException e) {
+ // expected
+ }
+
+ // verify
+ verify(managementController, response);
+ }
+
+ @Test
+ public void testDeleteResources() throws Exception {
+ Resource.Type type = Resource.Type.Action;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+ RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
+
+ // replay
+ replay(managementController, response);
+
+ ResourceProvider provider = AbstractResourceProvider.getResourceProvider(
+ type,
+ PropertyHelper.getPropertyIds(type),
+ PropertyHelper.getKeyPropertyIds(type),
+ managementController);
+
+ Predicate predicate =
+ new PredicateBuilder().property(ActionResourceProvider.ACTION_ACTION_NAME_PROPERTY_ID).equals("Action100").
+ toPredicate();
+ try {
+ provider.deleteResources(predicate);
+ Assert.fail("Expected an UnsupportedOperationException");
+ } catch (UnsupportedOperationException e) {
+ // expected
+ }
+
+ // verify
+ verify(managementController, response);
+ }
+
+ @Test
+ public void testCheckPropertyIds() throws Exception {
+ Set<String> propertyIds = new HashSet<String>();
+ propertyIds.add("foo");
+ propertyIds.add("cat1/foo");
+ propertyIds.add("cat2/bar");
+ propertyIds.add("cat2/baz");
+ propertyIds.add("cat3/sub1/bam");
+ propertyIds.add("cat4/sub2/sub3/bat");
+ propertyIds.add("cat5/subcat5/map");
+
+ Map<Resource.Type, String> keyPropertyIds = new HashMap<Resource.Type, String>();
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+
+ AbstractResourceProvider provider =
+ (AbstractResourceProvider) AbstractResourceProvider.getResourceProvider(
+ Resource.Type.Action,
+ propertyIds,
+ keyPropertyIds,
+ managementController);
+
+ Set<String> unsupported = provider.checkPropertyIds(Collections.singleton("foo"));
+ Assert.assertTrue(unsupported.isEmpty());
+
+ // note that key is not in the set of known property ids. We allow it if its parent is a known property.
+ // this allows for Map type properties where we want to treat the entries as individual properties
+ Assert.assertTrue(provider.checkPropertyIds(Collections.singleton("cat5/subcat5/map/key")).isEmpty());
+
+ unsupported = provider.checkPropertyIds(Collections.singleton("bar"));
+ Assert.assertEquals(1, unsupported.size());
+ Assert.assertTrue(unsupported.contains("bar"));
+
+ unsupported = provider.checkPropertyIds(Collections.singleton("cat1/foo"));
+ Assert.assertTrue(unsupported.isEmpty());
+
+ unsupported = provider.checkPropertyIds(Collections.singleton("cat1"));
+ Assert.assertTrue(unsupported.isEmpty());
+
+ unsupported = provider.checkPropertyIds(Collections.singleton("parameters/unknown_property"));
+ Assert.assertTrue(unsupported.isEmpty());
+ }
+}
Added: incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java?rev=1445689&view=auto
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java (added)
+++ incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java Wed Feb 13 15:50:13 2013
@@ -0,0 +1,301 @@
+/**
+ * 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.ClusterRequest;
+import org.apache.ambari.server.controller.ClusterResponse;
+import org.apache.ambari.server.controller.RequestStatusResponse;
+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.Assert;
+import org.junit.Test;
+
+import java.util.HashSet;
+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.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+
+/**
+ * ClusterResourceProvider tests.
+ */
+public class ClusterResourceProviderTest {
+ @Test
+ public void testCreateResources() throws Exception{
+ Resource.Type type = Resource.Type.Cluster;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+ RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
+
+ managementController.createCluster(
+ AbstractResourceProviderTest.Matcher.getClusterRequest(null, "Cluster100", "HDP-0.1", null));
+ managementController.createCluster(
+ AbstractResourceProviderTest.Matcher.getClusterRequest(99L, null, "HDP-0.1", null));
+
+ // replay
+ replay(managementController, response);
+
+ ResourceProvider provider = AbstractResourceProvider.getResourceProvider(
+ type,
+ PropertyHelper.getPropertyIds(type),
+ PropertyHelper.getKeyPropertyIds(type),
+ managementController);
+
+ AbstractResourceProviderTest.TestObserver observer = new AbstractResourceProviderTest.TestObserver();
+
+ ((ObservableResourceProvider)provider).addObserver(observer);
+
+ // add the property map to a set for the request. add more maps for multiple creates
+ Set<Map<String, Object>> propertySet = new LinkedHashSet<Map<String, Object>>();
+
+ // Cluster 1: create a map of properties for the request
+ Map<String, Object> properties = new LinkedHashMap<String, Object>();
+
+ // add the cluster name to the properties map
+ properties.put(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID, "Cluster100");
+
+ // add the version to the properties map
+ properties.put(ClusterResourceProvider.CLUSTER_VERSION_PROPERTY_ID, "HDP-0.1");
+
+ propertySet.add(properties);
+
+ // Cluster 2: create a map of properties for the request
+ properties = new LinkedHashMap<String, Object>();
+
+ // add the cluster id to the properties map
+ properties.put(ClusterResourceProvider.CLUSTER_ID_PROPERTY_ID, 99L);
+
+ // add the version to the properties map
+ properties.put(ClusterResourceProvider.CLUSTER_VERSION_PROPERTY_ID, "HDP-0.1");
+
+ propertySet.add(properties);
+
+ // create the request
+ Request request = PropertyHelper.getCreateRequest(propertySet);
+
+ provider.createResources(request);
+
+ ResourceProviderEvent lastEvent = observer.getLastEvent();
+ Assert.assertNotNull(lastEvent);
+ Assert.assertEquals(Resource.Type.Cluster, lastEvent.getResourceType());
+ Assert.assertEquals(ResourceProviderEvent.Type.Create, lastEvent.getType());
+ Assert.assertEquals(request, lastEvent.getRequest());
+ Assert.assertNull(lastEvent.getPredicate());
+
+ // verify
+ verify(managementController, response);
+ }
+
+ @Test
+ public void testGetResources() throws Exception{
+ Resource.Type type = Resource.Type.Cluster;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+
+ Set<ClusterResponse> allResponse = new HashSet<ClusterResponse>();
+ allResponse.add(new ClusterResponse(100L, "Cluster100", null, null));
+ allResponse.add(new ClusterResponse(101L, "Cluster101", null, null));
+ allResponse.add(new ClusterResponse(102L, "Cluster102", null, null));
+ allResponse.add(new ClusterResponse(103L, "Cluster103", null, null));
+ allResponse.add(new ClusterResponse(104L, "Cluster104", null, null));
+
+ Set<ClusterResponse> nameResponse = new HashSet<ClusterResponse>();
+ nameResponse.add(new ClusterResponse(102L, "Cluster102", null, null));
+
+ Set<ClusterResponse> idResponse = new HashSet<ClusterResponse>();
+ idResponse.add(new ClusterResponse(103L, "Cluster103", null, null));
+
+ // set expectations
+ 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);
+
+ ResourceProvider provider = AbstractResourceProvider.getResourceProvider(
+ type,
+ PropertyHelper.getPropertyIds(type),
+ PropertyHelper.getKeyPropertyIds(type),
+ managementController);
+
+ Set<String> propertyIds = new HashSet<String>();
+
+ propertyIds.add(ClusterResourceProvider.CLUSTER_ID_PROPERTY_ID);
+ propertyIds.add(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID);
+
+ // create the request
+ Request request = PropertyHelper.getReadRequest(propertyIds);
+
+ // get all ... no predicate
+ Set<Resource> resources = provider.getResources(request, null);
+
+ Assert.assertEquals(5, resources.size());
+ for (Resource resource : resources) {
+ Long id = (Long) resource.getPropertyValue(ClusterResourceProvider.CLUSTER_ID_PROPERTY_ID);
+ String name = (String) resource.getPropertyValue(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID);
+ Assert.assertEquals(name, "Cluster" + id);
+ }
+
+ // get cluster named Cluster102
+ Predicate predicate =
+ new PredicateBuilder().property(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID).equals("Cluster102").
+ toPredicate();
+ resources = provider.getResources(request, predicate);
+
+ Assert.assertEquals(1, resources.size());
+ Assert.assertEquals(102L, resources.iterator().next().
+ getPropertyValue(ClusterResourceProvider.CLUSTER_ID_PROPERTY_ID));
+ Assert.assertEquals("Cluster102", resources.iterator().next().
+ getPropertyValue(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID));
+
+ // get cluster with id == 103
+ predicate =
+ new PredicateBuilder().property(ClusterResourceProvider.CLUSTER_ID_PROPERTY_ID).equals(103L).toPredicate();
+ resources = provider.getResources(request, predicate);
+
+ Assert.assertEquals(1, resources.size());
+ Assert.assertEquals(103L, resources.iterator().next().
+ getPropertyValue(ClusterResourceProvider.CLUSTER_ID_PROPERTY_ID));
+ Assert.assertEquals("Cluster103", resources.iterator().next().
+ getPropertyValue(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID));
+
+ // verify
+ verify(managementController);
+ }
+
+ @Test
+ public void testUpdateResources() throws Exception{
+ Resource.Type type = Resource.Type.Cluster;
+
+ 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
+ expect(managementController.getClusters(EasyMock.<Set<ClusterRequest>>anyObject())).andReturn(nameResponse).once();
+ expect(managementController.updateCluster(
+ AbstractResourceProviderTest.Matcher.getClusterRequest(102L, "Cluster102", "HDP-0.1", null))).
+ andReturn(response).once();
+ expect(managementController.updateCluster(
+ AbstractResourceProviderTest.Matcher.getClusterRequest(103L, null, "HDP-0.1", null))).
+ andReturn(response).once();
+
+ // replay
+ replay(managementController, response);
+
+ ResourceProvider provider = AbstractResourceProvider.getResourceProvider(
+ type,
+ PropertyHelper.getPropertyIds(type),
+ PropertyHelper.getKeyPropertyIds(type),
+ managementController);
+
+ AbstractResourceProviderTest.TestObserver observer = new AbstractResourceProviderTest.TestObserver();
+
+ ((ObservableResourceProvider)provider).addObserver(observer);
+
+ Map<String, Object> properties = new LinkedHashMap<String, Object>();
+
+ properties.put(ClusterResourceProvider.CLUSTER_VERSION_PROPERTY_ID, "HDP-0.1");
+
+ // 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);
+
+ // update the cluster where id == 103
+ predicate = new PredicateBuilder().property(
+ ClusterResourceProvider.CLUSTER_ID_PROPERTY_ID).equals(103L).toPredicate();
+ provider.updateResources(request, predicate);
+
+ ResourceProviderEvent lastEvent = observer.getLastEvent();
+ Assert.assertNotNull(lastEvent);
+ Assert.assertEquals(Resource.Type.Cluster, lastEvent.getResourceType());
+ Assert.assertEquals(ResourceProviderEvent.Type.Update, lastEvent.getType());
+ Assert.assertEquals(request, lastEvent.getRequest());
+ Assert.assertEquals(predicate, lastEvent.getPredicate());
+
+ // verify
+ verify(managementController, response);
+ }
+
+ @Test
+ public void testDeleteResources() throws Exception{
+ Resource.Type type = Resource.Type.Cluster;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+ RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
+
+ // set expectations
+ managementController.deleteCluster(
+ AbstractResourceProviderTest.Matcher.getClusterRequest(null, "Cluster102", null, null));
+ managementController.deleteCluster(
+ AbstractResourceProviderTest.Matcher.getClusterRequest(103L, null, null, null));
+
+ // replay
+ replay(managementController, response);
+
+ ResourceProvider provider = AbstractResourceProvider.getResourceProvider(
+ type,
+ PropertyHelper.getPropertyIds(type),
+ PropertyHelper.getKeyPropertyIds(type),
+ managementController);
+
+ AbstractResourceProviderTest.TestObserver observer = new AbstractResourceProviderTest.TestObserver();
+
+ ((ObservableResourceProvider)provider).addObserver(observer);
+
+ // delete the cluster named Cluster102
+ Predicate predicate = new PredicateBuilder().property(
+ ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID).equals("Cluster102").toPredicate();
+ provider.deleteResources(predicate);
+
+ // delete the cluster where id == 103
+ predicate = new PredicateBuilder().property(
+ ClusterResourceProvider.CLUSTER_ID_PROPERTY_ID).equals(103L).toPredicate();
+ provider.deleteResources(predicate);
+
+ ResourceProviderEvent lastEvent = observer.getLastEvent();
+ Assert.assertNotNull(lastEvent);
+ Assert.assertEquals(Resource.Type.Cluster, lastEvent.getResourceType());
+ Assert.assertEquals(ResourceProviderEvent.Type.Delete, lastEvent.getType());
+ Assert.assertEquals(predicate, lastEvent.getPredicate());
+ Assert.assertNull(lastEvent.getRequest());
+
+ // verify
+ verify(managementController, response);
+ }
+}
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=1445689&r1=1445688&r2=1445689&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 Wed Feb 13 15:50:13 2013
@@ -29,10 +29,12 @@ import org.apache.ambari.server.controll
import org.apache.ambari.server.controller.utilities.PredicateBuilder;
import org.apache.ambari.server.controller.utilities.PropertyHelper;
import org.easymock.EasyMock;
+import org.junit.Assert;
import org.junit.Test;
import java.util.HashSet;
import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
@@ -47,6 +49,100 @@ import static org.easymock.EasyMock.veri
*/
public class ComponentResourceProviderTest {
@Test
+ public void testCreateResources() throws Exception {
+ Resource.Type type = Resource.Type.Component;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+ RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
+
+ managementController.createComponents(
+ AbstractResourceProviderTest.Matcher.getComponentRequestSet(
+ "Cluster100", "Service100", "Component100", null, null));
+
+ // replay
+ replay(managementController, response);
+
+ ResourceProvider provider = AbstractResourceProvider.getResourceProvider(
+ type,
+ PropertyHelper.getPropertyIds(type),
+ PropertyHelper.getKeyPropertyIds(type),
+ managementController);
+
+ // add the property map to a set for the request. add more maps for multiple creates
+ Set<Map<String, Object>> propertySet = new LinkedHashSet<Map<String, Object>>();
+
+ // Service 1: create a map of properties for the request
+ Map<String, Object> properties = new LinkedHashMap<String, Object>();
+
+ // add properties to the request map
+ properties.put(ComponentResourceProvider.COMPONENT_CLUSTER_NAME_PROPERTY_ID, "Cluster100");
+ properties.put(ComponentResourceProvider.COMPONENT_SERVICE_NAME_PROPERTY_ID, "Service100");
+ properties.put(ComponentResourceProvider.COMPONENT_COMPONENT_NAME_PROPERTY_ID, "Component100");
+
+ propertySet.add(properties);
+
+ // create the request
+ Request request = PropertyHelper.getCreateRequest(propertySet);
+
+ provider.createResources(request);
+
+ // verify
+ verify(managementController, response);
+ }
+
+ @Test
+ public void testGetResources() throws Exception {
+ Resource.Type type = Resource.Type.Component;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+
+ Set<ServiceComponentResponse> allResponse = new HashSet<ServiceComponentResponse>();
+ allResponse.add(new ServiceComponentResponse(100L, "Cluster100", "Service100", "Component100", null, null, ""));
+ allResponse.add(new ServiceComponentResponse(100L, "Cluster100", "Service100", "Component101", null, null, ""));
+ allResponse.add(new ServiceComponentResponse(100L, "Cluster100", "Service100", "Component102", null, null, ""));
+
+ // set expectations
+ expect(managementController.getComponents(
+ AbstractResourceProviderTest.Matcher.getComponentRequestSet(
+ "Cluster100", null, null, null, null))).andReturn(allResponse).once();
+
+ // replay
+ replay(managementController);
+
+ ResourceProvider provider = AbstractResourceProvider.getResourceProvider(
+ type,
+ PropertyHelper.getPropertyIds(type),
+ PropertyHelper.getKeyPropertyIds(type),
+ managementController);
+
+ Set<String> propertyIds = new HashSet<String>();
+
+ propertyIds.add(ComponentResourceProvider.COMPONENT_CLUSTER_NAME_PROPERTY_ID);
+ propertyIds.add(ComponentResourceProvider.COMPONENT_COMPONENT_NAME_PROPERTY_ID);
+
+ Predicate predicate = new PredicateBuilder().property(ComponentResourceProvider.COMPONENT_CLUSTER_NAME_PROPERTY_ID).
+ equals("Cluster100").toPredicate();
+ Request request = PropertyHelper.getReadRequest(propertyIds);
+ Set<Resource> resources = provider.getResources(request, predicate);
+
+ Assert.assertEquals(3, resources.size());
+ Set<String> names = new HashSet<String>();
+ for (Resource resource : resources) {
+ String clusterName = (String) resource.getPropertyValue(
+ ComponentResourceProvider.COMPONENT_CLUSTER_NAME_PROPERTY_ID);
+ Assert.assertEquals("Cluster100", clusterName);
+ names.add((String) resource.getPropertyValue(ComponentResourceProvider.COMPONENT_COMPONENT_NAME_PROPERTY_ID));
+ }
+ // Make sure that all of the response objects got moved into resources
+ for (ServiceComponentResponse response : allResponse ) {
+ Assert.assertTrue(names.contains(response.getComponentName()));
+ }
+
+ // verify
+ verify(managementController);
+ }
+
+ @Test
public void testUpdateResources() throws Exception {
Resource.Type type = Resource.Type.Component;
@@ -57,9 +153,11 @@ public class ComponentResourceProviderTe
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.getComponents(EasyMock.<Set<ServiceComponentRequest>>anyObject())).
+ andReturn(nameResponse).once();
expect(managementController.updateComponents(
- AbstractResourceProviderTest.Matchers.componentRequestSet("Cluster102", "Service", "Component", null, "STARTED"))).andReturn(response).once();
+ AbstractResourceProviderTest.Matcher.getComponentRequestSet(
+ "Cluster102", "Service", "Component", null, "STARTED"))).andReturn(response).once();
// replay
replay(managementController, response);
@@ -78,10 +176,51 @@ public class ComponentResourceProviderTe
Request request = PropertyHelper.getUpdateRequest(properties);
// update the cluster named Cluster102
- Predicate predicate = new PredicateBuilder().property(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID).equals("Cluster102").toPredicate();
+ Predicate predicate = new PredicateBuilder().property(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID).
+ equals("Cluster102").toPredicate();
provider.updateResources(request, predicate);
// verify
verify(managementController, response);
}
+
+ @Test
+ public void testDeleteResources() throws Exception {
+ Resource.Type type = Resource.Type.Component;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+ RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
+
+ // set expectations
+ expect(managementController.deleteComponents(AbstractResourceProviderTest.Matcher.
+ getComponentRequestSet(null, null, "Component100", null, null))).andReturn(response);
+
+ // replay
+ replay(managementController, response);
+
+ ResourceProvider provider = AbstractResourceProvider.getResourceProvider(
+ type,
+ PropertyHelper.getPropertyIds(type),
+ PropertyHelper.getKeyPropertyIds(type),
+ managementController);
+
+ AbstractResourceProviderTest.TestObserver observer = new AbstractResourceProviderTest.TestObserver();
+
+ ((ObservableResourceProvider)provider).addObserver(observer);
+
+ Predicate predicate = new PredicateBuilder().property(
+ ComponentResourceProvider.COMPONENT_COMPONENT_NAME_PROPERTY_ID).equals("Component100").toPredicate();
+ provider.deleteResources(predicate);
+
+
+ ResourceProviderEvent lastEvent = observer.getLastEvent();
+ Assert.assertNotNull(lastEvent);
+ Assert.assertEquals(Resource.Type.Component, lastEvent.getResourceType());
+ Assert.assertEquals(ResourceProviderEvent.Type.Delete, lastEvent.getType());
+ Assert.assertEquals(predicate, lastEvent.getPredicate());
+ Assert.assertNull(lastEvent.getRequest());
+
+ // verify
+ verify(managementController, response);
+ }
}
Modified: 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=1445689&r1=1445688&r2=1445689&view=diff
==============================================================================
--- incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigurationResourceProviderTest.java (original)
+++ incubator/ambari/trunk/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigurationResourceProviderTest.java Wed Feb 13 15:50:13 2013
@@ -19,13 +19,20 @@
package org.apache.ambari.server.controller.internal;
import org.apache.ambari.server.controller.AmbariManagementController;
+import org.apache.ambari.server.controller.ConfigurationResponse;
import org.apache.ambari.server.controller.RequestStatusResponse;
+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.junit.Assert;
import org.junit.Test;
+import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.Map;
@@ -33,6 +40,7 @@ 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;
@@ -46,7 +54,7 @@ public class ConfigurationResourceProvid
AmbariManagementController managementController = createMock(AmbariManagementController.class);
RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
- managementController.createConfiguration(AbstractResourceProviderTest.Matchers.configurationRequest(
+ managementController.createConfiguration(AbstractResourceProviderTest.Matcher.getConfigurationRequest(
"Cluster100", "type", "tag", new HashMap<String, String>()));
// replay
@@ -75,4 +83,122 @@ public class ConfigurationResourceProvid
// verify
verify(managementController, response);
}
+
+ @Test
+ public void testGetResources() throws Exception {
+ Resource.Type type = Resource.Type.Configuration;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+
+ Set<ConfigurationResponse> allResponse = new HashSet<ConfigurationResponse>();
+ allResponse.add(new ConfigurationResponse("Cluster100", "type", "tag1", null));
+ allResponse.add(new ConfigurationResponse("Cluster100", "type", "tag2", null));
+ allResponse.add(new ConfigurationResponse("Cluster100", "type", "tag3", null));
+
+ // set expectations
+ expect(managementController.getConfigurations(
+ AbstractResourceProviderTest.Matcher.getConfigurationRequestSet(
+ "Cluster100", null, null, Collections.<String, String>emptyMap()))).andReturn(allResponse).once();
+
+ // replay
+ replay(managementController);
+
+ ResourceProvider provider = AbstractResourceProvider.getResourceProvider(
+ type,
+ PropertyHelper.getPropertyIds(type),
+ PropertyHelper.getKeyPropertyIds(type),
+ managementController);
+
+ Set<String> propertyIds = new HashSet<String>();
+
+ propertyIds.add(ConfigurationResourceProvider.CONFIGURATION_CLUSTER_NAME_PROPERTY_ID);
+ propertyIds.add(ConfigurationResourceProvider.CONFIGURATION_CONFIG_TAG_PROPERTY_ID);
+
+ Predicate predicate = new PredicateBuilder().property(
+ ConfigurationResourceProvider.CONFIGURATION_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").toPredicate();
+ Request request = PropertyHelper.getReadRequest(propertyIds);
+ Set<Resource> resources = provider.getResources(request, predicate);
+
+ Assert.assertEquals(3, resources.size());
+ Set<String> tags = new HashSet<String>();
+ for (Resource resource : resources) {
+ String clusterName = (String) resource.getPropertyValue(
+ ConfigurationResourceProvider.CONFIGURATION_CLUSTER_NAME_PROPERTY_ID);
+ Assert.assertEquals("Cluster100", clusterName);
+ tags.add((String) resource.getPropertyValue(
+ ConfigurationResourceProvider.CONFIGURATION_CONFIG_TAG_PROPERTY_ID));
+ }
+ // Make sure that all of the response objects got moved into resources
+ for (ConfigurationResponse response : allResponse ) {
+ Assert.assertTrue(tags.contains(response.getVersionTag()));
+ }
+
+ // verify
+ verify(managementController);
+
+ }
+
+ @Test
+ public void testUpdateResources() throws Exception {
+ Resource.Type type = Resource.Type.Configuration;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+ RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
+
+ // replay
+ replay(managementController, response);
+
+ ResourceProvider provider = AbstractResourceProvider.getResourceProvider(
+ type,
+ PropertyHelper.getPropertyIds(type),
+ PropertyHelper.getKeyPropertyIds(type),
+ managementController);
+
+ // add the property map to a set for the request.
+ Map<String, Object> properties = new LinkedHashMap<String, Object>();
+
+ // create the request
+ Request request = PropertyHelper.getUpdateRequest(properties);
+
+ Predicate predicate = new PredicateBuilder().property(
+ ConfigurationResourceProvider.CONFIGURATION_CONFIG_TAG_PROPERTY_ID).equals("Configuration100").toPredicate();
+
+ try {
+ provider.updateResources(request, predicate);
+ Assert.fail("Expected an UnsupportedOperationException");
+ } catch (UnsupportedOperationException e) {
+ // expected
+ }
+
+ // verify
+ verify(managementController, response);
+ }
+
+ @Test
+ public void testDeleteResources() throws Exception {
+ Resource.Type type = Resource.Type.Configuration;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+
+ // replay
+ replay(managementController);
+
+ ResourceProvider provider = AbstractResourceProvider.getResourceProvider(
+ type,
+ PropertyHelper.getPropertyIds(type),
+ PropertyHelper.getKeyPropertyIds(type),
+ managementController);
+
+ Predicate predicate = new PredicateBuilder().property(
+ ConfigurationResourceProvider.CONFIGURATION_CONFIG_TAG_PROPERTY_ID).equals("Configuration100").toPredicate();
+ try {
+ provider.deleteResources(predicate);
+ Assert.fail("Expected an UnsupportedOperationException");
+ } catch (UnsupportedOperationException e) {
+ // expected
+ }
+
+ // verify
+ verify(managementController);
+ }
}