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/lens-1381 Commit: 97fe26d3ca0db9b383c8d86feb6bb7b00cacdc7e Parents: 6af57fb Author: Archana H <[email protected]> Authored: Mon Feb 6 13:16:19 2017 +0530 Committer: Archana H <[email protected]> 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); - } - } -}
