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"); - } - -} -