You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lens.apache.org by ar...@apache.org on 2017/02/06 07:49:57 UTC
[3/3] lens git commit: LENS-1380 : Revamp testcase division
LENS-1380 : Revamp testcase division
Project: http://git-wip-us.apache.org/repos/asf/lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/97fe26d3
Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/97fe26d3
Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/97fe26d3
Branch: refs/heads/master
Commit: 97fe26d3ca0db9b383c8d86feb6bb7b00cacdc7e
Parents: 6af57fb
Author: Archana H <ar...@apache.org>
Authored: Mon Feb 6 13:16:19 2017 +0530
Committer: Archana H <ar...@apache.org>
Committed: Mon Feb 6 13:16:19 2017 +0530
----------------------------------------------------------------------
.../regression/core/constants/DriverConfig.java | 2 -
.../core/helpers/ScheduleResourceHelper.java | 62 +-
.../apache/lens/regression/util/AssertUtil.java | 1 -
.../src/main/resources/template.lens.properties | 9 +-
.../apache/lens/regression/ITSessionTests.java | 163 +++++
.../apache/lens/regression/SessionTests.java | 163 -----
.../client/ITDuplicateQueryTests.java | 188 ++++++
.../regression/client/ITKillQueryTests.java | 361 +++++++++++
.../lens/regression/client/ITListQueryTest.java | 7 +-
.../regression/client/ITPreparedQueryTests.java | 13 +-
.../lens/regression/client/ITQueryApiTests.java | 182 ++----
.../regression/client/ITScheduleQueryTests.java | 284 ---------
.../client/ITSessionResourceTests.java | 401 ++++++++++++
.../lens/regression/client/KillQueryTests.java | 362 -----------
.../regression/client/SessionResourceTests.java | 403 ------------
.../regression/config/ITServerConfigTests.java | 197 +++---
.../regression/config/ITSessionConfigTests.java | 4 +-
.../scheduler/ITMaxScheduledQueryTests.java | 160 +++++
.../scheduler/ITScheduleQueryTests.java | 337 +++++++++++
.../lens/regression/throttling/ITCostTests.java | 176 +-----
.../throttling/ITQueueNumberTests.java | 232 +++++++
.../throttling/ITThrottlingTests.java | 605 +++++++++++++++++++
.../lens/regression/throttling/Throttling.java | 604 ------------------
23 files changed, 2680 insertions(+), 2236 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lens/blob/97fe26d3/lens-regression/src/main/java/org/apache/lens/regression/core/constants/DriverConfig.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/main/java/org/apache/lens/regression/core/constants/DriverConfig.java b/lens-regression/src/main/java/org/apache/lens/regression/core/constants/DriverConfig.java
index cff8e91..5201272 100644
--- a/lens-regression/src/main/java/org/apache/lens/regression/core/constants/DriverConfig.java
+++ b/lens-regression/src/main/java/org/apache/lens/regression/core/constants/DriverConfig.java
@@ -20,7 +20,6 @@
package org.apache.lens.regression.core.constants;
import org.apache.lens.driver.jdbc.JDBCDriverConfConstants;
-import org.apache.lens.server.api.LensConfConstants;
import org.apache.lens.server.api.query.constraint.MaxConcurrentDriverQueriesConstraintFactory;
import org.apache.lens.server.query.constraint.TotalQueryCostCeilingConstraintFactory;
@@ -38,7 +37,6 @@ public class DriverConfig {
MAX_CONCURRENT_QUERIES_PER_QUEUE_KEY;
public static final String JDBC_POOL_SIZE = JDBCDriverConfConstants.ConnectionPoolProperties.
JDBC_POOL_MAX_SIZE.getConfigKey();
- public static final String HIVE_CONSTRAINT_FACTORIES = LensConfConstants.QUERY_LAUNCHING_CONSTRAINT_FACTORIES_SFX;
public static final String MAX_CONCURRENT_CONSTRAINT_FACTORY = MaxConcurrentDriverQueriesConstraintFactory
http://git-wip-us.apache.org/repos/asf/lens/blob/97fe26d3/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/ScheduleResourceHelper.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/ScheduleResourceHelper.java b/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/ScheduleResourceHelper.java
index f2883f0..97e1daf 100644
--- a/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/ScheduleResourceHelper.java
+++ b/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/ScheduleResourceHelper.java
@@ -28,8 +28,8 @@ import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.datatype.DatatypeConfigurationException;
-import org.apache.lens.api.APIResult;
import org.apache.lens.api.ToXMLString;
+import org.apache.lens.api.result.LensAPIResult;
import org.apache.lens.api.scheduler.*;
import org.apache.lens.regression.core.type.MapBuilder;
import org.apache.lens.regression.util.AssertUtil;
@@ -51,8 +51,7 @@ public class ScheduleResourceHelper extends ServiceManagerHelper {
super(envFileName);
}
-
- public String submitJob(String action, XJob job, String sessionHandleString)
+ public Response submitJobReturnResponse(String action, XJob job, String sessionHandleString)
throws JAXBException, IOException, ParseException, DatatypeConfigurationException {
MapBuilder map = new MapBuilder("sessionid", sessionHandleString);
@@ -64,19 +63,27 @@ public class ScheduleResourceHelper extends ServiceManagerHelper {
GenericEntity<JAXBElement<XJob>> entry = new GenericEntity<JAXBElement<XJob>>(xmlJob){};
Response response = this.exec("post", SCHEDULER_JOBS_URL, servLens, null, map, MediaType.APPLICATION_XML_TYPE,
MediaType.APPLICATION_XML, entry);
+ return response;
+ }
+
+ public String submitJob(String action, XJob job, String session)
+ throws JAXBException, IOException, ParseException, DatatypeConfigurationException {
+
+ Response response = submitJobReturnResponse(action, job, session);
AssertUtil.assertSucceededResponse(response);
- SchedulerJobHandle handle = response.readEntity(SchedulerJobHandle.class);
- return handle.getHandleIdString();
+ LensAPIResult<SchedulerJobHandle> handle = response.readEntity(
+ new GenericType<LensAPIResult<SchedulerJobHandle>>(){});
+ return handle.getData().getHandleIdString();
}
- public String submitJob(XJob job, String sessionHandleString)
+ public String submitJob(XJob job, String session)
throws JAXBException, IOException, ParseException, DatatypeConfigurationException {
- return submitJob("submit", job, sessionHandleString);
+ return submitJob("SUBMIT", job, session);
}
- public String submitNScheduleJob(XJob job, String sessionHandleString)
+ public String submitNScheduleJob(XJob job, String session)
throws JAXBException, IOException, ParseException, DatatypeConfigurationException {
- return submitJob("submit_and_schedule", job, sessionHandleString);
+ return submitJob("SUBMIT_AND_SCHEDULE", job, session);
}
public XJob getXJob(String name, String query, String db, String startTime, String endTime, XFrequencyEnum frequency)
@@ -148,27 +155,28 @@ public class ScheduleResourceHelper extends ServiceManagerHelper {
return execution;
}
- public XJob getJobDefinition(String jobHandle, String sessionId, MediaType inputMedia, String outputMedia){
+ public LensAPIResult<XJob> getJobDefinition(String jobHandle, String sessionId, MediaType inputMedia,
+ String outputMedia){
MapBuilder map = new MapBuilder("sessionid", sessionId);
Response response = this.exec("get", SCHEDULER_JOBS_URL + "/" + jobHandle , servLens, null, map, inputMedia,
outputMedia);
AssertUtil.assertSucceededResponse(response);
- return response.readEntity(XJob.class);
+ return response.readEntity(new GenericType<LensAPIResult<XJob>>(){});
}
- public XJob getJobDefinition(String jobHandle, String sessionId){
+ public LensAPIResult<XJob> getJobDefinition(String jobHandle, String sessionId){
return getJobDefinition(jobHandle, sessionId, MediaType.APPLICATION_XML_TYPE, MediaType.APPLICATION_XML);
}
- public APIResult deleteJob(String jobHandle, String sessionId){
+ public LensAPIResult deleteJob(String jobHandle, String sessionId){
MapBuilder map = new MapBuilder("sessionid", sessionId);
Response response = this.exec("delete", SCHEDULER_JOBS_URL + "/" + jobHandle , servLens, null, map, null,
- MediaType.APPLICATION_JSON);
+ MediaType.APPLICATION_XML);
AssertUtil.assertSucceededResponse(response);
- return response.readEntity(APIResult.class);
+ return response.readEntity(LensAPIResult.class);
}
- public APIResult updateJob(XJob job, String jobHandle, String sessionHandleString)
+ public LensAPIResult updateJob(XJob job, String jobHandle, String sessionHandleString)
throws JAXBException, IOException, ParseException, DatatypeConfigurationException {
MapBuilder map = new MapBuilder("sessionid", sessionHandleString);
@@ -177,35 +185,35 @@ public class ScheduleResourceHelper extends ServiceManagerHelper {
Response response = this.exec("put", SCHEDULER_JOBS_URL + "/" + jobHandle, servLens, null, map,
MediaType.APPLICATION_XML_TYPE, MediaType.APPLICATION_XML, ToXMLString.toString(xmlJob));
AssertUtil.assertSucceededResponse(response);
- return response.readEntity(APIResult.class);
+ return response.readEntity(LensAPIResult.class);
}
- public APIResult updateJob(String jobHandle, String action, String sessionHandleString)
+ public LensAPIResult updateJob(String jobHandle, String action, String sessionHandleString)
throws JAXBException, IOException, ParseException, DatatypeConfigurationException {
MapBuilder map = new MapBuilder("sessionid", sessionHandleString, "action", action);
Response response = this.exec("post", SCHEDULER_JOBS_URL + "/" + jobHandle, servLens, null, map);
AssertUtil.assertSucceededResponse(response);
- return response.readEntity(APIResult.class);
+ return response.readEntity(LensAPIResult.class);
}
- public SchedulerJobInfo getJobDetails(String jobHandle, String sessionHandleString){
+ public LensAPIResult<SchedulerJobInfo> getJobDetails(String jobHandle, String sessionHandleString){
MapBuilder map = new MapBuilder("sessionid", sessionHandleString);
Response response = this.exec("get", SCHEDULER_JOBS_URL + "/" + jobHandle + "/info", servLens, null, map,
MediaType.APPLICATION_XML_TYPE, MediaType.APPLICATION_XML);
AssertUtil.assertSucceededResponse(response);
- return response.readEntity(SchedulerJobInfo.class);
+ return response.readEntity(new GenericType<LensAPIResult<SchedulerJobInfo>>(){});
}
public SchedulerJobState getJobStatus(String jobHandle, String sessionHandleString){
- SchedulerJobInfo jobInfo = getJobDetails(jobHandle, sessionHandleString);
+ SchedulerJobInfo jobInfo = getJobDetails(jobHandle, sessionHandleString).getData();
return jobInfo.getJobState();
}
public SchedulerJobState getJobStatus(String jobHandle){
- SchedulerJobInfo jobInfo = getJobDetails(jobHandle, sessionHandleString);
+ SchedulerJobInfo jobInfo = getJobDetails(jobHandle, sessionHandleString).getData();
return jobInfo.getJobState();
}
@@ -218,21 +226,21 @@ public class ScheduleResourceHelper extends ServiceManagerHelper {
return response.readEntity(new GenericType<List<SchedulerJobInstanceInfo>>(){});
}
- public SchedulerJobInstanceInfo getInstanceDetails(String instanceHandle, String sessionId)
+ public LensAPIResult<SchedulerJobInstanceInfo> getInstanceDetails(String instanceHandle, String sessionId)
throws JAXBException, IOException, ParseException, DatatypeConfigurationException {
MapBuilder map = new MapBuilder("sessionid", sessionId);
Response response = this.exec("get", SCHEDULER_INSTANCES_URL + "/" + instanceHandle , servLens, null, map);
AssertUtil.assertSucceededResponse(response);
- return response.readEntity(SchedulerJobInstanceInfo.class);
+ return response.readEntity(new GenericType<LensAPIResult<SchedulerJobInstanceInfo>>(){});
}
- public APIResult updateInstance(String instanceHandle, String action, String sessionId)
+ public LensAPIResult<Boolean> updateInstance(String instanceHandle, String action, String sessionId)
throws JAXBException, IOException, ParseException, DatatypeConfigurationException {
MapBuilder map = new MapBuilder("sessionid", sessionId, "action", action);
Response response = this.exec("post", SCHEDULER_INSTANCES_URL + "/" + instanceHandle , servLens, null, map);
AssertUtil.assertSucceededResponse(response);
- return response.readEntity(APIResult.class);
+ return response.readEntity(new GenericType<LensAPIResult<Boolean>>(){});
}
}
http://git-wip-us.apache.org/repos/asf/lens/blob/97fe26d3/lens-regression/src/main/java/org/apache/lens/regression/util/AssertUtil.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/main/java/org/apache/lens/regression/util/AssertUtil.java b/lens-regression/src/main/java/org/apache/lens/regression/util/AssertUtil.java
index b04e420..c865bf6 100644
--- a/lens-regression/src/main/java/org/apache/lens/regression/util/AssertUtil.java
+++ b/lens-regression/src/main/java/org/apache/lens/regression/util/AssertUtil.java
@@ -44,7 +44,6 @@ public class AssertUtil {
Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode());
APIResult result = response.readEntity(APIResult.class);
Assert.assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED);
- Assert.assertNotNull(result.getMessage());
}
public static void assertSucceededResponse(Response response) {
http://git-wip-us.apache.org/repos/asf/lens/blob/97fe26d3/lens-regression/src/main/resources/template.lens.properties
----------------------------------------------------------------------
diff --git a/lens-regression/src/main/resources/template.lens.properties b/lens-regression/src/main/resources/template.lens.properties
index 0df127d..a44ef28 100644
--- a/lens-regression/src/main/resources/template.lens.properties
+++ b/lens-regression/src/main/resources/template.lens.properties
@@ -18,8 +18,8 @@
######################
-lens.baseurl=
-lens.adminurl=
+lens.baseurl=http://localhost:9999/lensapi/
+lens.adminurl=http://localhost:9999/admin
lens.username=
lens.password=
lens.server.dir=/usr/local/lens/server/
@@ -27,5 +27,8 @@ lens.client.dir=/usr/local/lens/client/
lens.remote.host=
lens.remote.username=
lens.remote.password=
+lens.server.hdfsurl=hdfs://localhost:8020
+lens.server.currentDB=
+job.conf.url=http://localhost:19888/ws/v1/history/mapreduce/jobs/JOB_ID/conf
-######################
\ No newline at end of file
+######################
http://git-wip-us.apache.org/repos/asf/lens/blob/97fe26d3/lens-regression/src/test/java/org/apache/lens/regression/ITSessionTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/ITSessionTests.java b/lens-regression/src/test/java/org/apache/lens/regression/ITSessionTests.java
new file mode 100644
index 0000000..e106071
--- /dev/null
+++ b/lens-regression/src/test/java/org/apache/lens/regression/ITSessionTests.java
@@ -0,0 +1,163 @@
+/**
+ * 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;
+
+import java.io.IOException;
+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.Response;
+
+import javax.xml.bind.JAXBException;
+
+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.regression.core.constants.DriverConfig;
+import org.apache.lens.regression.core.constants.QueryInventory;
+import org.apache.lens.regression.core.constants.SessionURL;
+import org.apache.lens.regression.core.helpers.*;
+import org.apache.lens.regression.core.testHelper.BaseTestClass;
+import org.apache.lens.regression.core.type.MapBuilder;
+import org.apache.lens.regression.util.Util;
+import org.apache.lens.server.api.LensConfConstants;
+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 ITSessionTests extends BaseTestClass {
+
+ private WebTarget servLens;
+ private String sessionHandleString;
+
+ private static Logger logger = Logger.getLogger(ITSessionTests.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();
+ }
+
+
+ @Test(enabled = true)
+ public void testServerConfExposureInSession() throws Exception {
+
+ // conf : lens-site.xml
+ MapBuilder query1 = new MapBuilder("sessionid", sessionHandleString, "key", LensConfConstants.SERVER_DB_JDBC_PASS);
+ Response response1 = lens.sendQuery("get", SessionURL.SESSION_PARAMS_URL, query1);
+ Assert.assertEquals(response1.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
+
+ //Driver conf : jdbc-driver.xml
+ MapBuilder query2 = new MapBuilder("sessionid", sessionHandleString, "key", "lens.driver.jdbc.db.user");
+ Response response2 = lens.sendQuery("get", SessionURL.SESSION_PARAMS_URL, query2);
+ Assert.assertEquals(response2.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
+ }
+
+
+ // LENS-760. Check for only running as queued is not fixed.
+ @Test(enabled = true)
+ public void testRunningQueryContinuationOnSessionClose() throws Exception {
+
+ HashMap<String, String> map = LensUtil.getHashMap(DriverConfig.MAX_CONCURRENT_QUERIES, "10");
+ String hiveDriverConf = lens.getServerDir() + "/conf/drivers/hive/hive1/hivedriver-site.xml";
+
+ try {
+ Util.changeConfig(map, hiveDriverConf);
+ lens.restart();
+
+ String session = sHelper.openSession("test", "test", lens.getCurrentDB());
+ List<QueryHandle> handleList = new ArrayList<QueryHandle>();
+ String sleepQuery = QueryInventory.getSleepQuery("5");
+
+ for(int i=1; i<=5; i++){
+ handleList.add((QueryHandle) qHelper.executeQuery(sleepQuery, null, session).getData());
+ }
+ qHelper.waitForQueryToRun(handleList.get(3));
+
+ List<QueryHandle> running = qHelper.getQueryHandleList(null, "RUNNING", "all", sessionHandleString);
+ sHelper.closeSession(session);
+ Assert.assertTrue(running.size() > 0);
+ logger.info("Running query count " + running.size());
+
+ for(QueryHandle handle : running){
+ LensQuery lq = qHelper.waitForCompletion(handle);
+ Assert.assertEquals(lq.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
+ }
+ } finally {
+ Util.changeConfig(hiveDriverConf);
+ lens.restart();
+ }
+ }
+
+ // Fails. Bug : LENS-904
+ // Check for query continuation on session close.
+ @Test(enabled = true)
+ public void testQueryContinuationOnSessionClose() throws Exception {
+
+ HashMap<String, String> map = LensUtil.getHashMap(DriverConfig.MAX_CONCURRENT_QUERIES, "1");
+ String hiveDriverConf = lens.getServerDir() + "/conf/drivers/hive/hive1/hivedriver-site.xml";
+
+ try {
+ Util.changeConfig(map, hiveDriverConf);
+ lens.restart();
+
+ String session = sHelper.openSession("test", "test", lens.getCurrentDB());
+ List<QueryHandle> handleList = new ArrayList<QueryHandle>();
+ String sleepQuery = QueryInventory.getSleepQuery("3");
+
+ for (int i = 1; i <= 5; i++) {
+ handleList.add((QueryHandle) qHelper.executeQuery(sleepQuery, null, session).getData());
+ }
+
+ sHelper.closeSession(session);
+
+ for (QueryHandle handle : handleList) {
+ LensQuery lq = qHelper.waitForCompletion(handle);
+ Assert.assertEquals(lq.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
+ }
+
+ } finally {
+ Util.changeConfig(hiveDriverConf);
+ lens.restart();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/lens/blob/97fe26d3/lens-regression/src/test/java/org/apache/lens/regression/SessionTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/SessionTests.java b/lens-regression/src/test/java/org/apache/lens/regression/SessionTests.java
deleted file mode 100644
index ce727a1..0000000
--- a/lens-regression/src/test/java/org/apache/lens/regression/SessionTests.java
+++ /dev/null
@@ -1,163 +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;
-
-import java.io.IOException;
-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.Response;
-
-import javax.xml.bind.JAXBException;
-
-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.regression.core.constants.DriverConfig;
-import org.apache.lens.regression.core.constants.QueryInventory;
-import org.apache.lens.regression.core.constants.SessionURL;
-import org.apache.lens.regression.core.helpers.*;
-import org.apache.lens.regression.core.testHelper.BaseTestClass;
-import org.apache.lens.regression.core.type.MapBuilder;
-import org.apache.lens.regression.util.Util;
-import org.apache.lens.server.api.LensConfConstants;
-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 SessionTests extends BaseTestClass {
-
- private WebTarget servLens;
- private String sessionHandleString;
-
- private static Logger logger = Logger.getLogger(SessionTests.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();
- }
-
-
- @Test(enabled = true)
- public void testServerConfExposureInSession() throws Exception {
-
- // conf : lens-site.xml
- MapBuilder query1 = new MapBuilder("sessionid", sessionHandleString, "key", LensConfConstants.SERVER_DB_JDBC_PASS);
- Response response1 = lens.sendQuery("get", SessionURL.SESSION_PARAMS_URL, query1);
- Assert.assertEquals(response1.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
-
- //Driver conf : jdbc-driver.xml
- MapBuilder query2 = new MapBuilder("sessionid", sessionHandleString, "key", "lens.driver.jdbc.db.user");
- Response response2 = lens.sendQuery("get", SessionURL.SESSION_PARAMS_URL, query2);
- Assert.assertEquals(response2.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
- }
-
-
- // LENS-760. Check for only running as queued is not fixed.
- @Test(enabled = true)
- public void testRunningQueryContinuationOnSessionClose() throws Exception {
-
- HashMap<String, String> map = LensUtil.getHashMap(DriverConfig.MAX_CONCURRENT_QUERIES, "10");
- String hiveDriverConf = lens.getServerDir() + "/conf/drivers/hive/hive1/hivedriver-site.xml";
-
- try {
- Util.changeConfig(map, hiveDriverConf);
- lens.restart();
-
- String session = sHelper.openSession("test", "test", lens.getCurrentDB());
- List<QueryHandle> handleList = new ArrayList<QueryHandle>();
- String sleepQuery = QueryInventory.getSleepQuery("5");
-
- for(int i=1; i<=5; i++){
- handleList.add((QueryHandle) qHelper.executeQuery(sleepQuery, null, session).getData());
- }
- qHelper.waitForQueryToRun(handleList.get(3));
-
- List<QueryHandle> running = qHelper.getQueryHandleList(null, "RUNNING", "all", sessionHandleString);
- sHelper.closeSession(session);
- Assert.assertTrue(running.size() > 0);
- logger.info("Running query count " + running.size());
-
- for(QueryHandle handle : running){
- LensQuery lq = qHelper.waitForCompletion(handle);
- Assert.assertEquals(lq.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
- }
- } finally {
- Util.changeConfig(hiveDriverConf);
- lens.restart();
- }
- }
-
- // Fails. Bug : LENS-904
- // Check for query continuation on session close.
- @Test(enabled = true)
- public void testQueryContinuationOnSessionClose() throws Exception {
-
- HashMap<String, String> map = LensUtil.getHashMap(DriverConfig.MAX_CONCURRENT_QUERIES, "1");
- String hiveDriverConf = lens.getServerDir() + "/conf/drivers/hive/hive1/hivedriver-site.xml";
-
- try {
- Util.changeConfig(map, hiveDriverConf);
- lens.restart();
-
- String session = sHelper.openSession("test", "test", lens.getCurrentDB());
- List<QueryHandle> handleList = new ArrayList<QueryHandle>();
- String sleepQuery = QueryInventory.getSleepQuery("3");
-
- for (int i = 1; i <= 5; i++) {
- handleList.add((QueryHandle) qHelper.executeQuery(sleepQuery, null, session).getData());
- }
-
- sHelper.closeSession(session);
-
- for (QueryHandle handle : handleList) {
- LensQuery lq = qHelper.waitForCompletion(handle);
- Assert.assertEquals(lq.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
- }
-
- } finally {
- Util.changeConfig(hiveDriverConf);
- lens.restart();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/lens/blob/97fe26d3/lens-regression/src/test/java/org/apache/lens/regression/client/ITDuplicateQueryTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/client/ITDuplicateQueryTests.java b/lens-regression/src/test/java/org/apache/lens/regression/client/ITDuplicateQueryTests.java
new file mode 100644
index 0000000..c2100da
--- /dev/null
+++ b/lens-regression/src/test/java/org/apache/lens/regression/client/ITDuplicateQueryTests.java
@@ -0,0 +1,188 @@
+/**
+ * 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.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import javax.ws.rs.client.WebTarget;
+
+import org.apache.lens.api.LensConf;
+import org.apache.lens.api.query.*;
+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.helpers.ServiceManagerHelper;
+import org.apache.lens.regression.core.testHelper.BaseTestClass;
+import org.apache.lens.regression.util.Util;
+import org.apache.lens.server.api.util.LensUtil;
+
+import org.apache.log4j.Logger;
+
+import org.testng.Assert;
+import org.testng.annotations.*;
+
+public class ITDuplicateQueryTests extends BaseTestClass {
+
+ WebTarget servLens;
+ private String sessionHandleString;
+
+ private String hiveDriverSitePath = lens.getServerDir() + "/conf/drivers/hive/hive1/hivedriver-site.xml";
+ private static Logger logger = Logger.getLogger(ITDuplicateQueryTests.class);
+
+ @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");
+ sHelper.closeSession();
+ }
+
+ /* 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()));
+ }
+}
http://git-wip-us.apache.org/repos/asf/lens/blob/97fe26d3/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/97fe26d3/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/97fe26d3/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/97fe26d3/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/97fe26d3/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);
- }
- }
-}