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);
+  }
+
+}

Reply via email to