Repository: lens
Updated Branches:
  refs/heads/lens-1381 112af59cc -> 363f132d1


http://git-wip-us.apache.org/repos/asf/lens/blob/363f132d/lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java
----------------------------------------------------------------------
diff --git 
a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java
 
b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java
index 523a876..7874a66 100644
--- 
a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java
+++ 
b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java
@@ -21,7 +21,7 @@ package org.apache.lens.cube.parse;
 
 import static com.google.common.collect.Lists.newArrayList;
 import static com.google.common.collect.Sets.newHashSet;
-import static java.util.stream.Collectors.toMap;
+
 import static org.apache.lens.cube.metadata.DateFactory.*;
 import static 
org.apache.lens.cube.parse.CandidateTablePruneCause.columnNotFound;
 import static org.apache.lens.cube.parse.CubeTestSetup.*;
@@ -193,21 +193,21 @@ public class TestDenormalizationResolver extends 
TestQueryRewrite {
     LensException e = getLensExceptionInRewrite(
       "select dim2big2, max(msr3)," + " msr2 from testCube" + " where " + 
TWO_DAYS_RANGE, tconf);
     NoCandidateFactAvailableException ne = (NoCandidateFactAvailableException) 
e;
-    PruneCauses.BriefAndDetailedError error = ne.getJsonMessage(); // Storage 
update periods are not valid for given time range
+    PruneCauses.BriefAndDetailedError error = ne.getJsonMessage();
     Assert.assertEquals(error.getBrief(), 
CandidateTablePruneCode.UNSUPPORTED_STORAGE.errorFormat);
 
     Map<HashSet<String>, List<CandidateTablePruneCause>> enhanced = 
error.enhanced();
     Map<Set<String>, List<CandidateTablePruneCause>> expected = 
Maps.newHashMap();
-    expected.put(newHashSet("c1_summary1","c1_testfact","c1_testfact2"),
+    expected.put(newHashSet("c1_summary1", "c1_testfact", "c1_testfact2"),
       newArrayList(columnNotFound("dim2big2")));
-    expected.put(newHashSet("c2_summary2","c2_summary3","c1_testfact2_raw",""
-      + "c3_testfact2_raw","c1_summary3","c1_summary2"),
+    expected.put(newHashSet("c2_summary2", "c2_summary3", "c1_testfact2_raw", 
""
+        + "c3_testfact2_raw", "c1_summary3", "c1_summary2"),
       newArrayList(new 
CandidateTablePruneCause(CandidateTablePruneCode.INVALID_DENORM_TABLE)));
     expected.put(newHashSet("c0_testfact_continuous"), 
newArrayList(columnNotFound(
       "msr2", "msr3")));
-    
expected.put(newHashSet("c2_summary2","c2_summary3","c2_summary4","c4_testfact","c2_summary1",
-      
"c3_testfact","c3_testfact2_raw","c4_testfact2","c5_testfact","c99_cheapfact","c2_testfact","c0_cheapfact",
-      "c2_testfactmonthly","c0_testfact"),
+    expected.put(newHashSet("c2_summary2", "c2_summary3", "c2_summary4", 
"c4_testfact", "c2_summary1",
+      "c3_testfact", "c3_testfact2_raw", "c6_testfact", "c4_testfact2", 
"c5_testfact", "c99_cheapfact",
+      "c2_testfact", "c0_cheapfact", "c2_testfactmonthly", "c0_testfact"),
       newArrayList(new 
CandidateTablePruneCause(CandidateTablePruneCode.UNSUPPORTED_STORAGE)));
 
     Assert.assertEquals(enhanced, expected);

http://git-wip-us.apache.org/repos/asf/lens/blob/363f132d/lens-cube/src/test/java/org/apache/lens/cube/parse/TestQueryMetrics.java
----------------------------------------------------------------------
diff --git 
a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestQueryMetrics.java 
b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestQueryMetrics.java
index 46ee863..3883bee 100644
--- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestQueryMetrics.java
+++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestQueryMetrics.java
@@ -21,8 +21,6 @@ package org.apache.lens.cube.parse;
 
 import static org.apache.lens.cube.metadata.DateFactory.TWO_DAYS_RANGE;
 
-import java.util.Arrays;
-
 import org.apache.lens.server.api.LensConfConstants;
 import org.apache.lens.server.api.metrics.LensMetricsRegistry;
 
@@ -59,7 +57,8 @@ public class TestQueryMetrics extends TestQueryRewrite {
       
"lens.MethodMetricGauge.testCubeRewriteStackName-org.apache.lens.cube.parse.ColumnLifetimeChecker-ITER-10",
       
"lens.MethodMetricGauge.testCubeRewriteStackName-org.apache.lens.cube.parse.StorageTableResolver-ITER-11",
       
"lens.MethodMetricGauge.testCubeRewriteStackName-org.apache.lens.cube.parse.CandidateTableResolver-ITER-12",
-      
"lens.MethodMetricGauge.testCubeRewriteStackName-org.apache.lens.cube.parse.CandidateCoveringSetsResolver-ITER-13",
+      
"lens.MethodMetricGauge.testCubeRewriteStackName-org.apache.lens.cube.parse."
+        + "CandidateCoveringSetsResolver-ITER-13",
       
"lens.MethodMetricGauge.testCubeRewriteStackName-org.apache.lens.cube.parse.StorageTableResolver-ITER-14",
       
"lens.MethodMetricGauge.testCubeRewriteStackName-org.apache.lens.cube.parse.MaxCoveringFactResolver-ITER-15",
       
"lens.MethodMetricGauge.testCubeRewriteStackName-org.apache.lens.cube.parse.StorageTableResolver-ITER-16",
@@ -68,6 +67,6 @@ public class TestQueryMetrics extends TestQueryRewrite {
       
"lens.MethodMetricGauge.testCubeRewriteStackName-org.apache.lens.cube.parse.LightestFactResolver-ITER-19",
       
"lens.MethodMetricGauge.testCubeRewriteStackName-org.apache.lens.cube.parse.LeastPartitionResolver-ITER-20",
       
"lens.MethodMetricGauge.testCubeRewriteStackName-org.apache.lens.cube.parse.LightestDimensionResolver-ITER-21"
-      ));
+    ));
   }
 }

http://git-wip-us.apache.org/repos/asf/lens/blob/363f132d/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeResolver.java
----------------------------------------------------------------------
diff --git 
a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeResolver.java 
b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeResolver.java
index cd7383b..d4ffefe 100644
--- 
a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeResolver.java
+++ 
b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeResolver.java
@@ -105,14 +105,12 @@ public class TestTimeRangeResolver extends 
TestQueryRewrite {
     causes = findPruningMessagesForStorage("c1_testfact_deprecated",
       ctx.getStoragePruningMsgs());
     assertEquals(causes.size(), 1);
-    assertEquals(causes.get(0).getCause(), STORAGE_NOT_AVAILABLE_IN_RANGE);
-    
assertTrue(causes.get(0).getInvalidRanges().containsAll(ctx.getTimeRanges()));
+    assertEquals(causes.get(0).getCause(), TIME_RANGE_NOT_ANSWERABLE);
 
     causes = findPruningMessagesForStorage("c2_testfact_deprecated",
       ctx.getStoragePruningMsgs());
     assertEquals(causes.size(), 1);
-    assertEquals(causes.get(0).getCause(), STORAGE_NOT_AVAILABLE_IN_RANGE);
-    
assertTrue(causes.get(0).getInvalidRanges().containsAll(ctx.getTimeRanges()));
+    assertEquals(causes.get(0).getCause(), TIME_RANGE_NOT_ANSWERABLE);
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/lens/blob/363f132d/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeWriterWithQuery.java
----------------------------------------------------------------------
diff --git 
a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeWriterWithQuery.java
 
b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeWriterWithQuery.java
index a6b8f88..a8014bf 100644
--- 
a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeWriterWithQuery.java
+++ 
b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeWriterWithQuery.java
@@ -79,10 +79,11 @@ public class TestTimeRangeWriterWithQuery extends 
TestQueryRewrite {
     return cal.getTime();
   }
 
-  @Test
+  @Test(invocationCount = 1)
   public void testCubeQueryContinuousUpdatePeriod() throws Exception {
     LensException th = null;
     try {
+      conf.set("lens.cube.query.valid.testcube.facttables", "summary3");
       rewrite("select" + " SUM(msr2) from testCube where " + TWO_DAYS_RANGE, 
conf);
     } catch (LensException e) {
       th = e;
@@ -93,6 +94,7 @@ public class TestTimeRangeWriterWithQuery extends 
TestQueryRewrite {
       Assert
       .assertEquals(th.getErrorCode(), 
CANNOT_USE_TIMERANGE_WRITER.getLensErrorInfo().getErrorCode());
     }
+    conf.unset("lens.cube.query.valid.testcube.facttables");
     // hourly partitions for two days
     conf.setBoolean(FAIL_QUERY_ON_PARTIAL_DATA, true);
     DateFormat qFmt = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");

http://git-wip-us.apache.org/repos/asf/lens/blob/363f132d/lens-cube/src/test/java/org/apache/lens/cube/parse/TestUnionQueries.java
----------------------------------------------------------------------
diff --git 
a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestUnionQueries.java 
b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestUnionQueries.java
index c2d5f7c..9168d10 100644
--- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestUnionQueries.java
+++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestUnionQueries.java
@@ -28,8 +28,11 @@ import static org.apache.lens.cube.parse.TestCubeRewriter.*;
 import static org.testng.Assert.*;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 import org.apache.lens.cube.error.LensCubeErrorCode;
+import org.apache.lens.cube.error.NoCandidateDimAvailableException;
+import org.apache.lens.cube.error.NoCandidateFactAvailableException;
 import org.apache.lens.server.api.LensServerAPITestUtil;
 import org.apache.lens.server.api.error.LensException;
 
@@ -458,4 +461,45 @@ public class TestUnionQueries extends TestQueryRewrite {
     );
     compareQueries(hqlQuery, expected);
   }
+
+
+  @Test
+  public void testSingleFactSingleStorageWithMultipleTableDescriptions() 
throws Exception {
+    Configuration conf = 
LensServerAPITestUtil.getConfigurationWithParams(getConf(),
+      CubeQueryConfUtil.DRIVER_SUPPORTED_STORAGES, "C6",
+      getValidFactTablesKey("testcube"), "testfact",
+      FAIL_QUERY_ON_PARTIAL_DATA, false);
+
+    //If not beginning of month. Expecting this to pass at beginning of every 
month (example April 01 00:00)
+    if (!THREE_MONTHS_RANGE_UPTO_DAYS.equals(THREE_MONTHS_RANGE_UPTO_MONTH)) {
+      LensException e = getLensExceptionInRewrite("select count(msr4) from 
testCube where " + THREE_MONTHS_RANGE_UPTO_DAYS, conf);
+      assertTrue(e instanceof NoCandidateFactAvailableException);
+      Set<Map.Entry<StorageCandidate, List<CandidateTablePruneCause>>> causes 
= ((NoCandidateFactAvailableException) 
e).getBriefAndDetailedError().entrySet().stream().filter(x -> 
x.getKey().getName().equalsIgnoreCase("c6_testfact")).collect(Collectors.toSet());
+      assertEquals(causes.size(), 1);
+      List<CandidateTablePruneCause> pruneCauses = 
causes.iterator().next().getValue();
+      assertEquals(pruneCauses.size(), 1);
+      assertEquals(pruneCauses.get(0).getCause(), 
CandidateTablePruneCause.CandidateTablePruneCode.STORAGE_NOT_AVAILABLE_IN_RANGE);
+    }
+
+    String hqlQuery2 = rewrite("select count(msr4) from testCube where " + 
THREE_MONTHS_RANGE_UPTO_MONTH, conf);
+    System.out.println(hqlQuery2);
+
+    ArrayList<String> storages = Lists.newArrayList("daily_c6_testfact", 
"monthly_c6_testfact");
+    StoragePartitionProvider provider = new StoragePartitionProvider() {
+      @Override
+      public Map<String, String> providePartitionsForStorage(String storage) {
+        if (storage.contains("daily_c6_testfact")) {
+          return getWhereForDays(storage, ONE_MONTH_BACK_TRUNCATED, 
getTruncatedDateWithOffset(MONTHLY, 0));
+        } else if (storage.contains("monthly_c6_testfact")) {
+          return getWhereForMonthly(storage, THREE_MONTHS_BACK_TRUNCATED, 
ONE_MONTH_BACK_TRUNCATED);
+        }
+        return null;
+      }
+    };
+    String expected = getExpectedUnionQuery(TEST_CUBE_NAME, storages, provider,
+      "select count(testcube.alias0) AS `count(msr4)`", null, null,
+      "select count((testcube.msr4)) AS `alias0` from ", null, null
+    );
+    compareQueries(hqlQuery2, expected);
+  }
 }

http://git-wip-us.apache.org/repos/asf/lens/blob/363f132d/lens-cube/src/test/resources/schema/facts/testfact.xml
----------------------------------------------------------------------
diff --git a/lens-cube/src/test/resources/schema/facts/testfact.xml 
b/lens-cube/src/test/resources/schema/facts/testfact.xml
index a4c2c78..0bd9c5a 100644
--- a/lens-cube/src/test/resources/schema/facts/testfact.xml
+++ b/lens-cube/src/test/resources/schema/facts/testfact.xml
@@ -188,5 +188,44 @@
         <time_part_cols>dt</time_part_cols>
       </table_desc>
     </storage_table>
+    <storage_table>
+      <storage_name>C6</storage_name>
+      <update_periods>
+        <update_period_table_descriptor>
+          <update_period>DAILY</update_period>
+          <table_desc external="false">
+            <part_cols>
+              <column name="dt" _type="string" comment="date partition"/>
+            </part_cols>
+            <table_parameters>
+              <property name="cube.storagetable.time.partcols" value="dt"/>
+              <property name="cube.storagetable.start.times" value="now.month 
- 2 months"/>
+              <property name="cube.storagetable.end.times" value="now.day"/>
+            </table_parameters>
+            <serde_parameters>
+              <property name="serialization.format" value="1"/>
+            </serde_parameters>
+            <time_part_cols>dt</time_part_cols>
+          </table_desc>
+        </update_period_table_descriptor>
+        <update_period_table_descriptor>
+          <update_period>MONTHLY</update_period>
+          <table_desc external="false">
+            <part_cols>
+              <column name="dt" _type="string" comment="date partition"/>
+            </part_cols>
+            <table_parameters>
+              <property name="cube.storagetable.time.partcols" value="dt"/>
+              <property name="cube.storagetable.start.times" value="now.month 
- 12 months"/>
+              <property name="cube.storagetable.end.times" value="now.month - 
1 months"/>
+            </table_parameters>
+            <serde_parameters>
+              <property name="serialization.format" value="1"/>
+            </serde_parameters>
+            <time_part_cols>dt</time_part_cols>
+          </table_desc>
+        </update_period_table_descriptor>
+      </update_periods>
+    </storage_table>
   </storage_tables>
 </x_fact_table>
\ No newline at end of file

Reply via email to