You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lens.apache.org by pr...@apache.org on 2017/02/28 12:48:22 UTC
[4/8] lens git commit: LENS-1389: Back Merge with master and fix
lens-cube tests
http://git-wip-us.apache.org/repos/asf/lens/blob/2aaf6e0a/lens-regression/src/test/java/org/apache/lens/regression/client/ITKillQueryTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/client/ITKillQueryTests.java b/lens-regression/src/test/java/org/apache/lens/regression/client/ITKillQueryTests.java
new file mode 100644
index 0000000..ecc0c6b
--- /dev/null
+++ b/lens-regression/src/test/java/org/apache/lens/regression/client/ITKillQueryTests.java
@@ -0,0 +1,361 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.lens.regression.client;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Method;
+
+import javax.ws.rs.client.WebTarget;
+
+import javax.xml.bind.JAXBException;
+
+import org.apache.lens.api.query.*;
+import org.apache.lens.regression.core.constants.QueryInventory;
+import org.apache.lens.regression.core.helpers.*;
+import org.apache.lens.regression.core.testHelper.BaseTestClass;
+import org.apache.lens.server.api.error.LensException;
+
+import org.apache.log4j.Logger;
+
+import org.testng.Assert;
+import org.testng.annotations.*;
+
+
+public class ITKillQueryTests extends BaseTestClass {
+
+ WebTarget servLens;
+ private String sessionHandleString;
+
+ private final String hdfsJarPath = lens.getServerHdfsUrl() + "/tmp";
+ private final String localJarPath = new File("").getAbsolutePath() + "/lens-regression/target/testjars/";
+ private final String hiveUdfJar = "hiveudftest.jar";
+ private final String serverResourcePath = "/tmp/regression/resources";
+ String sleepQuery = QueryInventory.getSleepQuery("5");
+
+ private static Logger logger = Logger.getLogger(ITKillQueryTests.class);
+
+ @BeforeClass(alwaysRun = true)
+ public void initialize() throws IOException, JAXBException, LensException, IllegalAccessException,
+ InstantiationException {
+ servLens = ServiceManagerHelper.init();
+ logger.info("Creating a new Session");
+ sessionHandleString = sHelper.openSession(lens.getCurrentDB());
+
+ //TODO : Enable when udf registration per driver is fixed
+/* HadoopUtil.uploadJars(localJarPath + "/" + hiveUdfJar, hdfsJarPath);
+ logger.info("Adding jar for making query to run for longer period of time");
+ sHelper.addResourcesJar(hdfsJarPath + "/" + hiveUdfJar);
+ QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.SLEEP_FUNCTION).getData();*/
+ }
+
+ @BeforeMethod(alwaysRun = true)
+ public void setUp(Method method) throws Exception {
+ logger.info("Test Name: " + method.getName());
+ }
+
+
+ @AfterClass(alwaysRun = true)
+ public void closeSession() throws Exception {
+ logger.info("Closing Session");
+ sHelper.closeSession();
+ }
+
+
+ @Test(enabled = true)
+ public void killQueryByHandle() throws Exception {
+
+ QueryHandle qH = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
+ logger.info("QUERY HANDLE : " + qH);
+
+ QueryStatus queryStatus = qHelper.waitForQueryToRun(qH);
+ Assert.assertEquals(queryStatus.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
+
+ qHelper.killQueryByQueryHandle(qH);
+
+ queryStatus = qHelper.getQueryStatus(qH);
+ Assert.assertEquals(queryStatus.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
+ }
+
+
+ @Test(enabled = true)
+ public void killQueryByUser() throws Exception {
+
+ String diffUser = "diff";
+ String diffPass = "diff";
+
+ String newSessionHandleSring = sHelper.openSession(diffUser, diffPass, lens.getCurrentDB());
+
+ logger.info("Adding jar for making query to run for longer period of time");
+ sHelper.addResourcesJar(hdfsJarPath + "/" + hiveUdfJar, newSessionHandleSring);
+
+ QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
+ logger.info("1st QUERY HANDLE : " + queryHandle1);
+
+ QueryHandle queryHandle2 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
+ logger.info("2nd QUERY HANDLE : " + queryHandle2);
+
+ QueryHandle queryHandle3 = (QueryHandle) qHelper.executeQuery(sleepQuery, null,
+ newSessionHandleSring).getData();
+ logger.info("3rd QUERY HANDLE : " + queryHandle3);
+
+ QueryStatus queryStatus1 = qHelper.waitForQueryToRun(queryHandle1);
+ QueryStatus queryStatus2 = qHelper.waitForQueryToRun(queryHandle2);
+ QueryStatus queryStatus3 = qHelper.waitForQueryToRun(queryHandle3, newSessionHandleSring);
+
+ Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
+ Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
+ Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
+
+ Thread.sleep(1000);
+
+ qHelper.killQuery(null, null, lens.getUserName());
+ Thread.sleep(2000);
+ queryStatus1 = qHelper.getQueryStatus(queryHandle1);
+ queryStatus2 = qHelper.getQueryStatus(queryHandle2);
+ queryStatus3 = qHelper.getQueryStatus(queryHandle3);
+
+ Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
+ Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
+ Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
+
+ qHelper.killQuery(null, null, diffUser);
+
+ queryStatus3 = qHelper.getQueryStatus(queryHandle3);
+ Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
+
+ }
+
+ @Test(enabled = true)
+ public void killQueryOfAllUser() throws Exception {
+
+ String diffUser = "diff";
+ String diffPass = "diff";
+ String newSessionHandleSring = sHelper.openSession(diffUser, diffPass, lens.getCurrentDB());
+ sHelper.addResourcesJar(hdfsJarPath + "/" + hiveUdfJar, newSessionHandleSring);
+
+ QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
+ QueryHandle queryHandle2 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
+ QueryHandle queryHandle3 = (QueryHandle) qHelper.executeQuery(sleepQuery, null,
+ newSessionHandleSring).getData();
+
+ QueryStatus queryStatus1 = qHelper.waitForQueryToRun(queryHandle1);
+ QueryStatus queryStatus2 = qHelper.waitForQueryToRun(queryHandle2);
+ QueryStatus queryStatus3 = qHelper.waitForQueryToRun(queryHandle3, newSessionHandleSring);
+
+ Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
+ Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
+ Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
+
+ qHelper.killQuery(null, null, "all");
+
+ queryStatus1 = qHelper.getQueryStatus(queryHandle1);
+ queryStatus2 = qHelper.getQueryStatus(queryHandle2);
+ queryStatus3 = qHelper.getQueryStatus(queryHandle3);
+
+ Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
+ Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
+ Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
+ }
+
+
+ @Test(enabled = true)
+ public void killAllQueryOfUser() throws Exception {
+
+ QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
+ QueryHandle queryHandle2 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
+
+ QueryStatus queryStatus1 = qHelper.waitForQueryToRun(queryHandle1);
+ QueryStatus queryStatus2 = qHelper.waitForQueryToRun(queryHandle2);
+
+ Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
+ Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
+
+ qHelper.killQuery();
+
+ queryStatus1 = qHelper.getQueryStatus(queryHandle1);
+ queryStatus2 = qHelper.getQueryStatus(queryHandle2);
+
+ Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
+ Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
+ }
+
+
+ @Test(enabled = true)
+ public void killQueryByState() throws Exception {
+
+ QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
+ QueryHandle queryHandle2 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
+
+ QueryStatus queryStatus1 = qHelper.waitForQueryToRun(queryHandle1);
+ QueryStatus queryStatus2 = qHelper.waitForQueryToRun(queryHandle2);
+
+ Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
+ Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
+
+ //kill Running queries
+ qHelper.killQuery(null, "RUNNING");
+
+ queryStatus1 = qHelper.getQueryStatus(queryHandle1);
+ queryStatus2 = qHelper.getQueryStatus(queryHandle2);
+
+ Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
+ Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
+
+ //kill Canceled query
+ qHelper.killQuery(null, "CANCELED");
+
+ queryStatus1 = qHelper.getQueryStatus(queryHandle1);
+ queryStatus2 = qHelper.getQueryStatus(queryHandle2);
+
+ Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
+ Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
+
+ //kill successful query
+ QueryHandle queryHandle3 = (QueryHandle) qHelper.executeQuery(QueryInventory.QUERY).getData();
+ LensQuery lensQuery = qHelper.waitForCompletion(queryHandle3);
+ Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
+ qHelper.killQuery(null, "SUCCESSFUL");
+ QueryStatus queryStatus3 = qHelper.getQueryStatus(queryHandle3);
+ Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.SUCCESSFUL);
+ }
+
+ //TODO: enable when the bug is fixed.
+
+ /* Currently doing kill query by queryName "query" will kill all the query with queryName as "*query*"
+ * Raised a JIRA for same
+ * When its Fixed Revisit this function */
+
+ @Test(enabled = false)
+ public void killQueryByQueryName() throws Exception {
+
+ String queryName1 = "queryNameFirst";
+ String queryName2 = "queryNameSecond";
+ String queryName3 = "Name";
+
+ QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(sleepQuery, queryName1).getData();
+ logger.info("1st QUERY HANDLE : " + queryHandle1);
+
+ QueryHandle queryHandle2 = (QueryHandle) qHelper.executeQuery(sleepQuery, queryName2).getData();
+ logger.info("2nd QUERY HANDLE : " + queryHandle2);
+
+ QueryHandle queryHandle3 = (QueryHandle) qHelper.executeQuery(sleepQuery, queryName3).getData();
+ logger.info("3rd QUERY HANDLE : " + queryHandle3);
+
+ QueryStatus queryStatus1 = qHelper.waitForQueryToRun(queryHandle1);
+ QueryStatus queryStatus2 = qHelper.waitForQueryToRun(queryHandle2);
+ QueryStatus queryStatus3 = qHelper.waitForQueryToRun(queryHandle3);
+
+ Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
+ Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
+ Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
+
+ qHelper.killQuery(queryName3);
+
+ queryStatus1 = qHelper.getQueryStatus(queryHandle1);
+ queryStatus2 = qHelper.getQueryStatus(queryHandle2);
+ queryStatus3 = qHelper.getQueryStatus(queryHandle3);
+
+ Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
+ Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
+ Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Cancelled");
+
+ qHelper.killQuery(queryName1);
+
+ queryStatus1 = qHelper.getQueryStatus(queryHandle1);
+ queryStatus2 = qHelper.getQueryStatus(queryHandle2);
+
+ Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.CANCELED, "Query is Not CANCELED");
+ Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
+
+ qHelper.killQuery(queryName2);
+ queryStatus2 = qHelper.getQueryStatus(queryHandle2);
+
+ Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.CANCELED, "Query is Not CANCELED");
+ }
+
+ @Test(enabled = true)
+ public void killQueryByTimeRange() throws Exception {
+
+ String startTime1 = String.valueOf(System.currentTimeMillis());
+ logger.info("Start Time of 1st Query : " + startTime1);
+ Thread.sleep(1000);
+ QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
+ Thread.sleep(1000);
+ String endTime1 = String.valueOf(System.currentTimeMillis());
+ logger.info("End Time of 1st Query : " + endTime1);
+
+ Thread.sleep(1000);
+
+ String startTime2 = String.valueOf(System.currentTimeMillis());
+ logger.info("Start Time of 2nd Query : " + startTime2);
+ Thread.sleep(1000);
+ QueryHandle queryHandle2 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
+ Thread.sleep(1000);
+ String endTime2 = String.valueOf(System.currentTimeMillis());
+ logger.info("End Time of 2nd Query : " + endTime2);
+
+ QueryStatus queryStatus1 = qHelper.waitForQueryToRun(queryHandle1);
+ QueryStatus queryStatus2 = qHelper.waitForQueryToRun(queryHandle2);
+
+ Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
+ Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
+
+ qHelper.killQuery(null, null, null, sessionHandleString, startTime1, endTime1);
+
+ queryStatus1 = qHelper.getQueryStatus(queryHandle1);
+ queryStatus2 = qHelper.getQueryStatus(queryHandle2);
+
+ Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.CANCELED, "Query is Not CANCELED");
+ Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not CANCELED");
+
+ qHelper.killQuery(null, null, null, sessionHandleString, startTime2, endTime2);
+
+ queryStatus2 = qHelper.getQueryStatus(queryHandle2);
+ Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.CANCELED, "Query is Not CANCELED");
+
+ }
+
+
+ @Test(enabled = true)
+ public void killQueryByAllFilter() throws Exception {
+
+ String queryName1 = "TestKill";
+
+ String startTime1 = String.valueOf(System.currentTimeMillis());
+ logger.info("Start Time of 1st Query : " + startTime1);
+ Thread.sleep(1000);
+
+ QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(sleepQuery, queryName1).getData();
+ Thread.sleep(1000);
+
+ String endTime1 = String.valueOf(System.currentTimeMillis());
+ logger.info("End Time of 1st Query : " + endTime1);
+
+ QueryStatus queryStatus1 = qHelper.waitForQueryToRun(queryHandle1);
+ Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
+
+ qHelper.killQuery(queryName1, "RUNNING", lens.getUserName(), sessionHandleString, startTime1, endTime1);
+
+ queryStatus1 = qHelper.getQueryStatus(queryHandle1);
+ Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.CANCELED, "Query is Not CANCELED");
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/lens/blob/2aaf6e0a/lens-regression/src/test/java/org/apache/lens/regression/client/ITListQueryTest.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/client/ITListQueryTest.java b/lens-regression/src/test/java/org/apache/lens/regression/client/ITListQueryTest.java
index cad2937..93de982 100644
--- a/lens-regression/src/test/java/org/apache/lens/regression/client/ITListQueryTest.java
+++ b/lens-regression/src/test/java/org/apache/lens/regression/client/ITListQueryTest.java
@@ -52,12 +52,12 @@ public class ITListQueryTest extends BaseTestClass {
public void initialize() throws IOException, JAXBException, LensException {
servLens = ServiceManagerHelper.init();
logger.info("Creating a new Session");
- sessionHandleString = sHelper.openSession(lens.getCurrentDB());
}
@BeforeMethod(alwaysRun = true)
public void setUp(Method method) throws Exception {
logger.info("Test Name: " + method.getName());
+ sessionHandleString = sHelper.openSession(lens.getCurrentDB());
}
@AfterMethod(alwaysRun = true)
@@ -65,12 +65,15 @@ public class ITListQueryTest extends BaseTestClass {
logger.info("Test Name: " + method.getName());
qHelper.killQuery(null, "QUEUED", "all");
qHelper.killQuery(null, "RUNNING", "all");
+ if (sessionHandleString != null){
+ sHelper.closeSession();
+ }
+ sessionHandleString = null;
}
@AfterClass(alwaysRun = true)
public void closeSession() throws Exception {
logger.info("Closing Session");
- sHelper.closeSession();
}
@DataProvider(name = "query-provider")
http://git-wip-us.apache.org/repos/asf/lens/blob/2aaf6e0a/lens-regression/src/test/java/org/apache/lens/regression/client/ITPreparedQueryTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/client/ITPreparedQueryTests.java b/lens-regression/src/test/java/org/apache/lens/regression/client/ITPreparedQueryTests.java
index fd73ba4..dc3d685 100644
--- a/lens-regression/src/test/java/org/apache/lens/regression/client/ITPreparedQueryTests.java
+++ b/lens-regression/src/test/java/org/apache/lens/regression/client/ITPreparedQueryTests.java
@@ -70,18 +70,27 @@ public class ITPreparedQueryTests extends BaseTestClass {
public void initialize() throws IOException, JAXBException, LensException {
servLens = ServiceManagerHelper.init();
logger.info("Creating a new Session");
- sessionHandleString = sHelper.openSession(lens.getCurrentDB());
}
@BeforeMethod(alwaysRun = true)
public void setUp(Method method) throws Exception {
+ sessionHandleString = sHelper.openSession(lens.getCurrentDB());
logger.info("Test Name: " + method.getName());
}
+
+ @AfterMethod(alwaysRun = true)
+ public void afterMethod(Method method) throws Exception {
+ logger.info("Test Name: " + method.getName());
+ if (sessionHandleString != null){
+ sHelper.closeSession();
+ }
+ sessionHandleString = null;
+ }
+
@AfterClass(alwaysRun = true)
public void closeSession() throws Exception {
logger.info("Closing Session");
- sHelper.closeSession();
}
@Test
http://git-wip-us.apache.org/repos/asf/lens/blob/2aaf6e0a/lens-regression/src/test/java/org/apache/lens/regression/client/ITQueryApiTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/client/ITQueryApiTests.java b/lens-regression/src/test/java/org/apache/lens/regression/client/ITQueryApiTests.java
index 7b8b377..cf6f82a 100644
--- a/lens-regression/src/test/java/org/apache/lens/regression/client/ITQueryApiTests.java
+++ b/lens-regression/src/test/java/org/apache/lens/regression/client/ITQueryApiTests.java
@@ -20,9 +20,7 @@
package org.apache.lens.regression.client;
import java.lang.reflect.Method;
-import java.util.ArrayList;
import java.util.HashMap;
-import java.util.List;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.GenericType;
@@ -33,7 +31,6 @@ import org.apache.lens.api.LensConf;
import org.apache.lens.api.query.*;
import org.apache.lens.api.result.LensAPIResult;
import org.apache.lens.cube.parse.CubeQueryConfUtil;
-import org.apache.lens.regression.core.constants.DriverConfig;
import org.apache.lens.regression.core.constants.QueryInventory;
import org.apache.lens.regression.core.constants.QueryURL;
import org.apache.lens.regression.core.helpers.ServiceManagerHelper;
@@ -56,7 +53,7 @@ public class ITQueryApiTests extends BaseTestClass {
WebTarget servLens;
private String sessionHandleString;
- private String hiveDriverSitePath = lens.getServerDir() + "/conf/drivers/hive/hive1/hivedriver-site.xml";
+ String lensSiteConf = lens.getServerDir() + "/conf/lens-site.xml";
private static Logger logger = Logger.getLogger(ITQueryApiTests.class);
@BeforeClass(alwaysRun = true)
@@ -262,7 +259,6 @@ public class ITQueryApiTests extends BaseTestClass {
// InMemoryQueryResult ResultSetJson = (InMemoryQueryResult) qHelper.getResultSetJson(queryHandle1, "0", "100");
}
-
@Test
public void testQueryResultJsonPersistent() throws Exception {
@@ -398,125 +394,6 @@ public class ITQueryApiTests extends BaseTestClass {
Assert.assertEquals(lq.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
}
- /* LENS-1019 : If query is repeated from user - with same query, same name, same conf on the same session
- and earlier is still queued or running, then return the same handle.
- */
-
- @DataProvider(name = "query_names")
- public Object[][] queryName() {
- String[][] testData = {{"query-name"}, {null}};
- return testData;
- }
-
- @Test(dataProvider = "query_names", enabled = true)
- public void testRunningSameNameSessionQuery(String queryName) throws Exception {
-
- String query = QueryInventory.getSleepQuery("10");
- List<QueryHandle> handleList = new ArrayList<>();
- List<PersistentQueryResult> resultList = new ArrayList<>();
-
- for(int i=0; i<3; i++){
- handleList.add((QueryHandle) qHelper.executeQuery(query, queryName).getData());
- }
-
- Assert.assertEquals(handleList.get(1).getHandleIdString(), handleList.get(0).getHandleIdString());
- Assert.assertEquals(handleList.get(2).getHandleIdString(), handleList.get(0).getHandleIdString());
-
- for(QueryHandle handle : handleList){
- LensQuery lq = qHelper.waitForCompletion(handle);
- Assert.assertEquals(lq.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
- resultList.add((PersistentQueryResult) qHelper.getResultSet(handle));
- }
-
- Assert.assertEquals(resultList.get(1).getPersistedURI(), resultList.get(0).getPersistedURI());
- Assert.assertEquals(resultList.get(2).getPersistedURI(), resultList.get(0).getPersistedURI());
- }
-
- @Test(enabled = true)
- public void testQueuedSameNameSessionQuery() throws Exception {
-
- String query = QueryInventory.getSleepQuery("10");
- List<QueryHandle> handleList = new ArrayList<>();
- List<PersistentQueryResult> resultList = new ArrayList<>();
- HashMap<String, String> map = LensUtil.getHashMap(DriverConfig.MAX_CONCURRENT_QUERIES, "1");
-
- try {
- Util.changeConfig(map, hiveDriverSitePath);
- lens.restart();
-
- //Fire long running query so that 2nd query is in queued state
- qHelper.executeQuery(query, "query1").getData();
-
- for (int i = 0; i < 3; i++) {
- handleList.add((QueryHandle) qHelper.executeQuery(QueryInventory.HIVE_CUBE_QUERY, "query1").getData());
- }
-
- Assert.assertEquals(handleList.get(1), handleList.get(0));
- Assert.assertEquals(handleList.get(2), handleList.get(0));
-
- for (QueryHandle handle : handleList) {
- LensQuery lq = qHelper.waitForCompletion(handle);
- Assert.assertEquals(lq.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
- resultList.add((PersistentQueryResult) qHelper.getResultSet(handle));
- }
-
- Assert.assertEquals(resultList.get(1).getPersistedURI(), resultList.get(0).getPersistedURI());
- Assert.assertEquals(resultList.get(2).getPersistedURI(), resultList.get(0).getPersistedURI());
-
- } finally {
- Util.changeConfig(hiveDriverSitePath);
- lens.restart();
- }
- }
-
- @Test(enabled = false)
- public void differentQuerySameNameSession() throws Exception {
-
- String cost5 = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_5"), "5");
- String cost3 = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_3"), "3");
-
- QueryHandle handle1 = (QueryHandle) qHelper.executeQuery(cost5, "queryName").getData();
- QueryHandle handle2 = (QueryHandle) qHelper.executeQuery(cost3, "queryName").getData();
-
- Assert.assertFalse(handle1.getHandleIdString().equals(handle2.getHandleIdString()));
- }
-
- @Test(enabled = false)
- public void differentSessionSameNameQuery() throws Exception {
-
- String query = QueryInventory.getSleepQuery("10");
- String session1 = sHelper.openSession("user1", "pwd1", lens.getCurrentDB());
- String session2 = sHelper.openSession("user2", "pwd2", lens.getCurrentDB());
- QueryHandle handle1 = (QueryHandle) qHelper.executeQuery(query, "name", session1).getData();
- QueryHandle handle2 = (QueryHandle) qHelper.executeQuery(query, "name", session2).getData();
- Assert.assertFalse(handle1.getHandleIdString().equals(handle2.getHandleIdString()));
- }
-
- @Test(enabled = false)
- public void differentNameSameSessionQuery() throws Exception {
- String query = QueryInventory.getSleepQuery("3");
- QueryHandle handle1 = (QueryHandle) qHelper.executeQuery(query, "name1").getData();
- QueryHandle handle2 = (QueryHandle) qHelper.executeQuery(query, "name2").getData();
- Assert.assertFalse(handle1.getHandleIdString().equals(handle2.getHandleIdString()));
- }
-
- @Test(enabled = false)
- public void differentConfSameNameSessionQuery() throws Exception {
-
- String query = QueryInventory.getSleepQuery("5");
- LensConf lensConf = new LensConf();
-
- lensConf.addProperty(CubeQueryConfUtil.FAIL_QUERY_ON_PARTIAL_DATA, "false");
- QueryHandle qhr1 = (QueryHandle) qHelper.executeQuery(query, "query-name", null, sessionHandleString,
- lensConf).getData();
-
- lensConf.addProperty(CubeQueryConfUtil.FAIL_QUERY_ON_PARTIAL_DATA, "true");
- QueryHandle qhr2 = (QueryHandle) qHelper.executeQuery(query, "query-name", null, sessionHandleString,
- lensConf).getData();
-
- Assert.assertFalse(qhr1.getHandleIdString().equals(qhr2.getHandleIdString()));
- }
-
// LENS-1186
@Test
public void testInvalidOperation() throws Exception {
@@ -556,4 +433,61 @@ public class ITQueryApiTests extends BaseTestClass {
});
Assert.assertEquals(result.getErrorCode(), 2005);
}
+
+ //LENS-1304
+ @Test(enabled = true)
+ public void testDriverQueryAfterQueryPurge() throws Exception {
+
+ try{
+ HashMap<String, String> map = LensUtil.getHashMap(LensConfConstants.PURGE_INTERVAL, "3000");
+ Util.changeConfig(map, lensSiteConf);
+ lens.restart();
+
+ QueryHandle q1 = (QueryHandle) qHelper.executeQuery(QueryInventory.HIVE_DIM_QUERY).getData();
+ QueryHandle q2 = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_DIM_QUERY).getData();
+
+ qHelper.waitForCompletion(q1);
+ qHelper.waitForCompletion(q2);
+
+ String hiveDriverQuery = "INSERT OVERWRITE DIRECTORY \""+lens.getServerHdfsUrl()+"/tmp/lensreports/hdfsout/"
+ + q1 + "\" ROW FORMAT SERDE 'org.apache.lens.lib.query.CSVSerde' STORED AS TEXTFILE SELECT "
+ + "(sample_dim2.id), (sample_dim2.name) FROM "+lens.getCurrentDB()+".local_dim_table2 sample_dim2 WHERE "
+ + "((((sample_dim2.name) != 'first') AND ((sample_dim2.dt = 'latest'))))";
+
+ String jdbcDriverQuery = "SELECT (sample_db_dim.id), (sample_db_dim.name) FROM " + lens.getCurrentDB()
+ + ".mydb_dim_table3 sample_db_dim WHERE ((((sample_db_dim.name) != 'first')))";
+
+ //Waiting for query to get purged
+ Thread.sleep(5000);
+
+ LensQuery l1 = qHelper.getLensQuery(sessionHandleString, q1);
+ LensQuery l2 = qHelper.getLensQuery(sessionHandleString, q2);
+
+ Assert.assertEquals(l1.getDriverQuery().trim(), hiveDriverQuery);
+ Assert.assertEquals(l2.getDriverQuery().trim(), jdbcDriverQuery);
+
+ //TODO : assert value from DB as well.
+
+ } catch(Exception e){
+ Util.changeConfig(lensSiteConf);
+ lens.restart();
+ }
+ }
+
+ @Test
+ public void testTimeout() throws Exception {
+
+ sHelper.setAndValidateParam(CubeQueryConfUtil.FAIL_QUERY_ON_PARTIAL_DATA, "false");
+ sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "true");
+ sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
+ String query = QueryInventory.getSleepQuery("10");
+
+ Long t1 = System.currentTimeMillis();
+ QueryHandleWithResultSet qhr1 = (QueryHandleWithResultSet) qHelper.executeQueryTimeout(query, "80000",
+ null, sessionHandleString).getData();
+ Long t2 = System.currentTimeMillis();
+ long diff = (t2 - t1)/1000;
+ Assert.assertTrue(diff < 20); // adding 10 seconds extra buffer time
+ }
+
}
http://git-wip-us.apache.org/repos/asf/lens/blob/2aaf6e0a/lens-regression/src/test/java/org/apache/lens/regression/client/ITScheduleQueryTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/client/ITScheduleQueryTests.java b/lens-regression/src/test/java/org/apache/lens/regression/client/ITScheduleQueryTests.java
deleted file mode 100644
index 4e45c4c..0000000
--- a/lens-regression/src/test/java/org/apache/lens/regression/client/ITScheduleQueryTests.java
+++ /dev/null
@@ -1,284 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.lens.regression.client;
-
-import java.lang.reflect.Method;
-import java.util.Calendar;
-import java.util.List;
-
-import javax.ws.rs.client.WebTarget;
-import javax.ws.rs.core.MediaType;
-
-import org.apache.lens.api.APIResult;
-import org.apache.lens.api.scheduler.*;
-import org.apache.lens.regression.core.constants.QueryInventory;
-import org.apache.lens.regression.core.helpers.ServiceManagerHelper;
-import org.apache.lens.regression.core.testHelper.BaseTestClass;
-import org.apache.lens.regression.util.Util;
-
-import org.apache.log4j.Logger;
-
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-
-
-public class ITScheduleQueryTests extends BaseTestClass {
-
- WebTarget servLens;
- private String sessionHandleString;
-
- private static Logger logger = Logger.getLogger(ITScheduleQueryTests.class);
- private static String format = "yyyy-MM-dd HH:mm:ss";
- private static String currentDate = Util.getCurrentDate(format);
-
- @BeforeClass(alwaysRun = true)
- public void initialize() throws Exception {
- servLens = ServiceManagerHelper.init();
- }
-
- @BeforeMethod(alwaysRun = true)
- public void setUp(Method method) throws Exception {
- logger.info("Test Name: " + method.getName());
- logger.info("Creating a new Session");
- sessionHandleString = sHelper.openSession(lens.getCurrentDB());
- }
-
- @AfterMethod(alwaysRun = true)
- public void closeSession() throws Exception {
- logger.info("Closing Session");
- if (sessionHandleString != null){
- sHelper.closeSession();
- }
- }
-
-
- @Test
- public void submitJob() throws Exception {
- String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 4);
- XJob xJob = scheduleHelper.getXJob("job-submit", QueryInventory.QUERY, null, currentDate, endDate,
- XFrequencyEnum.DAILY);
- String jobHandle = scheduleHelper.submitJob(xJob, sessionHandleString);
- Assert.assertNotNull(jobHandle);
- Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.NEW);
- }
-
- @Test
- public void submitNScheduleQuery() throws Exception {
-
- String startDate = Util.modifyDate(currentDate, format, Calendar.DATE, -1);
- String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 3);
- XJob xJob = scheduleHelper.getXJob("job-submit-schedule", QueryInventory.JDBC_CUBE_QUERY, null, startDate,
- endDate, XFrequencyEnum.DAILY);
- String jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString);
- Assert.assertNotNull(jobHandle);
- Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.SCHEDULED);
-
- SchedulerJobInfo jobInfo = scheduleHelper.getJobDetails(jobHandle, sessionHandleString);
- Assert.assertNotNull(jobInfo);
- Assert.assertEquals(jobInfo.getJob().getName(), "job-submit-schedule");
- }
-
- //submit and schedule and also get job definition
- @Test
- public void submitNScheduleQueryCronExp() throws Exception {
-
- String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 1);
- XJob xJob = scheduleHelper.getXJob("job-submit-schedule-cronExp", QueryInventory.QUERY, null, currentDate,
- endDate, "0/30 * * * * ?");
- String jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString);
- Assert.assertNotNull(jobHandle);
-
- XJob job = scheduleHelper.getJobDefinition(jobHandle, sessionHandleString, MediaType.APPLICATION_XML_TYPE,
- MediaType.APPLICATION_XML);
- Assert.assertNotNull(job);
- Assert.assertEquals(job.getName(), "job-submit-schedule-cronExp");
- }
-
-
- @Test
- public void testDeleteJob() throws Exception {
-
- String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 1);
- XJob xJob = scheduleHelper.getXJob("job-delete", QueryInventory.QUERY, null, currentDate, endDate,
- "0/30 * * * * ?");
-
- //delete in submit state
- String jobHandle = scheduleHelper.submitJob(xJob, sessionHandleString);
- APIResult res = scheduleHelper.deleteJob(jobHandle, sessionHandleString);
-// Assert.assertEquals(res.getStatus(), APIResult.Status.SUCCEEDED);
- Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.DELETED);
-
- //delete in scheduled state
- jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString);
- res = scheduleHelper.deleteJob(jobHandle, sessionHandleString);
-// Assert.assertEquals(res.getStatus(), APIResult.Status.SUCCEEDED);
- Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.DELETED);
-
- //delete in suspended state
- jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString);
- scheduleHelper.updateJob(jobHandle, "SUSPEND", sessionHandleString);
- Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.SUSPENDED);
- res = scheduleHelper.deleteJob(jobHandle, sessionHandleString);
-// Assert.assertEquals(res.getStatus(), APIResult.Status.SUCCEEDED);
- Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.DELETED);
-
- //delete in expired state
- jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString);
- scheduleHelper.updateJob(jobHandle, "EXPIRE", sessionHandleString);
- Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.EXPIRED);
- res = scheduleHelper.deleteJob(jobHandle, sessionHandleString);
-// Assert.assertEquals(res.getStatus(), APIResult.Status.SUCCEEDED);
- Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.DELETED);
- }
-
- @Test
- public void testUpdateJob() throws Exception {
-
- String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 4);
- XJob job = scheduleHelper.getXJob("job-update", QueryInventory.QUERY, null, currentDate, endDate,
- XFrequencyEnum.WEEKLY);
- String jobHandle = scheduleHelper.submitJob(job, sessionHandleString);
-
- XJob tmp = scheduleHelper.getJobDefinition(jobHandle, sessionHandleString);
- tmp.setName("modified-name");
- endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 6);
- tmp.setEndTime(Util.getGregorianCalendar(endDate));
- APIResult res = scheduleHelper.updateJob(tmp, jobHandle, sessionHandleString);
- Assert.assertEquals(res.getStatus(), APIResult.Status.SUCCEEDED);
-
- XJob modifiedJob = scheduleHelper.getJobDefinition(jobHandle, sessionHandleString);
- Assert.assertEquals(modifiedJob.getName(), "modified-name");
- String modifiedEndTime = Util.getDateStringFromGregorainCalender(modifiedJob.getEndTime(), format);
- Assert.assertEquals(modifiedEndTime, endDate);
- }
-
- @Test
- public void testUpdateJobAction() throws Exception {
-
- String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 1);
- XJob job = scheduleHelper.getXJob("job-update-action", QueryInventory.QUERY, null, currentDate, endDate,
- "0/20 * * * * ?");
- String jobHandle = scheduleHelper.submitJob(job, sessionHandleString);
- Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.NEW);
-
- scheduleHelper.updateJob(jobHandle, "SCHEDULE", sessionHandleString);
- Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.SCHEDULED);
-
- scheduleHelper.updateJob(jobHandle, "SUSPEND", sessionHandleString);
- Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.SUSPENDED);
-
- scheduleHelper.updateJob(jobHandle, "RESUME", sessionHandleString);
- Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.SCHEDULED);
-
- scheduleHelper.updateJob(jobHandle, "EXPIRE", sessionHandleString);
- Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.EXPIRED);
- }
-
- @Test
- public void testGetAllInstancesOfAJob() throws Exception {
-
- String startDate = Util.modifyDate(Util.getCurrentDate(format), format, Calendar.SECOND, 5);
- String endDate = Util.modifyDate(startDate, format, Calendar.MINUTE, 4);
- XJob xJob = scheduleHelper.getXJob("job-update-action", QueryInventory.QUERY, null, startDate, endDate,
- "0/20 * * * * ?");
- String jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString);
-
- Thread.sleep(60000);
-
- List<SchedulerJobInstanceInfo> instanceList = scheduleHelper.getAllInstancesOfJob(jobHandle, "10",
- sessionHandleString);
- Assert.assertEquals(instanceList.size(), 3);
- }
-
-
- @Test
- public void updateInstance() throws Exception {
-
- String startDate = Util.modifyDate(Util.getCurrentDate(format), format, Calendar.SECOND, 10);
- String endDate = Util.modifyDate(startDate, format, Calendar.MINUTE, 3);
- XJob xJob = scheduleHelper.getXJob("job-update-action", QueryInventory.JDBC_DIM_QUERY, null, startDate, endDate,
- "0/20 * * * * ?");
- String jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString);
-
- Thread.sleep(20000);
-
- List<SchedulerJobInstanceInfo> instanceList = scheduleHelper.getAllInstancesOfJob(jobHandle, "10",
- sessionHandleString);
-
- Thread.sleep(10000);
-
- APIResult res = scheduleHelper.updateInstance(instanceList.get(0).getId().getHandleIdString(),
- "RERUN", sessionHandleString);
- Assert.assertEquals(res.getStatus(), APIResult.Status.SUCCEEDED);
-
- SchedulerJobInstanceInfo instanceInfo = scheduleHelper.getInstanceDetails(instanceList.get(0).getId()
- .getHandleIdString(), sessionHandleString);
- List<SchedulerJobInstanceRun> runList = instanceInfo.getInstanceRunList();
- Assert.assertEquals(runList.size(), 2);
- Assert.assertEquals(runList.get(1).getRunId(), 2);
- }
-
-
- @Test(enabled = true)
- public void restart() throws Exception {
-
- String startDate = Util.modifyDate(Util.getCurrentDate(format), format, Calendar.SECOND, 5);
- String endDate = Util.modifyDate(startDate, format, Calendar.MINUTE, 2);
- XJob xJob = scheduleHelper.getXJob("job-restart", QueryInventory.QUERY, null, startDate, endDate, "0/20 * * * * ?");
-
- String jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString);
- Assert.assertNotNull(jobHandle);
-
- Thread.sleep(20000);
- lens.stop();
- Thread.sleep(20000);
- lens.start();
- Thread.sleep(60000);
-
- List<SchedulerJobInstanceInfo> instanceList = scheduleHelper.getAllInstancesOfJob(jobHandle, "50",
- sessionHandleString);
- Assert.assertEquals(instanceList.size(), 6);
- }
-
- //LENS
- @Test
- public void testMisfiredEvents() throws Exception {
-
- String startDate = Util.modifyDate(currentDate, format, Calendar.DATE, -2);
- String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 3);
- XJob xJob = scheduleHelper.getXJob("job-misfire", QueryInventory.JDBC_CUBE_QUERY, null, startDate,
- endDate, XFrequencyEnum.DAILY);
- String jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString);
- Assert.assertNotNull(jobHandle);
- Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.SCHEDULED);
-
- List<SchedulerJobInstanceInfo> instanceList = scheduleHelper.getAllInstancesOfJob(jobHandle, "10",
- sessionHandleString);
- Assert.assertEquals(instanceList.size(), 3);
-
- if (jobHandle!=null){
- scheduleHelper.updateJob(jobHandle, "EXPIRE", sessionHandleString);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/lens/blob/2aaf6e0a/lens-regression/src/test/java/org/apache/lens/regression/client/ITSessionResourceTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/client/ITSessionResourceTests.java b/lens-regression/src/test/java/org/apache/lens/regression/client/ITSessionResourceTests.java
new file mode 100644
index 0000000..d39a2bd
--- /dev/null
+++ b/lens-regression/src/test/java/org/apache/lens/regression/client/ITSessionResourceTests.java
@@ -0,0 +1,401 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.lens.regression.client;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.GenericType;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import javax.xml.bind.JAXBException;
+
+import org.apache.lens.api.StringList;
+import org.apache.lens.api.query.LensQuery;
+import org.apache.lens.api.query.QueryHandle;
+import org.apache.lens.api.query.QueryStatus;
+import org.apache.lens.api.session.UserSessionInfo;
+import org.apache.lens.regression.core.constants.MetastoreURL;
+import org.apache.lens.regression.core.constants.QueryInventory;
+import org.apache.lens.regression.core.constants.QueryURL;
+import org.apache.lens.regression.core.constants.SessionURL;
+import org.apache.lens.regression.core.helpers.ServiceManagerHelper;
+import org.apache.lens.regression.core.testHelper.BaseTestClass;
+import org.apache.lens.regression.core.type.FormBuilder;
+import org.apache.lens.regression.core.type.MapBuilder;
+import org.apache.lens.regression.util.AssertUtil;
+import org.apache.lens.regression.util.Util;
+import org.apache.lens.server.api.error.LensException;
+import org.apache.lens.server.api.util.LensUtil;
+
+import org.apache.log4j.Logger;
+
+import org.testng.Assert;
+import org.testng.annotations.*;
+
+import com.jcraft.jsch.JSchException;
+
+public class ITSessionResourceTests extends BaseTestClass {
+
+ WebTarget servLens;
+ private String sessionHandleString;
+
+ private final String hdfsJarPath = lens.getServerHdfsUrl() + "/tmp";
+ private final String localJarPath = new File("").getAbsolutePath() + "/lens-regression/target/testjars/";
+ private final String hiveUdfJar = "hiveudftest.jar";
+ private final String serverResourcePath = "/tmp/regression/resources";
+
+ private static String newParamsKey = "datanucleus.autoCreateSchema";
+ private static String newParamsValue = "false";
+ private static String createSleepFunction = "CREATE TEMPORARY FUNCTION sleep AS 'SampleUdf'";
+ private static Logger logger = Logger.getLogger(ITSessionResourceTests.class);
+
+
+ @BeforeClass(alwaysRun = true)
+ public void initialize() throws IOException, JSchException, JAXBException, LensException {
+ servLens = ServiceManagerHelper.init();
+ }
+
+ @BeforeMethod(alwaysRun = true)
+ public void setUp(Method method) throws Exception {
+ logger.info("Test Name: " + method.getName());
+ logger.info("Creating a new Session");
+ sessionHandleString = sHelper.openSession(lens.getCurrentDB());
+ }
+
+ @AfterMethod(alwaysRun = true)
+ public void closeSession() throws Exception {
+ logger.info("Closing Session");
+ sHelper.closeSession();
+ }
+
+ private boolean checkSessionParamMap(String sessionHandle) throws Exception {
+ MapBuilder query = new MapBuilder("sessionid", sessionHandle, "verbose", "true");
+ Response response = lens.sendQuery("get", SessionURL.SESSION_PARAMS_URL, query);
+ AssertUtil.assertSucceededResponse(response);
+ StringList strList = response.readEntity(new GenericType<StringList>(StringList.class));
+ HashMap<String, String> map = Util.stringListToMap(strList);
+ if (map == null) {
+ return false;
+ }
+ return true;
+ }
+
+
+ @Test
+ public void testSessionGet() throws Exception {
+ String newSessionHandle = sHelper.openSession("diff", "diff");
+ Assert.assertNotNull(newSessionHandle);
+ }
+
+
+ @Test
+ public void testSessionParamsGetVerbose() throws Exception {
+ Assert.assertTrue(checkSessionParamMap(sessionHandleString), "Returned Empty Params list");
+ }
+
+
+ @Test
+ public void testSessionParamsGetNPut() throws Exception {
+
+ Map<String, String> resource = LensUtil.getHashMap("sessionid", sessionHandleString, "key", newParamsKey,
+ "value", newParamsValue);
+ FormBuilder formData = new FormBuilder(resource);
+ Response response = lens.sendForm("put", SessionURL.SESSION_PARAMS_URL, formData);
+ AssertUtil.assertSucceededResult(response);
+
+ String value = sHelper.getSessionParam(newParamsKey);
+ Assert.assertEquals(value, newParamsValue, "From Session Params Put");
+
+ }
+
+ //Negative Test Case
+ @Test
+ public void testSessionGetUndefinedParams() throws Exception {
+ String undefinedParamsKey = "test123";
+ MapBuilder query = new MapBuilder("sessionid", sessionHandleString, "key", undefinedParamsKey);
+ Response response = lens.sendQuery("get", SessionURL.SESSION_PARAMS_URL, query);
+ Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
+ }
+
+/*
+ * Testing if Session is restored after server restart
+ */
+
+ @Test
+ public void testSessionRestore() throws Exception {
+
+ Map<String, String> resource = LensUtil.getHashMap("sessionid", sessionHandleString,
+ "key", newParamsKey, "value", newParamsValue);
+ FormBuilder formData = new FormBuilder(resource);
+
+ Response response = lens.sendForm("put", SessionURL.SESSION_PARAMS_URL, formData);
+ AssertUtil.assertSucceededResult(response);
+
+ lens.restart();
+
+ MapBuilder query = new MapBuilder("sessionid", sessionHandleString, "key", newParamsKey);
+ response = lens.sendQuery("get", SessionURL.SESSION_PARAMS_URL, query);
+ AssertUtil.assertSucceededResponse(response);
+ StringList strList = response.readEntity(new GenericType<StringList>(StringList.class));
+ HashMap<String, String> map = Util.stringListToMap(strList);
+
+ Assert.assertEquals(map.get(newParamsKey), newParamsValue, "From Session Params Put");
+ Assert.assertEquals(map.size(), 1, "Params List contains more than one param");
+ }
+
+ @Test(enabled = true)
+ public void testSessionHDFSResourcePutNDelete() throws Exception {
+
+ String path = hdfsJarPath + "/" + hiveUdfJar;
+ sHelper.addResourcesJar(path);
+
+ QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(createSleepFunction).getData();
+ LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
+ Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
+
+ sHelper.removeResourcesJar(path);
+
+ queryHandle = (QueryHandle) qHelper.executeQuery(createSleepFunction).getData();
+ lensQuery = qHelper.waitForCompletion(queryHandle);
+ // TODO : Works only when there is single instance for each driver
+// Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.FAILED);
+
+ }
+
+
+ @Test
+ public void testSessionLocalResourcePutNDelete() throws Exception {
+
+ String path = serverResourcePath + "/" + hiveUdfJar;
+ sHelper.addResourcesJar(path);
+
+ QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(createSleepFunction).getData();
+ LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
+ Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
+
+ sHelper.removeResourcesJar(path);
+
+ queryHandle = (QueryHandle) qHelper.executeQuery(createSleepFunction).getData();
+ lensQuery = qHelper.waitForCompletion(queryHandle);
+// TODO : Works only when there is single instance for each driver
+// Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.FAILED);
+
+ }
+
+ @Test
+ public void testListResources() throws Exception {
+
+ String path = serverResourcePath + "/" + hiveUdfJar;
+ sHelper.addResourcesJar(path);
+
+ MapBuilder query = new MapBuilder("sessionid", sessionHandleString);
+ Response response = lens.sendQuery("get", SessionURL.SESSION_LIST_RESOURCE_URL, query);
+ AssertUtil.assertSucceededResponse(response);
+ StringList responseString = response.readEntity(StringList.class);
+ List<String> jars = responseString.getElements();
+ for (String t : jars) {
+ Assert.assertTrue(t.contains(hiveUdfJar));
+ }
+ }
+
+
+ @Test
+ public void testSessionGone() throws Exception {
+
+ String newSession = sHelper.openSession("test", "test");
+ sHelper.closeSession(newSession);
+
+ MapBuilder query = new MapBuilder("sessionid", newSession);
+
+ // Get Session resources with closed session
+ Response response = lens.sendQuery("get", SessionURL.SESSION_LIST_RESOURCE_URL, query);
+ AssertUtil.assertGone(response);
+
+ // Get Session params with closd session
+ response = lens.sendQuery("get", SessionURL.SESSION_PARAMS_URL, query);
+ AssertUtil.assertGone(response);
+
+ //Setting DB with closed session Handle
+ response = lens.exec("post", MetastoreURL.METASTORE_DATABASES_URL, servLens,
+ null, query, MediaType.APPLICATION_XML_TYPE, null, lens.getCurrentDB());
+ AssertUtil.assertGone(response);
+
+ FormBuilder formData = new FormBuilder();
+ formData.add("sessionid", newSession);
+ formData.add("query", QueryInventory.QUERY);
+ formData.add("conf", "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><conf />");
+
+ //Explain Query with closed session Handle
+ formData.add("operation", "EXPLAIN");
+ response = lens.exec("post", QueryURL.QUERY_URL, servLens, null, null,
+ MediaType.MULTIPART_FORM_DATA_TYPE, MediaType.APPLICATION_XML, formData.getForm());
+ AssertUtil.assertGone(response);
+
+ //Execute Query with closed session Handle
+ formData.add("operation", "EXECUTE");
+ response = lens.exec("post", QueryURL.QUERY_URL, servLens, null, null,
+ MediaType.MULTIPART_FORM_DATA_TYPE, MediaType.APPLICATION_XML, formData.getForm());
+ AssertUtil.assertGone(response);
+
+ }
+
+ @Test
+ public void testOpenSessionWithDB() throws Exception {
+
+ String newDb = "opensessionwithdb";
+ mHelper.createDatabase(newDb);
+ String newSession = sHelper.openSession("test", "test", newDb);
+ String curDB = mHelper.getCurrentDatabase(newSession);
+ Assert.assertEquals(curDB, newDb, "Could not open session with passed db");
+ sHelper.closeSession(newSession);
+ mHelper.dropDatabase(newDb);
+ }
+
+ @Test
+ public void testOpenSessionDefault() throws Exception {
+
+ String newSession = sHelper.openSession("test", "test");
+ String curDB = mHelper.getCurrentDatabase(newSession);
+ Assert.assertEquals(curDB, "default", "Could not open session with passed db");
+ sHelper.closeSession(newSession);
+ }
+
+
+ @Test
+ public void testOpenSessionDBDoesnotExist() throws Exception {
+
+ Response response = sHelper.openSessionReturnResponse("test", "test", "dbdoesnotexist", null);
+ AssertUtil.assertNotFound(response);
+ }
+
+ @Test
+ public void testSessionDBChange() throws Exception {
+
+ String newDb = "opensessionwithdb";
+ String newDb1 = "opensessionwithdb1";
+ mHelper.createDatabase(newDb);
+ mHelper.createDatabase(newDb1);
+
+ String newSession = sHelper.openSession("test", "test", newDb);
+ String curDB = mHelper.getCurrentDatabase(newSession);
+ Assert.assertEquals(curDB, newDb, "Could not open session with passed db");
+
+ mHelper.setCurrentDatabase(newSession, newDb1);
+ curDB = mHelper.getCurrentDatabase(newSession);
+ Assert.assertEquals(curDB, newDb1, "Could not open session with passed db");
+
+ sHelper.closeSession(newSession);
+ mHelper.dropDatabase(newDb);
+ mHelper.dropDatabase(newDb1);
+ }
+
+ //Fails as closeSession cannot take json as input,. (No API can take json as input)
+ @Test(enabled = false)
+ public void testGetSessionJson() throws Exception {
+
+ String newSessionHandle = sHelper.openSession("diff", "diff", null, MediaType.APPLICATION_JSON);
+ Assert.assertNotNull(newSessionHandle);
+ Assert.assertFalse(newSessionHandle.isEmpty());
+ sHelper.closeSession(newSessionHandle, MediaType.APPLICATION_JSON);
+ }
+
+ @Test(enabled = true)
+ public void assertSucceededResponse() throws Exception {
+ String session = sHelper.openSession("diff", "diff", null, MediaType.APPLICATION_XML);
+ Assert.assertNotNull(session);
+ Assert.assertFalse(session.isEmpty());
+
+ MapBuilder query = new MapBuilder("sessionid", session);
+ Response response = lens.exec("delete", SessionURL.SESSION_BASE_URL, servLens, null, query, null,
+ MediaType.APPLICATION_JSON, null);
+ AssertUtil.assertSucceededResponse(response);
+ }
+
+
+ @Test(enabled = true)
+ public void listSessionTest() throws Exception {
+
+ int origSize = sHelper.getSessionList().size();
+ for(int i=1; i<4; i++) {
+ sHelper.openSession("u" + i, "p" + i);
+ }
+ List<UserSessionInfo> sessionList = sHelper.getSessionList();
+ Assert.assertEquals(sessionList.size(), origSize+3);
+ }
+
+ //TODO : enable when session handle returned is entire xml instead of just public id
+ @Test(enabled = false)
+ public void listSessionUserSessionInfoVerification() throws Exception {
+
+ List<UserSessionInfo> sessionList = sHelper.getSessionList();
+ for(UserSessionInfo u : sessionList){
+ System.out.println(u.toString() + "\n");
+ sHelper.closeSession(u.getHandle());
+ }
+
+ String session1 = sHelper.openSession("u1", "p1", lens.getCurrentDB());
+ String session2 = sHelper.openSession("u2", "p2", lens.getCurrentDB());
+
+ QueryHandle qh1 = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_DIM_QUERY, null, session1).getData();
+ QueryHandle qh2 = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_DIM_QUERY, null, session2).getData();
+
+ sessionList = sHelper.getSessionList();
+ Assert.assertEquals(sessionList.size(), 2);
+
+ UserSessionInfo s1 = sessionList.get(0);
+ Assert.assertEquals(s1.getUserName(), "u1");
+ List<QueryHandle> queryHandleList = s1.getActiveQueries();
+ Assert.assertEquals(queryHandleList.size(), 2);
+ Assert.assertTrue(queryHandleList.contains(qh1));
+ Assert.assertTrue(queryHandleList.contains(qh2));
+
+ for(UserSessionInfo u : sessionList){
+ System.out.println(u.toString() + "\n");
+ sHelper.closeSession(u.getHandle());
+ }
+ }
+
+ //LENS-1199
+ @Test(enabled = true)
+ public void multipleCloseSessionForActiveQueries() throws Exception {
+ String session = sHelper.openSession("diff", "diff", lens.getCurrentDB());
+ QueryHandle qh = (QueryHandle) qHelper.executeQuery(QueryInventory.getSleepQuery("3"), null, session).getData();
+ sHelper.closeSession(session);
+ sHelper.closeSession(session);
+ }
+
+ //LENS-1199
+ @Test(enabled = true)
+ public void multipleCloseSession() throws Exception {
+ String session = sHelper.openSession("diff", "diff", lens.getCurrentDB());
+ sHelper.closeSession(session);
+ MapBuilder query = new MapBuilder("sessionid", session);
+ Response response = lens.exec("delete", SessionURL.SESSION_BASE_URL, servLens, null, query);
+ AssertUtil.assertGone(response);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/lens/blob/2aaf6e0a/lens-regression/src/test/java/org/apache/lens/regression/client/KillQueryTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/client/KillQueryTests.java b/lens-regression/src/test/java/org/apache/lens/regression/client/KillQueryTests.java
deleted file mode 100644
index a39b2fe..0000000
--- a/lens-regression/src/test/java/org/apache/lens/regression/client/KillQueryTests.java
+++ /dev/null
@@ -1,362 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.lens.regression.client;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.Method;
-
-import javax.ws.rs.client.WebTarget;
-
-import javax.xml.bind.JAXBException;
-
-import org.apache.lens.api.query.*;
-import org.apache.lens.regression.core.constants.QueryInventory;
-import org.apache.lens.regression.core.helpers.*;
-import org.apache.lens.regression.core.testHelper.BaseTestClass;
-import org.apache.lens.server.api.error.LensException;
-
-import org.apache.log4j.Logger;
-
-import org.testng.Assert;
-import org.testng.annotations.*;
-
-
-public class KillQueryTests extends BaseTestClass {
-
- WebTarget servLens;
- private String sessionHandleString;
-
- private final String hdfsJarPath = lens.getServerHdfsUrl() + "/tmp";
- private final String localJarPath = new File("").getAbsolutePath() + "/lens-regression/target/testjars/";
- private final String hiveUdfJar = "hiveudftest.jar";
- private final String serverResourcePath = "/tmp/regression/resources";
- String sleepQuery = QueryInventory.getSleepQuery("5");
-
- private static Logger logger = Logger.getLogger(KillQueryTests.class);
-
- @BeforeClass(alwaysRun = true)
- public void initialize() throws IOException, JAXBException, LensException, IllegalAccessException,
- InstantiationException {
- servLens = ServiceManagerHelper.init();
- logger.info("Creating a new Session");
- sessionHandleString = sHelper.openSession(lens.getCurrentDB());
-
- //TODO : Enable when udf registration per driver is fixed
-/* HadoopUtil.uploadJars(localJarPath + "/" + hiveUdfJar, hdfsJarPath);
- logger.info("Adding jar for making query to run for longer period of time");
- sHelper.addResourcesJar(hdfsJarPath + "/" + hiveUdfJar);
- QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.SLEEP_FUNCTION).getData();*/
- }
-
- @BeforeMethod(alwaysRun = true)
- public void setUp(Method method) throws Exception {
- logger.info("Test Name: " + method.getName());
- }
-
-
- @AfterClass(alwaysRun = true)
- public void closeSession() throws Exception {
- logger.info("Closing Session");
- sHelper.closeSession();
- }
-
-
- @Test(enabled = true)
- public void killQueryByHandle() throws Exception {
-
- QueryHandle qH = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
- logger.info("QUERY HANDLE : " + qH);
-
- QueryStatus queryStatus = qHelper.waitForQueryToRun(qH);
- Assert.assertEquals(queryStatus.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
-
- qHelper.killQueryByQueryHandle(qH);
-
- queryStatus = qHelper.getQueryStatus(qH);
- Assert.assertEquals(queryStatus.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
- }
-
-
- @Test(enabled = true)
- public void killQueryByUser() throws Exception {
-
- String diffUser = "diff";
- String diffPass = "diff";
-
- String newSessionHandleSring = sHelper.openSession(diffUser, diffPass, lens.getCurrentDB());
-
- logger.info("Adding jar for making query to run for longer period of time");
- sHelper.addResourcesJar(hdfsJarPath + "/" + hiveUdfJar, newSessionHandleSring);
-
- QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
- logger.info("1st QUERY HANDLE : " + queryHandle1);
-
- QueryHandle queryHandle2 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
- logger.info("2nd QUERY HANDLE : " + queryHandle2);
-
- QueryHandle queryHandle3 = (QueryHandle) qHelper.executeQuery(sleepQuery, null,
- newSessionHandleSring).getData();
- logger.info("3rd QUERY HANDLE : " + queryHandle3);
-
- QueryStatus queryStatus1 = qHelper.waitForQueryToRun(queryHandle1);
- QueryStatus queryStatus2 = qHelper.waitForQueryToRun(queryHandle2);
- QueryStatus queryStatus3 = qHelper.waitForQueryToRun(queryHandle3, newSessionHandleSring);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
- Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
-
- Thread.sleep(1000);
-
- qHelper.killQuery(null, null, lens.getUserName());
- Thread.sleep(2000);
- queryStatus1 = qHelper.getQueryStatus(queryHandle1);
- queryStatus2 = qHelper.getQueryStatus(queryHandle2);
- queryStatus3 = qHelper.getQueryStatus(queryHandle3);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
- Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
-
- qHelper.killQuery(null, null, diffUser);
-
- queryStatus3 = qHelper.getQueryStatus(queryHandle3);
- Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
-
- }
-
- @Test(enabled = true)
- public void killQueryOfAllUser() throws Exception {
-
- String diffUser = "diff";
- String diffPass = "diff";
- String newSessionHandleSring = sHelper.openSession(diffUser, diffPass, lens.getCurrentDB());
- sHelper.addResourcesJar(hdfsJarPath + "/" + hiveUdfJar, newSessionHandleSring);
-
- QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
- QueryHandle queryHandle2 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
- QueryHandle queryHandle3 = (QueryHandle) qHelper.executeQuery(sleepQuery, null,
- newSessionHandleSring).getData();
-
- QueryStatus queryStatus1 = qHelper.waitForQueryToRun(queryHandle1);
- QueryStatus queryStatus2 = qHelper.waitForQueryToRun(queryHandle2);
- QueryStatus queryStatus3 = qHelper.waitForQueryToRun(queryHandle3, newSessionHandleSring);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
- Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
-
- qHelper.killQuery(null, null, "all");
-
- queryStatus1 = qHelper.getQueryStatus(queryHandle1);
- queryStatus2 = qHelper.getQueryStatus(queryHandle2);
- queryStatus3 = qHelper.getQueryStatus(queryHandle3);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
- Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
- }
-
-
- @Test(enabled = true)
- public void killAllQueryOfUser() throws Exception {
-
- QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
- QueryHandle queryHandle2 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
-
- QueryStatus queryStatus1 = qHelper.waitForQueryToRun(queryHandle1);
- QueryStatus queryStatus2 = qHelper.waitForQueryToRun(queryHandle2);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
-
- qHelper.killQuery();
-
- queryStatus1 = qHelper.getQueryStatus(queryHandle1);
- queryStatus2 = qHelper.getQueryStatus(queryHandle2);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
- }
-
-
- @Test(enabled = true)
- public void killQueryByState() throws Exception {
-
- QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
- QueryHandle queryHandle2 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
-
- QueryStatus queryStatus1 = qHelper.waitForQueryToRun(queryHandle1);
- QueryStatus queryStatus2 = qHelper.waitForQueryToRun(queryHandle2);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
-
- //kill Running queries
- qHelper.killQuery(null, "RUNNING");
-
- queryStatus1 = qHelper.getQueryStatus(queryHandle1);
- queryStatus2 = qHelper.getQueryStatus(queryHandle2);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
-
- //kill Canceled query
- qHelper.killQuery(null, "CANCELED");
-
- queryStatus1 = qHelper.getQueryStatus(queryHandle1);
- queryStatus2 = qHelper.getQueryStatus(queryHandle2);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
-
- //kill successful query
- QueryHandle queryHandle3 = (QueryHandle) qHelper.executeQuery(QueryInventory.QUERY).getData();
- LensQuery lensQuery = qHelper.waitForCompletion(queryHandle3);
- Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
- qHelper.killQuery(null, "SUCCESSFUL");
- QueryStatus queryStatus3 = qHelper.getQueryStatus(queryHandle3);
- Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.SUCCESSFUL);
- }
-
- //TODO: enable when the bug is fixed.
-
- /* Currently doing kill query by queryName "query" will kill all the query with queryName as "*query*"
- * Raised a JIRA for same
- * When its Fixed Revisit this function */
-
- @Test(enabled = false)
- public void killQueryByQueryName() throws Exception {
-
- String queryName1 = "queryNameFirst";
- String queryName2 = "queryNameSecond";
- String queryName3 = "Name";
-
- QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(sleepQuery, queryName1).getData();
- logger.info("1st QUERY HANDLE : " + queryHandle1);
-
- QueryHandle queryHandle2 = (QueryHandle) qHelper.executeQuery(sleepQuery, queryName2).getData();
- logger.info("2nd QUERY HANDLE : " + queryHandle2);
-
- QueryHandle queryHandle3 = (QueryHandle) qHelper.executeQuery(sleepQuery, queryName3).getData();
- logger.info("3rd QUERY HANDLE : " + queryHandle3);
-
- QueryStatus queryStatus1 = qHelper.waitForQueryToRun(queryHandle1);
- QueryStatus queryStatus2 = qHelper.waitForQueryToRun(queryHandle2);
- QueryStatus queryStatus3 = qHelper.waitForQueryToRun(queryHandle3);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
- Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
-
- qHelper.killQuery(queryName3);
-
- queryStatus1 = qHelper.getQueryStatus(queryHandle1);
- queryStatus2 = qHelper.getQueryStatus(queryHandle2);
- queryStatus3 = qHelper.getQueryStatus(queryHandle3);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
- Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Cancelled");
-
- qHelper.killQuery(queryName1);
-
- queryStatus1 = qHelper.getQueryStatus(queryHandle1);
- queryStatus2 = qHelper.getQueryStatus(queryHandle2);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.CANCELED, "Query is Not CANCELED");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
-
- qHelper.killQuery(queryName2);
- queryStatus2 = qHelper.getQueryStatus(queryHandle2);
-
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.CANCELED, "Query is Not CANCELED");
- }
-
- @Test(enabled = true)
- public void killQueryByTimeRange() throws Exception {
-
- String startTime1 = String.valueOf(System.currentTimeMillis());
- logger.info("Start Time of 1st Query : " + startTime1);
- Thread.sleep(1000);
- QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
- Thread.sleep(1000);
- String endTime1 = String.valueOf(System.currentTimeMillis());
- logger.info("End Time of 1st Query : " + endTime1);
-
- Thread.sleep(1000);
-
- String startTime2 = String.valueOf(System.currentTimeMillis());
- logger.info("Start Time of 2nd Query : " + startTime2);
- Thread.sleep(1000);
- QueryHandle queryHandle2 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
- Thread.sleep(1000);
- String endTime2 = String.valueOf(System.currentTimeMillis());
- logger.info("End Time of 2nd Query : " + endTime2);
-
- QueryStatus queryStatus1 = qHelper.waitForQueryToRun(queryHandle1);
- QueryStatus queryStatus2 = qHelper.waitForQueryToRun(queryHandle2);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
-
- qHelper.killQuery(null, null, null, sessionHandleString, startTime1, endTime1);
-
- queryStatus1 = qHelper.getQueryStatus(queryHandle1);
- queryStatus2 = qHelper.getQueryStatus(queryHandle2);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.CANCELED, "Query is Not CANCELED");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not CANCELED");
-
- qHelper.killQuery(null, null, null, sessionHandleString, startTime2, endTime2);
-
- queryStatus2 = qHelper.getQueryStatus(queryHandle2);
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.CANCELED, "Query is Not CANCELED");
-
- }
-
-
- @Test(enabled = true)
- public void killQueryByAllFilter() throws Exception {
-
- String queryName1 = "TestKill";
-
- String startTime1 = String.valueOf(System.currentTimeMillis());
- logger.info("Start Time of 1st Query : " + startTime1);
- Thread.sleep(1000);
-
- QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(sleepQuery, queryName1).getData();
- Thread.sleep(1000);
-
- String endTime1 = String.valueOf(System.currentTimeMillis());
- logger.info("End Time of 1st Query : " + endTime1);
-
- QueryStatus queryStatus1 = qHelper.waitForQueryToRun(queryHandle1);
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
-
- qHelper.killQuery(queryName1, "RUNNING", lens.getUserName(), sessionHandleString, startTime1, endTime1);
-
- queryStatus1 = qHelper.getQueryStatus(queryHandle1);
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.CANCELED, "Query is Not CANCELED");
- }
-
-}
-