Updated Branches: refs/heads/trunk bcf447056 -> 8f5b66286
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/8f5b6628/ambari-server/src/test/java/org/apache/ambari/server/controller/RootServiceResponseFactoryTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/RootServiceResponseFactoryTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/RootServiceResponseFactoryTest.java new file mode 100644 index 0000000..4697fc8 --- /dev/null +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/RootServiceResponseFactoryTest.java @@ -0,0 +1,156 @@ +/** + * 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; + +import java.util.Collections; +import java.util.Set; +import org.apache.ambari.server.ObjectNotFoundException; +import org.apache.ambari.server.configuration.Configuration; +import org.apache.ambari.server.controller.RootServiceResponseFactory.Components; +import org.apache.ambari.server.orm.InMemoryDefaultTestModule; +import org.junit.Before; +import org.junit.Test; +import com.google.inject.Guice; +import com.google.inject.Injector; + +import static junit.framework.Assert.assertTrue; +import static junit.framework.Assert.assertEquals; + +public class RootServiceResponseFactoryTest { + + private RootServiceResponseFactory responseFactory; + private Injector injector; + private Configuration configs; + + @Before + public void setUp() { + injector = Guice.createInjector(new InMemoryDefaultTestModule()); + responseFactory = injector.getInstance(RootServiceResponseFactory.class); + configs = injector.getInstance(Configuration.class); + } + + @Test + public void testGetRootServices() throws Exception { + + // Request a null service name + RootServiceRequest request = new RootServiceRequest(null); + Set<RootServiceResponse> rootServices = + responseFactory.getRootServices(request); + assertEquals(RootServiceResponseFactory.Services.values().length, + rootServices.size()); + + // null request + request = null; + rootServices = responseFactory.getRootServices(request); + assertEquals(RootServiceResponseFactory.Services.values().length, + rootServices.size()); + + // Request nonexistent service + try { + request = new RootServiceRequest("XXX"); + ; + rootServices = responseFactory.getRootServices(request); + } catch (Exception e) { + assertTrue(e instanceof ObjectNotFoundException); + } + + // Request existent service + request = + new RootServiceRequest( + RootServiceResponseFactory.Services.AMBARI.name()); + ; + rootServices = responseFactory.getRootServices(request); + assertEquals(1, rootServices.size()); + assertTrue(rootServices.contains(new RootServiceResponse( + RootServiceResponseFactory.Services.AMBARI.name()))); + } + + @Test + public void testGetRootServiceComponents() throws Exception { + + // Request null service name, null component name + RootServiceComponentRequest request = + new RootServiceComponentRequest(null, null); + Set<RootServiceComponentResponse> rootServiceComponents; + try { + rootServiceComponents = responseFactory.getRootServiceComponents(request); + } catch (Exception e) { + assertTrue(e instanceof ObjectNotFoundException); + } + + // Request null service name, not-null component name + request = + new RootServiceComponentRequest(null, + RootServiceResponseFactory.Components.AMBARI_SERVER.name()); + + try { + rootServiceComponents = responseFactory.getRootServiceComponents(request); + } catch (Exception e) { + assertTrue(e instanceof ObjectNotFoundException); + } + + // Request existent service name, null component name + request = + new RootServiceComponentRequest( + RootServiceResponseFactory.Services.AMBARI.name(), null); + rootServiceComponents = responseFactory.getRootServiceComponents(request); + assertEquals( + RootServiceResponseFactory.Services.AMBARI.getComponents().length, + rootServiceComponents.size()); + + for (int i = 0; i < RootServiceResponseFactory.Services.AMBARI + .getComponents().length; i++) { + Components component = + RootServiceResponseFactory.Services.AMBARI.getComponents()[i]; + + if (component.name().equals( + RootServiceResponseFactory.Components.AMBARI_SERVER.name())) + assertTrue(rootServiceComponents + .contains(new RootServiceComponentResponse(component.name(), + configs.getConfigsMap()))); + else + assertTrue(rootServiceComponents + .contains(new RootServiceComponentResponse(component.name(), + Collections.<String, String> emptyMap()))); + } + + // Request existent service name, existent component name + request = + new RootServiceComponentRequest( + RootServiceResponseFactory.Services.AMBARI.name(), + RootServiceResponseFactory.Services.AMBARI.getComponents()[0] + .name()); + rootServiceComponents = responseFactory.getRootServiceComponents(request); + assertEquals(1, rootServiceComponents.size()); + assertTrue(rootServiceComponents.contains(new RootServiceComponentResponse( + RootServiceResponseFactory.Services.AMBARI.getComponents()[0].name(), + configs.getConfigsMap()))); + + // Request existent service name, and component, not belongs to requested service + request = + new RootServiceComponentRequest( + RootServiceResponseFactory.Services.AMBARI.name(), + "XXX"); + try { + rootServiceComponents = responseFactory.getRootServiceComponents(request); + } catch (Exception e) { + assertTrue(e instanceof ObjectNotFoundException); + } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/8f5b6628/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentResourceProviderTest.java new file mode 100644 index 0000000..df9e42b --- /dev/null +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentResourceProviderTest.java @@ -0,0 +1,105 @@ +/** + * 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 static org.easymock.EasyMock.createMock; +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.HashSet; +import java.util.Set; + +import org.apache.ambari.server.controller.AmbariManagementController; +import org.apache.ambari.server.controller.RootServiceComponentRequest; +import org.apache.ambari.server.controller.RootServiceComponentResponse; +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; + +public class RootServiceComponentResourceProviderTest { + + @Test + public void testGetResources() throws Exception{ + Resource.Type type = Resource.Type.RootServiceComponent; + + AmbariManagementController managementController = createMock(AmbariManagementController.class); + + Set<RootServiceComponentResponse> allResponse = new HashSet<RootServiceComponentResponse>(); + allResponse.add(new RootServiceComponentResponse("component1", Collections.<String,String>emptyMap())); + allResponse.add(new RootServiceComponentResponse("component2", Collections.<String,String>emptyMap())); + allResponse.add(new RootServiceComponentResponse("component3", Collections.<String,String>emptyMap())); + + Set<RootServiceComponentResponse> nameResponse = new HashSet<RootServiceComponentResponse>(); + nameResponse.add(new RootServiceComponentResponse("component4", Collections.<String,String>emptyMap())); + + + // set expectations + expect(managementController.getRootServiceComponents(EasyMock.<Set<RootServiceComponentRequest>>anyObject())).andReturn(allResponse).once(); + expect(managementController.getRootServiceComponents(EasyMock.<Set<RootServiceComponentRequest>>anyObject())).andReturn(nameResponse).once(); + // replay + replay(managementController); + + ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider( + type, + PropertyHelper.getPropertyIds(type), + PropertyHelper.getKeyPropertyIds(type), + managementController); + + Set<String> propertyIds = new HashSet<String>(); + + propertyIds.add(RootServiceComponentResourceProvider.SERVICE_NAME_PROPERTY_ID); + propertyIds.add(RootServiceComponentResourceProvider.COMPONENT_NAME_PROPERTY_ID); + propertyIds.add(RootServiceComponentResourceProvider.PROPERTIES_PROPERTY_ID); + + // create the request + Request request = PropertyHelper.getReadRequest(propertyIds); + + // get all ... no predicate + Set<Resource> resources = provider.getResources(request, null); + + Assert.assertEquals(allResponse.size(), resources.size()); + for (Resource resource : resources) { + String componentName = (String) resource.getPropertyValue(RootServiceComponentResourceProvider.COMPONENT_NAME_PROPERTY_ID); + Assert.assertTrue(allResponse.contains(new RootServiceComponentResponse(componentName, Collections.<String,String>emptyMap()))); + } + + // get service named service4 + Predicate predicate = + new PredicateBuilder().property(RootServiceComponentResourceProvider.COMPONENT_NAME_PROPERTY_ID). + equals("component4").toPredicate(); + resources = provider.getResources(request, predicate); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals("component4", resources.iterator().next(). + getPropertyValue(RootServiceComponentResourceProvider.COMPONENT_NAME_PROPERTY_ID)); + + + // verify + verify(managementController); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/8f5b6628/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceHostComponentResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceHostComponentResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceHostComponentResourceProviderTest.java new file mode 100644 index 0000000..3cf9a3d --- /dev/null +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceHostComponentResourceProviderTest.java @@ -0,0 +1,112 @@ +/** + * 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 static org.easymock.EasyMock.createMock; +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.HashSet; +import java.util.Set; + +import org.apache.ambari.server.controller.AmbariManagementController; +import org.apache.ambari.server.controller.RootServiceHostComponentRequest; +import org.apache.ambari.server.controller.RootServiceHostComponentResponse; +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; + +public class RootServiceHostComponentResourceProviderTest { + + @Test + public void testGetResources() throws Exception{ + Resource.Type type = Resource.Type.RootServiceHostComponent; + + AmbariManagementController managementController = createMock(AmbariManagementController.class); + + Set<RootServiceHostComponentResponse> allResponse = new HashSet<RootServiceHostComponentResponse>(); + allResponse.add(new RootServiceHostComponentResponse("host1", "component1", "HEALTHY", Collections.<String,String>emptyMap())); + allResponse.add(new RootServiceHostComponentResponse("host2", "component2", "HEALTHY", Collections.<String,String>emptyMap())); + allResponse.add(new RootServiceHostComponentResponse("host3", "component3", "HEARBEAT_LOST", Collections.<String,String>emptyMap())); + + Set<RootServiceHostComponentResponse> nameResponse = new HashSet<RootServiceHostComponentResponse>(); + nameResponse.add(new RootServiceHostComponentResponse("host4", "component4", "HEALTHY", Collections.<String,String>emptyMap())); + + + // set expectations + expect(managementController.getRootServiceHostComponents(EasyMock.<Set<RootServiceHostComponentRequest>>anyObject())).andReturn(allResponse).once(); + expect(managementController.getRootServiceHostComponents(EasyMock.<Set<RootServiceHostComponentRequest>>anyObject())).andReturn(nameResponse).once(); + // replay + replay(managementController); + + ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider( + type, + PropertyHelper.getPropertyIds(type), + PropertyHelper.getKeyPropertyIds(type), + managementController); + + Set<String> propertyIds = new HashSet<String>(); + + propertyIds.add(RootServiceHostComponentResourceProvider.SERVICE_NAME_PROPERTY_ID); + propertyIds.add(RootServiceHostComponentResourceProvider.HOST_NAME_PROPERTY_ID); + propertyIds.add(RootServiceHostComponentResourceProvider.COMPONENT_NAME_PROPERTY_ID); + propertyIds.add(RootServiceHostComponentResourceProvider.COMPONENT_STATE_PROPERTY_ID); + propertyIds.add(RootServiceHostComponentResourceProvider.PROPERTIES_PROPERTY_ID); + + + // create the request + Request request = PropertyHelper.getReadRequest(propertyIds); + + // get all ... no predicate + Set<Resource> resources = provider.getResources(request, null); + + Assert.assertEquals(allResponse.size(), resources.size()); + for (Resource resource : resources) { + String hostName = (String) resource.getPropertyValue(RootServiceHostComponentResourceProvider.HOST_NAME_PROPERTY_ID); + String componentName = (String) resource.getPropertyValue(RootServiceHostComponentResourceProvider.COMPONENT_NAME_PROPERTY_ID); + String componentState = (String) resource.getPropertyValue(RootServiceHostComponentResourceProvider.COMPONENT_STATE_PROPERTY_ID); + Assert.assertTrue(allResponse.contains(new RootServiceHostComponentResponse(hostName, componentName, componentState, + Collections.<String, String>emptyMap()))); + } + + // get service named service4 + Predicate predicate = + new PredicateBuilder().property(RootServiceHostComponentResourceProvider.COMPONENT_NAME_PROPERTY_ID). + equals("component4").toPredicate(); + resources = provider.getResources(request, predicate); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals("component4", resources.iterator().next(). + getPropertyValue(RootServiceHostComponentResourceProvider.COMPONENT_NAME_PROPERTY_ID)); + + + // verify + verify(managementController); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/8f5b6628/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceResourceProviderTest.java new file mode 100644 index 0000000..f59cc90 --- /dev/null +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceResourceProviderTest.java @@ -0,0 +1,102 @@ +/** + * 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 static org.easymock.EasyMock.createMock; +import static org.easymock.EasyMock.expect; +import static org.easymock.EasyMock.replay; +import static org.easymock.EasyMock.verify; + +import java.util.HashSet; +import java.util.Set; + +import org.apache.ambari.server.controller.AmbariManagementController; +import org.apache.ambari.server.controller.RootServiceRequest; +import org.apache.ambari.server.controller.RootServiceResponse; +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; + +public class RootServiceResourceProviderTest { + + @Test + public void testGetResources() throws Exception{ + Resource.Type type = Resource.Type.RootService; + + AmbariManagementController managementController = createMock(AmbariManagementController.class); + + Set<RootServiceResponse> allResponse = new HashSet<RootServiceResponse>(); + allResponse.add(new RootServiceResponse("service1")); + allResponse.add(new RootServiceResponse("service2")); + allResponse.add(new RootServiceResponse("service3")); + + Set<RootServiceResponse> nameResponse = new HashSet<RootServiceResponse>(); + nameResponse.add(new RootServiceResponse("service4")); + + + // set expectations + expect(managementController.getRootServices(EasyMock.<Set<RootServiceRequest>>anyObject())).andReturn(allResponse).once(); + expect(managementController.getRootServices(EasyMock.<Set<RootServiceRequest>>anyObject())).andReturn(nameResponse).once(); + // replay + replay(managementController); + + ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider( + type, + PropertyHelper.getPropertyIds(type), + PropertyHelper.getKeyPropertyIds(type), + managementController); + + Set<String> propertyIds = new HashSet<String>(); + + propertyIds.add(RootServiceResourceProvider.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(allResponse.size(), resources.size()); + for (Resource resource : resources) { + String serviceName = (String) resource.getPropertyValue(RootServiceResourceProvider.SERVICE_NAME_PROPERTY_ID); + Assert.assertTrue(allResponse.contains(new RootServiceResponse(serviceName))); + } + + // get service named service4 + Predicate predicate = + new PredicateBuilder().property(RootServiceResourceProvider.SERVICE_NAME_PROPERTY_ID). + equals("service4").toPredicate(); + resources = provider.getResources(request, predicate); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals("service4", resources.iterator().next(). + getPropertyValue(RootServiceResourceProvider.SERVICE_NAME_PROPERTY_ID)); + + + // verify + verify(managementController); + } + +}
