Repository: lens
Updated Branches:
  refs/heads/master 3f03d29ba -> f4da1f0b1


LENS-996: Improvements in filters of query list api


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

Branch: refs/heads/master
Commit: f4da1f0b1fead1fc91694acb3280f79b5050820d
Parents: 3f03d29
Author: Rajat Khandelwal <pro...@apache.org>
Authored: Fri Jul 29 14:27:43 2016 +0530
Committer: Rajat Khandelwal <rajatgupt...@gmail.com>
Committed: Fri Jul 29 14:27:43 2016 +0530

----------------------------------------------------------------------
 .../lens/cli/commands/LensQueryCommands.java    | 12 +--
 .../apache/lens/cli/TestLensQueryCommands.java  | 41 +++++-----
 .../java/org/apache/lens/client/LensClient.java |  7 +-
 .../org/apache/lens/client/LensStatement.java   | 13 ++--
 .../org/apache/lens/cube/metadata/DateUtil.java |  6 +-
 .../lens/cube/parse/BetweenTimeRangeWriter.java |  9 +--
 .../apache/lens/cube/metadata/TestDateUtil.java |  5 ++
 .../lens/cube/parse/TestTimeRangeWriter.java    | 34 ++++-----
 .../server/api/query/QueryExecutionService.java |  9 ++-
 .../apache/lens/server/query/LensServerDAO.java | 69 +++++++++--------
 .../server/query/QueryExecutionServiceImpl.java | 78 +++++++++++++++-----
 .../lens/server/query/QueryServiceResource.java | 36 ++++-----
 .../apache/lens/server/util/UtilityMethods.java |  2 +-
 .../apache/lens/server/query/TestLensDAO.java   |  7 +-
 .../lens/server/query/TestQueryService.java     | 17 +++--
 15 files changed, 194 insertions(+), 151 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lens/blob/f4da1f0b/lens-cli/src/main/java/org/apache/lens/cli/commands/LensQueryCommands.java
----------------------------------------------------------------------
diff --git 
a/lens-cli/src/main/java/org/apache/lens/cli/commands/LensQueryCommands.java 
b/lens-cli/src/main/java/org/apache/lens/cli/commands/LensQueryCommands.java
index af05951..4346c86 100644
--- a/lens-cli/src/main/java/org/apache/lens/cli/commands/LensQueryCommands.java
+++ b/lens-cli/src/main/java/org/apache/lens/cli/commands/LensQueryCommands.java
@@ -267,10 +267,8 @@ public class LensQueryCommands extends BaseLensCommand {
     @CliOption(key = {"name"}, mandatory = false, help = "<query-name>") 
String queryName,
     @CliOption(key = {"user"}, mandatory = false, help = 
"<user-who-submitted-query>") String user,
     @CliOption(key = {"driver"}, mandatory = false, help = 
"<driver-where-query-ran>") String driver,
-    @CliOption(key = {"fromDate"}, mandatory = false, unspecifiedDefaultValue 
= "-1", help
-      = "<submission-time-is-after>") long fromDate,
-    @CliOption(key = {"toDate"}, mandatory = false, unspecifiedDefaultValue = 
"" + Long.MAX_VALUE, help
-      = "<submission-time-is-before>") long toDate) {
+    @CliOption(key = {"fromDate"}, mandatory = false, help = 
"<submission-time-is-after>") String fromDate,
+    @CliOption(key = {"toDate"}, mandatory = false, help = 
"<submission-time-is-before>") String toDate) {
     List<QueryHandle> handles = getClient().getQueries(state, queryName, user, 
driver, fromDate, toDate);
     if (handles != null && !handles.isEmpty()) {
       return 
Joiner.on("\n").skipNulls().join(handles).concat("\n").concat("Total number of 
queries: "
@@ -378,10 +376,8 @@ public class LensQueryCommands extends BaseLensCommand {
   public String getAllPreparedQueries(
     @CliOption(key = {"name"}, mandatory = false, help = "<query-name>") 
String queryName,
     @CliOption(key = {"user"}, mandatory = false, help = 
"<user-who-submitted-query>") String userName,
-    @CliOption(key = {"fromDate"}, mandatory = false, unspecifiedDefaultValue 
= "-1", help
-      = "<submission-time-is-after>") long fromDate,
-    @CliOption(key = {"toDate"}, mandatory = false, unspecifiedDefaultValue = 
"" + Long.MAX_VALUE, help
-      = "<submission-time-is-before>") long toDate) {
+    @CliOption(key = {"fromDate"}, mandatory = false, help = 
"<submission-time-is-after>") String fromDate,
+    @CliOption(key = {"toDate"}, mandatory = false, help = 
"<submission-time-is-before>") String toDate) {
     List<QueryPrepareHandle> handles = 
getClient().getPreparedQueries(userName, queryName, fromDate, toDate);
     if (handles != null && !handles.isEmpty()) {
       return Joiner.on("\n").skipNulls().join(handles);

http://git-wip-us.apache.org/repos/asf/lens/blob/f4da1f0b/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java
----------------------------------------------------------------------
diff --git 
a/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java 
b/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java
index 0bf2a66..ae30e9f 100644
--- a/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java
+++ b/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java
@@ -141,8 +141,8 @@ public class TestLensQueryCommands extends 
LensCliApplicationTest {
   @Test(dataProvider = "executeSyncQueryDP")
   public void executeSyncQuery(LensQueryCommands qCom, String sql, boolean 
shouldPass, boolean closeConn)
     throws Exception{
-    assertEquals(qCom.getAllPreparedQueries("all", "", -1, -1), "No prepared 
queries");
-    String successfulQueries = qCom.getAllQueries("SUCCESSFUL", null, "all", 
null, -1, Long.MAX_VALUE);
+    assertEquals(qCom.getAllPreparedQueries("all", "", null, null), "No 
prepared queries");
+    String successfulQueries = qCom.getAllQueries("SUCCESSFUL", null, "all", 
null, null, null);
     int noOfSuccQueriesSoFar;
     if (successfulQueries.contains("No queries")) {
       noOfSuccQueriesSoFar = 0;
@@ -172,7 +172,7 @@ public class TestLensQueryCommands extends 
LensCliApplicationTest {
     }
     // Wait for query to reach successful state
     int chkCount = 0;
-    while (!qCom.getAllQueries("SUCCESSFUL", null, "all", null, -1, 
Long.MAX_VALUE).contains(
+    while (!qCom.getAllQueries("SUCCESSFUL", null, "all", null, null, 
null).contains(
         "Total number of queries: " + (noOfSuccQueriesSoFar + 1))) {
       Thread.sleep(100);
       chkCount++;
@@ -195,11 +195,11 @@ public class TestLensQueryCommands extends 
LensCliApplicationTest {
   public void preparedQuery(LensQueryCommands qCom) throws Exception {
     long submitTime = System.currentTimeMillis();
     String sql = "cube select id, name from test_dim";
-    String result = qCom.getAllPreparedQueries("testPreparedName", "all", 
submitTime, Long.MAX_VALUE);
+    String result = qCom.getAllPreparedQueries("testPreparedName", "all", 
String.valueOf(submitTime), null);
 
     assertEquals(result, "No prepared queries");
     final String qh = qCom.prepare(sql, "testPreparedName");
-    result = qCom.getAllPreparedQueries("testPreparedName", "all", submitTime, 
System.currentTimeMillis());
+    result = qCom.getAllPreparedQueries("testPreparedName", "all", 
String.valueOf(submitTime), "now");
     assertEquals(qh, result);
 
     result = qCom.getPreparedStatus(qh);
@@ -235,16 +235,16 @@ public class TestLensQueryCommands extends 
LensCliApplicationTest {
 
     log.debug("destroy result is " + result);
     assertEquals("Successfully destroyed " + qh, result);
-    result = qCom.getAllPreparedQueries("testPreparedName", "all", submitTime, 
Long.MAX_VALUE);
+    result = qCom.getAllPreparedQueries("testPreparedName", "all", 
String.valueOf(submitTime), null);
 
     assertEquals(result, "No prepared queries");
 
     final String qh2 = qCom.explainAndPrepare(sql, "testPrepQuery3");
     assertExplainOutput(qh2);
-    String handles = qCom.getAllPreparedQueries("testPrepQuery3", "all", -1, 
Long.MAX_VALUE);
+    String handles = qCom.getAllPreparedQueries("testPrepQuery3", "all", null, 
null);
     assertFalse(handles.contains("No prepared queries"), handles);
 
-    String handles2 = qCom.getAllPreparedQueries("testPrepQuery3", "all", -1, 
submitTime - 1);
+    String handles2 = qCom.getAllPreparedQueries("testPrepQuery3", "all", 
null, String.valueOf(submitTime - 1));
     assertFalse(handles2.contains(qh), handles2);
     result = qCom.destroyPreparedQuery(handles);
     assertEquals("Successfully destroyed " + handles, result);
@@ -320,7 +320,7 @@ public class TestLensQueryCommands extends 
LensCliApplicationTest {
     String qh = qCom.executeQuery(sql, true, "testQuery1");
     String user = qCom.getClient().getLensStatement(new 
QueryHandle(UUID.fromString(qh)))
         .getQuery().getSubmittedUser();
-    String result = qCom.getAllQueries("", "testQuery1", user, "", -1, 
Long.MAX_VALUE);
+    String result = qCom.getAllQueries("", "testQuery1", user, "", null, null);
     // this is because previous query has run two query handle will be there
     assertTrue(result.contains(qh), result);
     assertTrue(result.contains("Total number of queries"));
@@ -339,7 +339,7 @@ public class TestLensQueryCommands extends 
LensCliApplicationTest {
     }
 
     // Check that query name searching is 'ilike'
-    String result2 = qCom.getAllQueries("", "query", "all", "", -1, 
Long.MAX_VALUE);
+    String result2 = qCom.getAllQueries("", "query", "all", "", null, null);
     assertTrue(result2.contains(qh), result2);
     assertTrue(qCom.getStatus(qh).contains("Status: SUCCESSFUL"));
     String details = qCom.getDetails(qh);
@@ -350,10 +350,10 @@ public class TestLensQueryCommands extends 
LensCliApplicationTest {
 
     // Kill query is not tested as there is no deterministic way of killing a 
query
 
-    result = qCom.getAllQueries("SUCCESSFUL", "", "all", "", -1, 
Long.MAX_VALUE);
+    result = qCom.getAllQueries("SUCCESSFUL", "", "all", "", null, null);
     assertTrue(result.contains(qh), result);
 
-    result = qCom.getAllQueries("FAILED", "", "all", "", -1, Long.MAX_VALUE);
+    result = qCom.getAllQueries("FAILED", "", "all", "", null, null);
     if (!result.contains("No queries")) {
       // Make sure valid query handles are returned
       String[] handles = StringUtils.split(result, "\n");
@@ -367,30 +367,31 @@ public class TestLensQueryCommands extends 
LensCliApplicationTest {
     String queryName = qCom.getClient().getLensStatement(new 
QueryHandle(UUID.fromString(qh))).getQuery()
             .getQueryName();
     assertTrue("testQuery1".equalsIgnoreCase(queryName), queryName);
-    result = qCom.getAllQueries("", "", "", "", submitTime, 
System.currentTimeMillis());
+    result = qCom.getAllQueries("", "", "", "", String.valueOf(submitTime), 
"now");
     assertTrue(result.contains(qh), result);
 
-    result = qCom.getAllQueries("", "fooBar", "all", "", submitTime, 
System.currentTimeMillis());
+    result = qCom.getAllQueries("", "fooBar", "all", "", 
String.valueOf(submitTime), "now");
     assertTrue(result.contains("No queries"), result);
 
-    result = qCom.getAllQueries("SUCCESSFUL", "", "all", "", submitTime, 
System.currentTimeMillis());
+    result = qCom.getAllQueries("SUCCESSFUL", "", "all", "", 
String.valueOf(submitTime), "now");
     assertTrue(result.contains(qh));
 
-    result = qCom.getAllQueries("SUCCESSFUL", "", "all", "", submitTime - 
5000, submitTime - 1);
+    result = qCom.getAllQueries("SUCCESSFUL", "", "all", "", 
String.valueOf(submitTime - 5000),
+      String.valueOf(submitTime - 1));
     // should not give query since its not in the range
     assertFalse(result.contains(qh));
 
     // Filters on driver
-    result = qCom.getAllQueries("SUCCESSFUL", "", "all", "hive/hive1", 
submitTime,
-      System.currentTimeMillis());
+    result = qCom.getAllQueries("SUCCESSFUL", "", "all", "hive/hive1", 
String.valueOf(submitTime), "now");
     assertTrue(result.contains(qh));
 
-    result = qCom.getAllQueries("SUCCESSFUL", "", "all", "DummyDriver", 
submitTime, System.currentTimeMillis());
+    result = qCom.getAllQueries("SUCCESSFUL", "", "all", "DummyDriver", 
String.valueOf(submitTime), "now");
     assertFalse(result.contains(qh));
 
     try {
       // Should fail with bad request since fromDate > toDate
-      result = qCom.getAllQueries("SUCCESSFUL", "", "all", "", submitTime + 
5000, submitTime);
+      result = qCom.getAllQueries("SUCCESSFUL", "", "all", "", 
String.valueOf(submitTime + 5000),
+        String.valueOf(submitTime));
       fail("Call should have failed with BadRequestException, instead got " + 
result);
     } catch (BadRequestException exc) {
       // pass

http://git-wip-us.apache.org/repos/asf/lens/blob/f4da1f0b/lens-client/src/main/java/org/apache/lens/client/LensClient.java
----------------------------------------------------------------------
diff --git a/lens-client/src/main/java/org/apache/lens/client/LensClient.java 
b/lens-client/src/main/java/org/apache/lens/client/LensClient.java
index d3ec97d..9a76118 100644
--- a/lens-client/src/main/java/org/apache/lens/client/LensClient.java
+++ b/lens-client/src/main/java/org/apache/lens/client/LensClient.java
@@ -307,8 +307,8 @@ public class LensClient implements AutoCloseable {
     return getLensStatement(query).getResultSet();
   }
 
-  public List<QueryHandle> getQueries(String state, String queryName, String 
user, String driver, long fromDate,
-    long toDate) {
+  public List<QueryHandle> getQueries(String state, String queryName, String 
user, String driver, String fromDate,
+    String toDate) {
     return statement.getAllQueries(state, queryName, user, driver, fromDate, 
toDate);
   }
 
@@ -663,7 +663,8 @@ public class LensClient implements AutoCloseable {
     return statement.destroyPrepared(queryPrepareHandle);
   }
 
-  public List<QueryPrepareHandle> getPreparedQueries(String userName, String 
queryName, long fromDate, long toDate) {
+  public List<QueryPrepareHandle> getPreparedQueries(String userName, String 
queryName, String fromDate,
+    String toDate) {
     return statement.getAllPreparedQueries(userName, queryName, fromDate, 
toDate);
   }
 

http://git-wip-us.apache.org/repos/asf/lens/blob/f4da1f0b/lens-client/src/main/java/org/apache/lens/client/LensStatement.java
----------------------------------------------------------------------
diff --git 
a/lens-client/src/main/java/org/apache/lens/client/LensStatement.java 
b/lens-client/src/main/java/org/apache/lens/client/LensStatement.java
index 3cae717..64c24c7 100644
--- a/lens-client/src/main/java/org/apache/lens/client/LensStatement.java
+++ b/lens-client/src/main/java/org/apache/lens/client/LensStatement.java
@@ -459,15 +459,14 @@ public class LensStatement {
    * @param toDate    the to date
    * @return the all queries
    */
-  public List<QueryHandle> getAllQueries(String state, String queryName, 
String user, String driver, long fromDate,
-    long toDate) {
+  public List<QueryHandle> getAllQueries(String state, String queryName, 
String user, String driver, String fromDate,
+    String toDate) {
     WebTarget target = getQueryWebTarget(connection.buildClient());
-    List<QueryHandle> handles = target.queryParam("sessionid", 
connection.getSessionHandle())
+    return target.queryParam("sessionid", connection.getSessionHandle())
       .queryParam("state", state).queryParam("queryName", 
queryName).queryParam("user", user)
       .queryParam("driver", driver).queryParam("fromDate", 
fromDate).queryParam("toDate", toDate).request()
       .get(new GenericType<List<QueryHandle>>() {
       });
-    return handles;
   }
 
   /**
@@ -479,13 +478,13 @@ public class LensStatement {
    * @param toDate    the to date
    * @return the all prepared queries
    */
-  public List<QueryPrepareHandle> getAllPreparedQueries(String userName, 
String queryName, long fromDate, long toDate) {
+  public List<QueryPrepareHandle> getAllPreparedQueries(String userName, 
String queryName, String fromDate,
+    String toDate) {
     Client client = connection.buildClient();
     WebTarget target = getPreparedQueriesWebTarget(client);
-    List<QueryPrepareHandle> handles = target.queryParam("sessionid", 
connection.getSessionHandle())
+    return target.queryParam("sessionid", connection.getSessionHandle())
       .queryParam("user", userName).queryParam("queryName", 
queryName).queryParam("fromDate", fromDate)
       .queryParam("toDate", toDate).request().get(new 
GenericType<List<QueryPrepareHandle>>() {});
-    return handles;
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/lens/blob/f4da1f0b/lens-cube/src/main/java/org/apache/lens/cube/metadata/DateUtil.java
----------------------------------------------------------------------
diff --git 
a/lens-cube/src/main/java/org/apache/lens/cube/metadata/DateUtil.java 
b/lens-cube/src/main/java/org/apache/lens/cube/metadata/DateUtil.java
index b82cd95..7717081 100644
--- a/lens-cube/src/main/java/org/apache/lens/cube/metadata/DateUtil.java
+++ b/lens-cube/src/main/java/org/apache/lens/cube/metadata/DateUtil.java
@@ -56,6 +56,7 @@ public final class DateUtil {
   public static final String UNIT;
   public static final Date MAX_DATE = new Date(Long.MAX_VALUE);
   public static final Date MIN_DATE = new Date(Long.MIN_VALUE);
+
   static {
     StringBuilder sb = new StringBuilder();
     String sep = "";
@@ -85,6 +86,7 @@ public final class DateUtil {
     + WSPACE + ")?" + "(" + QUANTITY + ")" + OPTIONAL_WSPACE + "(" + UNIT + 
"))?" + "(s?)";
 
   public static final Pattern RELDATE_VALIDATOR = 
Pattern.compile(RELDATE_VALIDATOR_STR, Pattern.CASE_INSENSITIVE);
+  public static final Pattern TIMESTAMP_VALIDATOR = Pattern.compile("\\d{5,}");
 
   public static final String YEAR_FMT = "[0-9]{4}";
   public static final String MONTH_FMT = YEAR_FMT + "-[0-9]{2}";
@@ -131,7 +133,9 @@ public final class DateUtil {
   }
 
   public static Date resolveDate(String str, Date now) throws LensException {
-    if (RELDATE_VALIDATOR.matcher(str).matches()) {
+    if (TIMESTAMP_VALIDATOR.matcher(str).matches()) {
+      return new Date(Long.parseLong(str));
+    } else if (RELDATE_VALIDATOR.matcher(str).matches()) {
       return resolveRelativeDate(str, now);
     } else {
       return resolveAbsoluteDate(str);

http://git-wip-us.apache.org/repos/asf/lens/blob/f4da1f0b/lens-cube/src/main/java/org/apache/lens/cube/parse/BetweenTimeRangeWriter.java
----------------------------------------------------------------------
diff --git 
a/lens-cube/src/main/java/org/apache/lens/cube/parse/BetweenTimeRangeWriter.java
 
b/lens-cube/src/main/java/org/apache/lens/cube/parse/BetweenTimeRangeWriter.java
index bd19d4c..a5b26c4 100644
--- 
a/lens-cube/src/main/java/org/apache/lens/cube/parse/BetweenTimeRangeWriter.java
+++ 
b/lens-cube/src/main/java/org/apache/lens/cube/parse/BetweenTimeRangeWriter.java
@@ -18,7 +18,6 @@
  */
 package org.apache.lens.cube.parse;
 
-import java.util.Iterator;
 import java.util.Set;
 import java.util.TreeSet;
 
@@ -46,14 +45,12 @@ public class BetweenTimeRangeWriter implements 
TimeRangeWriter {
       partStr.append(partFilter);
       partStr.append(")");
     } else {
-      TreeSet<FactPartition> parts = new TreeSet<FactPartition>();
+      TreeSet<FactPartition> parts = new TreeSet<>();
       FactPartition first = null;
-      Iterator<FactPartition> it = rangeParts.iterator();
-      while (it.hasNext()) {
-        FactPartition part = it.next();
+      for (FactPartition part : rangeParts) {
         if (part.hasContainingPart()) {
           throw new 
LensException(LensCubeErrorCode.CANNOT_USE_TIMERANGE_WRITER.getLensErrorInfo(),
-              "Partition has containing part");
+            "Partition has containing part");
         }
         if (first == null) {
           first = part;

http://git-wip-us.apache.org/repos/asf/lens/blob/f4da1f0b/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestDateUtil.java
----------------------------------------------------------------------
diff --git 
a/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestDateUtil.java 
b/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestDateUtil.java
index 7e239f3..8b3b4ba 100644
--- a/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestDateUtil.java
+++ b/lens-cube/src/test/java/org/apache/lens/cube/metadata/TestDateUtil.java
@@ -294,4 +294,9 @@ public class TestDateUtil {
     assertEquals(relativeToAbsolute("now.day -2 day", now), 
DateUtil.ABSDATE_PARSER.get().format(nowDayMinus2Days));
     assertEquals(relativeToAbsolute("now.day -2 days", now), 
DateUtil.ABSDATE_PARSER.get().format(nowDayMinus2Days));
   }
+  @Test
+  public void testTimestamp() throws LensException {
+    Date now = new Date();
+    assertEquals(DateUtil.resolveDate(String.valueOf(now.getTime()+1), now), 
new Date(now.getTime()+1));
+  }
 }

http://git-wip-us.apache.org/repos/asf/lens/blob/f4da1f0b/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 87e128f..748f92f 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
@@ -34,6 +34,7 @@ import org.apache.lens.cube.metadata.FactPartition;
 import org.apache.lens.server.api.error.LensException;
 
 import org.testng.Assert;
+import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
 import lombok.extern.slf4j.Slf4j;
@@ -110,24 +111,21 @@ public abstract class TestTimeRangeWriter {
     }
 
   }
-
-  @Test
-  public void testConsecutiveDayParts() throws LensException {
-    Set<FactPartition> answeringParts = new LinkedHashSet<FactPartition>();
-    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));
-
+  @DataProvider
+  public Object[][] formatDataProvider() {
+    return new Object[][] {
+      {null, },
+      {DB_FORMAT, },
+    };
+  }
+  @Test(dataProvider = "formatDataProvider")
+  public void testConsecutiveDayParts(DateFormat format) throws LensException, 
InterruptedException {
+    Set<FactPartition> answeringParts = new LinkedHashSet<>();
+    answeringParts.add(new FactPartition("dt", getDateWithOffset(DAILY, -1), 
DAILY, null, format));
+    answeringParts.add(new FactPartition("dt", getDateWithOffset(DAILY, -2), 
DAILY, null, format));
+    answeringParts.add(new FactPartition("dt", getDateWithOffset(DAILY, 0), 
DAILY, null, format));
     String whereClause = getTimerangeWriter().getTimeRangeWhereClause(null, 
"test", answeringParts);
-    validateConsecutive(whereClause, null);
-
-    answeringParts = new LinkedHashSet<FactPartition>();
-    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);
+    validateConsecutive(whereClause, format);
   }
 
   @Test
@@ -137,7 +135,7 @@ public abstract class TestTimeRangeWriter {
     String whereClause = getTimerangeWriter().getTimeRangeWhereClause(null, 
"test", answeringParts);
     validateSingle(whereClause, null);
 
-    answeringParts = new LinkedHashSet<FactPartition>();
+    answeringParts = new LinkedHashSet<>();
     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/f4da1f0b/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryExecutionService.java
----------------------------------------------------------------------
diff --git 
a/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryExecutionService.java
 
b/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryExecutionService.java
index 4f4d4aa..575a236 100644
--- 
a/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryExecutionService.java
+++ 
b/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryExecutionService.java
@@ -227,7 +227,8 @@ public interface QueryExecutionService extends LensService, 
SessionValidator {
    * Returns all the queries in the specified state, for the given user and 
matching query name.
    *
    * @param sessionHandle the session handle
-   * @param state         return queries in this state. if null, all queries 
will be returned
+   * @param states        return queries in these state. if null, all queries 
will be returned. Multiple states can
+   *                      be supplied separated by comma
    * @param user          Get queries submitted by a specific user.
    *                      If this set to "all", queries of all users are 
returned
    * @param driver        Get queries submitted on a specific driver.
@@ -237,8 +238,8 @@ public interface QueryExecutionService extends LensService, 
SessionValidator {
    * @return List of query handles
    * @throws LensException the lens exception
    */
-  List<QueryHandle> getAllQueries(LensSessionHandle sessionHandle, String 
state, String user, String driver,
-    String queryName, long fromDate, long toDate) throws LensException;
+  List<QueryHandle> getAllQueries(LensSessionHandle sessionHandle, String 
states, String user, String driver,
+    String queryName, String fromDate, String toDate) throws LensException;
 
   /**
    * Returns all the prepared queries for the specified user. If no user is 
passed, queries of all users will be
@@ -255,7 +256,7 @@ public interface QueryExecutionService extends LensService, 
SessionValidator {
    * @throws LensException the lens exception
    */
   List<QueryPrepareHandle> getAllPreparedQueries(LensSessionHandle 
sessionHandle, String user, String queryName,
-    long fromDate, long toDate) throws LensException;
+    String fromDate, String toDate) throws LensException;
 
   /**
    * Destroy a prepared query.

http://git-wip-us.apache.org/repos/asf/lens/blob/f4da1f0b/lens-server/src/main/java/org/apache/lens/server/query/LensServerDAO.java
----------------------------------------------------------------------
diff --git 
a/lens-server/src/main/java/org/apache/lens/server/query/LensServerDAO.java 
b/lens-server/src/main/java/org/apache/lens/server/query/LensServerDAO.java
index 1d6125c..47159b5 100644
--- a/lens-server/src/main/java/org/apache/lens/server/query/LensServerDAO.java
+++ b/lens-server/src/main/java/org/apache/lens/server/query/LensServerDAO.java
@@ -27,6 +27,7 @@ import java.util.List;
 import javax.sql.DataSource;
 
 import org.apache.lens.api.query.QueryHandle;
+import org.apache.lens.api.query.QueryStatus;
 import org.apache.lens.server.api.error.LensException;
 import org.apache.lens.server.api.query.FinishedLensQuery;
 import org.apache.lens.server.util.UtilityMethods;
@@ -156,7 +157,7 @@ public class LensServerDAO {
   /**
    * Find finished queries.
    *
-   * @param state     the state
+   * @param states     the state
    * @param user      the user
    * @param driverName the driver's fully qualified Name
    * @param queryName the query name
@@ -165,43 +166,45 @@ public class LensServerDAO {
    * @return the list
    * @throws LensException the lens exception
    */
-  public List<QueryHandle> findFinishedQueries(String state, String user, 
String driverName, String queryName,
-    long fromDate, long toDate) throws LensException {
-    boolean addFilter = StringUtils.isNotBlank(state) || 
StringUtils.isNotBlank(user)
-      || StringUtils.isNotBlank(queryName);
+  public List<QueryHandle> findFinishedQueries(List<QueryStatus.Status> 
states, String user, String driverName,
+    String queryName, long fromDate, long toDate) throws LensException {
     StringBuilder builder = new StringBuilder("SELECT handle FROM 
finished_queries");
     List<Object> params = null;
-    if (addFilter) {
-      builder.append(" WHERE ");
-      List<String> filters = new ArrayList<String>(3);
-      params = new ArrayList<Object>(3);
-
-      if (StringUtils.isNotBlank(state)) {
-        filters.add("status=?");
-        params.add(state);
-      }
-
-      if (StringUtils.isNotBlank(user)) {
-        filters.add("submitter=?");
-        params.add(user);
+    builder.append(" WHERE ");
+    List<String> filters = new ArrayList<String>(3);
+    params = new ArrayList<Object>(3);
+
+    if (states != null && !states.isEmpty()) {
+      StringBuilder statusFilterBuilder = new StringBuilder("status in (");
+      String sep = "";
+      for(QueryStatus.Status status: states) {
+        statusFilterBuilder.append(sep).append("?");
+        sep = ", ";
+        params.add(status.toString());
       }
+      filters.add(statusFilterBuilder.append(")").toString());
+    }
 
-      if (StringUtils.isNotBlank(queryName)) {
-        filters.add("queryname like ?");
-        params.add("%" + queryName + "%");
-      }
+    if (StringUtils.isNotBlank(user)) {
+      filters.add("submitter=?");
+      params.add(user);
+    }
 
-      if (StringUtils.isNotBlank(driverName)) {
-        filters.add("lower(drivername)=?");
-        params.add(driverName.toLowerCase());
-      }
+    if (StringUtils.isNotBlank(queryName)) {
+      filters.add("queryname like ?");
+      params.add("%" + queryName + "%");
+    }
 
-      filters.add("submissiontime BETWEEN ? AND ?");
-      params.add(fromDate);
-      params.add(toDate);
-      builder.append(StringUtils.join(filters, " AND "));
+    if (StringUtils.isNotBlank(driverName)) {
+      filters.add("lower(drivername)=?");
+      params.add(driverName.toLowerCase());
     }
 
+    filters.add("submissiontime BETWEEN ? AND ?");
+    params.add(fromDate);
+    params.add(toDate);
+    builder.append(StringUtils.join(filters, " AND "));
+
     ResultSetHandler<List<QueryHandle>> resultSetHandler = new 
ResultSetHandler<List<QueryHandle>>() {
       @Override
       public List<QueryHandle> handle(ResultSet resultSet) throws SQLException 
{
@@ -221,11 +224,7 @@ public class LensServerDAO {
     QueryRunner runner = new QueryRunner(ds);
     String query = builder.toString();
     try {
-      if (addFilter) {
-        return runner.query(query, resultSetHandler, params.toArray());
-      } else {
-        return runner.query(query, resultSetHandler);
-      }
+      return runner.query(query, resultSetHandler, params.toArray());
     } catch (SQLException e) {
       throw new LensException(e);
     }

http://git-wip-us.apache.org/repos/asf/lens/blob/f4da1f0b/lens-server/src/main/java/org/apache/lens/server/query/QueryExecutionServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/lens-server/src/main/java/org/apache/lens/server/query/QueryExecutionServiceImpl.java
 
b/lens-server/src/main/java/org/apache/lens/server/query/QueryExecutionServiceImpl.java
index fddd3e4..f5ea3db 100644
--- 
a/lens-server/src/main/java/org/apache/lens/server/query/QueryExecutionServiceImpl.java
+++ 
b/lens-server/src/main/java/org/apache/lens/server/query/QueryExecutionServiceImpl.java
@@ -44,6 +44,7 @@ import org.apache.lens.api.Priority;
 import org.apache.lens.api.error.ErrorCollection;
 import org.apache.lens.api.query.*;
 import org.apache.lens.api.query.QueryStatus.Status;
+import org.apache.lens.cube.metadata.DateUtil;
 import org.apache.lens.driver.hive.HiveDriver;
 import org.apache.lens.server.BaseLensService;
 import org.apache.lens.server.LensServerConf;
@@ -92,7 +93,8 @@ import org.slf4j.LoggerFactory;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
-
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
 import lombok.*;
 import lombok.extern.slf4j.Slf4j;
 
@@ -2551,21 +2553,38 @@ public class QueryExecutionServiceImpl extends 
BaseLensService implements QueryE
    * java.lang.String, java.lang.String, java.lang.String, java.lang.String, 
long, long)
    */
   @Override
-  public List<QueryHandle> getAllQueries(LensSessionHandle sessionHandle, 
String state, String userName, String driver,
-    String queryName, long fromDate, long toDate) throws LensException {
-    validateTimeRange(fromDate, toDate);
+  public List<QueryHandle> getAllQueries(LensSessionHandle sessionHandle, 
String states, String userName, String driver,
+    String queryName, String fromDate, String toDate) throws LensException {
+    long fromTime = -1;
+    long toTime = Long.MAX_VALUE;
+    Date now = new Date();
+    if (fromDate != null) {
+      fromTime = DateUtil.resolveDate(fromDate, now).getTime();
+    }
+    if (toDate != null) {
+      toTime = DateUtil.resolveDate(toDate, now).getTime();
+    }
+    validateTimeRange(fromTime, toTime);
     userName = UtilityMethods.removeDomain(userName);
+    Set<Status> statuses;
     try {
       acquire(sessionHandle);
-      Status status = null;
       try {
-        status = StringUtils.isBlank(state) ? null : Status.valueOf(state);
+        if (StringUtils.isNotBlank(states)) {
+          statuses = Sets.newHashSet();
+          for(String state: states.split(",")) {
+            statuses.add(Status.valueOf(state.trim().toUpperCase()));
+          }
+        } else {
+          statuses = Sets.newHashSet(Status.values());
+        }
       } catch (IllegalArgumentException e) {
         throw new BadRequestException("Bad state argument passed, possible 
values are " + Status.values(), e);
       }
-      boolean filterByStatus = status != null;
-      queryName = queryName.toLowerCase();
       boolean filterByQueryName = StringUtils.isNotBlank(queryName);
+      if (filterByQueryName) {
+        queryName = queryName.toLowerCase();
+      }
 
       if (StringUtils.isBlank(userName)) {
         userName = getSession(sessionHandle).getLoggedInUser();
@@ -2578,28 +2597,42 @@ public class QueryExecutionServiceImpl extends 
BaseLensService implements QueryE
         QueryHandle q = itr.next();
         QueryContext context = allQueries.get(q);
         long querySubmitTime = context.getSubmissionTime();
-        if ((filterByStatus && status != context.getStatus().getStatus())
+        if ((!statuses.contains(context.getStatus().getStatus()))
           || (filterByQueryName && 
!context.getQueryName().toLowerCase().contains(queryName))
           || (filterByDriver && 
!context.getSelectedDriver().getFullyQualifiedName().equalsIgnoreCase(driver))
           || (!"all".equalsIgnoreCase(userName) && 
!userName.equalsIgnoreCase(context.getSubmittedUser()))
-          || (!(fromDate <= querySubmitTime && querySubmitTime <= toDate))) {
+          || (!(fromTime <= querySubmitTime && querySubmitTime < toTime))) {
           itr.remove();
         }
       }
 
       // Unless user wants to get queries in 'non finished' state, get 
finished queries from DB as well
-      if (status == null || status == CANCELED || status == SUCCESSFUL || 
status == FAILED) {
+      List<Status> finishedStatusesQueried = null;
+      if (statuses.size() != Status.values().length) {
+        finishedStatusesQueried = Lists.newArrayList();
+        for (Status status: statuses) {
+          switch(status) {
+          case CANCELED:
+          case SUCCESSFUL:
+          case FAILED:
+            finishedStatusesQueried.add(status);
+            break;
+          default:
+            break;
+          }
+        }
+      }
+      if (finishedStatusesQueried == null || 
!finishedStatusesQueried.isEmpty()) {
         if ("all".equalsIgnoreCase(userName)) {
           userName = null;
         }
-        List<QueryHandle> persistedQueries = 
lensServerDao.findFinishedQueries(state, userName, driver, queryName,
-          fromDate, toDate);
+        List<QueryHandle> persistedQueries = 
lensServerDao.findFinishedQueries(finishedStatusesQueried, userName,
+          driver, queryName, fromTime, toTime);
         if (persistedQueries != null && !persistedQueries.isEmpty()) {
           log.info("Adding persisted queries {}", persistedQueries.size());
           all.addAll(persistedQueries);
         }
       }
-
       return all;
     } finally {
       release(sessionHandle);
@@ -2615,8 +2648,17 @@ public class QueryExecutionServiceImpl extends 
BaseLensService implements QueryE
    */
   @Override
   public List<QueryPrepareHandle> getAllPreparedQueries(LensSessionHandle 
sessionHandle, String user, String queryName,
-    long fromDate, long toDate) throws LensException {
-    validateTimeRange(fromDate, toDate);
+    String fromDate, String toDate) throws LensException {
+    long fromTime = -1;
+    long toTime = Long.MAX_VALUE;
+    Date now = new Date();
+    if (fromDate != null) {
+      fromTime = DateUtil.resolveDate(fromDate, now).getTime();
+    }
+    if (toDate != null) {
+      toTime = DateUtil.resolveDate(toDate, now).getTime();
+    }
+    validateTimeRange(fromTime, toTime);
     user = UtilityMethods.removeDomain(user);
     try {
       acquire(sessionHandle);
@@ -2640,7 +2682,7 @@ public class QueryExecutionServiceImpl extends 
BaseLensService implements QueryE
           }
         }
         long queryPrepTime = preparedQueryContext.getPreparedTime().getTime();
-        if (fromDate <= queryPrepTime && queryPrepTime <= toDate) {
+        if (fromTime <= queryPrepTime && queryPrepTime < toTime) {
           continue;
         }
         itr.remove();
@@ -2808,7 +2850,7 @@ public class QueryExecutionServiceImpl extends 
BaseLensService implements QueryE
           // we will create an instance and read its state still.
           try {
             Class<? extends LensDriver> driverCls = (Class<? extends 
LensDriver>) Class.forName(driverClsName);
-            driver = (LensDriver) driverCls.newInstance();
+            driver = driverCls.newInstance();
             String[] driverTypeAndName = 
StringUtils.split(driverQualifiedName, '/');
             driver.configure(conf, driverTypeAndName[0], driverTypeAndName[1]);
           } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/lens/blob/f4da1f0b/lens-server/src/main/java/org/apache/lens/server/query/QueryServiceResource.java
----------------------------------------------------------------------
diff --git 
a/lens-server/src/main/java/org/apache/lens/server/query/QueryServiceResource.java
 
b/lens-server/src/main/java/org/apache/lens/server/query/QueryServiceResource.java
index 803bbe3..7d8d300 100644
--- 
a/lens-server/src/main/java/org/apache/lens/server/query/QueryServiceResource.java
+++ 
b/lens-server/src/main/java/org/apache/lens/server/query/QueryServiceResource.java
@@ -113,30 +113,30 @@ public class QueryServiceResource {
    * parameter to false.
    *
    * @param sessionid The sessionid in which queryName is working
-   * @param state     If any state is passed, all the queries in that state 
will be returned, otherwise all queries will
-   *                  be returned. Possible states are {link 
QueryStatus.Status#values()}
+   * @param states    If any state is passed, all the queries in that state 
will be returned, otherwise all queries will
+   *                  be returned. Possible states are {link 
QueryStatus.Status#values()}. Multiple states can be
+   *                  passed as comma separated string
    * @param queryName If any queryName is passed, all the queries containing 
the queryName will be returned, otherwise
    *                  all the queries will be returned
    * @param user      Returns queries submitted by this user. If set to "all", 
returns queries of all users. By default,
    *                  returns queries of the current user.
    * @param driver    Get queries submitted on a specific driver.
    * @param fromDate  from date to search queries in a time range, the range 
is inclusive(submitTime &gt;= fromDate)
-   * @param toDate    to date to search queries in a time range, the range is 
inclusive(toDate &gt;= submitTime)
+   *                  from date can be a long value indicating timestamp, or 
it can be in a format acceptable in
+   *                  time_range_in function. Notably: 
yyyy[-MM[-dd[-HH-[mm...]]]], or now based relative format
+   * @param toDate    to date to search queries in a time range, the range is 
inclusive(toDate &gt; submitTime)
+   *                  possible formats it can take is same as fromDate
    * @return List of {@link QueryHandle} objects
    */
   @GET
   @Path("queries")
   @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, 
MediaType.TEXT_PLAIN})
   public List<QueryHandle> getAllQueries(@QueryParam("sessionid") 
LensSessionHandle sessionid,
-    @DefaultValue("") @QueryParam("state") String state, @DefaultValue("") 
@QueryParam("queryName") String queryName,
-    @DefaultValue("") @QueryParam("user") String user, @DefaultValue("") 
@QueryParam("driver") String driver,
-    @DefaultValue("-1") @QueryParam("fromDate") long fromDate, 
@DefaultValue("-1") @QueryParam("toDate") long toDate)
+    @QueryParam("state") String states, @QueryParam("queryName") String 
queryName, @QueryParam("user") String user,
+    @QueryParam("driver") String driver, @QueryParam("fromDate") String 
fromDate, @QueryParam("toDate") String toDate)
     throws LensException {
     validateSessionId(sessionid);
-    if (toDate == -1L) {
-      toDate = Long.MAX_VALUE;
-    }
-    return queryServer.getAllQueries(sessionid, state, user, driver, 
queryName, fromDate, toDate);
+    return queryServer.getAllQueries(sessionid, states, user, driver, 
queryName, fromDate, toDate);
   }
 
   /**
@@ -228,15 +228,14 @@ public class QueryServiceResource {
   public APIResult cancelAllQueries(@QueryParam("sessionid") LensSessionHandle 
sessionid,
     @DefaultValue("") @QueryParam("state") String state, @DefaultValue("") 
@QueryParam("user") String user,
     @DefaultValue("") @QueryParam("queryName") String queryName, 
@DefaultValue("") @QueryParam("driver") String driver,
-    @DefaultValue("-1") @QueryParam("fromDate") long fromDate, 
@DefaultValue("-1") @QueryParam("toDate") long toDate)
+    @QueryParam("fromDate") String fromDate, @QueryParam("toDate") String 
toDate)
     throws LensException {
     validateSessionId(sessionid);
     int numCancelled = 0;
     List<QueryHandle> handles = null;
     boolean failed = false;
     try {
-      handles = getAllQueries(sessionid, state, queryName, user, driver, 
fromDate,
-        toDate == -1L ? Long.MAX_VALUE : toDate);
+      handles = getAllQueries(sessionid, state, queryName, user, driver, 
fromDate, toDate);
       for (QueryHandle handle : handles) {
         if (queryServer.cancelQuery(sessionid, handle)) {
           numCancelled++;
@@ -276,12 +275,8 @@ public class QueryServiceResource {
   @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, 
MediaType.TEXT_PLAIN})
   public List<QueryPrepareHandle> 
getAllPreparedQueries(@QueryParam("sessionid") LensSessionHandle sessionid,
     @DefaultValue("") @QueryParam("user") String user, @DefaultValue("") 
@QueryParam("queryName") String queryName,
-    @DefaultValue("-1") @QueryParam("fromDate") long fromDate, 
@DefaultValue("-1") @QueryParam("toDate") long toDate)
-    throws LensException {
+    @QueryParam("fromDate") String fromDate, @QueryParam("toDate") String 
toDate) throws LensException {
     validateSessionId(sessionid);
-    if (toDate == -1L) {
-      toDate = Long.MAX_VALUE;
-    }
     return queryServer.getAllPreparedQueries(sessionid, user, queryName, 
fromDate, toDate);
   }
 
@@ -347,14 +342,13 @@ public class QueryServiceResource {
   @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, 
MediaType.TEXT_PLAIN })
   public APIResult destroyPreparedQueries(@QueryParam("sessionid") 
LensSessionHandle sessionid,
       @DefaultValue("") @QueryParam("user") String user, @DefaultValue("") 
@QueryParam("queryName") String queryName,
-      @DefaultValue("-1") @QueryParam("fromDate") long fromDate,
-      @DefaultValue("-1") @QueryParam("toDate") long toDate) throws 
LensException {
+      @QueryParam("fromDate") String fromDate, @QueryParam("toDate") String 
toDate) throws LensException {
     validateSessionId(sessionid);
     int numDestroyed = 0;
     boolean failed = false;
     List<QueryPrepareHandle> handles = null;
     try {
-      handles = getAllPreparedQueries(sessionid, user, queryName, fromDate, 
toDate == -1L ? Long.MAX_VALUE : toDate);
+      handles = getAllPreparedQueries(sessionid, user, queryName, fromDate, 
toDate);
       for (QueryPrepareHandle prepared : handles) {
         if (queryServer.destroyPrepared(sessionid, prepared)) {
           numDestroyed++;

http://git-wip-us.apache.org/repos/asf/lens/blob/f4da1f0b/lens-server/src/main/java/org/apache/lens/server/util/UtilityMethods.java
----------------------------------------------------------------------
diff --git 
a/lens-server/src/main/java/org/apache/lens/server/util/UtilityMethods.java 
b/lens-server/src/main/java/org/apache/lens/server/util/UtilityMethods.java
index 42d9fe0..2842ec3 100644
--- a/lens-server/src/main/java/org/apache/lens/server/util/UtilityMethods.java
+++ b/lens-server/src/main/java/org/apache/lens/server/util/UtilityMethods.java
@@ -77,7 +77,7 @@ public final class UtilityMethods {
    * @return the string
    */
   public static String removeDomain(String username) {
-    if (username.contains("@")) {
+    if (username != null && username.contains("@")) {
       username = username.substring(0, username.indexOf("@"));
     }
     return username;

http://git-wip-us.apache.org/repos/asf/lens/blob/f4da1f0b/lens-server/src/test/java/org/apache/lens/server/query/TestLensDAO.java
----------------------------------------------------------------------
diff --git 
a/lens-server/src/test/java/org/apache/lens/server/query/TestLensDAO.java 
b/lens-server/src/test/java/org/apache/lens/server/query/TestLensDAO.java
index 7679a06..74d9a1f 100644
--- a/lens-server/src/test/java/org/apache/lens/server/query/TestLensDAO.java
+++ b/lens-server/src/test/java/org/apache/lens/server/query/TestLensDAO.java
@@ -44,6 +44,7 @@ import org.codehaus.jackson.map.ObjectMapper;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
+import com.google.common.collect.Lists;
 import lombok.extern.slf4j.Slf4j;
 
 /**
@@ -140,9 +141,9 @@ public class TestLensDAO {
     }
 
     System.out.println("@@ State = " + 
queryContext.getStatus().getStatus().name());
-    List<QueryHandle> daoTestQueryHandles = 
service.lensServerDao.findFinishedQueries(finishedLensQuery.getStatus(),
-        queryContext.getSubmittedUser(), 
queryContext.getSelectedDriver().getFullyQualifiedName(), "daotestquery1", -1L,
-      Long.MAX_VALUE);
+    List<QueryHandle> daoTestQueryHandles = 
service.lensServerDao.findFinishedQueries(
+      
Lists.newArrayList(QueryStatus.Status.valueOf(finishedLensQuery.getStatus())), 
queryContext.getSubmittedUser(),
+      queryContext.getSelectedDriver().getFullyQualifiedName(), 
"daotestquery1", -1L, Long.MAX_VALUE);
     Assert.assertEquals(daoTestQueryHandles.size(), 1);
     Assert.assertEquals(daoTestQueryHandles.get(0).getHandleId().toString(), 
finishedHandle);
     service.closeSession(session);

http://git-wip-us.apache.org/repos/asf/lens/blob/f4da1f0b/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java
----------------------------------------------------------------------
diff --git 
a/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java 
b/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java
index e8aa223..9f40a01 100644
--- 
a/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java
+++ 
b/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java
@@ -338,19 +338,24 @@ public class TestQueryService extends LensJerseyTest {
     long finishedQueries = metricsSvc.getFinishedQueries();
 
     int noOfQueriesBeforeExecution = queryService.allQueries.size();
+    long before = System.currentTimeMillis();
     QueryHandle theHandle = executeAndGetHandle(target(), 
Optional.of(lensSessionId), Optional.of("select ID from "
       + TEST_TABLE), Optional.<LensConf>absent(), mt);
 
-    // Get all queries
-    // XML
-    List<QueryHandle> allQueriesXML = target.queryParam("sessionid", 
lensSessionId).request(MediaType.APPLICATION_XML)
-      .get(new GenericType<List<QueryHandle>>() {});
-    assertTrue(allQueriesXML.size() >= 1);
-
     List<QueryHandle> allQueries = target.queryParam("sessionid", 
lensSessionId).request(mt)
       .get(new GenericType<List<QueryHandle>>() {});
     assertTrue(allQueries.size() >= 1);
     assertTrue(allQueries.contains(theHandle));
+    // time filter
+    allQueries = target.queryParam("sessionid", 
lensSessionId).queryParam("fromDate", before)
+      .queryParam("toDate", "now").request(mt).get(new 
GenericType<List<QueryHandle>>() {});
+    assertEquals(allQueries.size(), 1);
+    assertTrue(allQueries.contains(theHandle));
+
+    // status filter
+    allQueries = target.queryParam("sessionid", 
lensSessionId).queryParam("state", "SUCCESSFUL, CANCELED")
+      .request(mt).get(new GenericType<List<QueryHandle>>() {});
+    assertTrue(allQueries.size() >= 1);
 
     String queryXML = 
target.path(theHandle.toString()).queryParam("sessionid", lensSessionId)
       .request(MediaType.APPLICATION_XML).get(String.class);

Reply via email to