Repository: falcon Updated Branches: refs/heads/master 8b352fcfa -> 1ebf025ba
FALCON-1490 Fixing inconsistencies in filterBy behavior (Narayan Periwal via Balu Vellanki) Project: http://git-wip-us.apache.org/repos/asf/falcon/repo Commit: http://git-wip-us.apache.org/repos/asf/falcon/commit/1ebf025b Tree: http://git-wip-us.apache.org/repos/asf/falcon/tree/1ebf025b Diff: http://git-wip-us.apache.org/repos/asf/falcon/diff/1ebf025b Branch: refs/heads/master Commit: 1ebf025ba1f2512e1fab75edc2908123dd548657 Parents: 8b352fc Author: bvellanki <[email protected]> Authored: Tue Dec 1 12:45:17 2015 -0800 Committer: bvellanki <[email protected]> Committed: Tue Dec 1 12:45:17 2015 -0800 ---------------------------------------------------------------------- CHANGES.txt | 2 ++ .../falcon/resource/AbstractEntityManager.java | 34 ++++++++++++++++++-- .../falcon/resource/EntityManagerTest.java | 26 +++++++++++++++ 3 files changed, 60 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/falcon/blob/1ebf025b/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 2f3787a..cdd9eb6 100755 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -9,6 +9,8 @@ Trunk (Unreleased) INCOMPATIBLE CHANGES NEW FEATURES + FALCON-1490 Fixing inconsistencies in filterBy behavior (Narayan Periwal via Balu Vellanki) + FALCON-1233 Support co-existence of Oozie scheduler (coord) and Falcon native scheduler (Pallavi Rao) FALCON-1596 Spring shell based CLI for Falcon http://git-wip-us.apache.org/repos/asf/falcon/blob/1ebf025b/prism/src/main/java/org/apache/falcon/resource/AbstractEntityManager.java ---------------------------------------------------------------------- diff --git a/prism/src/main/java/org/apache/falcon/resource/AbstractEntityManager.java b/prism/src/main/java/org/apache/falcon/resource/AbstractEntityManager.java index 5571326..2f97c0d 100644 --- a/prism/src/main/java/org/apache/falcon/resource/AbstractEntityManager.java +++ b/prism/src/main/java/org/apache/falcon/resource/AbstractEntityManager.java @@ -890,6 +890,36 @@ public abstract class AbstractEntityManager { return false; } + private boolean isFilteredByPipelines(List<String> filterPipelinesList, List<String> pipelines) { + if (filterPipelinesList.isEmpty()) { + return false; + } else if (pipelines.isEmpty()) { + return true; + } + + for (String pipeline : filterPipelinesList) { + if (pipelines.contains(pipeline)) { + return false; + } + } + return true; + } + + private boolean isFilteredByClusters(List<String> filterClustersList, Set<String> clusters) { + if (filterClustersList.isEmpty()) { + return false; + } else if (clusters.isEmpty()) { + return true; + } + + for (String cluster : filterClustersList) { + if (clusters.contains(cluster)) { + return false; + } + } + return true; + } + private boolean isFilteredByFields(Entity entity, Map<String, List<String>> filterKeyVals) { if (filterKeyVals.isEmpty()) { return false; @@ -924,10 +954,10 @@ public abstract class AbstractEntityManager { "Invalid filterBy key for non process entities " + pair.getKey(), Response.Status.BAD_REQUEST); } - return !EntityUtil.getPipelines(entity).contains(pair.getValue().get(0)); + return isFilteredByPipelines(pair.getValue(), EntityUtil.getPipelines(entity)); case CLUSTER: - return !EntityUtil.getClustersDefined(entity).contains(pair.getValue().get(0)); + return isFilteredByClusters(pair.getValue(), EntityUtil.getClustersDefined(entity)); case TAGS: return isFilteredByTags(getFilterByTags(pair.getValue()), EntityUtil.getTags(entity)); http://git-wip-us.apache.org/repos/asf/falcon/blob/1ebf025b/prism/src/test/java/org/apache/falcon/resource/EntityManagerTest.java ---------------------------------------------------------------------- diff --git a/prism/src/test/java/org/apache/falcon/resource/EntityManagerTest.java b/prism/src/test/java/org/apache/falcon/resource/EntityManagerTest.java index 5fabcf3..99a537d 100644 --- a/prism/src/test/java/org/apache/falcon/resource/EntityManagerTest.java +++ b/prism/src/test/java/org/apache/falcon/resource/EntityManagerTest.java @@ -196,6 +196,32 @@ public class EntityManagerTest extends AbstractEntityManager { } @Test + public void testGetEntityListPipelinesFilterBy() throws Exception { + Entity process2 = buildProcess("processAuthUserPipelinesFilterBy", System.getProperty("user.name"), "", + "USER-DATA1"); + configStore.publish(EntityType.PROCESS, process2); + + EntityList entityList = this.getEntityList("", "", "", "process", "", + "PIPELINES:USER-DATA2,PIPELINES:USER-DATA1", "", "asc", 0, 10, ""); + Assert.assertNotNull(entityList.getElements()); + Assert.assertEquals(entityList.getElements().length, 1); + Assert.assertNotNull(entityList.getElements()[0].pipeline); + Assert.assertEquals(entityList.getElements()[0].pipeline.get(0), "USER-DATA1"); + } + + @Test + public void testGetEntityListClustersFilterBy() throws Exception { + Entity process2 = buildProcess("processClusters1", System.getProperty("user.name"), "", ""); + configStore.publish(EntityType.PROCESS, process2); + + EntityList entityList = this.getEntityList("", "", "", "process", "", + "CLUSTER:clusterprocessClusters2,CLUSTER:clusterprocessClusters1", "", "asc", 0, 10, ""); + Assert.assertNotNull(entityList.getElements()); + Assert.assertEquals(entityList.getElements().length, 1); + Assert.assertEquals(entityList.getElements()[0].name, "processClusters1"); + } + + @Test public void testNumberOfResults() { Assert.assertEquals(getRequiredNumberOfResults(10000, 0, 10000), 10000); Assert.assertEquals(getRequiredNumberOfResults(10000, 0, 4000), 4000);
