Repository: lens Updated Branches: refs/heads/master 22e202208 -> 0e4c18cb9
LENS-882: Provide option from CLI to list queries by driver Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/0e4c18cb Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/0e4c18cb Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/0e4c18cb Branch: refs/heads/master Commit: 0e4c18cb917015b469ca43d30d7e2196d8f64789 Parents: 22e2022 Author: Deepak Barr <deepak.b...@gmail.com> Authored: Thu Dec 10 12:16:11 2015 +0530 Committer: Rajat Khandelwal <rajatgupt...@gmail.com> Committed: Thu Dec 10 12:16:11 2015 +0530 ---------------------------------------------------------------------- .../lens/cli/commands/LensQueryCommands.java | 4 ++- .../apache/lens/cli/TestLensQueryCommands.java | 26 +++++++++++++------- .../java/org/apache/lens/client/LensClient.java | 5 ++-- .../org/apache/lens/client/LensStatement.java | 6 +++-- src/site/apt/user/cli.apt | 2 +- 5 files changed, 28 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lens/blob/0e4c18cb/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 fe9b84d..e3c08ff 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 @@ -218,6 +218,7 @@ public class LensQueryCommands extends BaseLensCommand { * @param state the state * @param queryName the query name * @param user the user + * @param driver the driver name * @param fromDate the from date * @param toDate the to date * @return the all queries @@ -229,11 +230,12 @@ public class LensQueryCommands extends BaseLensCommand { @CliOption(key = {"state"}, mandatory = false, help = "<query-status>") String state, @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) { - List<QueryHandle> handles = getClient().getQueries(state, queryName, user, fromDate, 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: " + handles.size()); http://git-wip-us.apache.org/repos/asf/lens/blob/0e4c18cb/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 48b3ebb..6ebfff7 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 @@ -230,7 +230,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, "", -1, Long.MAX_VALUE); // 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")); @@ -249,7 +249,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", "", -1, Long.MAX_VALUE); assertTrue(result2.contains(qh), result2); assertTrue(qCom.getStatus(qh).contains("Status : SUCCESSFUL")); @@ -265,10 +265,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", "", -1, Long.MAX_VALUE); assertTrue(result.contains(qh), result); - result = qCom.getAllQueries("FAILED", "", "all", -1, Long.MAX_VALUE); + result = qCom.getAllQueries("FAILED", "", "all", "", -1, Long.MAX_VALUE); if (!result.contains("No queries")) { // Make sure valid query handles are returned String[] handles = StringUtils.split(result, "\n"); @@ -282,22 +282,30 @@ 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("", "", "", "", submitTime, System.currentTimeMillis()); assertTrue(result.contains(qh), result); - result = qCom.getAllQueries("", "fooBar", "all", submitTime, System.currentTimeMillis()); + result = qCom.getAllQueries("", "fooBar", "all", "", submitTime, System.currentTimeMillis()); assertTrue(result.contains("No queries"), result); - result = qCom.getAllQueries("SUCCESSFUL", "", "all", submitTime, System.currentTimeMillis()); + result = qCom.getAllQueries("SUCCESSFUL", "", "all", "", submitTime, System.currentTimeMillis()); assertTrue(result.contains(qh)); - result = qCom.getAllQueries("SUCCESSFUL", "", "all", submitTime - 5000, submitTime - 1); + result = qCom.getAllQueries("SUCCESSFUL", "", "all", "", submitTime - 5000, 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()); + assertTrue(result.contains(qh)); + + result = qCom.getAllQueries("SUCCESSFUL", "", "all", "DummyDriver", submitTime, System.currentTimeMillis()); + 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", "", submitTime + 5000, 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/0e4c18cb/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 5fd04c4..8f197e4 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 @@ -226,8 +226,9 @@ public class LensClient { return getLensStatement(query).getResultSet(); } - public List<QueryHandle> getQueries(String state, String queryName, String user, long fromDate, long toDate) { - return new LensStatement(connection).getAllQueries(state, queryName, user, fromDate, toDate); + public List<QueryHandle> getQueries(String state, String queryName, String user, String driver, long fromDate, + long toDate) { + return new LensStatement(connection).getAllQueries(state, queryName, user, driver, fromDate, toDate); } private void connectToLensServer() { http://git-wip-us.apache.org/repos/asf/lens/blob/0e4c18cb/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 40e6d76..71caa48 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 @@ -382,15 +382,17 @@ public class LensStatement { * @param state the state * @param queryName the query name * @param user the user + * @param driver the driver name * @param fromDate the from date * @param toDate the to date * @return the all queries */ - public List<QueryHandle> getAllQueries(String state, String queryName, String user, long fromDate, long toDate) { + public List<QueryHandle> getAllQueries(String state, String queryName, String user, String driver, long fromDate, + long toDate) { WebTarget target = getQueryWebTarget(connection.buildClient()); List<QueryHandle> handles = target.queryParam("sessionid", connection.getSessionHandle()) .queryParam("state", state).queryParam("queryName", queryName).queryParam("user", user) - .queryParam("fromDate", fromDate).queryParam("toDate", toDate).request() + .queryParam("driver", driver).queryParam("fromDate", fromDate).queryParam("toDate", toDate).request() .get(new GenericType<List<QueryHandle>>() { }); return handles; http://git-wip-us.apache.org/repos/asf/lens/blob/0e4c18cb/src/site/apt/user/cli.apt ---------------------------------------------------------------------- diff --git a/src/site/apt/user/cli.apt b/src/site/apt/user/cli.apt index c266c6d..3db53c4 100644 --- a/src/site/apt/user/cli.apt +++ b/src/site/apt/user/cli.apt @@ -355,7 +355,7 @@ User CLI Commands *--+--+ |query kill [--query_handle] \<query_handle\>|Kill query with handle <<<query_handle>>>| *--+--+ -|query list [--state \<query-status\>] [--name \<query-name\>] [--user \<user-who-submitted-query\>] [--fromDate \<submission-time-is-after\>] [--toDate \<submission-time-is-before\>]|Get all queries. Various filter options can be provided(optionally), as can be seen from the command syntax| +|query list [--state \<query-status\>] [--name \<query-name\>] [--user \<user-who-submitted-query\>] [--driver \<driver-where-query-was-executed\>] [--fromDate \<submission-time-is-after\>] [--toDate \<submission-time-is-before\>]|Get all queries. Various filter options can be provided(optionally), as can be seen from the command syntax| *--+--+ |query results [--query_handle] \<query_handle\> [--save_location \<save_location\>] [--async \<async\>]|get results of query with query handle <<<query_handle>>>. If async is false then wait till the query execution is completed, it's by default true. Can optionally save the results to a file by providing <<<save_location>>>.| *--+--+