You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lens.apache.org by pu...@apache.org on 2017/12/19 11:32:04 UTC

lens git commit: LENS-1493: TotalQueryCost logic broken

Repository: lens
Updated Branches:
  refs/heads/master 96fc4422a -> 2e1edff87


LENS-1493: TotalQueryCost logic broken


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

Branch: refs/heads/master
Commit: 2e1edff870154933f9a1018927dea880639ca695
Parents: 96fc442
Author: Rajitha R <ra...@gmail.com>
Authored: Tue Dec 19 17:01:10 2017 +0530
Committer: Puneet Gupta <pu...@apache.org>
Committed: Tue Dec 19 17:01:10 2017 +0530

----------------------------------------------------------------------
 .../server/api/query/cost/StaticQueryCost.java  |  1 +
 .../DefaultEstimatedQueryCollection.java        | 12 ++++++------
 .../DefaultEstimatedQueryCollectionTest.java    | 20 ++++++++------------
 3 files changed, 15 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lens/blob/2e1edff8/lens-server-api/src/main/java/org/apache/lens/server/api/query/cost/StaticQueryCost.java
----------------------------------------------------------------------
diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/query/cost/StaticQueryCost.java b/lens-server-api/src/main/java/org/apache/lens/server/api/query/cost/StaticQueryCost.java
index 8cdc254..5377ab2 100644
--- a/lens-server-api/src/main/java/org/apache/lens/server/api/query/cost/StaticQueryCost.java
+++ b/lens-server-api/src/main/java/org/apache/lens/server/api/query/cost/StaticQueryCost.java
@@ -41,6 +41,7 @@ public class StaticQueryCost implements QueryCost<StaticQueryCost>, Serializable
 
   public StaticQueryCost(final double cost) {
     this.staticCost = cost;
+    this.queryCostType = QueryCostType.HIGH;
   }
 
   //Added for testcase

http://git-wip-us.apache.org/repos/asf/lens/blob/2e1edff8/lens-server/src/main/java/org/apache/lens/server/query/collect/DefaultEstimatedQueryCollection.java
----------------------------------------------------------------------
diff --git a/lens-server/src/main/java/org/apache/lens/server/query/collect/DefaultEstimatedQueryCollection.java b/lens-server/src/main/java/org/apache/lens/server/query/collect/DefaultEstimatedQueryCollection.java
index 9a37afd..aa1406e 100644
--- a/lens-server/src/main/java/org/apache/lens/server/query/collect/DefaultEstimatedQueryCollection.java
+++ b/lens-server/src/main/java/org/apache/lens/server/query/collect/DefaultEstimatedQueryCollection.java
@@ -28,6 +28,7 @@ import org.apache.lens.server.api.driver.LensDriver;
 import org.apache.lens.server.api.query.QueryContext;
 import org.apache.lens.server.api.query.cost.FactPartitionBasedQueryCost;
 import org.apache.lens.server.api.query.cost.QueryCost;
+import org.apache.lens.server.api.query.cost.StaticQueryCost;
 
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.map.MultiValueMap;
@@ -160,18 +161,17 @@ public class DefaultEstimatedQueryCollection implements EstimatedQueryCollection
   private QueryCost getTotalQueryCost(final Collection<QueryContext> queries) {
 
     if (queries.isEmpty()) {
-      return new FactPartitionBasedQueryCost(0);
+      return new StaticQueryCost(0);
     }
 
-    QueryContext query0 = Iterables.get(queries, 0);
-    QueryCost totalQueryCost = query0.getSelectedDriverQueryCost();
+    Double totalQueryCost = 0d;
 
     for (QueryContext query : queries) {
-      QueryCost queryCost = query.getSelectedDriverQueryCost();
-      totalQueryCost = totalQueryCost.add(queryCost);
+      Double queryCost = query.getSelectedDriverQueryCost().getEstimatedResourceUsage();
+      totalQueryCost = totalQueryCost + queryCost;
     }
     log.debug("Total Query Cost:{}", totalQueryCost);
-    return totalQueryCost;
+    return new StaticQueryCost(totalQueryCost);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/lens/blob/2e1edff8/lens-server/src/test/java/org/apache/lens/server/query/collect/DefaultEstimatedQueryCollectionTest.java
----------------------------------------------------------------------
diff --git a/lens-server/src/test/java/org/apache/lens/server/query/collect/DefaultEstimatedQueryCollectionTest.java b/lens-server/src/test/java/org/apache/lens/server/query/collect/DefaultEstimatedQueryCollectionTest.java
index 4dde18a..06ac9fb 100644
--- a/lens-server/src/test/java/org/apache/lens/server/query/collect/DefaultEstimatedQueryCollectionTest.java
+++ b/lens-server/src/test/java/org/apache/lens/server/query/collect/DefaultEstimatedQueryCollectionTest.java
@@ -30,8 +30,8 @@ import java.util.Set;
 import org.apache.lens.server.api.driver.LensDriver;
 import org.apache.lens.server.api.error.LensException;
 import org.apache.lens.server.api.query.QueryContext;
-import org.apache.lens.server.api.query.cost.FactPartitionBasedQueryCost;
 import org.apache.lens.server.api.query.cost.QueryCost;
+import org.apache.lens.server.api.query.cost.StaticQueryCost;
 
 import org.testng.annotations.Test;
 
@@ -50,7 +50,7 @@ public class DefaultEstimatedQueryCollectionTest {
 
     EstimatedQueryCollection queries = new DefaultEstimatedQueryCollection(mockQueries);
     QueryCost actualQueryCost = queries.getTotalQueryCost(MOCK_USER);
-    assertEquals(actualQueryCost, new FactPartitionBasedQueryCost(0));
+    assertEquals(actualQueryCost, new StaticQueryCost(0));
   }
 
   @Test
@@ -63,19 +63,15 @@ public class DefaultEstimatedQueryCollectionTest {
     final QueryContext query0 = Iterables.get(mockQueriesSet, 0);
     final QueryContext query1 = Iterables.get(mockQueriesSet, 1);
 
-    final QueryCost mockCost0 = mock(QueryCost.class);
-    final QueryCost mockCost1 = mock(QueryCost.class);
-    final QueryCost mockCost0Plus0 = mock(QueryCost.class);
-    final QueryCost mockCost0Plus0Plus1 = mock(QueryCost.class);
+    final QueryCost sCost0 = new StaticQueryCost(1.0);
+    final QueryCost sCost1 = new StaticQueryCost(1.0);
+    final QueryCost expectedCost = new StaticQueryCost(2.0);
 
-    when(query0.getSelectedDriverQueryCost()).thenReturn(mockCost0);
-    when(query1.getSelectedDriverQueryCost()).thenReturn(mockCost1);
-
-    when(mockCost0.add(mockCost0)).thenReturn(mockCost0Plus0);
-    when(mockCost0Plus0.add(mockCost1)).thenReturn(mockCost0Plus0Plus1);
+    when(query0.getSelectedDriverQueryCost()).thenReturn(sCost0);
+    when(query1.getSelectedDriverQueryCost()).thenReturn(sCost1);
 
     QueryCost actualQueryCost = new DefaultEstimatedQueryCollection(mockQueries).getTotalQueryCost(MOCK_USER);
-    assertEquals(actualQueryCost, mockCost0Plus0Plus1);
+    assertEquals(actualQueryCost, expectedCost);
   }
 
   @Test