|
@@ -1,615 +0,0 @@
|
|
|
-package org.apache.ambari.server.api.query;
|
|
|
-
|
|
|
-/**
|
|
|
- * 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.
|
|
|
- */
|
|
|
-
|
|
|
-import org.apache.ambari.server.api.resources.ResourceDefinition;
|
|
|
-import org.apache.ambari.server.api.util.TreeNode;
|
|
|
-import org.apache.ambari.server.api.util.TreeNodeImpl;
|
|
|
-import org.apache.ambari.server.controller.predicate.AndPredicate;
|
|
|
-import org.apache.ambari.server.controller.spi.*;
|
|
|
-import org.apache.ambari.server.controller.utilities.PredicateBuilder;
|
|
|
-import org.apache.ambari.server.api.resources.ResourceInstance;
|
|
|
-import org.apache.ambari.server.api.services.Result;
|
|
|
-import org.apache.ambari.server.controller.utilities.PropertyHelper;
|
|
|
-import org.junit.After;
|
|
|
-import org.junit.Test;
|
|
|
-
|
|
|
-import java.util.*;
|
|
|
-
|
|
|
-import static org.easymock.EasyMock.*;
|
|
|
-
|
|
|
-import static org.easymock.EasyMock.eq;
|
|
|
-import static org.junit.Assert.assertEquals;
|
|
|
-import static org.junit.Assert.assertSame;
|
|
|
-import static org.junit.Assert.assertTrue;
|
|
|
-
|
|
|
-
|
|
|
-//todo: add assertions for temporal info
|
|
|
-public class QueryImplTest {
|
|
|
-
|
|
|
- ClusterController m_controller = createNiceMock(ClusterController.class);
|
|
|
-
|
|
|
- @Test
|
|
|
- public void testExecute__Component_instance_noSpecifiedProps() throws Exception {
|
|
|
- Result result = createNiceMock(Result.class);
|
|
|
- ResourceInstance componentResourceInstance = createNiceMock(ResourceInstance.class);
|
|
|
- ResourceDefinition componentResourceDefinition = createNiceMock(ResourceDefinition.class);
|
|
|
- ResourceInstance hostResourceInstance = createNiceMock(ResourceInstance.class);
|
|
|
- ResourceDefinition hostResourceDefinition = createNiceMock(ResourceDefinition.class);
|
|
|
- Schema componentSchema = createNiceMock(Schema.class);
|
|
|
- Resource componentResource = createNiceMock(Resource.class);
|
|
|
- String componentPropertyId = "componentId";
|
|
|
- Query hostComponentQuery = createStrictMock(Query.class);
|
|
|
- Result hostComponentQueryResult = createNiceMock(Result.class);
|
|
|
-
|
|
|
- TreeNode<Resource> tree = new TreeNodeImpl<Resource>(null, null, null);
|
|
|
- TreeNode<Resource> hostComponentResultNode = new TreeNodeImpl<Resource>(null, null, null);
|
|
|
- List<Resource> listResources = Collections.singletonList(componentResource);
|
|
|
-
|
|
|
- Map<Resource.Type, String> mapResourceIds = new HashMap<Resource.Type, String>();
|
|
|
- mapResourceIds.put(Resource.Type.Cluster, "clusterName");
|
|
|
- mapResourceIds.put(Resource.Type.Service, "serviceName");
|
|
|
- mapResourceIds.put(Resource.Type.Component, "componentName");
|
|
|
-
|
|
|
- Map<String, ResourceInstance> mapChildren = new HashMap<String, ResourceInstance>();
|
|
|
- mapChildren.put("host_components", hostResourceInstance);
|
|
|
-
|
|
|
- PredicateBuilder pb = new PredicateBuilder();
|
|
|
- Predicate predicate = pb.property("clusterId").equals("clusterName").and().
|
|
|
- property("serviceId").equals("serviceName").and().
|
|
|
- property("componentId").equals("componentName").toPredicate();
|
|
|
-
|
|
|
- // expectations
|
|
|
- expect(componentResourceInstance.getResourceDefinition()).andReturn(componentResourceDefinition).anyTimes();
|
|
|
- expect(componentResourceInstance.getSubResources()).andReturn(mapChildren).anyTimes();
|
|
|
- expect(componentResourceInstance.getIds()).andReturn(mapResourceIds).anyTimes();
|
|
|
-
|
|
|
- expect(componentResourceDefinition.getType()).andReturn(Resource.Type.Component).anyTimes();
|
|
|
-
|
|
|
- expect(componentResource.getType()).andReturn(Resource.Type.Component).anyTimes();
|
|
|
- expect(componentResource.getPropertyValue(componentPropertyId)).andReturn("keyVal");
|
|
|
-
|
|
|
- expect(m_controller.getSchema(Resource.Type.Component)).andReturn(componentSchema).anyTimes();
|
|
|
-
|
|
|
- expect(componentSchema.getKeyPropertyId(Resource.Type.Cluster)).andReturn("clusterId");
|
|
|
- expect(componentSchema.getKeyPropertyId(Resource.Type.Service)).andReturn("serviceId");
|
|
|
- expect(componentSchema.getKeyPropertyId(Resource.Type.Component)).andReturn(componentPropertyId).atLeastOnce();
|
|
|
-
|
|
|
- expect(m_controller.getResources(eq(Resource.Type.Component), eq(PropertyHelper.getReadRequest(Collections.<String>emptySet())),
|
|
|
- eq(predicate))).andReturn(listResources);
|
|
|
-
|
|
|
- expect(result.getResultTree()).andReturn(tree).anyTimes();
|
|
|
-
|
|
|
- Map<Resource.Type, String> mapResourceIdsSet = new HashMap<Resource.Type, String>(mapResourceIds);
|
|
|
- mapResourceIdsSet.put(Resource.Type.Component, "keyVal");
|
|
|
- hostResourceInstance.setIds(mapResourceIdsSet);
|
|
|
- expect(hostResourceInstance.getResourceDefinition()).andReturn(hostResourceDefinition).anyTimes();
|
|
|
- expect(hostResourceInstance.getQuery()).andReturn(hostComponentQuery).anyTimes();
|
|
|
-
|
|
|
- expect(hostResourceDefinition.getType()).andReturn(Resource.Type.Host);
|
|
|
- expect(hostComponentQuery.execute()).andReturn(hostComponentQueryResult);
|
|
|
- expect(hostComponentQueryResult.getResultTree()).andReturn(hostComponentResultNode);
|
|
|
-
|
|
|
- replay(m_controller, result, componentResourceInstance, componentResourceDefinition, hostResourceInstance, componentSchema, componentResource,
|
|
|
- hostComponentQuery, hostComponentQueryResult);
|
|
|
-
|
|
|
- QueryImpl query = new TestQuery(componentResourceInstance, result);
|
|
|
- query.execute();
|
|
|
-
|
|
|
- verify(m_controller, result, componentResourceInstance, componentResourceDefinition, hostResourceInstance, componentSchema, componentResource,
|
|
|
- hostComponentQuery, hostComponentQueryResult);
|
|
|
-
|
|
|
- assertEquals(1, tree.getChildren().size());
|
|
|
- TreeNode<Resource> componentNode = tree.getChild("Component:1");
|
|
|
- assertEquals("Component:1", componentNode.getName());
|
|
|
- assertEquals(componentResource, componentNode.getObject());
|
|
|
- assertEquals(1, componentNode.getChildren().size());
|
|
|
- assertSame(hostComponentResultNode, componentNode.getChild("host_components"));
|
|
|
- assertEquals("false", hostComponentResultNode.getProperty("isCollection"));
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void testExecute__Component_collection_noSpecifiedProps() throws Exception {
|
|
|
- Result result = createNiceMock(Result.class);
|
|
|
- ResourceInstance componentResourceInstance = createNiceMock(ResourceInstance.class);
|
|
|
- ResourceDefinition componentResourceDefinition = createNiceMock(ResourceDefinition.class);
|
|
|
- Schema componentSchema = createNiceMock(Schema.class);
|
|
|
- Resource componentResource = createNiceMock(Resource.class);
|
|
|
- String componentPropertyId = "componentId";
|
|
|
- String servicePropertyId = "serviceId";
|
|
|
- String clusterPropertyId = "clusterId";
|
|
|
-
|
|
|
- Set<String> setPropertyIds = new HashSet<String>();
|
|
|
- setPropertyIds.add(clusterPropertyId);
|
|
|
- setPropertyIds.add(servicePropertyId);
|
|
|
- setPropertyIds.add(componentPropertyId);
|
|
|
-
|
|
|
- TreeNode<Resource> tree = new TreeNodeImpl<Resource>(null, null, null);
|
|
|
- List<Resource> listResources = Collections.singletonList(componentResource);
|
|
|
-
|
|
|
- Map<Resource.Type, String> mapResourceIds = new HashMap<Resource.Type, String>();
|
|
|
- mapResourceIds.put(Resource.Type.Cluster, "clusterName");
|
|
|
- mapResourceIds.put(Resource.Type.Service, "serviceName");
|
|
|
- mapResourceIds.put(Resource.Type.Component, null);
|
|
|
-
|
|
|
- PredicateBuilder pb = new PredicateBuilder();
|
|
|
- Predicate predicate = pb.property("clusterId").equals("clusterName").and().
|
|
|
- property("serviceId").equals("serviceName").toPredicate();
|
|
|
-
|
|
|
- // expectations
|
|
|
- expect(componentResource.getType()).andReturn(Resource.Type.Component).anyTimes();
|
|
|
-
|
|
|
- expect(componentResourceInstance.getIds()).andReturn(mapResourceIds).anyTimes();
|
|
|
- expect(componentResourceInstance.getResourceDefinition()).andReturn(componentResourceDefinition).anyTimes();
|
|
|
-
|
|
|
- expect(componentResourceDefinition.getType()).andReturn(Resource.Type.Component).anyTimes();
|
|
|
-
|
|
|
- expect(m_controller.getSchema(Resource.Type.Component)).andReturn(componentSchema).anyTimes();
|
|
|
-
|
|
|
- expect(componentSchema.getKeyPropertyId(Resource.Type.Component)).andReturn(componentPropertyId).anyTimes();
|
|
|
- expect(componentSchema.getKeyPropertyId(Resource.Type.Cluster)).andReturn("clusterId").anyTimes();
|
|
|
- expect(componentSchema.getKeyPropertyId(Resource.Type.Service)).andReturn("serviceId").anyTimes();
|
|
|
-
|
|
|
- expect(result.getResultTree()).andReturn(tree).anyTimes();
|
|
|
-
|
|
|
- expect(m_controller.getResources(eq(Resource.Type.Component), eq(PropertyHelper.getReadRequest(setPropertyIds)),
|
|
|
- eq(predicate))).andReturn(listResources);
|
|
|
-
|
|
|
- expect(componentResourceInstance.getSubResources()).andReturn(Collections.<String, ResourceInstance>emptyMap()).anyTimes();
|
|
|
-
|
|
|
- replay(m_controller, result,componentResourceInstance, componentResourceDefinition, componentSchema, componentResource);
|
|
|
-
|
|
|
- QueryImpl query = new TestQuery(componentResourceInstance, result);
|
|
|
- query.execute();
|
|
|
-
|
|
|
- verify(m_controller, result, componentResourceInstance, componentResourceDefinition, componentSchema, componentResource);
|
|
|
-
|
|
|
- assertEquals("true", tree.getProperty("isCollection"));
|
|
|
- assertEquals(1, tree.getChildren().size());
|
|
|
- TreeNode<Resource> componentNode = tree.getChild("Component:1");
|
|
|
- assertSame(componentResource, componentNode.getObject());
|
|
|
- assertEquals(0, componentNode.getChildren().size());
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void testExecute__collection_nullInternalPredicate_nullUserPredicate() throws Exception {
|
|
|
- Result result = createNiceMock(Result.class);
|
|
|
- ResourceInstance clusterResourceInstance = createNiceMock(ResourceInstance.class);
|
|
|
- ResourceDefinition clusterResourceDefinition = createNiceMock(ResourceDefinition.class);
|
|
|
- Schema clusterSchema = createNiceMock(Schema.class);
|
|
|
- Resource clusterResource = createNiceMock(Resource.class);
|
|
|
- String clusterPropertyId = "clusterId";
|
|
|
-
|
|
|
- TreeNode<Resource> tree = new TreeNodeImpl<Resource>(null, null, null);
|
|
|
- List<Resource> listResources = Collections.singletonList(clusterResource);
|
|
|
-
|
|
|
- Map<Resource.Type, String> mapResourceIds = new HashMap<Resource.Type, String>();
|
|
|
-
|
|
|
- // expectations
|
|
|
- expect(clusterResource.getType()).andReturn(Resource.Type.Cluster).anyTimes();
|
|
|
-
|
|
|
- expect(clusterResourceInstance.getIds()).andReturn(mapResourceIds).anyTimes();
|
|
|
- expect(clusterResourceInstance.getResourceDefinition()).andReturn(clusterResourceDefinition).anyTimes();
|
|
|
-
|
|
|
- expect(clusterResourceDefinition.getType()).andReturn(Resource.Type.Component).anyTimes();
|
|
|
-
|
|
|
- expect(m_controller.getSchema(Resource.Type.Component)).andReturn(clusterSchema).atLeastOnce();
|
|
|
-
|
|
|
- expect(clusterSchema.getKeyPropertyId(Resource.Type.Component)).andReturn(clusterPropertyId).atLeastOnce();
|
|
|
-
|
|
|
- expect(result.getResultTree()).andReturn(tree).atLeastOnce();
|
|
|
-
|
|
|
- expect(m_controller.getResources(eq(Resource.Type.Component), eq(PropertyHelper.getReadRequest(Collections.singleton(clusterPropertyId))),
|
|
|
- (Predicate) isNull())).andReturn(listResources);
|
|
|
-
|
|
|
-
|
|
|
- expect(clusterResourceInstance.getSubResources()).andReturn(Collections.<String, ResourceInstance>emptyMap()).anyTimes();
|
|
|
-
|
|
|
- replay(m_controller, result, clusterResourceInstance, clusterResourceDefinition, clusterSchema, clusterResource);
|
|
|
-
|
|
|
- QueryImpl query = new TestQuery(clusterResourceInstance, result);
|
|
|
- query.execute();
|
|
|
-
|
|
|
- verify(m_controller, result, clusterResourceInstance, clusterResourceDefinition, clusterSchema, clusterResource);
|
|
|
-
|
|
|
- assertEquals("true", tree.getProperty("isCollection"));
|
|
|
- assertEquals(1, tree.getChildren().size());
|
|
|
- TreeNode<Resource> clusterNode = tree.getChild("Cluster:1");
|
|
|
- assertSame(clusterResource, clusterNode.getObject());
|
|
|
- assertEquals(0, clusterNode.getChildren().size());
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void testExecute__collection_nullInternalPredicate_nonNullUserPredicate() throws Exception {
|
|
|
- Result result = createNiceMock(Result.class);
|
|
|
- ResourceInstance clusterResourceInstance = createNiceMock(ResourceInstance.class);
|
|
|
- ResourceDefinition clusterResourceDefinition = createNiceMock(ResourceDefinition.class);
|
|
|
- Schema clusterSchema = createNiceMock(Schema.class);
|
|
|
- Resource clusterResource = createNiceMock(Resource.class);
|
|
|
- String clusterPropertyId = "clusterId";
|
|
|
- Predicate userPredicate = createNiceMock(Predicate.class);
|
|
|
-
|
|
|
- TreeNode<Resource> tree = new TreeNodeImpl<Resource>(null, null, null);
|
|
|
- List<Resource> listResources = Collections.singletonList(clusterResource);
|
|
|
-
|
|
|
- Map<Resource.Type, String> mapResourceIds = new HashMap<Resource.Type, String>();
|
|
|
-
|
|
|
- // expectations
|
|
|
- expect(clusterResource.getType()).andReturn(Resource.Type.Cluster).anyTimes();
|
|
|
-
|
|
|
- expect(clusterResourceInstance.getIds()).andReturn(mapResourceIds).anyTimes();
|
|
|
- expect(clusterResourceInstance.getResourceDefinition()).andReturn(clusterResourceDefinition).anyTimes();
|
|
|
-
|
|
|
- expect(clusterResourceDefinition.getType()).andReturn(Resource.Type.Component).atLeastOnce();
|
|
|
-
|
|
|
- expect(m_controller.getSchema(Resource.Type.Component)).andReturn(clusterSchema).anyTimes();
|
|
|
- expect(clusterSchema.getKeyPropertyId(Resource.Type.Component)).andReturn(clusterPropertyId).anyTimes();
|
|
|
-
|
|
|
- expect(result.getResultTree()).andReturn(tree).anyTimes();
|
|
|
-
|
|
|
- expect(m_controller.getResources(eq(Resource.Type.Component), eq(PropertyHelper.getReadRequest(Collections.singleton(clusterPropertyId))),
|
|
|
- eq(userPredicate))).andReturn(listResources);
|
|
|
-
|
|
|
- expect(clusterResourceInstance.getSubResources()).andReturn(Collections.<String, ResourceInstance>emptyMap()).anyTimes();
|
|
|
-
|
|
|
- replay(m_controller, result,clusterResourceInstance, clusterResourceDefinition, clusterSchema, clusterResource, userPredicate);
|
|
|
-
|
|
|
- QueryImpl query = new TestQuery(clusterResourceInstance, result);
|
|
|
- query.setUserPredicate(userPredicate);
|
|
|
- query.execute();
|
|
|
-
|
|
|
- verify(m_controller, result, clusterResourceInstance, clusterResourceDefinition, clusterSchema, clusterResource, userPredicate);
|
|
|
-
|
|
|
- assertEquals("true", tree.getProperty("isCollection"));
|
|
|
- assertEquals(1, tree.getChildren().size());
|
|
|
- TreeNode<Resource> clusterNode = tree.getChild("Cluster:1");
|
|
|
- assertSame(clusterResource, clusterNode.getObject());
|
|
|
- assertEquals(0, clusterNode.getChildren().size());
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void testExecute__collection_nonNullInternalPredicate_nonNullUserPredicate() throws Exception {
|
|
|
- Result result = createNiceMock(Result.class);
|
|
|
- ResourceInstance componentResourceInstance = createNiceMock(ResourceInstance.class);
|
|
|
- ResourceDefinition componentResourceDefinition = createNiceMock(ResourceDefinition.class);
|
|
|
- Schema componentSchema = createNiceMock(Schema.class);
|
|
|
- Resource componentResource = createNiceMock(Resource.class);
|
|
|
- String componentPropertyId = "componentId";
|
|
|
- String servicePropertyId = "serviceId";
|
|
|
- String clusterPropertyId = "clusterId";
|
|
|
-
|
|
|
- Set<String> setPropertyIds = new HashSet<String>();
|
|
|
- setPropertyIds.add(clusterPropertyId);
|
|
|
- setPropertyIds.add(servicePropertyId);
|
|
|
- setPropertyIds.add(componentPropertyId);
|
|
|
-
|
|
|
- TreeNode<Resource> tree = new TreeNodeImpl<Resource>(null, null, null);
|
|
|
- List<Resource> listResources = Collections.singletonList(componentResource);
|
|
|
-
|
|
|
- Map<Resource.Type, String> mapResourceIds = new HashMap<Resource.Type, String>();
|
|
|
- mapResourceIds.put(Resource.Type.Cluster, "clusterName");
|
|
|
- mapResourceIds.put(Resource.Type.Service, "serviceName");
|
|
|
- mapResourceIds.put(Resource.Type.Component, null);
|
|
|
-
|
|
|
- PredicateBuilder pb = new PredicateBuilder();
|
|
|
- Predicate internalPredicate = pb.property("clusterId").equals("clusterName").and().
|
|
|
- property("serviceId").equals("serviceName").toPredicate();
|
|
|
-
|
|
|
- pb = new PredicateBuilder();
|
|
|
- Predicate userPredicate = pb.property("foo").equals("bar").toPredicate();
|
|
|
- // combine internal predicate and user predicate
|
|
|
- //todo: for now, need to cast to BasePredicate
|
|
|
- Predicate predicate = new AndPredicate(internalPredicate, userPredicate);
|
|
|
-
|
|
|
- // expectations
|
|
|
- expect(componentResource.getType()).andReturn(Resource.Type.Component).anyTimes();
|
|
|
-
|
|
|
- expect(componentResourceInstance.getIds()).andReturn(mapResourceIds).anyTimes();
|
|
|
- expect(componentResourceInstance.getResourceDefinition()).andReturn(componentResourceDefinition).anyTimes();
|
|
|
-
|
|
|
- expect(componentResourceDefinition.getType()).andReturn(Resource.Type.Component).anyTimes();
|
|
|
-
|
|
|
- expect(m_controller.getSchema(Resource.Type.Component)).andReturn(componentSchema).anyTimes();
|
|
|
- expect(componentSchema.getKeyPropertyId(Resource.Type.Component)).andReturn(componentPropertyId).atLeastOnce();
|
|
|
- expect(componentSchema.getKeyPropertyId(Resource.Type.Cluster)).andReturn("clusterId").anyTimes();
|
|
|
- expect(componentSchema.getKeyPropertyId(Resource.Type.Service)).andReturn("serviceId").anyTimes();
|
|
|
-
|
|
|
- expect(result.getResultTree()).andReturn(tree).anyTimes();
|
|
|
-
|
|
|
- expect(m_controller.getResources(eq(Resource.Type.Component), eq(PropertyHelper.getReadRequest(setPropertyIds)),
|
|
|
- eq(predicate))).andReturn(listResources);
|
|
|
-
|
|
|
- expect(componentResourceInstance.getSubResources()).andReturn(Collections.<String, ResourceInstance>emptyMap()).anyTimes();
|
|
|
-
|
|
|
- replay(m_controller, result, componentResourceInstance, componentResourceDefinition, componentSchema, componentResource);
|
|
|
-
|
|
|
- QueryImpl query = new TestQuery(componentResourceInstance, result);
|
|
|
- query.setUserPredicate(userPredicate);
|
|
|
- query.execute();
|
|
|
-
|
|
|
- verify(m_controller, result, componentResourceInstance, componentResourceDefinition, componentSchema, componentResource);
|
|
|
-
|
|
|
- assertEquals("true", tree.getProperty("isCollection"));
|
|
|
- assertEquals(1, tree.getChildren().size());
|
|
|
- TreeNode<Resource> componentNode = tree.getChild("Component:1");
|
|
|
- assertSame(componentResource, componentNode.getObject());
|
|
|
- assertEquals(0, componentNode.getChildren().size());
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void testAddProperty__localProperty() throws Exception {
|
|
|
- ResourceInstance resource = createNiceMock(ResourceInstance.class);
|
|
|
- ResourceDefinition resourceDefinition = createNiceMock(ResourceDefinition.class);
|
|
|
- Schema schema = createNiceMock(Schema.class);
|
|
|
-
|
|
|
- //expectations
|
|
|
- expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
|
|
|
- expect(resource.getSubResources()).andReturn(Collections.<String, ResourceInstance>emptyMap()).anyTimes();
|
|
|
-
|
|
|
- expect(resourceDefinition.getType()).andReturn(Resource.Type.Service).anyTimes();
|
|
|
-
|
|
|
- expect(m_controller.getSchema(Resource.Type.Service)).andReturn(schema).anyTimes();
|
|
|
-
|
|
|
- replay(m_controller, resource, resourceDefinition, schema);
|
|
|
-
|
|
|
- Query query = new TestQuery(resource, null);
|
|
|
- query.addProperty("category", "property", null);
|
|
|
-
|
|
|
- assertEquals(1, query.getProperties().size());
|
|
|
- assertTrue(query.getProperties().contains("category/property"));
|
|
|
-
|
|
|
- query.addProperty(null, "property2", null);
|
|
|
-
|
|
|
- assertEquals(2, query.getProperties().size());
|
|
|
- assertTrue(query.getProperties().contains("property2"));
|
|
|
-
|
|
|
- verify(m_controller, resource, resourceDefinition, schema);
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void testAddProperty__allProperties() throws Exception {
|
|
|
- ResourceInstance resource = createNiceMock(ResourceInstance.class);
|
|
|
- ResourceDefinition resourceDefinition = createNiceMock(ResourceDefinition.class);
|
|
|
- Schema schema = createNiceMock(Schema.class);
|
|
|
-
|
|
|
- //expectations
|
|
|
- expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
|
|
|
- expect(resource.getSubResources()).andReturn(Collections.<String, ResourceInstance>emptyMap()).anyTimes();
|
|
|
-
|
|
|
- expect(resourceDefinition.getType()).andReturn(Resource.Type.Service).anyTimes();
|
|
|
-
|
|
|
- expect(m_controller.getSchema(Resource.Type.Service)).andReturn(schema).anyTimes();
|
|
|
-
|
|
|
- replay(m_controller, resource, resourceDefinition, schema);
|
|
|
-
|
|
|
- Query query = new TestQuery(resource, null);
|
|
|
- query.addProperty(null, "*", null);
|
|
|
-
|
|
|
- assertEquals(0, query.getProperties().size());
|
|
|
-
|
|
|
- verify(m_controller, resource, resourceDefinition, schema);
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void testAddProperty__allCategoryProperties() throws Exception {
|
|
|
- ResourceInstance resource = createNiceMock(ResourceInstance.class);
|
|
|
- ResourceDefinition resourceDefinition = createNiceMock(ResourceDefinition.class);
|
|
|
- Schema schema = createNiceMock(Schema.class);
|
|
|
-
|
|
|
- //expectations
|
|
|
- expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
|
|
|
- expect(resource.getSubResources()).andReturn(Collections.<String, ResourceInstance>emptyMap()).anyTimes();
|
|
|
-
|
|
|
- expect(resourceDefinition.getType()).andReturn(Resource.Type.Service).anyTimes();
|
|
|
-
|
|
|
- expect(m_controller.getSchema(Resource.Type.Service)).andReturn(schema).anyTimes();
|
|
|
-
|
|
|
- replay(m_controller, resource, resourceDefinition, schema);
|
|
|
-
|
|
|
- Query query = new TestQuery(resource, null);
|
|
|
- query.addProperty("category", "*", null);
|
|
|
-
|
|
|
- assertEquals(1, query.getProperties().size());
|
|
|
- assertTrue(query.getProperties().contains("category"));
|
|
|
-
|
|
|
- verify(m_controller, resource, resourceDefinition, schema);
|
|
|
- }
|
|
|
-
|
|
|
- // this is the case where service can't differentiate category and property name
|
|
|
- // the category name is give as the property name
|
|
|
- @Test
|
|
|
- public void testAddProperty__localCategory_asPropertyName() throws Exception {
|
|
|
- ResourceInstance resource = createNiceMock(ResourceInstance.class);
|
|
|
- ResourceDefinition resourceDefinition = createNiceMock(ResourceDefinition.class);
|
|
|
- Schema schema = createNiceMock(Schema.class);
|
|
|
-
|
|
|
- //expectations
|
|
|
- expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
|
|
|
-
|
|
|
- expect(resourceDefinition.getType()).andReturn(Resource.Type.Service).anyTimes();
|
|
|
-
|
|
|
- expect(m_controller.getSchema(Resource.Type.Service)).andReturn(schema).anyTimes();
|
|
|
- expect(resource.getSubResources()).andReturn(Collections.<String, ResourceInstance>emptyMap()).anyTimes();
|
|
|
-
|
|
|
- replay(m_controller, resource, resourceDefinition, schema);
|
|
|
-
|
|
|
- Query query = new TestQuery(resource, null);
|
|
|
- query.addProperty(null, "category", null);
|
|
|
-
|
|
|
- Set<String> setProperties = query.getProperties();
|
|
|
- assertEquals(1, setProperties.size());
|
|
|
- assertTrue(setProperties.contains("category"));
|
|
|
-
|
|
|
- verify(m_controller, resource, resourceDefinition, schema);
|
|
|
- }
|
|
|
-
|
|
|
- // This is the case where the service can determine that only a category was provided because it contained
|
|
|
- // a trailing '/'
|
|
|
- @Test
|
|
|
- public void testAddProperty__localCategory_categoryNameOnly() throws Exception {
|
|
|
- ResourceInstance resource = createNiceMock(ResourceInstance.class);
|
|
|
- ResourceDefinition resourceDefinition = createNiceMock(ResourceDefinition.class);
|
|
|
- Schema schema = createNiceMock(Schema.class);
|
|
|
-
|
|
|
- //expectations
|
|
|
- expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
|
|
|
-
|
|
|
- expect(resourceDefinition.getType()).andReturn(Resource.Type.Service).anyTimes();
|
|
|
-
|
|
|
- expect(m_controller.getSchema(Resource.Type.Service)).andReturn(schema).anyTimes();
|
|
|
- expect(resource.getSubResources()).andReturn(Collections.<String, ResourceInstance>emptyMap()).anyTimes();
|
|
|
-
|
|
|
- replay(m_controller, resource, resourceDefinition, schema);
|
|
|
-
|
|
|
- Query query = new TestQuery(resource, null);
|
|
|
- query.addProperty("category/", "", null);
|
|
|
-
|
|
|
- Set<String> setProperties = query.getProperties();
|
|
|
- assertEquals(1, setProperties.size());
|
|
|
- assertTrue(setProperties.contains("category"));
|
|
|
-
|
|
|
- verify(m_controller, resource, resourceDefinition, schema);
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void testAddProperty__localSubCategory() throws Exception {
|
|
|
- ResourceInstance resource = createNiceMock(ResourceInstance.class);
|
|
|
- ResourceDefinition resourceDefinition = createNiceMock(ResourceDefinition.class);
|
|
|
- Schema schema = createNiceMock(Schema.class);
|
|
|
-
|
|
|
- //expectations
|
|
|
- expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
|
|
|
-
|
|
|
- expect(resourceDefinition.getType()).andReturn(Resource.Type.Service).anyTimes();
|
|
|
-
|
|
|
- expect(m_controller.getSchema(Resource.Type.Service)).andReturn(schema).anyTimes();
|
|
|
-
|
|
|
- expect(resource.getSubResources()).andReturn(Collections.<String, ResourceInstance>emptyMap()).anyTimes();
|
|
|
-
|
|
|
- replay(m_controller, resource, resourceDefinition, schema);
|
|
|
-
|
|
|
- Query query = new TestQuery(resource, null);
|
|
|
- query.addProperty("category", "nestedCategory", null);
|
|
|
-
|
|
|
- Set<String> setProperties = query.getProperties();
|
|
|
- assertEquals(1, setProperties.size());
|
|
|
- assertTrue(setProperties.contains("category/nestedCategory"));
|
|
|
-
|
|
|
- verify(m_controller, resource, resourceDefinition, schema);
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void testAddProperty__localCategorySubPropsOnly() throws Exception {
|
|
|
- ResourceInstance resource = createNiceMock(ResourceInstance.class);
|
|
|
- ResourceDefinition resourceDefinition = createNiceMock(ResourceDefinition.class);
|
|
|
- Schema schema = createNiceMock(Schema.class);
|
|
|
-
|
|
|
- //expectations
|
|
|
- expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
|
|
|
-
|
|
|
- expect(resourceDefinition.getType()).andReturn(Resource.Type.Service).anyTimes();
|
|
|
-
|
|
|
- expect(m_controller.getSchema(Resource.Type.Service)).andReturn(schema).anyTimes();
|
|
|
- expect(resource.getSubResources()).andReturn(Collections.<String, ResourceInstance>emptyMap()).anyTimes();
|
|
|
-
|
|
|
- replay(m_controller, resource, resourceDefinition, schema);
|
|
|
-
|
|
|
- Query query = new TestQuery(resource, null);
|
|
|
- query.addProperty(null, "category", null);
|
|
|
-
|
|
|
- Set<String> setProperties = query.getProperties();
|
|
|
- assertEquals(1, setProperties.size());
|
|
|
- assertTrue(setProperties.contains("category"));
|
|
|
-
|
|
|
- verify(m_controller, resource, resourceDefinition, schema);
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void testAddProperty__subProperty() throws Exception {
|
|
|
- ResourceInstance resource = createNiceMock(ResourceInstance.class);
|
|
|
- ResourceDefinition resourceDefinition = createNiceMock(ResourceDefinition.class);
|
|
|
- ResourceInstance subResource = createNiceMock(ResourceInstance.class);
|
|
|
- Schema schema = createNiceMock(Schema.class);
|
|
|
-
|
|
|
- Map<Resource.Type, String> mapResourceIds = new HashMap<Resource.Type, String>();
|
|
|
- mapResourceIds.put(Resource.Type.Service, "serviceName");
|
|
|
- mapResourceIds.put(Resource.Type.Component, "componentName");
|
|
|
-
|
|
|
- //expectations
|
|
|
- expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
|
|
|
-
|
|
|
- expect(resourceDefinition.getType()).andReturn(Resource.Type.Service).anyTimes();
|
|
|
-
|
|
|
- expect(m_controller.getSchema(Resource.Type.Service)).andReturn(schema).anyTimes();
|
|
|
-
|
|
|
- expect(schema.getKeyPropertyId(Resource.Type.Service)).andReturn("serviceName").anyTimes();
|
|
|
- expect(schema.getKeyPropertyId(Resource.Type.Component)).andReturn("componentName").anyTimes();
|
|
|
-
|
|
|
- expect(resource.getSubResources()).andReturn(Collections.singletonMap("components", subResource)).anyTimes();
|
|
|
- expect(resource.getIds()).andReturn(mapResourceIds).anyTimes();
|
|
|
-
|
|
|
- //todo: ensure that sub-resource was added.
|
|
|
-
|
|
|
- replay(m_controller, resource, resourceDefinition, subResource, schema);
|
|
|
-
|
|
|
- Query query = new TestQuery(resource, null);
|
|
|
- query.addProperty(null, "components", null);
|
|
|
-
|
|
|
- // verify that only the key properties of the parent resource have been added to the query
|
|
|
- Set<String> properties = query.getProperties();
|
|
|
- assertEquals(2, properties.size());
|
|
|
- assertTrue(properties.contains("serviceName"));
|
|
|
- assertTrue(properties.contains("componentName"));
|
|
|
-
|
|
|
- verify(m_controller, resource, resourceDefinition, subResource, schema);
|
|
|
- }
|
|
|
-
|
|
|
- //todo: sub-resource with property and with sub-path
|
|
|
-
|
|
|
-// @Test
|
|
|
-// public void testAddProperty__invalidProperty() {
|
|
|
-//
|
|
|
-// }
|
|
|
-
|
|
|
- private class TestQuery extends QueryImpl {
|
|
|
-
|
|
|
- private Result m_result;
|
|
|
-
|
|
|
- public TestQuery(ResourceInstance ResourceInstance, Result result) {
|
|
|
- super(ResourceInstance);
|
|
|
- m_result = result;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- ClusterController getClusterController() {
|
|
|
- return m_controller;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- Result createResult() {
|
|
|
- return m_result;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @After
|
|
|
- public void resetGlobalMocks() {
|
|
|
- reset(m_controller);
|
|
|
- }
|
|
|
-}
|