Repository: lens Updated Branches: refs/heads/master d46e78cff -> 6af57fb67
LENS-773: Include dimension table partitions in FactPartitionBasedQueryCostCalculator Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/6af57fb6 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/6af57fb6 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/6af57fb6 Branch: refs/heads/master Commit: 6af57fb6748eaf2501258d1f9756c3476a6e3087 Parents: d46e78c Author: Amareshwari Sriramadasu <amareshw...@apache.org> Authored: Mon Jan 30 12:42:14 2017 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Mon Jan 30 12:42:14 2017 +0530 ---------------------------------------------------------------------- .../FactPartitionBasedQueryCostCalculator.java | 3 +++ ...stFactPartitionBasedQueryCostCalculator.java | 21 +++++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lens/blob/6af57fb6/lens-cube/src/main/java/org/apache/lens/cube/query/cost/FactPartitionBasedQueryCostCalculator.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/query/cost/FactPartitionBasedQueryCostCalculator.java b/lens-cube/src/main/java/org/apache/lens/cube/query/cost/FactPartitionBasedQueryCostCalculator.java index 9fecdbc..3c157ee 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/query/cost/FactPartitionBasedQueryCostCalculator.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/query/cost/FactPartitionBasedQueryCostCalculator.java @@ -67,6 +67,9 @@ public class FactPartitionBasedQueryCostCalculator implements QueryCostCalculato } cost += allTableWeights * getNormalizedUpdatePeriodCost(partition.getPeriod(), driver); } + } else { + // increase cost for every dimtable partition + cost += 1.0; } } return cost; http://git-wip-us.apache.org/repos/asf/lens/blob/6af57fb6/lens-cube/src/test/java/org/apache/lens/cube/query/cost/TestFactPartitionBasedQueryCostCalculator.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/query/cost/TestFactPartitionBasedQueryCostCalculator.java b/lens-cube/src/test/java/org/apache/lens/cube/query/cost/TestFactPartitionBasedQueryCostCalculator.java index 262d452..b5e73fd 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/query/cost/TestFactPartitionBasedQueryCostCalculator.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/query/cost/TestFactPartitionBasedQueryCostCalculator.java @@ -25,6 +25,7 @@ import static org.apache.lens.cube.metadata.UpdatePeriod.*; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import static org.testng.Assert.*; import java.util.HashMap; import java.util.Set; @@ -43,12 +44,12 @@ import org.testng.annotations.Test; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Sets; -import junit.framework.Assert; public class TestFactPartitionBasedQueryCostCalculator { AbstractQueryContext queryContext; FactPartitionBasedQueryCostCalculator calculator = new FactPartitionBasedQueryCostCalculator(); LensDriver driver; + private static String latest = "latest"; @BeforeTest public void setUp() { @@ -68,6 +69,7 @@ public class TestFactPartitionBasedQueryCostCalculator { HashMap<String, Set<?>> partitions = new HashMap<>(); partitions.put("st1", Sets.newHashSet(fp1, fp2)); partitions.put("st2", Sets.newHashSet(fp3, fp4)); + partitions.put("st3", Sets.newHashSet(latest)); DriverQueryPlan plan = mock(DriverQueryPlan.class); when(queryContext.getDriverRewriterPlan(driver)).thenReturn(plan); when(plan.getPartitions()).thenReturn(partitions); @@ -85,12 +87,21 @@ public class TestFactPartitionBasedQueryCostCalculator { @Test public void testCalculateCost() throws Exception { QueryCost cost = calculator.calculateCost(queryContext, driver); - Assert.assertTrue(cost.getEstimatedResourceUsage() > 18.0); - Assert.assertTrue(cost.getEstimatedResourceUsage() < 19.0); + assertTrue(cost.getEstimatedResourceUsage() > 19.0, "Estimated resource usage:" + cost.getEstimatedResourceUsage()); + assertTrue(cost.getEstimatedResourceUsage() < 20.0, "Estimated resource usage:" + cost.getEstimatedResourceUsage()); } @Test - public void testGetAllPartitions() throws Exception { - + public void testDimensionCost() throws Exception { + AbstractQueryContext queryContext2 = mock(AbstractQueryContext.class); + HashMap<String, Set<?>> partitions = new HashMap<>(); + partitions.put("st1", Sets.newHashSet(latest)); + partitions.put("st2", Sets.newHashSet(latest)); + DriverQueryPlan plan = mock(DriverQueryPlan.class); + when(queryContext2.getDriverRewriterPlan(driver)).thenReturn(plan); + when(plan.getPartitions()).thenReturn(partitions); + when(calculator.getAllPartitions(queryContext2, driver)).thenReturn(partitions); + QueryCost cost = calculator.calculateCost(queryContext2, driver); + assertTrue(cost.getEstimatedResourceUsage() == 2.0, "Estimated resource usage:" + cost.getEstimatedResourceUsage()); } }