You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by yu...@apache.org on 2013/03/20 21:44:50 UTC
svn commit: r1459041 [13/18] - in /incubator/ambari/branches/branch-1.2: ./
ambari-agent/ ambari-agent/conf/unix/
ambari-agent/src/main/puppet/modules/hdp-ganglia/files/
ambari-agent/src/main/puppet/modules/hdp-ganglia/manifests/
ambari-agent/src/main/...
Added: incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java?rev=1459041&view=auto
==============================================================================
--- incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java (added)
+++ incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java Wed Mar 20 20:44:43 2013
@@ -0,0 +1,226 @@
+/**
+ * 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.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;
+
+/**
+ * Tests for the component resource provider.
+ */
+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;
+
+ 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.Matcher.getComponentRequestSet(
+ "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);
+ }
+
+ @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);
+ }
+}
Added: incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigurationResourceProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigurationResourceProviderTest.java?rev=1459041&view=auto
==============================================================================
--- incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigurationResourceProviderTest.java (added)
+++ incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ConfigurationResourceProviderTest.java Wed Mar 20 20:44:43 2013
@@ -0,0 +1,204 @@
+/**
+ * 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.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;
+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 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.Matcher.getConfigurationRequest(
+ "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);
+ }
+
+ @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);
+ }
+}
Added: incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java?rev=1459041&view=auto
==============================================================================
--- incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java (added)
+++ incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java Wed Mar 20 20:44:43 2013
@@ -0,0 +1,282 @@
+/**
+ * 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.ServiceComponentHostRequest;
+import org.apache.ambari.server.controller.ServiceComponentHostResponse;
+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.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;
+
+/**
+ * HostComponentResourceProvider tests.
+ */
+public class HostComponentResourceProviderTest {
+ @Test
+ public void testCreateResources() throws Exception {
+ Resource.Type type = Resource.Type.HostComponent;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+ RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
+
+ managementController.createHostComponents(
+ AbstractResourceProviderTest.Matcher.getHostComponentRequestSet(
+ "Cluster100", "Service100", "Component100", "Host100", 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(HostComponentResourceProvider.HOST_COMPONENT_CLUSTER_NAME_PROPERTY_ID, "Cluster100");
+ properties.put(HostComponentResourceProvider.HOST_COMPONENT_SERVICE_NAME_PROPERTY_ID, "Service100");
+ properties.put(HostComponentResourceProvider.HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, "Component100");
+ properties.put(HostComponentResourceProvider.HOST_COMPONENT_HOST_NAME_PROPERTY_ID, "Host100");
+
+ 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.HostComponent;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+
+ Set<ServiceComponentHostResponse> allResponse = new HashSet<ServiceComponentHostResponse>();
+ allResponse.add(new ServiceComponentHostResponse(
+ "Cluster100", "Service100", "Component100", "Host100", null, null, "", "", "" ));
+ allResponse.add(new ServiceComponentHostResponse(
+ "Cluster100", "Service100", "Component101", "Host100", null, null, "", "", "" ));
+ allResponse.add(new ServiceComponentHostResponse(
+ "Cluster100", "Service100", "Component102", "Host100", null, null, "", "", "" ));
+
+ // set expectations
+ expect(managementController.getHostComponents(
+ AbstractResourceProviderTest.Matcher.getHostComponentRequestSet(
+ "Cluster100", null, 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(HostComponentResourceProvider.HOST_COMPONENT_CLUSTER_NAME_PROPERTY_ID);
+ propertyIds.add(HostComponentResourceProvider.HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID);
+
+ Predicate predicate = new PredicateBuilder().property(
+ HostComponentResourceProvider.HOST_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(
+ HostComponentResourceProvider.HOST_COMPONENT_CLUSTER_NAME_PROPERTY_ID);
+ Assert.assertEquals("Cluster100", clusterName);
+ names.add((String) resource.getPropertyValue(
+ HostComponentResourceProvider.HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID));
+ }
+ // Make sure that all of the response objects got moved into resources
+ for (ServiceComponentHostResponse response : allResponse ) {
+ Assert.assertTrue(names.contains(response.getComponentName()));
+ }
+
+ // verify
+ verify(managementController);
+ }
+
+ @Test
+ public void testUpdateResources() throws Exception {
+ Resource.Type type = Resource.Type.HostComponent;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+ RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
+
+ Set<ServiceComponentHostResponse> nameResponse = new HashSet<ServiceComponentHostResponse>();
+ nameResponse.add(new ServiceComponentHostResponse(
+ "Cluster102", "Service100", "Component100", "Host100", null, null, "STARTED", "", ""));
+
+ // set expectations
+ expect(managementController.getHostComponents(
+ EasyMock.<Set<ServiceComponentHostRequest>>anyObject())).andReturn(nameResponse).once();
+ expect(managementController.updateHostComponents(
+ AbstractResourceProviderTest.Matcher.getHostComponentRequestSet(
+ "Cluster102", null, "Component100", "Host100", 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(HostComponentResourceProvider.HOST_COMPONENT_STATE_PROPERTY_ID, "STARTED");
+
+ // create the request
+ Request request = PropertyHelper.getUpdateRequest(properties);
+
+ // update the cluster named Cluster102
+ Predicate predicate = new PredicateBuilder().property(
+ HostComponentResourceProvider.HOST_COMPONENT_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.HostComponent;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+ RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
+
+ // set expectations
+ expect(managementController.deleteHostComponents(
+ AbstractResourceProviderTest.Matcher.getHostComponentRequestSet(
+ null, null, "Component100", "Host100", 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(HostComponentResourceProvider.HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID).equals("Component100").and().
+ property(HostComponentResourceProvider.HOST_COMPONENT_HOST_NAME_PROPERTY_ID).equals("Host100").toPredicate();
+ provider.deleteResources(predicate);
+
+
+ ResourceProviderEvent lastEvent = observer.getLastEvent();
+ Assert.assertNotNull(lastEvent);
+ Assert.assertEquals(Resource.Type.HostComponent, 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 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.HostComponent,
+ 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("config"));
+ Assert.assertTrue(unsupported.isEmpty());
+
+ unsupported = provider.checkPropertyIds(Collections.singleton("config/unknown_property"));
+ Assert.assertTrue(unsupported.isEmpty());
+ }
+}
Added: incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostResourceProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostResourceProviderTest.java?rev=1459041&view=auto
==============================================================================
--- incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostResourceProviderTest.java (added)
+++ incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostResourceProviderTest.java Wed Mar 20 20:44:43 2013
@@ -0,0 +1,234 @@
+/**
+ * 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.HostRequest;
+import org.apache.ambari.server.controller.HostResponse;
+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.apache.ambari.server.state.HostHealthStatus;
+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;
+
+/**
+ * HostResourceProvider tests.
+ */
+public class HostResourceProviderTest {
+ @Test
+ public void testCreateResources() throws Exception {
+ Resource.Type type = Resource.Type.Host;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+ RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
+
+ managementController.createHosts(
+ AbstractResourceProviderTest.Matcher.getHostRequestSet("Host100", "Cluster100", 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>>();
+
+ Map<String, Object> properties = new LinkedHashMap<String, Object>();
+
+ // add properties to the request map
+ properties.put(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID, "Cluster100");
+ properties.put(HostResourceProvider.HOST_NAME_PROPERTY_ID, "Host100");
+
+ 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.Host;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+
+ Set<HostResponse> allResponse = new HashSet<HostResponse>();
+ allResponse.add(new HostResponse("Host100", "Cluster100",
+ "", "", 2, "", "", "", 100000L, 200000L, null, 10L,
+ 0L, "rack info", null, null,
+ new HostHealthStatus(HostHealthStatus.HealthStatus.HEALTHY, "HEALTHY"), "HEALTHY"));
+ allResponse.add(new HostResponse("Host101", "Cluster100",
+ "", "", 2, "", "", "", 100000L, 200000L, null, 10L,
+ 0L, "rack info", null, null,
+ new HostHealthStatus(HostHealthStatus.HealthStatus.HEALTHY, "HEALTHY"), "HEALTHY"));
+ allResponse.add(new HostResponse("Host102", "Cluster100",
+ "", "", 2, "", "", "", 100000L, 200000L, null, 10L,
+ 0L, "rack info", null, null,
+ new HostHealthStatus(HostHealthStatus.HealthStatus.HEALTHY, "HEALTHY"), "HEALTHY"));
+
+ // set expectations
+ expect(managementController.getHosts(
+ AbstractResourceProviderTest.Matcher.getHostRequestSet(null, "Cluster100", 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(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID);
+ propertyIds.add(HostResourceProvider.HOST_NAME_PROPERTY_ID);
+
+ Predicate predicate =
+ new PredicateBuilder().property(HostResourceProvider.HOST_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(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID);
+ Assert.assertEquals("Cluster100", clusterName);
+ names.add((String) resource.getPropertyValue(HostResourceProvider.HOST_NAME_PROPERTY_ID));
+ }
+ // Make sure that all of the response objects got moved into resources
+ for (HostResponse response : allResponse ) {
+ Assert.assertTrue(names.contains(response.getHostname()));
+ }
+
+ // verify
+ verify(managementController);
+ }
+
+ @Test
+ public void testUpdateResources() throws Exception {
+ Resource.Type type = Resource.Type.Host;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+ RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
+
+ Set<HostResponse> hostResponseSet = new HashSet<HostResponse>();
+ hostResponseSet.add(new HostResponse("Host100", "Cluster100",
+ "", "", 2, "", "", "", 100000L, 200000L, null, 10L,
+ 0L, "rack info", null, null,
+ new HostHealthStatus(HostHealthStatus.HealthStatus.HEALTHY, "HEALTHY"), "HEALTHY"));
+
+ // set expectations
+ expect(managementController.getHosts(
+ AbstractResourceProviderTest.Matcher.getHostRequestSet("Host100", "Cluster100", null))).
+ andReturn(hostResponseSet);
+ managementController.updateHosts(EasyMock.<Set<HostRequest>>anyObject());
+
+ // 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(HostResourceProvider.HOST_RACK_INFO_PROPERTY_ID, "rack info");
+
+ // create the request
+ Request request = PropertyHelper.getUpdateRequest(properties);
+
+ Predicate predicate = new PredicateBuilder().property(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID).
+ equals("Cluster100").
+ and().property(HostResourceProvider.HOST_NAME_PROPERTY_ID).equals("Host100").toPredicate();
+ provider.updateResources(request, predicate);
+
+ // verify
+ verify(managementController, response);
+ }
+
+ @Test
+ public void testDeleteResources() throws Exception {
+ Resource.Type type = Resource.Type.Host;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+
+ // set expectations
+ managementController.deleteHosts(AbstractResourceProviderTest.Matcher.getHostRequestSet("Host100", null, null));
+
+ // replay
+ replay(managementController);
+
+ 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(HostResourceProvider.HOST_NAME_PROPERTY_ID).equals("Host100").
+ toPredicate();
+ provider.deleteResources(predicate);
+
+
+ ResourceProviderEvent lastEvent = observer.getLastEvent();
+ Assert.assertNotNull(lastEvent);
+ Assert.assertEquals(Resource.Type.Host, lastEvent.getResourceType());
+ Assert.assertEquals(ResourceProviderEvent.Type.Delete, lastEvent.getType());
+ Assert.assertEquals(predicate, lastEvent.getPredicate());
+ Assert.assertNull(lastEvent.getRequest());
+
+ // verify
+ verify(managementController);
+ }
+}
Added: incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java?rev=1459041&view=auto
==============================================================================
--- incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java (added)
+++ incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/JMXHostProviderTest.java Wed Mar 20 20:44:43 2013
@@ -0,0 +1,210 @@
+/**
+ * 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 com.google.inject.Guice;
+import com.google.inject.Injector;
+import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
+import org.apache.ambari.server.controller.*;
+import org.apache.ambari.server.controller.spi.*;
+import org.apache.ambari.server.controller.utilities.PropertyHelper;
+import org.apache.ambari.server.orm.GuiceJpaInitializer;
+import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
+import org.apache.ambari.server.state.Clusters;
+import org.apache.ambari.server.state.StackId;
+import org.apache.ambari.server.state.State;
+import org.apache.ambari.server.state.cluster.ClusterImpl;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+public class JMXHostProviderTest {
+ private Injector injector;
+ private Clusters clusters;
+ static AmbariManagementController controller;
+ private AmbariMetaInfo ambariMetaInfo;
+ private static final String NAMENODE_PORT = "dfs.http.address";
+ private static final String DATANODE_PORT = "dfs.datanode.http.address";
+
+ @Before
+ public void setup() throws Exception {
+ injector = Guice.createInjector(new InMemoryDefaultTestModule());
+ injector.getInstance(GuiceJpaInitializer.class);
+ clusters = injector.getInstance(Clusters.class);
+ controller = injector.getInstance(AmbariManagementController.class);
+ ambariMetaInfo = injector.getInstance(AmbariMetaInfo.class);
+ ambariMetaInfo.init();
+ }
+
+ private void createService(String clusterName,
+ String serviceName, State desiredState) throws AmbariException {
+ String dStateStr = null;
+ if (desiredState != null) {
+ dStateStr = desiredState.toString();
+ }
+ ServiceRequest r1 = new ServiceRequest(clusterName, serviceName, null,
+ dStateStr);
+ Set<ServiceRequest> requests = new HashSet<ServiceRequest>();
+ requests.add(r1);
+ controller.createServices(requests);
+ }
+
+ private void createServiceComponent(String clusterName,
+ String serviceName, String componentName, State desiredState)
+ throws AmbariException {
+ String dStateStr = null;
+ if (desiredState != null) {
+ dStateStr = desiredState.toString();
+ }
+ ServiceComponentRequest r = new ServiceComponentRequest(clusterName,
+ serviceName, componentName, null, dStateStr);
+ Set<ServiceComponentRequest> requests =
+ new HashSet<ServiceComponentRequest>();
+ requests.add(r);
+ controller.createComponents(requests);
+ }
+
+ private void createServiceComponentHost(String clusterName,
+ String serviceName, String componentName, String hostname,
+ State desiredState) throws AmbariException {
+ String dStateStr = null;
+ if (desiredState != null) {
+ dStateStr = desiredState.toString();
+ }
+ ServiceComponentHostRequest r = new ServiceComponentHostRequest(clusterName,
+ serviceName, componentName, hostname, null, dStateStr);
+ Set<ServiceComponentHostRequest> requests =
+ new HashSet<ServiceComponentHostRequest>();
+ requests.add(r);
+ controller.createHostComponents(requests);
+ }
+
+ private void createHDFSServiceConfigs() throws AmbariException {
+ String clusterName = "c1";
+ ClusterRequest r = new ClusterRequest(null, clusterName, "HDP-0.1", null);
+ controller.createCluster(r);
+ clusters.getCluster(clusterName).setDesiredStackVersion(new StackId("HDP-0.1"));
+ String serviceName = "HDFS";
+ createService(clusterName, serviceName, null);
+ String componentName1 = "NAMENODE";
+ String componentName2 = "DATANODE";
+ String componentName3 = "HDFS_CLIENT";
+
+ createServiceComponent(clusterName, serviceName, componentName1,
+ State.INIT);
+ createServiceComponent(clusterName, serviceName, componentName2,
+ State.INIT);
+ createServiceComponent(clusterName, serviceName, componentName3,
+ State.INIT);
+
+ String host1 = "h1";
+ clusters.addHost(host1);
+ clusters.getHost("h1").setOsType("centos5");
+ clusters.getHost("h1").persist();
+ String host2 = "h2";
+ clusters.addHost(host2);
+ clusters.getHost("h2").setOsType("centos6");
+ clusters.getHost("h2").persist();
+ clusters.mapHostToCluster(host1, clusterName);
+ clusters.mapHostToCluster(host2, clusterName);
+
+ createServiceComponentHost(clusterName, null, componentName1,
+ host1, null);
+ createServiceComponentHost(clusterName, serviceName, componentName2,
+ host1, null);
+ createServiceComponentHost(clusterName, serviceName, componentName2,
+ host2, null);
+ createServiceComponentHost(clusterName, serviceName, componentName3,
+ host1, null);
+ createServiceComponentHost(clusterName, serviceName, componentName3,
+ host2, null);
+
+ // Create configs
+ Map<String, String> configs = new HashMap<String, String>();
+ configs.put(NAMENODE_PORT, "localhost:70070");
+ configs.put(DATANODE_PORT, "localhost:70075");
+ ConfigurationRequest cr = new ConfigurationRequest(clusterName,
+ "hdfs-site", "version1", configs);
+ controller.createConfiguration(cr);
+
+ Map<String, String> configVersions = new HashMap<String, String>();
+ Set<ServiceRequest> sReqs = new HashSet<ServiceRequest>();
+ configVersions.put("hdfs-site", "version1");
+ sReqs.add(new ServiceRequest(clusterName, serviceName, configVersions,
+ null));
+ controller.updateServices(sReqs);
+ }
+
+
+ @Test
+ public void testJMXPortMapInit() throws NoSuchParentResourceException, ResourceAlreadyExistsException, UnsupportedPropertyException, SystemException, AmbariException, NoSuchResourceException {
+ createHDFSServiceConfigs();
+
+ JMXHostProviderModule providerModule = new JMXHostProviderModule();
+ providerModule.registerResourceProvider(Resource.Type.Service);
+ providerModule.registerResourceProvider(Resource.Type.Configuration);
+ // Non default port addresses
+ Assert.assertEquals("70070", providerModule.getPort("c1", "NAMENODE"));
+ Assert.assertEquals("70075", providerModule.getPort("c1", "DATANODE"));
+ // Default port addresses
+ Assert.assertEquals(null, providerModule.getPort("c1", "JOBTRACKER"));
+ Assert.assertEquals(null, providerModule.getPort("c1", "TASKTRACKER"));
+ Assert.assertEquals(null, providerModule.getPort("c1", "HBASE_MASTER"));
+ }
+
+ private static class JMXHostProviderModule extends
+ AbstractProviderModule {
+
+ ResourceProvider clusterResourceProvider = new
+ ClusterResourceProvider(PropertyHelper.getPropertyIds(Resource.Type
+ .Cluster), PropertyHelper.getKeyPropertyIds(Resource.Type.Cluster),
+ controller);
+
+ ResourceProvider serviceResourceProvider = new ServiceResourceProvider(PropertyHelper
+ .getPropertyIds(Resource.Type.Service),
+ PropertyHelper.getKeyPropertyIds(Resource.Type.Service), controller);
+
+ ResourceProvider hostCompResourceProvider = new
+ HostComponentResourceProvider(PropertyHelper.getPropertyIds(Resource
+ .Type.HostComponent), PropertyHelper.getKeyPropertyIds(Resource.Type
+ .HostComponent), controller);
+
+ ResourceProvider configResourceProvider = new
+ ConfigurationResourceProvider(PropertyHelper.getPropertyIds(Resource
+ .Type.Configuration), PropertyHelper.getKeyPropertyIds(Resource.Type
+ .Configuration), controller);
+
+ @Override
+ protected ResourceProvider createResourceProvider(Resource.Type type) {
+ if (type == Resource.Type.Cluster)
+ return clusterResourceProvider;
+ if (type == Resource.Type.Service)
+ return serviceResourceProvider;
+ else if (type == Resource.Type.HostComponent)
+ return hostCompResourceProvider;
+ else if (type == Resource.Type.Configuration)
+ return configResourceProvider;
+ return null;
+ }
+ }
+}
Added: incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/PropertyPredicateVisitorTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/PropertyPredicateVisitorTest.java?rev=1459041&view=auto
==============================================================================
--- incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/PropertyPredicateVisitorTest.java (added)
+++ incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/PropertyPredicateVisitorTest.java Wed Mar 20 20:44:43 2013
@@ -0,0 +1,72 @@
+/**
+ * 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 junit.framework.Assert;
+import org.apache.ambari.server.controller.predicate.AndPredicate;
+import org.apache.ambari.server.controller.predicate.BasePredicate;
+import org.apache.ambari.server.controller.predicate.CategoryIsEmptyPredicate;
+import org.apache.ambari.server.controller.predicate.OrPredicate;
+import org.apache.ambari.server.controller.utilities.PredicateBuilder;
+import org.apache.ambari.server.controller.utilities.PropertyHelper;
+import org.junit.Test;
+
+import java.util.Map;
+
+/**
+ * Tests for the property predicate visitor.
+ */
+public class PropertyPredicateVisitorTest {
+
+ private static final String PROPERTY_A = PropertyHelper.getPropertyId("category", "A");
+ private static final String PROPERTY_B = PropertyHelper.getPropertyId("category", "B");
+
+ private static final BasePredicate PREDICATE_1 = new PredicateBuilder().property(PROPERTY_A).equals("Monkey").toPredicate();
+ private static final BasePredicate PREDICATE_2 = new PredicateBuilder().property(PROPERTY_B).equals("Runner").toPredicate();
+ private static final BasePredicate PREDICATE_3 = new AndPredicate(PREDICATE_1, PREDICATE_2);
+ private static final BasePredicate PREDICATE_4 = new OrPredicate(PREDICATE_1, PREDICATE_2);
+ private static final BasePredicate PREDICATE_5 = new CategoryIsEmptyPredicate("cat1");
+
+ @Test
+ public void testVisit() {
+ PropertyPredicateVisitor visitor = new PropertyPredicateVisitor();
+ PREDICATE_1.accept(visitor);
+ Map<String, Object> properties = visitor.getProperties();
+ Assert.assertEquals(1, properties.size());
+ Assert.assertEquals("Monkey", properties.get(PROPERTY_A));
+
+ visitor = new PropertyPredicateVisitor();
+ PREDICATE_3.accept(visitor);
+ properties = visitor.getProperties();
+ Assert.assertEquals(2, properties.size());
+ Assert.assertEquals("Monkey", properties.get(PROPERTY_A));
+ Assert.assertEquals("Runner", properties.get(PROPERTY_B));
+
+ visitor = new PropertyPredicateVisitor();
+ PREDICATE_4.accept(visitor);
+ properties = visitor.getProperties();
+ Assert.assertEquals(2, properties.size());
+ Assert.assertEquals("Monkey", properties.get(PROPERTY_A));
+ Assert.assertEquals("Runner", properties.get(PROPERTY_B));
+
+ visitor = new PropertyPredicateVisitor();
+ PREDICATE_5.accept(visitor);
+ properties = visitor.getProperties();
+ Assert.assertTrue(properties.isEmpty());
+ }
+}
Added: incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java?rev=1459041&view=auto
==============================================================================
--- incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java (added)
+++ incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java Wed Mar 20 20:44:43 2013
@@ -0,0 +1,191 @@
+/**
+ * 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.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;
+
+/**
+ * RequestResourceProvider tests.
+ */
+public class RequestResourceProviderTest {
+ @Test
+ public void testCreateResources() throws Exception {
+ Resource.Type type = Resource.Type.Request;
+
+ 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. add more maps for multiple creates
+ Set<Map<String, Object>> propertySet = new LinkedHashSet<Map<String, Object>>();
+
+ Map<String, Object> properties = new LinkedHashMap<String, Object>();
+
+ // add properties to the request map
+ properties.put(RequestResourceProvider.REQUEST_ID_PROPERTY_ID, "Request100");
+
+ propertySet.add(properties);
+
+ // create the request
+ Request request = PropertyHelper.getCreateRequest(propertySet);
+
+ try {
+ provider.createResources(request);
+ Assert.fail("Expected an UnsupportedOperationException");
+ } catch (UnsupportedOperationException e) {
+ // expected
+ }
+
+ // verify
+ verify(managementController, response);
+ }
+
+ @Test
+ public void testGetResources() throws Exception {
+ Resource.Type type = Resource.Type.Request;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+
+ Set<RequestStatusResponse> allResponse = new HashSet<RequestStatusResponse>();
+ allResponse.add(new RequestStatusResponse(100L));
+
+ // set expectations
+ expect(managementController.getRequestStatus(AbstractResourceProviderTest.Matcher.getRequestRequest(100L))).
+ 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(RequestResourceProvider.REQUEST_ID_PROPERTY_ID);
+
+ Predicate predicate = new PredicateBuilder().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").
+ toPredicate();
+ Request request = PropertyHelper.getReadRequest(propertyIds);
+ Set<Resource> resources = provider.getResources(request, predicate);
+
+ Assert.assertEquals(1, resources.size());
+ for (Resource resource : resources) {
+ long userName = (Long) resource.getPropertyValue(RequestResourceProvider.REQUEST_ID_PROPERTY_ID);
+ Assert.assertEquals(100L, userName);
+ }
+
+ // verify
+ verify(managementController); }
+
+ @Test
+ public void testUpdateResources() throws Exception {
+ Resource.Type type = Resource.Type.Request;
+
+ 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(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).
+ equals("Request100").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.Request;
+
+ 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(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).
+ equals("Request100").toPredicate();
+ try {
+ provider.deleteResources(predicate);
+ Assert.fail("Expected an UnsupportedOperationException");
+ } catch (UnsupportedOperationException e) {
+ // expected
+ }
+
+ // verify
+ verify(managementController);
+ }
+}
Modified: incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ResourceImplTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ResourceImplTest.java?rev=1459041&r1=1459040&r2=1459041&view=diff
==============================================================================
--- incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ResourceImplTest.java (original)
+++ incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ResourceImplTest.java Wed Mar 20 20:44:43 2013
@@ -68,6 +68,27 @@ public class ResourceImplTest {
}
@Test
+ public void testAddCategory() {
+ Resource resource = new ResourceImpl(Resource.Type.Cluster);
+
+ resource.addCategory("c1");
+ Assert.assertTrue(resource.getPropertiesMap().containsKey("c1"));
+
+ resource.addCategory("c2/sub2");
+ Assert.assertTrue(resource.getPropertiesMap().containsKey("c1"));
+ Assert.assertTrue(resource.getPropertiesMap().containsKey("c2"));
+ Assert.assertTrue(resource.getPropertiesMap().containsKey("c2/sub2"));
+
+ resource.addCategory("c3/sub3/sub3a");
+ Assert.assertTrue(resource.getPropertiesMap().containsKey("c1"));
+ Assert.assertTrue(resource.getPropertiesMap().containsKey("c2"));
+ Assert.assertTrue(resource.getPropertiesMap().containsKey("c2/sub2"));
+ Assert.assertTrue(resource.getPropertiesMap().containsKey("c3"));
+ Assert.assertTrue(resource.getPropertiesMap().containsKey("c3/sub3"));
+ Assert.assertTrue(resource.getPropertiesMap().containsKey("c3/sub3/sub3a"));
+ }
+
+ @Test
public void testCopyConstructor() {
Resource resource = new ResourceImpl(Resource.Type.Cluster);
Modified: incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/SchemaImplTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/SchemaImplTest.java?rev=1459041&r1=1459040&r2=1459041&view=diff
==============================================================================
--- incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/SchemaImplTest.java (original)
+++ incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/SchemaImplTest.java Wed Mar 20 20:44:43 2013
@@ -68,11 +68,6 @@ public class SchemaImplTest {
}
@Override
- public Set<String> getPropertyIdsForSchema() {
- return resourceProviderProperties;
- }
-
- @Override
public Map<Resource.Type, String> getKeyPropertyIds() {
return keyPropertyIds;
}
@@ -104,11 +99,6 @@ public class SchemaImplTest {
}
@Override
- public Set<String> getPropertyIds() {
- return propertyProviderProperties;
- }
-
- @Override
public Set<String> checkPropertyIds(Set<String> propertyIds) {
if (!propertyProviderProperties.containsAll(propertyIds)) {
Set<String> unsupportedPropertyIds = new HashSet<String>(propertyIds);
@@ -135,42 +125,42 @@ public class SchemaImplTest {
@Test
public void testGetKeyPropertyId() {
- Schema schema = new SchemaImpl(resourceProvider, propertyProviders);
+ Schema schema = new SchemaImpl(resourceProvider);
Assert.assertEquals(PropertyHelper.getPropertyId("c1", "p1"), schema.getKeyPropertyId(Resource.Type.Cluster));
Assert.assertEquals(PropertyHelper.getPropertyId("c1", "p2"), schema.getKeyPropertyId(Resource.Type.Host));
Assert.assertEquals(PropertyHelper.getPropertyId("c1", "p3"), schema.getKeyPropertyId(Resource.Type.Component));
}
- @Test
- public void testGetCategories() {
- Schema schema = new SchemaImpl(resourceProvider, propertyProviders);
-
- Map<String, Set<String>> categories = schema.getCategoryProperties();
- Assert.assertEquals(4, categories.size());
- Assert.assertTrue(categories.containsKey("c1"));
- Assert.assertTrue(categories.containsKey("c2"));
- Assert.assertTrue(categories.containsKey("c3"));
- Assert.assertTrue(categories.containsKey("c4"));
-
- Set<String> properties = categories.get("c1");
- Assert.assertEquals(3, properties.size());
- Assert.assertTrue(properties.contains("p1"));
- Assert.assertTrue(properties.contains("p2"));
- Assert.assertTrue(properties.contains("p3"));
-
- properties = categories.get("c2");
- Assert.assertEquals(1, properties.size());
- Assert.assertTrue(properties.contains("p4"));
-
- properties = categories.get("c3");
- Assert.assertEquals(2, properties.size());
- Assert.assertTrue(properties.contains("p5"));
- Assert.assertTrue(properties.contains("p6"));
-
- properties = categories.get("c4");
- Assert.assertEquals(2, properties.size());
- Assert.assertTrue(properties.contains("p7"));
- Assert.assertTrue(properties.contains("p8"));
- }
+// @Test
+// public void testGetCategories() {
+// Schema schema = new SchemaImpl(resourceProvider);
+//
+// Map<String, Set<String>> categories = schema.getCategoryProperties();
+// Assert.assertEquals(4, categories.size());
+// Assert.assertTrue(categories.containsKey("c1"));
+// Assert.assertTrue(categories.containsKey("c2"));
+// Assert.assertTrue(categories.containsKey("c3"));
+// Assert.assertTrue(categories.containsKey("c4"));
+//
+// Set<String> properties = categories.get("c1");
+// Assert.assertEquals(3, properties.size());
+// Assert.assertTrue(properties.contains("p1"));
+// Assert.assertTrue(properties.contains("p2"));
+// Assert.assertTrue(properties.contains("p3"));
+//
+// properties = categories.get("c2");
+// Assert.assertEquals(1, properties.size());
+// Assert.assertTrue(properties.contains("p4"));
+//
+// properties = categories.get("c3");
+// Assert.assertEquals(2, properties.size());
+// Assert.assertTrue(properties.contains("p5"));
+// Assert.assertTrue(properties.contains("p6"));
+//
+// properties = categories.get("c4");
+// Assert.assertEquals(2, properties.size());
+// Assert.assertTrue(properties.contains("p7"));
+// Assert.assertTrue(properties.contains("p8"));
+// }
}
Added: incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java?rev=1459041&view=auto
==============================================================================
--- incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java (added)
+++ incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java Wed Mar 20 20:44:43 2013
@@ -0,0 +1,300 @@
+/**
+ * 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.ServiceRequest;
+import org.apache.ambari.server.controller.ServiceResponse;
+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.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;
+
+/**
+ * ServiceResourceProvider tests.
+ */
+public class ServiceResourceProviderTest {
+
+ @Test
+ public void testCreateResources() throws Exception{
+ Resource.Type type = Resource.Type.Service;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+ RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
+
+ managementController.createServices(AbstractResourceProviderTest.Matcher.getServiceRequestSet("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 testGetResources() 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 testUpdateResources() 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 testDeleteResources() throws Exception{
+ Resource.Type type = Resource.Type.Service;
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+ RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
+
+ // set expectations
+ expect(managementController.deleteServices(AbstractResourceProviderTest.Matcher.getServiceRequestSet(null, "Service100", 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);
+
+ // delete the service named Service100
+ Predicate predicate = new PredicateBuilder().property(ServiceResourceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID).equals("Service100").toPredicate();
+ provider.deleteResources(predicate);
+
+
+ ResourceProviderEvent lastEvent = observer.getLastEvent();
+ Assert.assertNotNull(lastEvent);
+ Assert.assertEquals(Resource.Type.Service, 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 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.Service,
+ 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("config"));
+ Assert.assertTrue(unsupported.isEmpty());
+
+ unsupported = provider.checkPropertyIds(Collections.singleton("config/unknown_property"));
+ Assert.assertTrue(unsupported.isEmpty());
+ }
+}
Modified: incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/SimplifyingPredicateVisitorTest.java
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/SimplifyingPredicateVisitorTest.java?rev=1459041&r1=1459040&r2=1459041&view=diff
==============================================================================
--- incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/SimplifyingPredicateVisitorTest.java (original)
+++ incubator/ambari/branches/branch-1.2/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/SimplifyingPredicateVisitorTest.java Wed Mar 20 20:44:43 2013
@@ -20,6 +20,7 @@ package org.apache.ambari.server.control
import junit.framework.Assert;
import org.apache.ambari.server.controller.predicate.AndPredicate;
import org.apache.ambari.server.controller.predicate.BasePredicate;
+import org.apache.ambari.server.controller.predicate.CategoryIsEmptyPredicate;
import org.apache.ambari.server.controller.predicate.OrPredicate;
import org.apache.ambari.server.controller.utilities.PredicateBuilder;
import org.apache.ambari.server.controller.utilities.PropertyHelper;
@@ -54,6 +55,7 @@ public class SimplifyingPredicateVisitor
private static final BasePredicate PREDICATE_13 = new AndPredicate(PREDICATE_1, PREDICATE_12);
private static final BasePredicate PREDICATE_14 = new PredicateBuilder().property(PROPERTY_D).greaterThan(12).toPredicate();
private static final BasePredicate PREDICATE_15 = new AndPredicate(PREDICATE_1, PREDICATE_14);
+ private static final BasePredicate PREDICATE_16 = new CategoryIsEmptyPredicate("cat1");
@Test
public void testVisit() {
@@ -133,5 +135,12 @@ public class SimplifyingPredicateVisitor
Assert.assertEquals(1, simplifiedPredicates.size());
Assert.assertEquals(PREDICATE_1, simplifiedPredicates.get(0));
+
+ PREDICATE_16.accept(visitor);
+
+ simplifiedPredicates = visitor.getSimplifiedPredicates();
+
+ Assert.assertEquals(1, simplifiedPredicates.size());
+ Assert.assertEquals(PREDICATE_16, simplifiedPredicates.get(0));
}
}