You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sw...@apache.org on 2015/04/15 22:58:59 UTC

ambari git commit: AMBARI-10505. Equals predicate does not work for host component metrics. (swagle)

Repository: ambari
Updated Branches:
  refs/heads/trunk e9617f7f6 -> f05543d39


AMBARI-10505. Equals predicate does not work for host component metrics. (swagle)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/f05543d3
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/f05543d3
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/f05543d3

Branch: refs/heads/trunk
Commit: f05543d393aed760f49f799a447366d45b3a128b
Parents: e9617f7
Author: Siddharth Wagle <sw...@hortonworks.com>
Authored: Wed Apr 15 13:16:17 2015 -0700
Committer: Siddharth Wagle <sw...@hortonworks.com>
Committed: Wed Apr 15 13:58:56 2015 -0700

----------------------------------------------------------------------
 .../ambari/server/api/query/QueryImpl.java      |  2 +-
 .../ambari/server/api/query/QueryImplTest.java  | 73 ++++++++++++++++++++
 2 files changed, 74 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/f05543d3/ambari-server/src/main/java/org/apache/ambari/server/api/query/QueryImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/query/QueryImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/api/query/QueryImpl.java
index 0ab9d07..2319683 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/query/QueryImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/query/QueryImpl.java
@@ -445,7 +445,7 @@ public class QueryImpl implements Query, ResourceInstance {
             new QueryResult(request, queryPredicate, subResourcePredicate, map, new QueryResponseImpl(resourceSet)));
         }
       }
-      clusterController.populateResources(resourceType, providerResourceSet, request, null);
+      clusterController.populateResources(resourceType, providerResourceSet, request, subResourcePredicate);
       subResource.queryForSubResources();
     }
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/f05543d3/ambari-server/src/test/java/org/apache/ambari/server/api/query/QueryImplTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/api/query/QueryImplTest.java b/ambari-server/src/test/java/org/apache/ambari/server/api/query/QueryImplTest.java
index 5ac91fd..01361d2 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/api/query/QueryImplTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/api/query/QueryImplTest.java
@@ -23,6 +23,7 @@ package org.apache.ambari.server.api.query;
 import static org.easymock.EasyMock.anyBoolean;
 import static org.easymock.EasyMock.anyObject;
 import static org.easymock.EasyMock.capture;
+import static org.easymock.EasyMock.createMock;
 import static org.easymock.EasyMock.createNiceMock;
 import static org.easymock.EasyMock.eq;
 import static org.easymock.EasyMock.expect;
@@ -301,6 +302,78 @@ public class QueryImplTest {
   }
 
   @Test
+  public void testExecute_SubResourcePropertyPredicate() throws Exception {
+    ResourceDefinition resourceDefinition = new ClusterResourceDefinition();
+
+    Map<Resource.Type, String> mapIds = new HashMap<Resource.Type, String>();
+    mapIds.put(Resource.Type.Cluster, "c1");
+    mapIds.put(Resource.Type.Host, "h1");
+
+    ClusterController clusterController = createNiceMock(ClusterController.class);
+    QueryResponse clusterResponse = createNiceMock(QueryResponse.class);
+    QueryResponse hostResponse = createNiceMock(QueryResponse.class);
+    Schema clusterSchema = createNiceMock("ClusterSchema", Schema.class);
+    Schema hostSchema = createNiceMock("HostSchema", Schema.class);
+    Renderer renderer = createNiceMock(Renderer.class);
+    Resource clusterResource = createMock("ClusterResource", Resource.class);
+    Resource hostResource = createMock("HostResource", Resource.class);
+    Set<Resource> clusterResources = Collections.singleton(clusterResource);
+    Set<Resource> hostResources = Collections.singleton(hostResource);
+    Iterable<Resource> iterable = createNiceMock(Iterable.class);
+    Iterator<Resource> iterator = createNiceMock(Iterator.class);
+
+    expect(clusterController.getSchema(Resource.Type.Cluster)).andReturn(clusterSchema).anyTimes();
+    expect(clusterController.getSchema(Resource.Type.Host)).andReturn(hostSchema).anyTimes();
+
+    expect(clusterController.getResources(eq(Resource.Type.Cluster),
+      anyObject(org.apache.ambari.server.controller.spi.Request.class), anyObject(Predicate.class))).
+      andReturn(clusterResponse);
+
+    // Expect this call with a predicate passed down
+    expect(clusterController.getResources(eq(Resource.Type.Host),
+      anyObject(org.apache.ambari.server.controller.spi.Request.class), anyObject(Predicate.class))).
+      andReturn(hostResponse);
+
+    expect(iterable.iterator()).andReturn(iterator).anyTimes();
+    expect(iterator.hasNext()).andReturn(false).anyTimes();
+
+    expect(clusterResponse.getResources()).andReturn(clusterResources).anyTimes();
+    expect(hostResponse.getResources()).andReturn(hostResources).anyTimes();
+    expect(clusterResource.getType()).andReturn(Resource.Type.Cluster).anyTimes();
+    expect(hostResource.getType()).andReturn(Resource.Type.Host).anyTimes();
+
+    expect(clusterSchema.getKeyPropertyId(Resource.Type.Cluster)).andReturn("Clusters/cluster_name").anyTimes();
+    expect(clusterSchema.getKeyTypes()).andReturn(Collections.singleton(Resource.Type.Cluster)).anyTimes();
+    expect(hostSchema.getKeyPropertyId(Resource.Type.Cluster)).andReturn(null).anyTimes();
+    expect(hostSchema.getKeyPropertyId(Resource.Type.Host)).andReturn("Hosts/host_name").anyTimes();
+    expect(hostSchema.getKeyTypes()).andReturn(Collections.singleton(Resource.Type.Host)).anyTimes();
+
+    expect(clusterResource.getPropertyValue("Clusters/cluster_name")).andReturn("c1").anyTimes();
+
+    TreeNode<Set<String>> treeNode = new TreeNodeImpl<Set<String>>(null, Collections.EMPTY_SET, null);
+    expect(renderer.finalizeProperties(anyObject(TreeNode.class), anyBoolean())).andReturn(treeNode).anyTimes();
+
+    expect(clusterController.getIterable(eq(Resource.Type.Cluster), anyObject(QueryResponse.class),
+      anyObject(org.apache.ambari.server.controller.spi.Request.class), anyObject(Predicate.class),
+      anyObject(PageRequest.class), anyObject(SortRequest.class))).andReturn(iterable).anyTimes();
+
+    replay(clusterController, clusterResponse, clusterSchema, renderer,
+      hostSchema, clusterResource, hostResource, hostResponse, iterable, iterator);
+
+    //test
+    QueryImpl query = new TestQuery(mapIds, resourceDefinition, clusterController);
+    query.setUserPredicate(new PredicateBuilder()
+      .property("hosts/Hosts/host_name").equals("h1").and()
+      .property("metrics/boottime").equals("value").toPredicate());
+    query.setRenderer(renderer);
+
+    query.execute();
+
+    verify(clusterController, clusterResponse, clusterSchema, renderer,
+      hostSchema, clusterResource, hostResource, hostResponse, iterable, iterator);
+  }
+
+  @Test
   public void testExecute_collection_NoSuchResourceException() throws Exception {
     ResourceDefinition resourceDefinition = new ClusterResourceDefinition();