You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lens.apache.org by am...@apache.org on 2017/01/30 07:12:32 UTC
lens git commit: LENS-773: Include dimension table partitions in
FactPartitionBasedQueryCostCalculator
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 <am...@apache.org>
Authored: Mon Jan 30 12:42:14 2017 +0530
Committer: Amareshwari Sriramadasu <am...@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());
}
}