Repository: lens Updated Branches: refs/heads/master bf25ac578 -> 5a18cce85
http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/test/java/org/apache/lens/regression/client/ITSavedQueryTests.java ---------------------------------------------------------------------- diff --git a/lens-regression/src/test/java/org/apache/lens/regression/client/ITSavedQueryTests.java b/lens-regression/src/test/java/org/apache/lens/regression/client/ITSavedQueryTests.java new file mode 100644 index 0000000..ef467ef --- /dev/null +++ b/lens-regression/src/test/java/org/apache/lens/regression/client/ITSavedQueryTests.java @@ -0,0 +1,245 @@ +/** + * 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.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.PersistentQueryResult; +import org.apache.lens.api.query.QueryHandle; +import org.apache.lens.api.query.save.*; +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.AssertUtil; +import org.apache.lens.server.api.LensConfConstants; +import org.apache.lens.server.api.util.LensUtil; + +import org.apache.log4j.Logger; + +import org.testng.Assert; +import org.testng.annotations.*; + +import com.google.common.collect.ImmutableSet; + +public class ITSavedQueryTests extends BaseTestClass { + + WebTarget servLens; + private String sessionHandleString; + + private static Logger logger = Logger.getLogger(ITSavedQueryTests.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 { + deleteAllSavedQueries(); + logger.info("Closing Session"); + sHelper.closeSession(); + } + + protected ResourceModifiedResponse getSampleSavedQuery(String name) throws IOException, JAXBException { + + List<Parameter> paramList = new ArrayList<>(); + String query = "select id, name from sample_dim where name != :param"; + paramList.add(savedQueryResourceHelper.getParameter("param", ParameterDataType.STRING, "first", + ParameterCollectionType.SINGLE)); + ResourceModifiedResponse savedQuery = savedQueryResourceHelper.createSavedQuery(query, name, paramList); + return savedQuery; + } + + + @Test + public void listSavedQueries() throws Exception { + + ListResponse savedQueryList = savedQueryResourceHelper.listSavedQueries("0", "10", sessionHandleString); + long initialSize = savedQueryList.getTotalCount(); + + ResourceModifiedResponse rmr1 = getSampleSavedQuery("list-query1"); + ResourceModifiedResponse rmr2 = getSampleSavedQuery("list-query2"); + + savedQueryList = savedQueryResourceHelper.listSavedQueries("0", "10", sessionHandleString); + Assert.assertEquals(savedQueryList.getResoures().size(), initialSize + 2); + + savedQueryList = savedQueryResourceHelper.listSavedQueries(Long.toString(initialSize+1), "10", sessionHandleString); + Assert.assertEquals(savedQueryList.getResoures().size(), 1); + } + + @Test + public void createNRunSavedQuery() throws Exception { + + String session = sHelper.openSession("user1", "pwd1", lens.getCurrentDB()); + sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "false"); + sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false"); + + //creating saved query + List<Parameter> paramList = new ArrayList<>(); + String query = "select id, name from sample_dim where name != :param"; + paramList.add(savedQueryResourceHelper.getParameter("param", ParameterDataType.STRING, "first", + ParameterCollectionType.SINGLE)); + ResourceModifiedResponse rmr = savedQueryResourceHelper.createSavedQuery(query, "query-1", paramList, session); + Assert.assertNotNull(rmr.getId()); + + //running above created saved query + HashMap<String, String> paramMap = LensUtil.getHashMap("param", "second"); + QueryHandle handle = savedQueryResourceHelper.runSavedQuery(rmr.getId(), session, paramMap).getData(); + qHelper.waitForCompletion(handle); + PersistentQueryResult result = (PersistentQueryResult) qHelper.getResultSet(handle); + Assert.assertEquals(result.getNumRows().intValue(), 7); + //TODO : Do result validation. Check if it doesn't contain row having "second" field + + //running above created saved query with different parameter + paramMap = LensUtil.getHashMap("param", "third"); + handle = savedQueryResourceHelper.runSavedQuery(rmr.getId(), session, paramMap).getData(); + qHelper.waitForCompletion(handle); + result = (PersistentQueryResult) qHelper.getResultSet(handle); + Assert.assertEquals(result.getNumRows().intValue(), 7); + + } + + //TODO Enable when LENS-1238 is fixed + @Test(enabled = false) + public void createNRunSavedQueryNumberParam() throws Exception { + + List<Parameter> paramList = new ArrayList<>(); + String query = "cube select id, name from sample_db_dim where id = :value"; + paramList.add(savedQueryResourceHelper.getParameter("value", ParameterDataType.NUMBER, "1", + ParameterCollectionType.SINGLE)); + ResourceModifiedResponse rmr = savedQueryResourceHelper.createSavedQuery(query, "query1", paramList); + + //running above created saved query + HashMap<String, String> paramMap = LensUtil.getHashMap("value", "2"); + QueryHandle handle = savedQueryResourceHelper.runSavedQuery(rmr.getId(), paramMap).getData(); + qHelper.waitForCompletion(handle); + PersistentQueryResult result = (PersistentQueryResult) qHelper.getResultSet(handle); + Assert.assertEquals(result.getNumRows().intValue(), 7); + } + + + @Test + public void createNRunSavedQueryMultipleParams() throws Exception { + + List<Parameter> paramList = new ArrayList<>(); + String savedQuery = "select product_id from sales where time_range_in(delivery_time, :start_time, :end_time)"; + paramList.add(savedQueryResourceHelper.getParameter("start_time", ParameterDataType.STRING, "2015-01-12", + ParameterCollectionType.SINGLE)); + paramList.add(savedQueryResourceHelper.getParameter("end_time", ParameterDataType.STRING, "2015-01-13", + ParameterCollectionType.SINGLE)); + ResourceModifiedResponse rmr = savedQueryResourceHelper.createSavedQuery(savedQuery, "query1", paramList); + + HashMap<String, String> paramMap = LensUtil.getHashMap("start_time", "2015-04-12", "end_time", "2015-04-13"); + QueryHandle handle = savedQueryResourceHelper.runSavedQuery(rmr.getId(), paramMap).getData(); + qHelper.waitForCompletion(handle); + PersistentQueryResult result = (PersistentQueryResult) qHelper.getResultSet(handle); + Assert.assertEquals(result.getNumRows().intValue(), 2); + } + + //TODO Enable when LENS-1237 is fixed + @Test(enabled = false) + public void createNRunSavedQueryMultipleCollectionType() throws Exception { + + List<Parameter> paramList = new ArrayList<>(); + String savedQuery = "cube select id,name from sample_dim where name in :values"; + paramList.add(savedQueryResourceHelper.getParameter("values", ParameterDataType.STRING, "first,second", + ParameterCollectionType.MULTIPLE)); + ResourceModifiedResponse rmr = savedQueryResourceHelper.createSavedQuery(savedQuery, "query1", paramList); + + HashMap<String, String> paramMap = LensUtil.getHashMap("values", "first,second,third"); + QueryHandle handle = savedQueryResourceHelper.runSavedQuery(rmr.getId(), paramMap).getData(); + qHelper.waitForCompletion(handle); + PersistentQueryResult result = (PersistentQueryResult) qHelper.getResultSet(handle); + Assert.assertEquals(result.getNumRows().intValue(), 5); + } + + @Test + public void deleteSavedQuery() throws Exception { + + ResourceModifiedResponse savedQuery = getSampleSavedQuery("query-delete-test"); + Long queryId = savedQuery.getId(); + + //deleting saved query + savedQueryResourceHelper.deleteSavedQuery(queryId, sessionHandleString); + + //checking if the above deleted saved query is being deleted + MapBuilder map = new MapBuilder("sessionid", sessionHandleString, "id", Long.toString(queryId)); + Response res = lens.exec("get", SavedQueryResourceHelper.SAVED_QUERY_BASE_URL + "/" + queryId , servLens, + null, map); + AssertUtil.assertNotFound(res); + } + + + //getting saved query using different session (not the 1 used for creating saved query) + @Test + public void getSavedQueryUsingDiffSessionId() throws Exception { + + ResourceModifiedResponse rmr = getSampleSavedQuery("query-1"); + SavedQuery savedQuery = savedQueryResourceHelper.getSavedQuery(rmr.getId()); + + String newSession = sHelper.openSession("user1", "pwd1", lens.getCurrentDB()); + SavedQuery savedQueryOutput = savedQueryResourceHelper.getSavedQuery(rmr.getId(), newSession); + + Assert.assertEquals(savedQuery, savedQueryOutput); + } + + @Test + public void updateSavedQuery() throws Exception { + + Long queryId = getSampleSavedQuery("query-update-test").getId(); + //Modify query name + SavedQuery savedQuery = savedQueryResourceHelper.getSavedQuery(queryId); + savedQuery.setName("query-rename"); + + savedQueryResourceHelper.updateSavedQuery(queryId, sessionHandleString, savedQuery); + SavedQuery savedQueryModified = savedQueryResourceHelper.getSavedQuery(queryId); + Assert.assertTrue(savedQueryModified.getName().equals("query-rename")); + } + + @Test(enabled = false) //TODO : Enable this once LENS-1341 is fixed + public void getSavedQueryParameters() throws Exception { + String query = "cube select id,name from sample_dim where id = :value"; + ParameterParserResponse res = savedQueryResourceHelper.getSavedQueryParameter(query, sessionHandleString); + ImmutableSet<Parameter> paramList = res.getParameters(); + Assert.assertEquals(paramList.size(), 1); + Assert.assertEquals(paramList.iterator().next().getName(), "value"); + } + + @Test + public void deleteAllSavedQueries() throws Exception { + savedQueryResourceHelper.deleteAllSavedQueries(); + } + +} http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/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 new file mode 100644 index 0000000..4e45c4c --- /dev/null +++ b/lens-regression/src/test/java/org/apache/lens/regression/client/ITScheduleQueryTests.java @@ -0,0 +1,284 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.lens.regression.client; + +import java.lang.reflect.Method; +import java.util.Calendar; +import java.util.List; + +import javax.ws.rs.client.WebTarget; +import javax.ws.rs.core.MediaType; + +import org.apache.lens.api.APIResult; +import org.apache.lens.api.scheduler.*; +import org.apache.lens.regression.core.constants.QueryInventory; +import org.apache.lens.regression.core.helpers.ServiceManagerHelper; +import org.apache.lens.regression.core.testHelper.BaseTestClass; +import org.apache.lens.regression.util.Util; + +import org.apache.log4j.Logger; + +import org.testng.Assert; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + + + +public class ITScheduleQueryTests extends BaseTestClass { + + WebTarget servLens; + private String sessionHandleString; + + private static Logger logger = Logger.getLogger(ITScheduleQueryTests.class); + private static String format = "yyyy-MM-dd HH:mm:ss"; + private static String currentDate = Util.getCurrentDate(format); + + @BeforeClass(alwaysRun = true) + public void initialize() throws Exception { + servLens = ServiceManagerHelper.init(); + } + + @BeforeMethod(alwaysRun = true) + public void setUp(Method method) throws Exception { + logger.info("Test Name: " + method.getName()); + logger.info("Creating a new Session"); + sessionHandleString = sHelper.openSession(lens.getCurrentDB()); + } + + @AfterMethod(alwaysRun = true) + public void closeSession() throws Exception { + logger.info("Closing Session"); + if (sessionHandleString != null){ + sHelper.closeSession(); + } + } + + + @Test + public void submitJob() throws Exception { + String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 4); + XJob xJob = scheduleHelper.getXJob("job-submit", QueryInventory.QUERY, null, currentDate, endDate, + XFrequencyEnum.DAILY); + String jobHandle = scheduleHelper.submitJob(xJob, sessionHandleString); + Assert.assertNotNull(jobHandle); + Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.NEW); + } + + @Test + public void submitNScheduleQuery() throws Exception { + + String startDate = Util.modifyDate(currentDate, format, Calendar.DATE, -1); + String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 3); + XJob xJob = scheduleHelper.getXJob("job-submit-schedule", QueryInventory.JDBC_CUBE_QUERY, null, startDate, + endDate, XFrequencyEnum.DAILY); + String jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString); + Assert.assertNotNull(jobHandle); + Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.SCHEDULED); + + SchedulerJobInfo jobInfo = scheduleHelper.getJobDetails(jobHandle, sessionHandleString); + Assert.assertNotNull(jobInfo); + Assert.assertEquals(jobInfo.getJob().getName(), "job-submit-schedule"); + } + + //submit and schedule and also get job definition + @Test + public void submitNScheduleQueryCronExp() throws Exception { + + String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 1); + XJob xJob = scheduleHelper.getXJob("job-submit-schedule-cronExp", QueryInventory.QUERY, null, currentDate, + endDate, "0/30 * * * * ?"); + String jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString); + Assert.assertNotNull(jobHandle); + + XJob job = scheduleHelper.getJobDefinition(jobHandle, sessionHandleString, MediaType.APPLICATION_XML_TYPE, + MediaType.APPLICATION_XML); + Assert.assertNotNull(job); + Assert.assertEquals(job.getName(), "job-submit-schedule-cronExp"); + } + + + @Test + public void testDeleteJob() throws Exception { + + String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 1); + XJob xJob = scheduleHelper.getXJob("job-delete", QueryInventory.QUERY, null, currentDate, endDate, + "0/30 * * * * ?"); + + //delete in submit state + String jobHandle = scheduleHelper.submitJob(xJob, sessionHandleString); + APIResult res = scheduleHelper.deleteJob(jobHandle, sessionHandleString); +// Assert.assertEquals(res.getStatus(), APIResult.Status.SUCCEEDED); + Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.DELETED); + + //delete in scheduled state + jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString); + res = scheduleHelper.deleteJob(jobHandle, sessionHandleString); +// Assert.assertEquals(res.getStatus(), APIResult.Status.SUCCEEDED); + Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.DELETED); + + //delete in suspended state + jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString); + scheduleHelper.updateJob(jobHandle, "SUSPEND", sessionHandleString); + Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.SUSPENDED); + res = scheduleHelper.deleteJob(jobHandle, sessionHandleString); +// Assert.assertEquals(res.getStatus(), APIResult.Status.SUCCEEDED); + Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.DELETED); + + //delete in expired state + jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString); + scheduleHelper.updateJob(jobHandle, "EXPIRE", sessionHandleString); + Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.EXPIRED); + res = scheduleHelper.deleteJob(jobHandle, sessionHandleString); +// Assert.assertEquals(res.getStatus(), APIResult.Status.SUCCEEDED); + Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.DELETED); + } + + @Test + public void testUpdateJob() throws Exception { + + String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 4); + XJob job = scheduleHelper.getXJob("job-update", QueryInventory.QUERY, null, currentDate, endDate, + XFrequencyEnum.WEEKLY); + String jobHandle = scheduleHelper.submitJob(job, sessionHandleString); + + XJob tmp = scheduleHelper.getJobDefinition(jobHandle, sessionHandleString); + tmp.setName("modified-name"); + endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 6); + tmp.setEndTime(Util.getGregorianCalendar(endDate)); + APIResult res = scheduleHelper.updateJob(tmp, jobHandle, sessionHandleString); + Assert.assertEquals(res.getStatus(), APIResult.Status.SUCCEEDED); + + XJob modifiedJob = scheduleHelper.getJobDefinition(jobHandle, sessionHandleString); + Assert.assertEquals(modifiedJob.getName(), "modified-name"); + String modifiedEndTime = Util.getDateStringFromGregorainCalender(modifiedJob.getEndTime(), format); + Assert.assertEquals(modifiedEndTime, endDate); + } + + @Test + public void testUpdateJobAction() throws Exception { + + String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 1); + XJob job = scheduleHelper.getXJob("job-update-action", QueryInventory.QUERY, null, currentDate, endDate, + "0/20 * * * * ?"); + String jobHandle = scheduleHelper.submitJob(job, sessionHandleString); + Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.NEW); + + scheduleHelper.updateJob(jobHandle, "SCHEDULE", sessionHandleString); + Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.SCHEDULED); + + scheduleHelper.updateJob(jobHandle, "SUSPEND", sessionHandleString); + Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.SUSPENDED); + + scheduleHelper.updateJob(jobHandle, "RESUME", sessionHandleString); + Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.SCHEDULED); + + scheduleHelper.updateJob(jobHandle, "EXPIRE", sessionHandleString); + Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.EXPIRED); + } + + @Test + public void testGetAllInstancesOfAJob() throws Exception { + + String startDate = Util.modifyDate(Util.getCurrentDate(format), format, Calendar.SECOND, 5); + String endDate = Util.modifyDate(startDate, format, Calendar.MINUTE, 4); + XJob xJob = scheduleHelper.getXJob("job-update-action", QueryInventory.QUERY, null, startDate, endDate, + "0/20 * * * * ?"); + String jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString); + + Thread.sleep(60000); + + List<SchedulerJobInstanceInfo> instanceList = scheduleHelper.getAllInstancesOfJob(jobHandle, "10", + sessionHandleString); + Assert.assertEquals(instanceList.size(), 3); + } + + + @Test + public void updateInstance() throws Exception { + + String startDate = Util.modifyDate(Util.getCurrentDate(format), format, Calendar.SECOND, 10); + String endDate = Util.modifyDate(startDate, format, Calendar.MINUTE, 3); + XJob xJob = scheduleHelper.getXJob("job-update-action", QueryInventory.JDBC_DIM_QUERY, null, startDate, endDate, + "0/20 * * * * ?"); + String jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString); + + Thread.sleep(20000); + + List<SchedulerJobInstanceInfo> instanceList = scheduleHelper.getAllInstancesOfJob(jobHandle, "10", + sessionHandleString); + + Thread.sleep(10000); + + APIResult res = scheduleHelper.updateInstance(instanceList.get(0).getId().getHandleIdString(), + "RERUN", sessionHandleString); + Assert.assertEquals(res.getStatus(), APIResult.Status.SUCCEEDED); + + SchedulerJobInstanceInfo instanceInfo = scheduleHelper.getInstanceDetails(instanceList.get(0).getId() + .getHandleIdString(), sessionHandleString); + List<SchedulerJobInstanceRun> runList = instanceInfo.getInstanceRunList(); + Assert.assertEquals(runList.size(), 2); + Assert.assertEquals(runList.get(1).getRunId(), 2); + } + + + @Test(enabled = true) + public void restart() throws Exception { + + String startDate = Util.modifyDate(Util.getCurrentDate(format), format, Calendar.SECOND, 5); + String endDate = Util.modifyDate(startDate, format, Calendar.MINUTE, 2); + XJob xJob = scheduleHelper.getXJob("job-restart", QueryInventory.QUERY, null, startDate, endDate, "0/20 * * * * ?"); + + String jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString); + Assert.assertNotNull(jobHandle); + + Thread.sleep(20000); + lens.stop(); + Thread.sleep(20000); + lens.start(); + Thread.sleep(60000); + + List<SchedulerJobInstanceInfo> instanceList = scheduleHelper.getAllInstancesOfJob(jobHandle, "50", + sessionHandleString); + Assert.assertEquals(instanceList.size(), 6); + } + + //LENS + @Test + public void testMisfiredEvents() throws Exception { + + String startDate = Util.modifyDate(currentDate, format, Calendar.DATE, -2); + String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 3); + XJob xJob = scheduleHelper.getXJob("job-misfire", QueryInventory.JDBC_CUBE_QUERY, null, startDate, + endDate, XFrequencyEnum.DAILY); + String jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString); + Assert.assertNotNull(jobHandle); + Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.SCHEDULED); + + List<SchedulerJobInstanceInfo> instanceList = scheduleHelper.getAllInstancesOfJob(jobHandle, "10", + sessionHandleString); + Assert.assertEquals(instanceList.size(), 3); + + if (jobHandle!=null){ + scheduleHelper.updateJob(jobHandle, "EXPIRE", sessionHandleString); + } + } +} http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/test/java/org/apache/lens/regression/client/KillQueryTests.java ---------------------------------------------------------------------- diff --git a/lens-regression/src/test/java/org/apache/lens/regression/client/KillQueryTests.java b/lens-regression/src/test/java/org/apache/lens/regression/client/KillQueryTests.java index e7f40e7..a39b2fe 100644 --- a/lens-regression/src/test/java/org/apache/lens/regression/client/KillQueryTests.java +++ b/lens-regression/src/test/java/org/apache/lens/regression/client/KillQueryTests.java @@ -44,11 +44,6 @@ public class KillQueryTests extends BaseTestClass { WebTarget servLens; private String sessionHandleString; - LensServerHelper lens = getLensServerHelper(); - MetastoreHelper mHelper = getMetastoreHelper(); - SessionHelper sHelper = getSessionHelper(); - QueryHelper qHelper = getQueryHelper(); - private final String hdfsJarPath = lens.getServerHdfsUrl() + "/tmp"; private final String localJarPath = new File("").getAbsolutePath() + "/lens-regression/target/testjars/"; private final String hiveUdfJar = "hiveudftest.jar"; @@ -234,13 +229,12 @@ public class KillQueryTests extends BaseTestClass { 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, "Query is Not Successful"); + Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL); qHelper.killQuery(null, "SUCCESSFUL"); QueryStatus queryStatus3 = qHelper.getQueryStatus(queryHandle3); - Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.SUCCESSFUL, "Not able to kill successful query"); + Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.SUCCESSFUL); } //TODO: enable when the bug is fixed. http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/test/java/org/apache/lens/regression/client/SessionResourceTests.java ---------------------------------------------------------------------- diff --git a/lens-regression/src/test/java/org/apache/lens/regression/client/SessionResourceTests.java b/lens-regression/src/test/java/org/apache/lens/regression/client/SessionResourceTests.java index 00fc729..f6a10e8 100644 --- a/lens-regression/src/test/java/org/apache/lens/regression/client/SessionResourceTests.java +++ b/lens-regression/src/test/java/org/apache/lens/regression/client/SessionResourceTests.java @@ -37,15 +37,12 @@ import org.apache.lens.api.StringList; import org.apache.lens.api.query.LensQuery; import org.apache.lens.api.query.QueryHandle; import org.apache.lens.api.query.QueryStatus; +import org.apache.lens.api.session.UserSessionInfo; import org.apache.lens.regression.core.constants.MetastoreURL; import org.apache.lens.regression.core.constants.QueryInventory; import org.apache.lens.regression.core.constants.QueryURL; import org.apache.lens.regression.core.constants.SessionURL; -import org.apache.lens.regression.core.helpers.LensServerHelper; -import org.apache.lens.regression.core.helpers.MetastoreHelper; -import org.apache.lens.regression.core.helpers.QueryHelper; import org.apache.lens.regression.core.helpers.ServiceManagerHelper; -import org.apache.lens.regression.core.helpers.SessionHelper; import org.apache.lens.regression.core.testHelper.BaseTestClass; import org.apache.lens.regression.core.type.FormBuilder; import org.apache.lens.regression.core.type.MapBuilder; @@ -66,11 +63,6 @@ public class SessionResourceTests extends BaseTestClass { WebTarget servLens; private String sessionHandleString; - LensServerHelper lens = getLensServerHelper(); - MetastoreHelper mHelper = getMetastoreHelper(); - SessionHelper sHelper = getSessionHelper(); - QueryHelper qHelper = getQueryHelper(); - private final String hdfsJarPath = lens.getServerHdfsUrl() + "/tmp"; private final String localJarPath = new File("").getAbsolutePath() + "/lens-regression/target/testjars/"; private final String hiveUdfJar = "hiveudftest.jar"; @@ -133,7 +125,7 @@ public class SessionResourceTests extends BaseTestClass { "value", newParamsValue); FormBuilder formData = new FormBuilder(resource); Response response = lens.sendForm("put", SessionURL.SESSION_PARAMS_URL, formData); - AssertUtil.assertSucceeded(response); + AssertUtil.assertSucceededResult(response); String value = sHelper.getSessionParam(newParamsKey); Assert.assertEquals(value, newParamsValue, "From Session Params Put"); @@ -161,7 +153,7 @@ public class SessionResourceTests extends BaseTestClass { FormBuilder formData = new FormBuilder(resource); Response response = lens.sendForm("put", SessionURL.SESSION_PARAMS_URL, formData); - AssertUtil.assertSucceeded(response); + AssertUtil.assertSucceededResult(response); lens.restart(); @@ -175,8 +167,7 @@ public class SessionResourceTests extends BaseTestClass { Assert.assertEquals(map.size(), 1, "Params List contains more than one param"); } - - @Test + @Test(enabled = true) public void testSessionHDFSResourcePutNDelete() throws Exception { String path = hdfsJarPath + "/" + hiveUdfJar; @@ -190,7 +181,8 @@ public class SessionResourceTests extends BaseTestClass { queryHandle = (QueryHandle) qHelper.executeQuery(createSleepFunction).getData(); lensQuery = qHelper.waitForCompletion(queryHandle); - Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.FAILED); + // TODO : Works only when there is single instance for each driver +// Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.FAILED); } @@ -209,7 +201,8 @@ public class SessionResourceTests extends BaseTestClass { queryHandle = (QueryHandle) qHelper.executeQuery(createSleepFunction).getData(); lensQuery = qHelper.waitForCompletion(queryHandle); - Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.FAILED); +// TODO : Works only when there is single instance for each driver +// Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.FAILED); } @@ -240,16 +233,16 @@ public class SessionResourceTests extends BaseTestClass { // Get Session resources with closed session Response response = lens.sendQuery("get", SessionURL.SESSION_LIST_RESOURCE_URL, query); - AssertUtil.assertGoneResponse(response); + AssertUtil.assertGone(response); // Get Session params with closd session response = lens.sendQuery("get", SessionURL.SESSION_PARAMS_URL, query); - AssertUtil.assertGoneResponse(response); + AssertUtil.assertGone(response); //Setting DB with closed session Handle response = lens.exec("post", MetastoreURL.METASTORE_DATABASES_URL, servLens, null, query, MediaType.APPLICATION_XML_TYPE, null, lens.getCurrentDB()); - AssertUtil.assertGoneResponse(response); + AssertUtil.assertGone(response); FormBuilder formData = new FormBuilder(); formData.add("sessionid", newSession); @@ -260,13 +253,13 @@ public class SessionResourceTests extends BaseTestClass { formData.add("operation", "EXPLAIN"); response = lens.exec("post", QueryURL.QUERY_URL, servLens, null, null, MediaType.MULTIPART_FORM_DATA_TYPE, MediaType.APPLICATION_XML, formData.getForm()); - AssertUtil.assertGoneResponse(response); + AssertUtil.assertGone(response); //Execute Query with closed session Handle formData.add("operation", "EXECUTE"); response = lens.exec("post", QueryURL.QUERY_URL, servLens, null, null, MediaType.MULTIPART_FORM_DATA_TYPE, MediaType.APPLICATION_XML, formData.getForm()); - AssertUtil.assertGoneResponse(response); + AssertUtil.assertGone(response); } @@ -279,7 +272,8 @@ public class SessionResourceTests extends BaseTestClass { String curDB = mHelper.getCurrentDatabase(newSession); Assert.assertEquals(curDB, newDb, "Could not open session with passed db"); sHelper.closeSession(newSession); - mHelper.dropDatabase(newDb); + //TODO : Enable when drop table is fixed +// mHelper.dropDatabase(newDb); } @Test @@ -296,7 +290,7 @@ public class SessionResourceTests extends BaseTestClass { public void testOpenSessionDBDoesnotExist() throws Exception { Response response = sHelper.openSessionReturnResponse("test", "test", "dbdoesnotexist", null); - AssertUtil.assertFailedResponse(response); + AssertUtil.assertNotFound(response); } @Test @@ -316,8 +310,9 @@ public class SessionResourceTests extends BaseTestClass { Assert.assertEquals(curDB, newDb1, "Could not open session with passed db"); sHelper.closeSession(newSession); - mHelper.dropDatabase(newDb); - mHelper.dropDatabase(newDb1); + //TODO : Enable when drop table issue is fixed +// mHelper.dropDatabase(newDb); +// mHelper.dropDatabase(newDb1); } //Fails as closeSession cannot take json as input,. (No API can take json as input) @@ -341,4 +336,68 @@ public class SessionResourceTests extends BaseTestClass { MediaType.APPLICATION_JSON, null); AssertUtil.assertSucceededResponse(response); } + + + @Test(enabled = true) + public void listSessionTest() throws Exception { + + int origSize = sHelper.getSessionList().size(); + for(int i=1; i<4; i++) { + sHelper.openSession("u" + i, "p" + i); + } + List<UserSessionInfo> sessionList = sHelper.getSessionList(); + Assert.assertEquals(sessionList.size(), origSize+3); + } + + //TODO : enable when session handle returned is entire xml instead of just public id + @Test(enabled = false) + public void listSessionUserSessionInfoVerification() throws Exception { + + List<UserSessionInfo> sessionList = sHelper.getSessionList(); + for(UserSessionInfo u : sessionList){ + System.out.println(u.toString() + "\n"); + sHelper.closeSession(u.getHandle()); + } + + String session1 = sHelper.openSession("u1", "p1", lens.getCurrentDB()); + String session2 = sHelper.openSession("u2", "p2", lens.getCurrentDB()); + + QueryHandle qh1 = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_DIM_QUERY, null, session1).getData(); + QueryHandle qh2 = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_DIM_QUERY, null, session2).getData(); + + sessionList = sHelper.getSessionList(); + Assert.assertEquals(sessionList.size(), 2); + + UserSessionInfo s1 = sessionList.get(0); + Assert.assertEquals(s1.getUserName(), "u1"); + List<QueryHandle> queryHandleList = s1.getActiveQueries(); + Assert.assertEquals(queryHandleList.size(), 2); + Assert.assertTrue(queryHandleList.contains(qh1)); + Assert.assertTrue(queryHandleList.contains(qh2)); + + for(UserSessionInfo u : sessionList){ + System.out.println(u.toString() + "\n"); + sHelper.closeSession(u.getHandle()); + } + } + + //LENS-1199 + @Test(enabled = true) + public void multipleCloseSessionForActiveQueries() throws Exception { + String session = sHelper.openSession("diff", "diff", lens.getCurrentDB()); + QueryHandle qh = (QueryHandle) qHelper.executeQuery(QueryInventory.getSleepQuery("3"), null, session).getData(); + sHelper.closeSession(session); + sHelper.closeSession(session); + } + + //LENS-1199 + @Test(enabled = true) + public void multipleCloseSession() throws Exception { + String session = sHelper.openSession("diff", "diff", lens.getCurrentDB()); + sHelper.closeSession(session); + MapBuilder query = new MapBuilder("sessionid", session); + Response response = lens.exec("delete", SessionURL.SESSION_BASE_URL, servLens, null, query); + AssertUtil.assertGone(response); + } + } http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/test/java/org/apache/lens/regression/config/ITServerConfigTests.java ---------------------------------------------------------------------- diff --git a/lens-regression/src/test/java/org/apache/lens/regression/config/ITServerConfigTests.java b/lens-regression/src/test/java/org/apache/lens/regression/config/ITServerConfigTests.java index 8294075..3503310 100644 --- a/lens-regression/src/test/java/org/apache/lens/regression/config/ITServerConfigTests.java +++ b/lens-regression/src/test/java/org/apache/lens/regression/config/ITServerConfigTests.java @@ -40,11 +40,7 @@ import org.apache.lens.regression.core.constants.MetastoreURL; import org.apache.lens.regression.core.constants.QueryInventory; import org.apache.lens.regression.core.constants.QueryURL; import org.apache.lens.regression.core.constants.SessionURL; -import org.apache.lens.regression.core.helpers.LensServerHelper; -import org.apache.lens.regression.core.helpers.MetastoreHelper; -import org.apache.lens.regression.core.helpers.QueryHelper; import org.apache.lens.regression.core.helpers.ServiceManagerHelper; -import org.apache.lens.regression.core.helpers.SessionHelper; import org.apache.lens.regression.core.testHelper.BaseTestClass; import org.apache.lens.regression.core.type.FormBuilder; import org.apache.lens.regression.core.type.MapBuilder; @@ -67,11 +63,6 @@ public class ITServerConfigTests extends BaseTestClass { private WebTarget servLens; private String sessionHandleString; - LensServerHelper lens = getLensServerHelper(); - MetastoreHelper mHelper = getMetastoreHelper(); - SessionHelper sHelper = getSessionHelper(); - QueryHelper qHelper = getQueryHelper(); - private final String confFilePath = lens.getServerDir() + "/conf/lens-site.xml"; private final String backupConfFilePath = lens.getServerDir() + "/conf/backup-lens-site.xml"; private static String lensKillCmd = "ps -ef | grep -i lens | grep -v lens-client | grep -v \"grep\" | " @@ -96,9 +87,11 @@ public class ITServerConfigTests extends BaseTestClass { @AfterMethod(alwaysRun = true) public void restoreConfig() throws JSchException, IOException, LensException, InterruptedException { logger.info("Executing after method\n"); - sHelper.closeSession(); Util.runRemoteCommand("cp " + backupConfFilePath + " " + confFilePath); lens.restart(); + if (sessionHandleString != null){ + sHelper.closeSession(); + } } @@ -330,11 +323,13 @@ public class ITServerConfigTests extends BaseTestClass { Util.changeConfig(map, confFilePath); lens.restart(); - response = mHelper.exec("delete", MetastoreURL.METASTORE_DATABASES_URL + "/" + newDb, servLens, + //TODO : Enable this when delete db issue is fixed +/* response = mHelper.exec("delete", MetastoreURL.METASTORE_DATABASES_URL + "/" + newDb, servLens, null, query, MediaType.APPLICATION_XML_TYPE, null); AssertUtil.assertSucceededResponse(response); allDb = mHelper.listDatabases(); - Assert.assertFalse(allDb.getElements().contains(newDb.toLowerCase()), "Unable to Create DB"); + Assert.assertFalse(allDb.getElements().contains(newDb.toLowerCase()), "Unable to Create DB");*/ + } @@ -439,29 +434,21 @@ public class ITServerConfigTests extends BaseTestClass { sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false"); sHelper.setAndValidateParam(LensConfConstants.QUERY_MAIL_NOTIFY, "false"); - try { - HashMap<String, String> map = LensUtil.getHashMap(LensConfConstants.INMEMORY_RESULT_SET_TTL_SECS, "20", - LensConfConstants.PURGE_INTERVAL, "10000"); //in millis - Util.changeConfig(map, confFilePath); - lens.restart(); - - QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(query).getData(); - LensQuery lensQuery = qHelper.waitForCompletion(queryHandle); - Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL); - - Response response = qHelper.getResultSetResponse(queryHandle, "0", "100", sessionHandleString); - Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode()); + HashMap<String, String> map = LensUtil.getHashMap(LensConfConstants.INMEMORY_RESULT_SET_TTL_SECS, "20", + LensConfConstants.PURGE_INTERVAL, "10000"); //in millis + Util.changeConfig(map, confFilePath); + lens.restart(); + QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(query).getData(); + LensQuery lensQuery = qHelper.waitForCompletion(queryHandle); + Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL); - Thread.sleep(30000); //waiting till query gets purged ( ttl + purge interval time) + Response response = qHelper.getResultSetResponse(queryHandle, "0", "100", sessionHandleString); + Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode()); - response = qHelper.getResultSetResponse(queryHandle, "0", "100", sessionHandleString); - Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode()); + Thread.sleep(30000); //waiting till query gets purged ( ttl + purge interval time) - } finally { - if (sessionHandleString != null) { - sHelper.closeSession(sessionHandleString); - } - } + response = qHelper.getResultSetResponse(queryHandle, "0", "100", sessionHandleString); + Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode()); } // Behaviour is not the same for hive query before result is purged @@ -485,11 +472,14 @@ public class ITServerConfigTests extends BaseTestClass { Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode()); response = qHelper.getResultSetResponse(queryHandle, "0", "100", sessionHandleString); - //Currently its throwing 500 which needs to be fixed. LENS-823 - Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode()); + + //TODO : enable this when LENS-823 is fixed + //Currently its throwing 500 which needs to be fixed. +// Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode()); } + //LENS-833 @Test(enabled = true) public void testMaxSessionPerUser() throws Exception { @@ -563,5 +553,8 @@ public class ITServerConfigTests extends BaseTestClass { } } } + + + } http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/test/java/org/apache/lens/regression/config/ITSessionConfigTests.java ---------------------------------------------------------------------- diff --git a/lens-regression/src/test/java/org/apache/lens/regression/config/ITSessionConfigTests.java b/lens-regression/src/test/java/org/apache/lens/regression/config/ITSessionConfigTests.java index bf9de6c..2deb043 100644 --- a/lens-regression/src/test/java/org/apache/lens/regression/config/ITSessionConfigTests.java +++ b/lens-regression/src/test/java/org/apache/lens/regression/config/ITSessionConfigTests.java @@ -30,11 +30,7 @@ import org.apache.lens.api.query.*; import org.apache.lens.cube.parse.CubeQueryConfUtil; import org.apache.lens.regression.client.SessionResourceTests; import org.apache.lens.regression.core.constants.QueryInventory; -import org.apache.lens.regression.core.helpers.LensServerHelper; -import org.apache.lens.regression.core.helpers.MetastoreHelper; -import org.apache.lens.regression.core.helpers.QueryHelper; import org.apache.lens.regression.core.helpers.ServiceManagerHelper; -import org.apache.lens.regression.core.helpers.SessionHelper; import org.apache.lens.regression.core.testHelper.BaseTestClass; import org.apache.lens.regression.util.Util; import org.apache.lens.server.api.LensConfConstants; @@ -53,11 +49,6 @@ public class ITSessionConfigTests extends BaseTestClass{ WebTarget servLens; String sessionHandleString; - LensServerHelper lens = getLensServerHelper(); - MetastoreHelper mHelper = getMetastoreHelper(); - SessionHelper sHelper = getSessionHelper(); - QueryHelper qHelper = getQueryHelper(); - private static String queryResultParentDirPath = "/tmp/lensreports"; private String lensConfFilePath = lens.getServerDir() + "/conf/lens-site.xml"; @@ -78,7 +69,9 @@ public class ITSessionConfigTests extends BaseTestClass{ public void restoreConfig() throws JSchException, IOException, JAXBException, LensException{ qHelper.killQuery(null, "QUEUED", "all"); qHelper.killQuery(null, "RUNNING", "all"); - sHelper.closeSession(); + if (sessionHandleString != null) { + sHelper.closeSession(); + } } @@ -104,14 +97,6 @@ public class ITSessionConfigTests extends BaseTestClass{ InMemoryQueryResult inmemory = (InMemoryQueryResult) qHelper.getResultSet(queryHandle, "0", "100"); Assert.assertNotNull(inmemory); - - try { - PersistentQueryResult result = (PersistentQueryResult)qHelper.getResultSet(queryHandle, "0", "100"); - Assert.assertFalse(true); - } catch(Exception e){ - logger.info(e.getMessage().toString()); - } - } @Test(enabled=true, dataProvider="query_provider") http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/test/java/org/apache/lens/regression/throttling/ITCostTests.java ---------------------------------------------------------------------- diff --git a/lens-regression/src/test/java/org/apache/lens/regression/throttling/ITCostTests.java b/lens-regression/src/test/java/org/apache/lens/regression/throttling/ITCostTests.java index 8fea48b..aeae8aa 100644 --- a/lens-regression/src/test/java/org/apache/lens/regression/throttling/ITCostTests.java +++ b/lens-regression/src/test/java/org/apache/lens/regression/throttling/ITCostTests.java @@ -53,11 +53,6 @@ public class ITCostTests extends BaseTestClass { private WebTarget servLens; private String sessionHandleString; - LensServerHelper lens = getLensServerHelper(); - MetastoreHelper mHelper = getMetastoreHelper(); - SessionHelper sHelper = getSessionHelper(); - QueryHelper qHelper = getQueryHelper(); - public static final String COST_95 = QueryInventory.getQueryFromInventory("HIVE.COST_95"); public static final String COST_60 = QueryInventory.getQueryFromInventory("HIVE.COST_60"); public static final String COST_30 = QueryInventory.getQueryFromInventory("HIVE.COST_30"); @@ -284,7 +279,7 @@ public class ITCostTests extends BaseTestClass { break; } - Assert.assertTrue(running.size() < 4); + Assert.assertTrue(running.size() <= 5); TimeUnit.SECONDS.sleep(sleepTime); } @@ -299,7 +294,7 @@ public class ITCostTests extends BaseTestClass { //TODO : Add queue level throttling along with user ceiling constraint /* - * Queue number shouldn't change with in the same prority + * LENS-995 : Queue number shouldn't change with in the same prority */ @Test(enabled = true) http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/test/java/org/apache/lens/regression/throttling/Throttling.java ---------------------------------------------------------------------- diff --git a/lens-regression/src/test/java/org/apache/lens/regression/throttling/Throttling.java b/lens-regression/src/test/java/org/apache/lens/regression/throttling/Throttling.java index 91d447b..abf7263 100644 --- a/lens-regression/src/test/java/org/apache/lens/regression/throttling/Throttling.java +++ b/lens-regression/src/test/java/org/apache/lens/regression/throttling/Throttling.java @@ -34,11 +34,7 @@ import org.apache.lens.cube.parse.CubeQueryConfUtil; import org.apache.lens.driver.hive.HiveDriver; import org.apache.lens.regression.core.constants.DriverConfig; import org.apache.lens.regression.core.constants.QueryInventory; -import org.apache.lens.regression.core.helpers.LensServerHelper; -import org.apache.lens.regression.core.helpers.MetastoreHelper; -import org.apache.lens.regression.core.helpers.QueryHelper; import org.apache.lens.regression.core.helpers.ServiceManagerHelper; -import org.apache.lens.regression.core.helpers.SessionHelper; import org.apache.lens.regression.core.testHelper.BaseTestClass; import org.apache.lens.regression.util.Util; import org.apache.lens.server.api.LensConfConstants; @@ -54,22 +50,19 @@ public class Throttling extends BaseTestClass { WebTarget servLens; String sessionHandleString; - LensServerHelper lens = getLensServerHelper(); - MetastoreHelper mHelper = getMetastoreHelper(); - SessionHelper sHelper = getSessionHelper(); - QueryHelper qHelper = getQueryHelper(); - public static final String SLEEP_QUERY = QueryInventory.getSleepQuery("5"); - public static final String COST_95 = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_95"), "7"); - public static final String COST_60 = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_60"), "7"); - public static final String COST_30 = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_30"), "6"); - public static final String COST_20 = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_20"), "6"); - public static final String COST_10 = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_10"), "6"); - public static final String COST_5 = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_5"), "5"); + public static final String COST_95 = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_95"), "5"); + public static final String COST_60 = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_60"), "5"); + public static final String COST_30 = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_30"), "5"); + public static final String COST_20 = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_20"), "4"); + public static final String COST_10 = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_10"), "4"); + public static final String COST_5 = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_5"), "3"); public static final String JDBC_QUERY1 = QueryInventory.getQueryFromInventory("JDBC.QUERY1"); private static String hiveDriver = "hive/hive1"; - String hiveDriverConf = lens.getServerDir() + "/conf/drivers/hive/hive1/hivedriver-site.xml"; + private final String hiveDriverConf = lens.getServerDir() + "/conf/drivers/hive/hive1/hivedriver-site.xml"; + private final String backupConfFilePath = lens.getServerDir() + "/conf/drivers/hive/hive1/backup-hivedriver-site.xml"; + private static final long SECONDS_IN_A_MINUTE = 60; private String session1 = null, session2 = null; //TODO : Read queue names from property file @@ -89,10 +82,11 @@ public class Throttling extends BaseTestClass { @BeforeMethod(alwaysRun = true) public void setUp(Method method) throws Exception { logger.info("Test Name: " + method.getName()); + Util.runRemoteCommand("cp " + hiveDriverConf + " " + backupConfFilePath); + sessionHandleString = sHelper.openSession(lens.getCurrentDB()); session1 = sHelper.openSession("diff1", "diff1", lens.getCurrentDB()); session2 = sHelper.openSession("diff2", "diff2", lens.getCurrentDB()); - sHelper.setAndValidateParam(CubeQueryConfUtil.FAIL_QUERY_ON_PARTIAL_DATA, "false"); sHelper.setAndValidateParam(session1, CubeQueryConfUtil.FAIL_QUERY_ON_PARTIAL_DATA, "false"); sHelper.setAndValidateParam(session2, CubeQueryConfUtil.FAIL_QUERY_ON_PARTIAL_DATA, "false"); @@ -108,12 +102,12 @@ public class Throttling extends BaseTestClass { sHelper.closeSession(session2); sHelper.closeSession(sessionHandleString); - Util.changeConfig(hiveDriverConf); - lens.restart(); + Util.runRemoteCommand("cp " + backupConfFilePath + " " + hiveDriverConf); } - @AfterClass(alwaysRun = true) + @AfterClass(alwaysRun = false) public void closeSession() throws Exception { + lens.restart(); } @@ -349,6 +343,43 @@ public class Throttling extends BaseTestClass { Assert.assertEquals(qHelper.getQueryStatus(handleList.get(4)).getStatus(), QueryStatus.Status.RUNNING); } + // LENS-1027 + @Test(enabled = true) + public void queueDefaultThresholdConstraint() throws Exception { + + int maxConcurrent = 5, queue1Count = 1, queue2Count = 2; + HashMap<String, String> map = LensUtil.getHashMap(DriverConfig.MAX_CONCURRENT_QUERIES, + String.valueOf(maxConcurrent), DriverConfig.QUEUE_MAX_CONCURRENT, + "*=" + String.valueOf(queue1Count) + "," + queue2 + "=" + String.valueOf(queue2Count)); + List<QueryHandle> handleList = new ArrayList<>(); + + Util.changeConfig(map, hiveDriverConf); + lens.restart(); + + sHelper.setAndValidateParam(LensConfConstants.MAPRED_JOB_QUEUE_NAME, queue1); + handleList.add((QueryHandle) qHelper.executeQuery(COST_60).getData()); + handleList.add((QueryHandle) qHelper.executeQuery(COST_95).getData()); + + sHelper.setAndValidateParam(LensConfConstants.MAPRED_JOB_QUEUE_NAME, queue2); + handleList.add((QueryHandle) qHelper.executeQuery(COST_60).getData()); + handleList.add((QueryHandle) qHelper.executeQuery(COST_95).getData()); + handleList.add((QueryHandle) qHelper.executeQuery(COST_95).getData()); + + Thread.sleep(2000); + + List<QueryStatus.Status> statusList = new ArrayList<>(); + for (QueryHandle handle : handleList){ + statusList.add(qHelper.getQueryStatus(handle).getStatus()); + } + + Assert.assertEquals(statusList.get(0), QueryStatus.Status.RUNNING); + Assert.assertEquals(statusList.get(1), QueryStatus.Status.QUEUED); + Assert.assertEquals(statusList.get(2), QueryStatus.Status.RUNNING); + Assert.assertEquals(statusList.get(3), QueryStatus.Status.RUNNING); + Assert.assertEquals(statusList.get(4), QueryStatus.Status.QUEUED); + } + + @Test(enabled = true) public void enableQueueThrottlingWithExistingQueuedQueries() throws Exception { http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 1efe65a..4928c1f 100644 --- a/pom.xml +++ b/pom.xml @@ -439,6 +439,18 @@ </reportSet> </reportSets> </plugin> + + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + <configuration> + <formats> + <format>html</format> + <format>xml</format> + </formats> + </configuration> + </plugin> + </plugins> </reporting>