Repository: lens Updated Branches: refs/heads/master 7e9e47ea6 -> 7c7c86dae
http://git-wip-us.apache.org/repos/asf/lens/blob/7c7c86da/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 d16ea4c..36c1dba 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 @@ -19,6 +19,7 @@ package org.apache.lens.cube.parse; +import static org.apache.lens.cube.metadata.DateFactory.*; import static org.apache.lens.cube.parse.CubeTestSetup.*; import java.util.*; @@ -55,18 +56,16 @@ public class TestDenormalizationResolver extends TestQueryRewrite { @Test public void testDenormsAsDirectFields() throws ParseException, LensException, HiveException { // denorm fields directly available - String twoDaysITRange = - "time_range_in(it, '" + CubeTestSetup.getDateUptoHours(TWODAYS_BACK) + "','" - + CubeTestSetup.getDateUptoHours(NOW) + "')"; - String hqlQuery = rewrite("select dim2big1, max(msr3)," + " msr2 from testCube" + " where " + twoDaysITRange, conf); + String hqlQuery = rewrite("select dim2big1, max(msr3)," + " msr2 from testCube" + " where " + TWO_DAYS_RANGE_IT, + conf); String expecteddim2big1 = getExpectedQuery(cubeName, "select testcube.dim2big1," + " max(testcube.msr3), sum(testcube.msr2) FROM ", null, " group by testcube.dim2big1", getWhereForDailyAndHourly2daysWithTimeDim(cubeName, "it", "C2_summary4"), null); TestCubeRewriter.compareQueries(hqlQuery, expecteddim2big1); // with another table - hqlQuery = rewrite("select dim2big1, citydim.name, max(msr3)," + " msr2 from testCube" + " where " + twoDaysITRange, - conf); + hqlQuery = rewrite("select dim2big1, citydim.name, max(msr3)," + " msr2 from testCube" + " where " + + TWO_DAYS_RANGE_IT, conf); String expecteddim2big1WithAnotherTable = getExpectedQuery(cubeName, "select testcube.dim2big1, citydim.name, max(testcube.msr3), sum(testcube.msr2) FROM ", " JOIN " + getDbName() + "c1_citytable citydim " + "on testcube.cityid = citydim.id and citydim.dt = 'latest' ", null, @@ -75,7 +74,7 @@ public class TestDenormalizationResolver extends TestQueryRewrite { null); TestCubeRewriter.compareQueries(hqlQuery, expecteddim2big1WithAnotherTable); - hqlQuery = rewrite("select dim2big2, max(msr3)," + " msr2 from testCube" + " where " + twoDaysITRange, conf); + hqlQuery = rewrite("select dim2big2, max(msr3)," + " msr2 from testCube" + " where " + TWO_DAYS_RANGE_IT, conf); String expecteddim2big2 = getExpectedQuery(cubeName, "select testcube.dim2big2, max(testcube.msr3), sum(testcube.msr2) FROM ", null, " group by testcube.dim2big2", getWhereForDailyAndHourly2daysWithTimeDim(cubeName, "it", "C2_summary4"), @@ -84,8 +83,8 @@ public class TestDenormalizationResolver extends TestQueryRewrite { Configuration conf2 = new Configuration(conf); conf2.set(CubeQueryConfUtil.DRIVER_SUPPORTED_STORAGES, "C2"); - hqlQuery = - rewrite("select testdim3.name, dim2big1, max(msr3)," + " msr2 from testCube" + " where " + twoDaysITRange, conf2); + hqlQuery = rewrite("select testdim3.name, dim2big1, max(msr3)," + " msr2 from testCube" + " where " + + TWO_DAYS_RANGE_IT, conf2); String expected = getExpectedQuery(cubeName, "select testdim3.name, testcube.dim2big1, max(testcube.msr3), sum(testcube.msr2) FROM ", " JOIN " @@ -96,9 +95,9 @@ public class TestDenormalizationResolver extends TestQueryRewrite { null); TestCubeRewriter.compareQueries(hqlQuery, expected); - hqlQuery = rewrite("select dim2big1, max(msr3)," + " msr2 from testCube" + " where " + twoDaysITRange, conf2); + hqlQuery = rewrite("select dim2big1, max(msr3)," + " msr2 from testCube" + " where " + TWO_DAYS_RANGE_IT, conf2); TestCubeRewriter.compareQueries(hqlQuery, expecteddim2big1); - hqlQuery = rewrite("select dim2big2, max(msr3)," + " msr2 from testCube" + " where " + twoDaysITRange, conf2); + hqlQuery = rewrite("select dim2big2, max(msr3)," + " msr2 from testCube" + " where " + TWO_DAYS_RANGE_IT, conf2); TestCubeRewriter.compareQueries(hqlQuery, expecteddim2big2); } @@ -190,11 +189,8 @@ public class TestDenormalizationResolver extends TestQueryRewrite { @Test public void testCubeQueryWithExpressionHavingDenormColumnComingAsDirectColumn() throws Exception { - String twoDaysITRange = - "time_range_in(it, '" + CubeTestSetup.getDateUptoHours(TWODAYS_BACK) + "','" - + CubeTestSetup.getDateUptoHours(NOW) + "')"; - String hqlQuery = rewrite("select substrdim2big1, max(msr3)," + " msr2 from testCube" + " where " + twoDaysITRange, - conf); + String hqlQuery = rewrite("select substrdim2big1, max(msr3)," + " msr2 from testCube" + " where " + + TWO_DAYS_RANGE_IT, conf); String expecteddim2big1 = getExpectedQuery(cubeName, "select substr(testcube.dim2big1, 5), max(testcube.msr3), sum(testcube.msr2) FROM ", null, " group by substr(testcube.dim2big1, 5)", http://git-wip-us.apache.org/repos/asf/lens/blob/7c7c86da/lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionContext.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionContext.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionContext.java index 0d1f9fe..f48e1b7 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionContext.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionContext.java @@ -19,11 +19,11 @@ package org.apache.lens.cube.parse; +import static org.apache.lens.cube.metadata.DateFactory.TWO_DAYS_RANGE; + import java.util.ArrayList; import java.util.List; -import static org.apache.lens.cube.parse.CubeTestSetup.TWO_DAYS_RANGE; - import org.apache.lens.cube.parse.ExpressionResolver.ExprSpecContext; import org.apache.hadoop.conf.Configuration; http://git-wip-us.apache.org/repos/asf/lens/blob/7c7c86da/lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java index 1e21fb0..e77f919 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java @@ -19,6 +19,7 @@ package org.apache.lens.cube.parse; +import static org.apache.lens.cube.metadata.DateFactory.*; import static org.apache.lens.cube.parse.CubeTestSetup.*; import org.apache.lens.cube.error.LensCubeErrorCode; http://git-wip-us.apache.org/repos/asf/lens/blob/7c7c86da/lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java index ea561b6..d9e442d 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java @@ -19,6 +19,7 @@ package org.apache.lens.cube.parse; +import static org.apache.lens.cube.metadata.DateFactory.*; import static org.apache.lens.cube.parse.CubeTestSetup.*; import static org.testng.Assert.*; http://git-wip-us.apache.org/repos/asf/lens/blob/7c7c86da/lens-cube/src/test/java/org/apache/lens/cube/parse/TestORTimeRangeWriter.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestORTimeRangeWriter.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestORTimeRangeWriter.java index 4a23818..b98fdfb 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestORTimeRangeWriter.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestORTimeRangeWriter.java @@ -19,6 +19,8 @@ package org.apache.lens.cube.parse; +import static org.apache.lens.cube.metadata.DateFactory.*; + import java.text.DateFormat; import java.util.ArrayList; import java.util.List; @@ -43,13 +45,13 @@ public class TestORTimeRangeWriter extends TestTimeRangeWriter { public void validateDisjoint(String whereClause, DateFormat format) { List<String> parts = new ArrayList<String>(); if (format == null) { - parts.add(UpdatePeriod.MONTHLY.format(CubeTestSetup.TWO_MONTHS_BACK)); - parts.add(UpdatePeriod.DAILY.format(CubeTestSetup.TWODAYS_BACK)); - parts.add(UpdatePeriod.HOURLY.format(CubeTestSetup.NOW)); + parts.add(UpdatePeriod.MONTHLY.format(TWO_MONTHS_BACK)); + parts.add(UpdatePeriod.DAILY.format(TWODAYS_BACK)); + parts.add(UpdatePeriod.HOURLY.format(NOW)); } else { - parts.add(format.format(CubeTestSetup.TWO_MONTHS_BACK)); - parts.add(format.format(CubeTestSetup.TWODAYS_BACK)); - parts.add(format.format(CubeTestSetup.NOW)); + parts.add(format.format(TWO_MONTHS_BACK)); + parts.add(format.format(TWODAYS_BACK)); + parts.add(format.format(NOW)); } System.out.println("Expected :" + StorageUtil.getWherePartClause("dt", "test", parts)); @@ -60,30 +62,16 @@ public class TestORTimeRangeWriter extends TestTimeRangeWriter { public void validateConsecutive(String whereClause, DateFormat format) { List<String> parts = new ArrayList<String>(); if (format == null) { - parts.add(UpdatePeriod.DAILY.format(CubeTestSetup.ONE_DAY_BACK)); - parts.add(UpdatePeriod.DAILY.format(CubeTestSetup.TWODAYS_BACK)); - parts.add(UpdatePeriod.DAILY.format(CubeTestSetup.NOW)); - } else { - parts.add(format.format(CubeTestSetup.ONE_DAY_BACK)); - parts.add(format.format(CubeTestSetup.TWODAYS_BACK)); - parts.add(format.format(CubeTestSetup.NOW)); - } - - System.out.println("Expected :" + StorageUtil.getWherePartClause("dt", "test", parts)); - Assert.assertEquals(whereClause, StorageUtil.getWherePartClause("dt", "test", parts)); - } - - @Override - public void validateSingle(String whereClause, DateFormat format) { - List<String> parts = new ArrayList<String>(); - if (format == null) { - parts.add(UpdatePeriod.DAILY.format(CubeTestSetup.ONE_DAY_BACK)); + parts.add(getDateStringWithOffset(UpdatePeriod.DAILY, -1)); + parts.add(getDateStringWithOffset(UpdatePeriod.DAILY, -2)); + parts.add(getDateStringWithOffset(UpdatePeriod.DAILY, 0)); } else { - parts.add(format.format(CubeTestSetup.ONE_DAY_BACK)); + parts.add(format.format(getDateWithOffset(UpdatePeriod.DAILY, -1))); + parts.add(format.format(getDateWithOffset(UpdatePeriod.DAILY, -2))); + parts.add(format.format(getDateWithOffset(UpdatePeriod.DAILY, 0))); } System.out.println("Expected :" + StorageUtil.getWherePartClause("dt", "test", parts)); Assert.assertEquals(whereClause, StorageUtil.getWherePartClause("dt", "test", parts)); } - } http://git-wip-us.apache.org/repos/asf/lens/blob/7c7c86da/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 255aade..571f7de 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 @@ -19,7 +19,7 @@ package org.apache.lens.cube.parse; -import static org.apache.lens.cube.parse.CubeTestSetup.TWO_DAYS_RANGE; +import static org.apache.lens.cube.metadata.DateFactory.TWO_DAYS_RANGE; import java.util.Arrays; http://git-wip-us.apache.org/repos/asf/lens/blob/7c7c86da/lens-cube/src/test/java/org/apache/lens/cube/parse/TestRewriterPlan.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestRewriterPlan.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestRewriterPlan.java index 4d3a3dc..5a072e4 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestRewriterPlan.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestRewriterPlan.java @@ -19,7 +19,7 @@ package org.apache.lens.cube.parse; -import static org.apache.lens.cube.parse.CubeTestSetup.TWO_DAYS_RANGE; +import static org.apache.lens.cube.metadata.DateFactory.TWO_DAYS_RANGE; import java.util.Arrays; import java.util.Collections; http://git-wip-us.apache.org/repos/asf/lens/blob/7c7c86da/lens-cube/src/test/java/org/apache/lens/cube/parse/TestStorageUtil.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestStorageUtil.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestStorageUtil.java index 73c3338..0069609 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestStorageUtil.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestStorageUtil.java @@ -19,6 +19,8 @@ package org.apache.lens.cube.parse; +import static org.apache.lens.cube.metadata.DateFactory.*; + import java.util.*; import org.apache.lens.cube.metadata.FactPartition; @@ -64,9 +66,9 @@ public class TestStorageUtil { Configuration conf = new Configuration(); // {s1,s2,s3}, {s3}, {s3} -> {s3} List<FactPartition> answeringParts = new ArrayList<FactPartition>(); - answeringParts.add(new FactPartition("dt", CubeTestSetup.TWO_MONTHS_BACK, UpdatePeriod.MONTHLY, null, null, s123)); - answeringParts.add(new FactPartition("dt", CubeTestSetup.TWODAYS_BACK, UpdatePeriod.DAILY, null, null, s3)); - answeringParts.add(new FactPartition("dt", CubeTestSetup.NOW, UpdatePeriod.HOURLY, null, null, s3)); + answeringParts.add(new FactPartition("dt", TWO_MONTHS_BACK, UpdatePeriod.MONTHLY, null, null, s123)); + answeringParts.add(new FactPartition("dt", TWODAYS_BACK, UpdatePeriod.DAILY, null, null, s3)); + answeringParts.add(new FactPartition("dt", NOW, UpdatePeriod.HOURLY, null, null, s3)); Map<String, Set<FactPartition>> result = new HashMap<String, Set<FactPartition>>(); StorageUtil.getMinimalAnsweringTables(answeringParts, result); System.out.println("results:" + result); @@ -74,15 +76,15 @@ public class TestStorageUtil { Assert.assertEquals("S3", result.keySet().iterator().next()); Set<FactPartition> coveredParts = result.get("S3"); Assert.assertEquals(3, coveredParts.size()); - Assert.assertTrue(contains(coveredParts, CubeTestSetup.TWO_MONTHS_BACK)); - Assert.assertTrue(contains(coveredParts, CubeTestSetup.TWODAYS_BACK)); - Assert.assertTrue(contains(coveredParts, CubeTestSetup.NOW)); + Assert.assertTrue(contains(coveredParts, TWO_MONTHS_BACK)); + Assert.assertTrue(contains(coveredParts, TWODAYS_BACK)); + Assert.assertTrue(contains(coveredParts, NOW)); // {s1,s2,s3}, {s4}, {s5} - > {s1,s4,s5} or {s2,s4,s5} or {s3,s4,s5} answeringParts = new ArrayList<FactPartition>(); - answeringParts.add(new FactPartition("dt", CubeTestSetup.TWO_MONTHS_BACK, UpdatePeriod.MONTHLY, null, null, s123)); - answeringParts.add(new FactPartition("dt", CubeTestSetup.TWODAYS_BACK, UpdatePeriod.DAILY, null, null, s4)); - answeringParts.add(new FactPartition("dt", CubeTestSetup.NOW, UpdatePeriod.HOURLY, null, null, s5)); + answeringParts.add(new FactPartition("dt", TWO_MONTHS_BACK, UpdatePeriod.MONTHLY, null, null, s123)); + answeringParts.add(new FactPartition("dt", TWODAYS_BACK, UpdatePeriod.DAILY, null, null, s4)); + answeringParts.add(new FactPartition("dt", NOW, UpdatePeriod.HOURLY, null, null, s5)); result = new HashMap<String, Set<FactPartition>>(); StorageUtil.getMinimalAnsweringTables(answeringParts, result); System.out.println("results:" + result); @@ -93,10 +95,10 @@ public class TestStorageUtil { || result.keySet().contains("S3")); coveredParts = result.get("S4"); Assert.assertEquals(1, coveredParts.size()); - Assert.assertTrue(contains(coveredParts, CubeTestSetup.TWODAYS_BACK)); + Assert.assertTrue(contains(coveredParts, TWODAYS_BACK)); coveredParts = result.get("S5"); Assert.assertEquals(1, coveredParts.size()); - Assert.assertTrue(contains(coveredParts, CubeTestSetup.NOW)); + Assert.assertTrue(contains(coveredParts, NOW)); coveredParts = result.get("S1"); if (coveredParts == null) { coveredParts = result.get("S2"); @@ -105,13 +107,13 @@ public class TestStorageUtil { coveredParts = result.get("S3"); } Assert.assertEquals(1, coveredParts.size()); - Assert.assertTrue(contains(coveredParts, CubeTestSetup.TWO_MONTHS_BACK)); + Assert.assertTrue(contains(coveredParts, TWO_MONTHS_BACK)); // {s1}, {s2}, {s3} -> {s1,s2,s3} answeringParts = new ArrayList<FactPartition>(); - answeringParts.add(new FactPartition("dt", CubeTestSetup.TWO_MONTHS_BACK, UpdatePeriod.MONTHLY, null, null, s1)); - answeringParts.add(new FactPartition("dt", CubeTestSetup.TWODAYS_BACK, UpdatePeriod.DAILY, null, null, s2)); - answeringParts.add(new FactPartition("dt", CubeTestSetup.NOW, UpdatePeriod.HOURLY, null, null, s3)); + answeringParts.add(new FactPartition("dt", TWO_MONTHS_BACK, UpdatePeriod.MONTHLY, null, null, s1)); + answeringParts.add(new FactPartition("dt", TWODAYS_BACK, UpdatePeriod.DAILY, null, null, s2)); + answeringParts.add(new FactPartition("dt", NOW, UpdatePeriod.HOURLY, null, null, s3)); result = new HashMap<String, Set<FactPartition>>(); StorageUtil.getMinimalAnsweringTables(answeringParts, result); System.out.println("results:" + result); @@ -121,19 +123,19 @@ public class TestStorageUtil { Assert.assertTrue(result.keySet().contains("S3")); coveredParts = result.get("S1"); Assert.assertEquals(1, coveredParts.size()); - Assert.assertTrue(contains(coveredParts, CubeTestSetup.TWO_MONTHS_BACK)); + Assert.assertTrue(contains(coveredParts, TWO_MONTHS_BACK)); coveredParts = result.get("S2"); Assert.assertEquals(1, coveredParts.size()); - Assert.assertTrue(contains(coveredParts, CubeTestSetup.TWODAYS_BACK)); + Assert.assertTrue(contains(coveredParts, TWODAYS_BACK)); coveredParts = result.get("S3"); Assert.assertEquals(1, coveredParts.size()); - Assert.assertTrue(contains(coveredParts, CubeTestSetup.NOW)); + Assert.assertTrue(contains(coveredParts, NOW)); // {s1, s2}, {s2, s3}, {s4} -> {s2,s4} answeringParts = new ArrayList<FactPartition>(); - answeringParts.add(new FactPartition("dt", CubeTestSetup.TWO_MONTHS_BACK, UpdatePeriod.MONTHLY, null, null, s12)); - answeringParts.add(new FactPartition("dt", CubeTestSetup.TWODAYS_BACK, UpdatePeriod.DAILY, null, null, s23)); - answeringParts.add(new FactPartition("dt", CubeTestSetup.NOW, UpdatePeriod.HOURLY, null, null, s4)); + answeringParts.add(new FactPartition("dt", TWO_MONTHS_BACK, UpdatePeriod.MONTHLY, null, null, s12)); + answeringParts.add(new FactPartition("dt", TWODAYS_BACK, UpdatePeriod.DAILY, null, null, s23)); + answeringParts.add(new FactPartition("dt", NOW, UpdatePeriod.HOURLY, null, null, s4)); result = new HashMap<String, Set<FactPartition>>(); StorageUtil.getMinimalAnsweringTables(answeringParts, result); System.out.println("results:" + result); @@ -142,17 +144,17 @@ public class TestStorageUtil { Assert.assertTrue(result.keySet().contains("S4")); coveredParts = result.get("S2"); Assert.assertEquals(2, coveredParts.size()); - Assert.assertTrue(contains(coveredParts, CubeTestSetup.TWO_MONTHS_BACK)); - Assert.assertTrue(contains(coveredParts, CubeTestSetup.TWODAYS_BACK)); + Assert.assertTrue(contains(coveredParts, TWO_MONTHS_BACK)); + Assert.assertTrue(contains(coveredParts, TWODAYS_BACK)); coveredParts = result.get("S4"); Assert.assertEquals(1, coveredParts.size()); - Assert.assertTrue(contains(coveredParts, CubeTestSetup.NOW)); + Assert.assertTrue(contains(coveredParts, NOW)); // {s1, s2}, {s2, s4}, {s4} -> {s1,s4} or {s2,s4} answeringParts = new ArrayList<FactPartition>(); - answeringParts.add(new FactPartition("dt", CubeTestSetup.TWO_MONTHS_BACK, UpdatePeriod.MONTHLY, null, null, s12)); - answeringParts.add(new FactPartition("dt", CubeTestSetup.TWODAYS_BACK, UpdatePeriod.DAILY, null, null, s24)); - answeringParts.add(new FactPartition("dt", CubeTestSetup.NOW, UpdatePeriod.HOURLY, null, null, s4)); + answeringParts.add(new FactPartition("dt", TWO_MONTHS_BACK, UpdatePeriod.MONTHLY, null, null, s12)); + answeringParts.add(new FactPartition("dt", TWODAYS_BACK, UpdatePeriod.DAILY, null, null, s24)); + answeringParts.add(new FactPartition("dt", NOW, UpdatePeriod.HOURLY, null, null, s4)); result = new HashMap<String, Set<FactPartition>>(); StorageUtil.getMinimalAnsweringTables(answeringParts, result); System.out.println("results:" + result); @@ -163,32 +165,32 @@ public class TestStorageUtil { if (coveredParts == null) { coveredParts = result.get("S2"); Assert.assertTrue(coveredParts.size() >= 1); - Assert.assertTrue(contains(coveredParts, CubeTestSetup.TWO_MONTHS_BACK)); + Assert.assertTrue(contains(coveredParts, TWO_MONTHS_BACK)); if (coveredParts.size() == 2) { - Assert.assertTrue(contains(coveredParts, CubeTestSetup.TWODAYS_BACK)); + Assert.assertTrue(contains(coveredParts, TWODAYS_BACK)); Assert.assertEquals(1, result.get("S4").size()); } coveredParts = result.get("S4"); Assert.assertTrue(coveredParts.size() >= 1); - Assert.assertTrue(contains(coveredParts, CubeTestSetup.NOW)); + Assert.assertTrue(contains(coveredParts, NOW)); if (coveredParts.size() == 2) { - Assert.assertTrue(contains(coveredParts, CubeTestSetup.TWODAYS_BACK)); + Assert.assertTrue(contains(coveredParts, TWODAYS_BACK)); Assert.assertEquals(1, result.get("S2").size()); } } else { Assert.assertEquals(1, coveredParts.size()); - Assert.assertTrue(contains(coveredParts, CubeTestSetup.TWO_MONTHS_BACK)); + Assert.assertTrue(contains(coveredParts, TWO_MONTHS_BACK)); coveredParts = result.get("S4"); Assert.assertTrue(coveredParts.size() >= 1); - Assert.assertTrue(contains(coveredParts, CubeTestSetup.NOW)); - Assert.assertTrue(contains(coveredParts, CubeTestSetup.TWODAYS_BACK)); + Assert.assertTrue(contains(coveredParts, NOW)); + Assert.assertTrue(contains(coveredParts, TWODAYS_BACK)); } // {s1, s2}, {s2, s3}, {s3,s4} -> {s2,s3} or {s1, s3} or {s2, s4} answeringParts = new ArrayList<FactPartition>(); - answeringParts.add(new FactPartition("dt", CubeTestSetup.TWO_MONTHS_BACK, UpdatePeriod.MONTHLY, null, null, s12)); - answeringParts.add(new FactPartition("dt", CubeTestSetup.TWODAYS_BACK, UpdatePeriod.DAILY, null, null, s23)); - answeringParts.add(new FactPartition("dt", CubeTestSetup.NOW, UpdatePeriod.HOURLY, null, null, s34)); + answeringParts.add(new FactPartition("dt", TWO_MONTHS_BACK, UpdatePeriod.MONTHLY, null, null, s12)); + answeringParts.add(new FactPartition("dt", TWODAYS_BACK, UpdatePeriod.DAILY, null, null, s23)); + answeringParts.add(new FactPartition("dt", NOW, UpdatePeriod.HOURLY, null, null, s34)); result = new HashMap<String, Set<FactPartition>>(); StorageUtil.getMinimalAnsweringTables(answeringParts, result); System.out.println("results:" + result); @@ -204,24 +206,24 @@ public class TestStorageUtil { //Assert.assertTrue(result.keySet().contains("S3")); /* coveredParts = result.get("S2"); Assert.assertTrue(coveredParts.size() >= 1); - Assert.assertTrue(contains(coveredParts, CubeTestSetup.TWO_MONTHS_BACK)); + Assert.assertTrue(contains(coveredParts, TWO_MONTHS_BACK)); if (coveredParts.size() == 2) { - Assert.assertTrue(contains(coveredParts, CubeTestSetup.TWODAYS_BACK)); + Assert.assertTrue(contains(coveredParts, TWODAYS_BACK)); Assert.assertEquals(1, result.get("S3").size()); } coveredParts = result.get("S3"); Assert.assertTrue(coveredParts.size() >= 1); - Assert.assertTrue(contains(coveredParts, CubeTestSetup.NOW)); + Assert.assertTrue(contains(coveredParts, NOW)); if (coveredParts.size() == 2) { - Assert.assertTrue(contains(coveredParts, CubeTestSetup.TWODAYS_BACK)); + Assert.assertTrue(contains(coveredParts, TWODAYS_BACK)); Assert.assertEquals(1, result.get("S2").size()); }*/ // {s1, s2}, {s2}, {s1} -> {s1,s2} answeringParts = new ArrayList<FactPartition>(); - answeringParts.add(new FactPartition("dt", CubeTestSetup.TWO_MONTHS_BACK, UpdatePeriod.MONTHLY, null, null, s12)); - answeringParts.add(new FactPartition("dt", CubeTestSetup.TWODAYS_BACK, UpdatePeriod.DAILY, null, null, s2)); - answeringParts.add(new FactPartition("dt", CubeTestSetup.NOW, UpdatePeriod.HOURLY, null, null, s1)); + answeringParts.add(new FactPartition("dt", TWO_MONTHS_BACK, UpdatePeriod.MONTHLY, null, null, s12)); + answeringParts.add(new FactPartition("dt", TWODAYS_BACK, UpdatePeriod.DAILY, null, null, s2)); + answeringParts.add(new FactPartition("dt", NOW, UpdatePeriod.HOURLY, null, null, s1)); result = new HashMap<String, Set<FactPartition>>(); StorageUtil.getMinimalAnsweringTables(answeringParts, result); System.out.println("results:" + result); @@ -230,16 +232,16 @@ public class TestStorageUtil { Assert.assertTrue(result.keySet().contains("S2")); coveredParts = result.get("S2"); Assert.assertTrue(coveredParts.size() >= 1); - Assert.assertTrue(contains(coveredParts, CubeTestSetup.TWODAYS_BACK)); + Assert.assertTrue(contains(coveredParts, TWODAYS_BACK)); if (coveredParts.size() == 2) { - Assert.assertTrue(contains(coveredParts, CubeTestSetup.TWO_MONTHS_BACK)); + Assert.assertTrue(contains(coveredParts, TWO_MONTHS_BACK)); Assert.assertEquals(1, result.get("S1").size()); } coveredParts = result.get("S1"); Assert.assertTrue(coveredParts.size() >= 1); - Assert.assertTrue(contains(coveredParts, CubeTestSetup.NOW)); + Assert.assertTrue(contains(coveredParts, NOW)); if (coveredParts.size() == 2) { - Assert.assertTrue(contains(coveredParts, CubeTestSetup.TWO_MONTHS_BACK)); + Assert.assertTrue(contains(coveredParts, TWO_MONTHS_BACK)); Assert.assertEquals(1, result.get("S2").size()); } } http://git-wip-us.apache.org/repos/asf/lens/blob/7c7c86da/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeExtractor.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeExtractor.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeExtractor.java index a431717..eb8c6eb 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeExtractor.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeExtractor.java @@ -19,12 +19,15 @@ package org.apache.lens.cube.parse; +import static org.apache.lens.cube.metadata.DateFactory.*; import static org.apache.lens.cube.parse.CubeTestSetup.*; import java.util.List; import org.apache.lens.cube.error.LensCubeErrorCode; import org.apache.lens.cube.metadata.TestCubeMetastoreClient; +import org.apache.lens.cube.metadata.TimeRange; +import org.apache.lens.cube.metadata.UpdatePeriod; import org.apache.lens.server.api.error.LensException; import org.apache.hadoop.conf.Configuration; @@ -39,14 +42,10 @@ import org.testng.annotations.Test; public class TestTimeRangeExtractor extends TestQueryRewrite { private CubeQueryRewriter driver; - private String dateNow; - private String dateTwoDaysBack; @BeforeTest public void setupInstance() throws Exception { driver = new CubeQueryRewriter(new Configuration(), new HiveConf()); - dateTwoDaysBack = getDateUptoHours(TWODAYS_BACK); - dateNow = getDateUptoHours(NOW); } @AfterTest @@ -61,7 +60,8 @@ public class TestTimeRangeExtractor extends TestQueryRewrite { @Test public void testTimeRangeValidation() throws Exception { - String timeRange2 = " time_range_in(d_time, '" + dateNow + "','" + dateTwoDaysBack + "')"; + // reverse range + String timeRange2 = getTimeRangeString(UpdatePeriod.DAILY, 0, -2, UpdatePeriod.HOURLY); try { // this should throw exception because from date is after to date driver.rewrite("SELECT cityid, testCube.msr2 from" + " testCube where " + timeRange2); @@ -74,7 +74,8 @@ public class TestTimeRangeExtractor extends TestQueryRewrite { @Test public void testEqualTimeRangeValidation() throws Exception { - String equalTimeRange = " time_range_in(d_time, '" + dateNow + "','" + dateNow + "')"; + // zero range + String equalTimeRange = getTimeRangeString(UpdatePeriod.HOURLY, 0, 0); try { // this should throw exception because from date and to date are same driver.rewrite("SELECT cityid, testCube.msr2 from" + " testCube where " + equalTimeRange); @@ -87,18 +88,16 @@ public class TestTimeRangeExtractor extends TestQueryRewrite { @Test public void testNoNPE() throws Exception { - String timeRange = " time_range_in(d_time, '" + dateTwoDaysBack + "','" + dateNow + "')"; - String q1 = "SELECT cityid, testCube.msr2 from testCube where " + timeRange + " AND cityid IS NULL"; + String q1 = "SELECT cityid, testCube.msr2 from testCube where " + TWO_DAYS_RANGE + " AND cityid IS NULL"; rewrite(driver, q1); - q1 = "SELECT cityid, testCube.msr2 from testCube where cityid IS NULL AND " + timeRange; + q1 = "SELECT cityid, testCube.msr2 from testCube where cityid IS NULL AND " + TWO_DAYS_RANGE; rewrite(driver, q1); } @Test public void testTimeRangeASTPosition() throws Exception { // check that time range can be any child of AND - String timeRange = " time_range_in(d_time, '" + dateTwoDaysBack + "','" + dateNow + "')"; - String q1 = "SELECT cityid, testCube.msr2 from testCube where " + timeRange + " AND cityid=1"; + String q1 = "SELECT cityid, testCube.msr2 from testCube where " + TWO_DAYS_RANGE + " AND cityid=1"; CubeQueryContext cubeql = driver.rewrite(q1); String hql = cubeql.toHQL(); } @@ -106,10 +105,9 @@ public class TestTimeRangeExtractor extends TestQueryRewrite { @Test public void testPartitionColNameExtract() throws Exception { String q2 = - "SELECT cityid, testCube.msr3 from testCube where cityid=1 AND " + " time_range_in(d_time, '" + dateTwoDaysBack - + "','" + dateNow + "')"; + "SELECT cityid, testCube.msr3 from testCube where cityid=1 AND " + TWO_DAYS_RANGE; CubeQueryContext cubeql = driver.rewrite(q2); - String hql = cubeql.toHQL(); + cubeql.toHQL(); // Check that column name in time range is extracted properly TimeRange range = cubeql.getTimeRanges().get(0); Assert.assertNotNull(range); @@ -124,12 +122,11 @@ public class TestTimeRangeExtractor extends TestQueryRewrite { String dateNow = getDateUptoHours(NOW); // time range within time range String q3 = - "SELECT cityid, testCube.msr3 FROM testCube where cityid=1 AND" + " (time_range_in(d_time, '" + dateTwoDaysBack - + "','" + dateNow + "') " + "SELECT cityid, testCube.msr3 FROM testCube where cityid=1 AND (" + TWO_DAYS_RANGE // Time range as sibling of the first time range - + " OR " + " time_range_in(d_time, '" + dateTwoDaysBack + "', '" + dateNow + "'))"; + + " OR " + TWO_DAYS_RANGE + ")"; CubeQueryContext cubeql = driver.rewrite(q3); - String hql = cubeql.toHQL(); + cubeql.toHQL(); List<TimeRange> ranges = cubeql.getTimeRanges(); Assert.assertEquals(2, ranges.size()); http://git-wip-us.apache.org/repos/asf/lens/blob/7c7c86da/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 1fc8bc8..da0e4f4 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 @@ -19,9 +19,9 @@ package org.apache.lens.cube.parse; +import static org.apache.lens.cube.metadata.DateFactory.*; import static org.apache.lens.cube.parse.CandidateTablePruneCause.CandidateTablePruneCode.COLUMN_NOT_FOUND; import static org.apache.lens.cube.parse.CandidateTablePruneCause.CandidateTablePruneCode.FACT_NOT_AVAILABLE_IN_RANGE; -import static org.apache.lens.cube.parse.CubeTestSetup.*; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; http://git-wip-us.apache.org/repos/asf/lens/blob/7c7c86da/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeWriter.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeWriter.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeWriter.java index 0248409..87e128f 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeWriter.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeWriter.java @@ -19,14 +19,18 @@ package org.apache.lens.cube.parse; +import static org.apache.lens.cube.metadata.DateFactory.*; +import static org.apache.lens.cube.metadata.UpdatePeriod.*; + import java.text.DateFormat; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.LinkedHashSet; +import java.util.List; import java.util.Set; import org.apache.lens.cube.error.LensCubeErrorCode; import org.apache.lens.cube.metadata.FactPartition; -import org.apache.lens.cube.metadata.UpdatePeriod; import org.apache.lens.server.api.error.LensException; import org.testng.Assert; @@ -45,16 +49,26 @@ public abstract class TestTimeRangeWriter { public abstract void validateConsecutive(String whereClause, DateFormat format); - public abstract void validateSingle(String whereClause, DateFormat object); + public void validateSingle(String whereClause, DateFormat format) { + List<String> parts = new ArrayList<String>(); + if (format == null) { + parts.add(getDateStringWithOffset(DAILY, -1)); + } else { + parts.add(format.format(getDateWithOffset(DAILY, -1))); + } + + System.out.println("Expected :" + StorageUtil.getWherePartClause("dt", "test", parts)); + Assert.assertEquals(whereClause, StorageUtil.getWherePartClause("dt", "test", parts)); + } public static final DateFormat DB_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Test public void testDisjointParts() { Set<FactPartition> answeringParts = new LinkedHashSet<FactPartition>(); - answeringParts.add(new FactPartition("dt", CubeTestSetup.TWO_MONTHS_BACK, UpdatePeriod.MONTHLY, null, null)); - answeringParts.add(new FactPartition("dt", CubeTestSetup.TWODAYS_BACK, UpdatePeriod.DAILY, null, null)); - answeringParts.add(new FactPartition("dt", CubeTestSetup.NOW, UpdatePeriod.HOURLY, null, null)); + answeringParts.add(new FactPartition("dt", getDateWithOffset(MONTHLY, -2), MONTHLY, null, null)); + answeringParts.add(new FactPartition("dt", getDateWithOffset(DAILY, -2), DAILY, null, null)); + answeringParts.add(new FactPartition("dt", getDateWithOffset(HOURLY, 0), HOURLY, null, null)); LensException th = null; String whereClause = null; @@ -76,10 +90,10 @@ public abstract class TestTimeRangeWriter { } // test with format - answeringParts = new LinkedHashSet<FactPartition>(); - answeringParts.add(new FactPartition("dt", CubeTestSetup.TWO_MONTHS_BACK, UpdatePeriod.MONTHLY, null, DB_FORMAT)); - answeringParts.add(new FactPartition("dt", CubeTestSetup.TWODAYS_BACK, UpdatePeriod.DAILY, null, DB_FORMAT)); - answeringParts.add(new FactPartition("dt", CubeTestSetup.NOW, UpdatePeriod.HOURLY, null, DB_FORMAT)); + answeringParts = new LinkedHashSet<>(); + answeringParts.add(new FactPartition("dt", getDateWithOffset(MONTHLY, -2), MONTHLY, null, DB_FORMAT)); + answeringParts.add(new FactPartition("dt", getDateWithOffset(DAILY, -2), DAILY, null, DB_FORMAT)); + answeringParts.add(new FactPartition("dt", getDateWithOffset(HOURLY, 0), HOURLY, null, DB_FORMAT)); th = null; try { @@ -100,17 +114,17 @@ public abstract class TestTimeRangeWriter { @Test public void testConsecutiveDayParts() throws LensException { Set<FactPartition> answeringParts = new LinkedHashSet<FactPartition>(); - answeringParts.add(new FactPartition("dt", CubeTestSetup.ONE_DAY_BACK, UpdatePeriod.DAILY, null, null)); - answeringParts.add(new FactPartition("dt", CubeTestSetup.TWODAYS_BACK, UpdatePeriod.DAILY, null, null)); - answeringParts.add(new FactPartition("dt", CubeTestSetup.NOW, UpdatePeriod.DAILY, null, null)); + answeringParts.add(new FactPartition("dt", getDateWithOffset(DAILY, -1), DAILY, null, null)); + answeringParts.add(new FactPartition("dt", getDateWithOffset(DAILY, -2), DAILY, null, null)); + answeringParts.add(new FactPartition("dt", getDateWithOffset(DAILY, 0), DAILY, null, null)); String whereClause = getTimerangeWriter().getTimeRangeWhereClause(null, "test", answeringParts); validateConsecutive(whereClause, null); answeringParts = new LinkedHashSet<FactPartition>(); - answeringParts.add(new FactPartition("dt", CubeTestSetup.ONE_DAY_BACK, UpdatePeriod.DAILY, null, DB_FORMAT)); - answeringParts.add(new FactPartition("dt", CubeTestSetup.TWODAYS_BACK, UpdatePeriod.DAILY, null, DB_FORMAT)); - answeringParts.add(new FactPartition("dt", CubeTestSetup.NOW, UpdatePeriod.DAILY, null, DB_FORMAT)); + answeringParts.add(new FactPartition("dt", getDateWithOffset(DAILY, -1), DAILY, null, DB_FORMAT)); + answeringParts.add(new FactPartition("dt", getDateWithOffset(DAILY, -2), DAILY, null, DB_FORMAT)); + answeringParts.add(new FactPartition("dt", getDateWithOffset(DAILY, 0), DAILY, null, DB_FORMAT)); whereClause = getTimerangeWriter().getTimeRangeWhereClause(null, "test", answeringParts); validateConsecutive(whereClause, DB_FORMAT); @@ -119,12 +133,12 @@ public abstract class TestTimeRangeWriter { @Test public void testSinglePart() throws LensException { Set<FactPartition> answeringParts = new LinkedHashSet<FactPartition>(); - answeringParts.add(new FactPartition("dt", CubeTestSetup.ONE_DAY_BACK, UpdatePeriod.DAILY, null, null)); + answeringParts.add(new FactPartition("dt", getDateWithOffset(DAILY, -1), DAILY, null, null)); String whereClause = getTimerangeWriter().getTimeRangeWhereClause(null, "test", answeringParts); validateSingle(whereClause, null); answeringParts = new LinkedHashSet<FactPartition>(); - answeringParts.add(new FactPartition("dt", CubeTestSetup.ONE_DAY_BACK, UpdatePeriod.DAILY, null, DB_FORMAT)); + answeringParts.add(new FactPartition("dt", getDateWithOffset(DAILY, -1), DAILY, null, DB_FORMAT)); whereClause = getTimerangeWriter().getTimeRangeWhereClause(null, "test", answeringParts); validateSingle(whereClause, DB_FORMAT); http://git-wip-us.apache.org/repos/asf/lens/blob/7c7c86da/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 7bd7b6b..b7372f1 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 @@ -19,6 +19,11 @@ package org.apache.lens.cube.parse; +import static org.apache.lens.cube.error.LensCubeErrorCode.CANNOT_USE_TIMERANGE_WRITER; +import static org.apache.lens.cube.metadata.DateFactory.*; +import static org.apache.lens.cube.metadata.UpdatePeriod.CONTINUOUS; +import static org.apache.lens.cube.metadata.UpdatePeriod.DAILY; +import static org.apache.lens.cube.parse.CubeQueryConfUtil.FAIL_QUERY_ON_PARTIAL_DATA; import static org.apache.lens.cube.parse.CubeTestSetup.*; import java.text.DateFormat; @@ -28,7 +33,6 @@ import java.util.Date; import java.util.HashMap; import java.util.Map; -import org.apache.lens.cube.error.LensCubeErrorCode; import org.apache.lens.cube.metadata.UpdatePeriod; import org.apache.lens.server.api.error.LensException; @@ -45,7 +49,7 @@ import lombok.extern.slf4j.Slf4j; public class TestTimeRangeWriterWithQuery extends TestQueryRewrite { private Configuration conf; - private final String cubeName = CubeTestSetup.TEST_CUBE_NAME; + private final String cubeName = TEST_CUBE_NAME; @BeforeTest public void setupDriver() throws Exception { @@ -84,39 +88,29 @@ public class TestTimeRangeWriterWithQuery extends TestQueryRewrite { th = e; log.error("Semantic exception while testing cube query.", e); } - if (!CubeTestSetup.isZerothHour()) { + if (!isZerothHour()) { Assert.assertNotNull(th); Assert - .assertEquals(th.getErrorCode(), LensCubeErrorCode.CANNOT_USE_TIMERANGE_WRITER.getLensErrorInfo().getErrorCode()); + .assertEquals(th.getErrorCode(), CANNOT_USE_TIMERANGE_WRITER.getLensErrorInfo().getErrorCode()); } // hourly partitions for two days - conf.setBoolean(CubeQueryConfUtil.FAIL_QUERY_ON_PARTIAL_DATA, true); - + conf.setBoolean(FAIL_QUERY_ON_PARTIAL_DATA, true); DateFormat qFmt = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss"); - Calendar qCal = Calendar.getInstance(); - Date toDate = qCal.getTime(); - String qTo = qFmt.format(toDate); - qCal.setTime(TWODAYS_BACK); - Date from2DaysBackDate = qCal.getTime(); - String qFrom = qFmt.format(from2DaysBackDate); - String twoDaysInRangeClause = " time_range_in(d_time, '"+ qFrom + "', '" + qTo + "')"; + String twoDaysInRangeClause = getTimeRangeString(DAILY, -2, 0, qFmt); String hqlQuery = rewrite("select SUM(msr2) from testCube" + " where " + twoDaysInRangeClause, conf); Map<String, String> whereClauses = new HashMap<String, String>(); whereClauses.put( - CubeTestSetup.getDbName() + "c1_testfact", - TestBetweenTimeRangeWriter.getBetweenClause(cubeName, "dt", from2DaysBackDate, toDate, - UpdatePeriod.CONTINUOUS.format())); + getDbName() + "c1_testfact", + TestBetweenTimeRangeWriter.getBetweenClause(cubeName, "dt", + getDateWithOffset(DAILY, -2), getDateWithOffset(DAILY, 0), CONTINUOUS.format())); String expected = getExpectedQuery(cubeName, "select sum(testcube.msr2) FROM ", null, null, whereClauses); System.out.println("HQL:" + hqlQuery); TestCubeRewriter.compareQueries(hqlQuery, expected); // multiple range query - //from date 4 days back - qCal.setTime(BEFORE_4_DAYS_START); - Date from4DaysBackDate = qCal.getTime(); - String qFrom4Days = qFmt.format(from4DaysBackDate); - String fourDaysInRangeClause = " time_range_in(d_time, '"+ qFrom4Days + "', '" + qTo + "')"; + //from date 6 days back + String fourDaysInRangeClause = getTimeRangeString(DAILY, -6, 0, qFmt); hqlQuery = rewrite("select SUM(msr2) from testCube" + " where " + twoDaysInRangeClause + " OR " @@ -124,12 +118,12 @@ public class TestTimeRangeWriterWithQuery extends TestQueryRewrite { whereClauses = new HashMap<String, String>(); whereClauses.put( - CubeTestSetup.getDbName() + "c1_testfact", - TestBetweenTimeRangeWriter.getBetweenClause(cubeName, "dt", from2DaysBackDate, toDate, - UpdatePeriod.CONTINUOUS.format()) + getDbName() + "c1_testfact", + TestBetweenTimeRangeWriter.getBetweenClause(cubeName, "dt", getDateWithOffset(DAILY, -2), + getDateWithOffset(DAILY, 0), CONTINUOUS.format()) + " OR" - + TestBetweenTimeRangeWriter.getBetweenClause(cubeName, "dt", from4DaysBackDate, toDate, - UpdatePeriod.CONTINUOUS.format())); + + TestBetweenTimeRangeWriter.getBetweenClause(cubeName, "dt", getDateWithOffset(DAILY, -6), + getDateWithOffset(DAILY, 0), CONTINUOUS.format())); expected = getExpectedQuery(cubeName, "select sum(testcube.msr2) FROM ", null, null, whereClauses); System.out.println("HQL:" + hqlQuery); TestCubeRewriter.compareQueries(hqlQuery, expected); @@ -138,9 +132,9 @@ public class TestTimeRangeWriterWithQuery extends TestQueryRewrite { conf.set(CubeQueryConfUtil.PART_WHERE_CLAUSE_DATE_FORMAT, "yyyy-MM-dd HH:mm:ss"); hqlQuery = rewrite("select SUM(msr2) from testCube" + " where " + TWO_DAYS_RANGE, conf); whereClauses = new HashMap<String, String>(); - whereClauses.put(CubeTestSetup.getDbName() + "c1_testfact", TestBetweenTimeRangeWriter.getBetweenClause(cubeName, - "dt", getUptoHour(CubeTestSetup.TWODAYS_BACK), - getUptoHour(CubeTestSetup.NOW), TestTimeRangeWriter.DB_FORMAT)); + whereClauses.put(getDbName() + "c1_testfact", TestBetweenTimeRangeWriter.getBetweenClause(cubeName, + "dt", getUptoHour(TWODAYS_BACK), + getUptoHour(NOW), TestTimeRangeWriter.DB_FORMAT)); expected = getExpectedQuery(cubeName, "select sum(testcube.msr2) FROM ", null, null, whereClauses); System.out.println("HQL:" + hqlQuery); TestCubeRewriter.compareQueries(hqlQuery, expected); @@ -150,20 +144,19 @@ public class TestTimeRangeWriterWithQuery extends TestQueryRewrite { public void testCubeQueryWithTimeDim() throws Exception { Configuration tconf = new Configuration(conf); // hourly partitions for two days - tconf.setBoolean(CubeQueryConfUtil.FAIL_QUERY_ON_PARTIAL_DATA, true); + tconf.setBoolean(FAIL_QUERY_ON_PARTIAL_DATA, true); tconf.set(CubeQueryConfUtil.DRIVER_SUPPORTED_STORAGES, "C4"); tconf.setBoolean(CubeQueryConfUtil.REPLACE_TIMEDIM_WITH_PART_COL, false); tconf.set(CubeQueryConfUtil.PART_WHERE_CLAUSE_DATE_FORMAT, "yyyy-MM-dd HH:mm:ss"); tconf.set(CubeQueryConfUtil.getValidUpdatePeriodsKey("testfact", "C4"), "MONTHLY,DAILY,HOURLY"); String query = - "SELECT test_time_dim, msr2 FROM testCube where " + "time_range_in(test_time_dim, '" - + CubeTestSetup.getDateUptoHours(TWODAYS_BACK) + "','" + CubeTestSetup.getDateUptoHours(NOW) + "')"; + "SELECT test_time_dim, msr2 FROM testCube where " + TWO_DAYS_RANGE_TTD; String hqlQuery = rewrite(query, tconf); Map<String, String> whereClauses = new HashMap<String, String>(); - whereClauses.put(CubeTestSetup.getDbName() + "c4_testfact2", TestBetweenTimeRangeWriter.getBetweenClause("hourdim", - "full_hour", getUptoHour(CubeTestSetup.TWODAYS_BACK), - getUptoHour(getOneLess(CubeTestSetup.NOW, UpdatePeriod.HOURLY.calendarField())), TestTimeRangeWriter.DB_FORMAT)); + whereClauses.put(getDbName() + "c4_testfact2", TestBetweenTimeRangeWriter.getBetweenClause("hourdim", + "full_hour", getUptoHour(TWODAYS_BACK), + getUptoHour(getOneLess(NOW, UpdatePeriod.HOURLY.calendarField())), TestTimeRangeWriter.DB_FORMAT)); System.out.println("HQL:" + hqlQuery); String expected = getExpectedQuery(cubeName, "select hourdim.full_hour, sum(testcube.msr2) FROM ", " join " + getDbName() @@ -172,8 +165,7 @@ public class TestTimeRangeWriterWithQuery extends TestQueryRewrite { TestCubeRewriter.compareQueries(hqlQuery, expected); query = - "SELECT msr2 FROM testCube where " + "time_range_in(test_time_dim, '" - + CubeTestSetup.getDateUptoHours(TWODAYS_BACK) + "','" + CubeTestSetup.getDateUptoHours(NOW) + "')"; + "SELECT msr2 FROM testCube where " + TWO_DAYS_RANGE_TTD; hqlQuery = rewrite(query, tconf); System.out.println("HQL:" + hqlQuery); expected = @@ -182,9 +174,7 @@ public class TestTimeRangeWriterWithQuery extends TestQueryRewrite { TestCubeRewriter.compareQueries(hqlQuery, expected); query = - "SELECT msr2 FROM testCube where testcube.cityid > 2 and " + "time_range_in(test_time_dim, '" - + CubeTestSetup.getDateUptoHours(TWODAYS_BACK) + "','" + CubeTestSetup.getDateUptoHours(NOW) - + "') and testcube.cityid != 5"; + "SELECT msr2 FROM testCube where testcube.cityid > 2 and " + TWO_DAYS_RANGE_TTD + " and testcube.cityid != 5"; hqlQuery = rewrite(query, tconf); System.out.println("HQL:" + hqlQuery); expected = @@ -196,20 +186,18 @@ public class TestTimeRangeWriterWithQuery extends TestQueryRewrite { // multiple range query hqlQuery = rewrite( - "select SUM(msr2) from testCube" + " where time_range_in(test_time_dim, '" - + CubeTestSetup.getDateUptoHours(TWODAYS_BACK) + "','" + CubeTestSetup.getDateUptoHours(NOW) + "')" - + " OR time_range_in(test_time_dim, '" + CubeTestSetup.getDateUptoHours(BEFORE_4_DAYS_START) + "','" - + CubeTestSetup.getDateUptoHours(BEFORE_4_DAYS_END) + "')", tconf); + "select SUM(msr2) from testCube" + " where " + TWO_DAYS_RANGE_TTD + + " OR " + TWO_DAYS_RANGE_TTD_BEFORE_4_DAYS, tconf); - whereClauses = new HashMap<String, String>(); + whereClauses = new HashMap<>(); whereClauses.put( - CubeTestSetup.getDbName() + "c4_testfact2", - TestBetweenTimeRangeWriter.getBetweenClause("hourdim", "full_hour", getUptoHour(CubeTestSetup.TWODAYS_BACK), - getUptoHour(getOneLess(CubeTestSetup.NOW, UpdatePeriod.HOURLY.calendarField())), + getDbName() + "c4_testfact2", + TestBetweenTimeRangeWriter.getBetweenClause("hourdim", "full_hour", getUptoHour(TWODAYS_BACK), + getUptoHour(getOneLess(NOW, UpdatePeriod.HOURLY.calendarField())), TestTimeRangeWriter.DB_FORMAT) + " OR " - + TestBetweenTimeRangeWriter.getBetweenClause("hourdim", "full_hour", getUptoHour(BEFORE_4_DAYS_START), - getUptoHour(getOneLess(BEFORE_4_DAYS_END, UpdatePeriod.HOURLY.calendarField())), + + TestBetweenTimeRangeWriter.getBetweenClause("hourdim", "full_hour", getUptoHour(BEFORE_6_DAYS), + getUptoHour(getOneLess(BEFORE_4_DAYS, UpdatePeriod.HOURLY.calendarField())), TestTimeRangeWriter.DB_FORMAT)); expected = getExpectedQuery(cubeName, "select sum(testcube.msr2) FROM ", " join " + getDbName() @@ -219,10 +207,8 @@ public class TestTimeRangeWriterWithQuery extends TestQueryRewrite { hqlQuery = rewrite( - "select to_date(test_time_dim), SUM(msr2) from testCube" + " where time_range_in(test_time_dim, '" - + CubeTestSetup.getDateUptoHours(TWODAYS_BACK) + "','" + CubeTestSetup.getDateUptoHours(NOW) + "')" - + " OR time_range_in(test_time_dim, '" + CubeTestSetup.getDateUptoHours(BEFORE_4_DAYS_START) + "','" - + CubeTestSetup.getDateUptoHours(BEFORE_4_DAYS_END) + "')", tconf); + "select to_date(test_time_dim), SUM(msr2) from testCube" + " where " + TWO_DAYS_RANGE_TTD + + " OR " + TWO_DAYS_RANGE_TTD_BEFORE_4_DAYS, tconf); expected = getExpectedQuery(cubeName, "select to_date(hourdim.full_hour), sum(testcube.msr2) FROM ", " join " @@ -236,20 +222,19 @@ public class TestTimeRangeWriterWithQuery extends TestQueryRewrite { public void testCubeQueryWithTimeDimThruChain() throws Exception { // hourly partitions for two days Configuration tconf = new Configuration(conf); - tconf.setBoolean(CubeQueryConfUtil.FAIL_QUERY_ON_PARTIAL_DATA, true); + tconf.setBoolean(FAIL_QUERY_ON_PARTIAL_DATA, true); tconf.set(CubeQueryConfUtil.DRIVER_SUPPORTED_STORAGES, "C4"); tconf.setBoolean(CubeQueryConfUtil.REPLACE_TIMEDIM_WITH_PART_COL, false); tconf.set(CubeQueryConfUtil.PART_WHERE_CLAUSE_DATE_FORMAT, "yyyy-MM-dd HH:mm:ss"); tconf.set(CubeQueryConfUtil.getValidUpdatePeriodsKey("testfact", "C4"), "MONTHLY,DAILY,HOURLY"); String query = - "SELECT test_time_dim2, msr2 FROM testCube where " + "time_range_in(test_time_dim2, '" - + CubeTestSetup.getDateUptoHours(TWODAYS_BACK) + "','" + CubeTestSetup.getDateUptoHours(NOW) + "')"; + "SELECT test_time_dim2, msr2 FROM testCube where " + TWO_DAYS_RANGE_TTD2; String hqlQuery = rewrite(query, tconf); Map<String, String> whereClauses = new HashMap<String, String>(); - whereClauses.put(CubeTestSetup.getDbName() + "c4_testfact2", TestBetweenTimeRangeWriter.getBetweenClause( - "timehourchain", "full_hour", getUptoHour(CubeTestSetup.TWODAYS_BACK), - getUptoHour(getOneLess(CubeTestSetup.NOW, UpdatePeriod.HOURLY.calendarField())), TestTimeRangeWriter.DB_FORMAT)); + whereClauses.put(getDbName() + "c4_testfact2", TestBetweenTimeRangeWriter.getBetweenClause( + "timehourchain", "full_hour", getUptoHour(TWODAYS_BACK), + getUptoHour(getOneLess(NOW, UpdatePeriod.HOURLY.calendarField())), TestTimeRangeWriter.DB_FORMAT)); System.out.println("HQL:" + hqlQuery); String expected = getExpectedQuery(cubeName, "select timehourchain.full_hour, sum(testcube.msr2) FROM ", " join " + getDbName() @@ -258,8 +243,7 @@ public class TestTimeRangeWriterWithQuery extends TestQueryRewrite { TestCubeRewriter.compareQueries(hqlQuery, expected); query = - "SELECT msr2 FROM testCube where " + "time_range_in(test_time_dim2, '" - + CubeTestSetup.getDateUptoHours(TWODAYS_BACK) + "','" + CubeTestSetup.getDateUptoHours(NOW) + "')"; + "SELECT msr2 FROM testCube where " + TWO_DAYS_RANGE_TTD2; hqlQuery = rewrite(query, tconf); System.out.println("HQL:" + hqlQuery); expected = @@ -269,9 +253,7 @@ public class TestTimeRangeWriterWithQuery extends TestQueryRewrite { TestCubeRewriter.compareQueries(hqlQuery, expected); query = - "SELECT msr2 FROM testCube where testcube.cityid > 2 and " + "time_range_in(test_time_dim2, '" - + CubeTestSetup.getDateUptoHours(TWODAYS_BACK) + "','" + CubeTestSetup.getDateUptoHours(NOW) - + "') and testcube.cityid != 5"; + "SELECT msr2 FROM testCube where testcube.cityid > 2 and " + TWO_DAYS_RANGE_TTD2 + " and testcube.cityid != 5"; hqlQuery = rewrite(query, tconf); System.out.println("HQL:" + hqlQuery); expected = @@ -283,20 +265,18 @@ public class TestTimeRangeWriterWithQuery extends TestQueryRewrite { // multiple range query hqlQuery = rewrite( - "select SUM(msr2) from testCube" + " where time_range_in(test_time_dim2, '" - + CubeTestSetup.getDateUptoHours(TWODAYS_BACK) + "','" + CubeTestSetup.getDateUptoHours(NOW) + "')" - + " OR time_range_in(test_time_dim2, '" + CubeTestSetup.getDateUptoHours(BEFORE_4_DAYS_START) + "','" - + CubeTestSetup.getDateUptoHours(BEFORE_4_DAYS_END) + "')", tconf); + "select SUM(msr2) from testCube" + " where " + TWO_DAYS_RANGE_TTD2 + + " OR " + TWO_DAYS_RANGE_TTD2_BEFORE_4_DAYS, tconf); whereClauses = new HashMap<String, String>(); whereClauses.put( - CubeTestSetup.getDbName() + "c4_testfact2", - TestBetweenTimeRangeWriter.getBetweenClause("timehourchain", "full_hour", getUptoHour(CubeTestSetup.TWODAYS_BACK), - getUptoHour(getOneLess(CubeTestSetup.NOW, UpdatePeriod.HOURLY.calendarField())), + getDbName() + "c4_testfact2", + TestBetweenTimeRangeWriter.getBetweenClause("timehourchain", "full_hour", getUptoHour(TWODAYS_BACK), + getUptoHour(getOneLess(NOW, UpdatePeriod.HOURLY.calendarField())), TestTimeRangeWriter.DB_FORMAT) + " OR " - + TestBetweenTimeRangeWriter.getBetweenClause("timehourchain", "full_hour", getUptoHour(BEFORE_4_DAYS_START), - getUptoHour(getOneLess(BEFORE_4_DAYS_END, UpdatePeriod.HOURLY.calendarField())), + + TestBetweenTimeRangeWriter.getBetweenClause("timehourchain", "full_hour", getUptoHour(BEFORE_6_DAYS), + getUptoHour(getOneLess(BEFORE_4_DAYS, UpdatePeriod.HOURLY.calendarField())), TestTimeRangeWriter.DB_FORMAT)); expected = getExpectedQuery(cubeName, "select sum(testcube.msr2) FROM ", " join " + getDbName() @@ -307,10 +287,8 @@ public class TestTimeRangeWriterWithQuery extends TestQueryRewrite { hqlQuery = rewrite( - "select to_date(test_time_dim2), SUM(msr2) from testCube" + " where time_range_in(test_time_dim2, '" - + CubeTestSetup.getDateUptoHours(TWODAYS_BACK) + "','" + CubeTestSetup.getDateUptoHours(NOW) + "')" - + " OR time_range_in(test_time_dim2, '" + CubeTestSetup.getDateUptoHours(BEFORE_4_DAYS_START) + "','" - + CubeTestSetup.getDateUptoHours(BEFORE_4_DAYS_END) + "')", tconf); + "select to_date(test_time_dim2), SUM(msr2) from testCube" + " where " + TWO_DAYS_RANGE_TTD2 + + " OR " +TWO_DAYS_RANGE_TTD2_BEFORE_4_DAYS, tconf); expected = getExpectedQuery(cubeName, "select to_date(timehourchain.full_hour), sum(testcube.msr2) FROM ", " join " http://git-wip-us.apache.org/repos/asf/lens/blob/7c7c86da/lens-server/src/main/java/org/apache/lens/server/query/QueryResultPurger.java ---------------------------------------------------------------------- diff --git a/lens-server/src/main/java/org/apache/lens/server/query/QueryResultPurger.java b/lens-server/src/main/java/org/apache/lens/server/query/QueryResultPurger.java index 54c6574..2be11ea 100644 --- a/lens-server/src/main/java/org/apache/lens/server/query/QueryResultPurger.java +++ b/lens-server/src/main/java/org/apache/lens/server/query/QueryResultPurger.java @@ -28,7 +28,7 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; -import org.apache.lens.cube.parse.DateUtil; +import org.apache.lens.cube.metadata.DateUtil; import org.apache.lens.server.LensServices; import org.apache.lens.server.api.error.LensException; import org.apache.lens.server.api.metrics.MetricsService;