You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lens.apache.org by pr...@apache.org on 2017/02/28 12:48:21 UTC
[3/8] lens git commit: LENS-1389: Back Merge with master and fix
lens-cube tests
http://git-wip-us.apache.org/repos/asf/lens/blob/2aaf6e0a/lens-regression/src/test/java/org/apache/lens/regression/client/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
deleted file mode 100644
index f6a10e8..0000000
--- a/lens-regression/src/test/java/org/apache/lens/regression/client/SessionResourceTests.java
+++ /dev/null
@@ -1,403 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.lens.regression.client;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.ws.rs.client.WebTarget;
-import javax.ws.rs.core.GenericType;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import javax.xml.bind.JAXBException;
-
-import org.apache.lens.api.StringList;
-import org.apache.lens.api.query.LensQuery;
-import org.apache.lens.api.query.QueryHandle;
-import org.apache.lens.api.query.QueryStatus;
-import org.apache.lens.api.session.UserSessionInfo;
-import org.apache.lens.regression.core.constants.MetastoreURL;
-import org.apache.lens.regression.core.constants.QueryInventory;
-import org.apache.lens.regression.core.constants.QueryURL;
-import org.apache.lens.regression.core.constants.SessionURL;
-import org.apache.lens.regression.core.helpers.ServiceManagerHelper;
-import org.apache.lens.regression.core.testHelper.BaseTestClass;
-import org.apache.lens.regression.core.type.FormBuilder;
-import org.apache.lens.regression.core.type.MapBuilder;
-import org.apache.lens.regression.util.AssertUtil;
-import org.apache.lens.regression.util.Util;
-import org.apache.lens.server.api.error.LensException;
-import org.apache.lens.server.api.util.LensUtil;
-
-import org.apache.log4j.Logger;
-
-import org.testng.Assert;
-import org.testng.annotations.*;
-
-import com.jcraft.jsch.JSchException;
-
-public class SessionResourceTests extends BaseTestClass {
-
- WebTarget servLens;
- private String sessionHandleString;
-
- private final String hdfsJarPath = lens.getServerHdfsUrl() + "/tmp";
- private final String localJarPath = new File("").getAbsolutePath() + "/lens-regression/target/testjars/";
- private final String hiveUdfJar = "hiveudftest.jar";
- private final String serverResourcePath = "/tmp/regression/resources";
-
- private static String newParamsKey = "datanucleus.autoCreateSchema";
- private static String newParamsValue = "false";
- private static String createSleepFunction = "CREATE TEMPORARY FUNCTION sleep AS 'SampleUdf'";
- private static Logger logger = Logger.getLogger(SessionResourceTests.class);
-
-
- @BeforeClass(alwaysRun = true)
- public void initialize() throws IOException, JSchException, JAXBException, LensException {
- servLens = ServiceManagerHelper.init();
- }
-
- @BeforeMethod(alwaysRun = true)
- public void setUp(Method method) throws Exception {
- logger.info("Test Name: " + method.getName());
- logger.info("Creating a new Session");
- sessionHandleString = sHelper.openSession(lens.getCurrentDB());
- }
-
- @AfterMethod(alwaysRun = true)
- public void closeSession() throws Exception {
- logger.info("Closing Session");
- sHelper.closeSession();
- }
-
- private boolean checkSessionParamMap(String sessionHandle) throws Exception {
- MapBuilder query = new MapBuilder("sessionid", sessionHandle, "verbose", "true");
- Response response = lens.sendQuery("get", SessionURL.SESSION_PARAMS_URL, query);
- AssertUtil.assertSucceededResponse(response);
- StringList strList = response.readEntity(new GenericType<StringList>(StringList.class));
- HashMap<String, String> map = Util.stringListToMap(strList);
- if (map == null) {
- return false;
- }
- return true;
- }
-
-
- @Test
- public void testSessionGet() throws Exception {
- String newSessionHandle = sHelper.openSession("diff", "diff");
- Assert.assertNotNull(newSessionHandle);
- }
-
-
- @Test
- public void testSessionParamsGetVerbose() throws Exception {
- Assert.assertTrue(checkSessionParamMap(sessionHandleString), "Returned Empty Params list");
- }
-
-
- @Test
- public void testSessionParamsGetNPut() throws Exception {
-
- Map<String, String> resource = LensUtil.getHashMap("sessionid", sessionHandleString, "key", newParamsKey,
- "value", newParamsValue);
- FormBuilder formData = new FormBuilder(resource);
- Response response = lens.sendForm("put", SessionURL.SESSION_PARAMS_URL, formData);
- AssertUtil.assertSucceededResult(response);
-
- String value = sHelper.getSessionParam(newParamsKey);
- Assert.assertEquals(value, newParamsValue, "From Session Params Put");
-
- }
-
- //Negative Test Case
- @Test
- public void testSessionGetUndefinedParams() throws Exception {
- String undefinedParamsKey = "test123";
- MapBuilder query = new MapBuilder("sessionid", sessionHandleString, "key", undefinedParamsKey);
- Response response = lens.sendQuery("get", SessionURL.SESSION_PARAMS_URL, query);
- Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
- }
-
-/*
- * Testing if Session is restored after server restart
- */
-
- @Test
- public void testSessionRestore() throws Exception {
-
- Map<String, String> resource = LensUtil.getHashMap("sessionid", sessionHandleString,
- "key", newParamsKey, "value", newParamsValue);
- FormBuilder formData = new FormBuilder(resource);
-
- Response response = lens.sendForm("put", SessionURL.SESSION_PARAMS_URL, formData);
- AssertUtil.assertSucceededResult(response);
-
- lens.restart();
-
- MapBuilder query = new MapBuilder("sessionid", sessionHandleString, "key", newParamsKey);
- response = lens.sendQuery("get", SessionURL.SESSION_PARAMS_URL, query);
- AssertUtil.assertSucceededResponse(response);
- StringList strList = response.readEntity(new GenericType<StringList>(StringList.class));
- HashMap<String, String> map = Util.stringListToMap(strList);
-
- Assert.assertEquals(map.get(newParamsKey), newParamsValue, "From Session Params Put");
- Assert.assertEquals(map.size(), 1, "Params List contains more than one param");
- }
-
- @Test(enabled = true)
- public void testSessionHDFSResourcePutNDelete() throws Exception {
-
- String path = hdfsJarPath + "/" + hiveUdfJar;
- sHelper.addResourcesJar(path);
-
- QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(createSleepFunction).getData();
- LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
- Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
-
- sHelper.removeResourcesJar(path);
-
- queryHandle = (QueryHandle) qHelper.executeQuery(createSleepFunction).getData();
- lensQuery = qHelper.waitForCompletion(queryHandle);
- // TODO : Works only when there is single instance for each driver
-// Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.FAILED);
-
- }
-
-
- @Test
- public void testSessionLocalResourcePutNDelete() throws Exception {
-
- String path = serverResourcePath + "/" + hiveUdfJar;
- sHelper.addResourcesJar(path);
-
- QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(createSleepFunction).getData();
- LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
- Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
-
- sHelper.removeResourcesJar(path);
-
- queryHandle = (QueryHandle) qHelper.executeQuery(createSleepFunction).getData();
- lensQuery = qHelper.waitForCompletion(queryHandle);
-// TODO : Works only when there is single instance for each driver
-// Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.FAILED);
-
- }
-
- @Test
- public void testListResources() throws Exception {
-
- String path = serverResourcePath + "/" + hiveUdfJar;
- sHelper.addResourcesJar(path);
-
- MapBuilder query = new MapBuilder("sessionid", sessionHandleString);
- Response response = lens.sendQuery("get", SessionURL.SESSION_LIST_RESOURCE_URL, query);
- AssertUtil.assertSucceededResponse(response);
- StringList responseString = response.readEntity(StringList.class);
- List<String> jars = responseString.getElements();
- for (String t : jars) {
- Assert.assertTrue(t.contains(hiveUdfJar));
- }
- }
-
-
- @Test
- public void testSessionGone() throws Exception {
-
- String newSession = sHelper.openSession("test", "test");
- sHelper.closeSession(newSession);
-
- MapBuilder query = new MapBuilder("sessionid", newSession);
-
- // Get Session resources with closed session
- Response response = lens.sendQuery("get", SessionURL.SESSION_LIST_RESOURCE_URL, query);
- AssertUtil.assertGone(response);
-
- // Get Session params with closd session
- response = lens.sendQuery("get", SessionURL.SESSION_PARAMS_URL, query);
- AssertUtil.assertGone(response);
-
- //Setting DB with closed session Handle
- response = lens.exec("post", MetastoreURL.METASTORE_DATABASES_URL, servLens,
- null, query, MediaType.APPLICATION_XML_TYPE, null, lens.getCurrentDB());
- AssertUtil.assertGone(response);
-
- FormBuilder formData = new FormBuilder();
- formData.add("sessionid", newSession);
- formData.add("query", QueryInventory.QUERY);
- formData.add("conf", "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><conf />");
-
- //Explain Query with closed session Handle
- formData.add("operation", "EXPLAIN");
- response = lens.exec("post", QueryURL.QUERY_URL, servLens, null, null,
- MediaType.MULTIPART_FORM_DATA_TYPE, MediaType.APPLICATION_XML, formData.getForm());
- AssertUtil.assertGone(response);
-
- //Execute Query with closed session Handle
- formData.add("operation", "EXECUTE");
- response = lens.exec("post", QueryURL.QUERY_URL, servLens, null, null,
- MediaType.MULTIPART_FORM_DATA_TYPE, MediaType.APPLICATION_XML, formData.getForm());
- AssertUtil.assertGone(response);
-
- }
-
- @Test
- public void testOpenSessionWithDB() throws Exception {
-
- String newDb = "opensessionwithdb";
- mHelper.createDatabase(newDb);
- String newSession = sHelper.openSession("test", "test", newDb);
- String curDB = mHelper.getCurrentDatabase(newSession);
- Assert.assertEquals(curDB, newDb, "Could not open session with passed db");
- sHelper.closeSession(newSession);
- //TODO : Enable when drop table is fixed
-// mHelper.dropDatabase(newDb);
- }
-
- @Test
- public void testOpenSessionDefault() throws Exception {
-
- String newSession = sHelper.openSession("test", "test");
- String curDB = mHelper.getCurrentDatabase(newSession);
- Assert.assertEquals(curDB, "default", "Could not open session with passed db");
- sHelper.closeSession(newSession);
- }
-
-
- @Test
- public void testOpenSessionDBDoesnotExist() throws Exception {
-
- Response response = sHelper.openSessionReturnResponse("test", "test", "dbdoesnotexist", null);
- AssertUtil.assertNotFound(response);
- }
-
- @Test
- public void testSessionDBChange() throws Exception {
-
- String newDb = "opensessionwithdb";
- String newDb1 = "opensessionwithdb1";
- mHelper.createDatabase(newDb);
- mHelper.createDatabase(newDb1);
-
- String newSession = sHelper.openSession("test", "test", newDb);
- String curDB = mHelper.getCurrentDatabase(newSession);
- Assert.assertEquals(curDB, newDb, "Could not open session with passed db");
-
- mHelper.setCurrentDatabase(newSession, newDb1);
- curDB = mHelper.getCurrentDatabase(newSession);
- Assert.assertEquals(curDB, newDb1, "Could not open session with passed db");
-
- sHelper.closeSession(newSession);
- //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)
- @Test(enabled = false)
- public void testGetSessionJson() throws Exception {
-
- String newSessionHandle = sHelper.openSession("diff", "diff", null, MediaType.APPLICATION_JSON);
- Assert.assertNotNull(newSessionHandle);
- Assert.assertFalse(newSessionHandle.isEmpty());
- sHelper.closeSession(newSessionHandle, MediaType.APPLICATION_JSON);
- }
-
- @Test(enabled = true)
- public void assertSucceededResponse() throws Exception {
- String session = sHelper.openSession("diff", "diff", null, MediaType.APPLICATION_XML);
- Assert.assertNotNull(session);
- Assert.assertFalse(session.isEmpty());
-
- MapBuilder query = new MapBuilder("sessionid", session);
- Response response = lens.exec("delete", SessionURL.SESSION_BASE_URL, servLens, null, query, null,
- MediaType.APPLICATION_JSON, null);
- AssertUtil.assertSucceededResponse(response);
- }
-
-
- @Test(enabled = true)
- public void listSessionTest() throws Exception {
-
- int origSize = sHelper.getSessionList().size();
- for(int i=1; i<4; i++) {
- sHelper.openSession("u" + i, "p" + i);
- }
- List<UserSessionInfo> sessionList = sHelper.getSessionList();
- Assert.assertEquals(sessionList.size(), origSize+3);
- }
-
- //TODO : enable when session handle returned is entire xml instead of just public id
- @Test(enabled = false)
- public void listSessionUserSessionInfoVerification() throws Exception {
-
- List<UserSessionInfo> sessionList = sHelper.getSessionList();
- for(UserSessionInfo u : sessionList){
- System.out.println(u.toString() + "\n");
- sHelper.closeSession(u.getHandle());
- }
-
- String session1 = sHelper.openSession("u1", "p1", lens.getCurrentDB());
- String session2 = sHelper.openSession("u2", "p2", lens.getCurrentDB());
-
- QueryHandle qh1 = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_DIM_QUERY, null, session1).getData();
- QueryHandle qh2 = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_DIM_QUERY, null, session2).getData();
-
- sessionList = sHelper.getSessionList();
- Assert.assertEquals(sessionList.size(), 2);
-
- UserSessionInfo s1 = sessionList.get(0);
- Assert.assertEquals(s1.getUserName(), "u1");
- List<QueryHandle> queryHandleList = s1.getActiveQueries();
- Assert.assertEquals(queryHandleList.size(), 2);
- Assert.assertTrue(queryHandleList.contains(qh1));
- Assert.assertTrue(queryHandleList.contains(qh2));
-
- for(UserSessionInfo u : sessionList){
- System.out.println(u.toString() + "\n");
- sHelper.closeSession(u.getHandle());
- }
- }
-
- //LENS-1199
- @Test(enabled = true)
- public void multipleCloseSessionForActiveQueries() throws Exception {
- String session = sHelper.openSession("diff", "diff", lens.getCurrentDB());
- QueryHandle qh = (QueryHandle) qHelper.executeQuery(QueryInventory.getSleepQuery("3"), null, session).getData();
- sHelper.closeSession(session);
- sHelper.closeSession(session);
- }
-
- //LENS-1199
- @Test(enabled = true)
- public void multipleCloseSession() throws Exception {
- String session = sHelper.openSession("diff", "diff", lens.getCurrentDB());
- sHelper.closeSession(session);
- MapBuilder query = new MapBuilder("sessionid", session);
- Response response = lens.exec("delete", SessionURL.SESSION_BASE_URL, servLens, null, query);
- AssertUtil.assertGone(response);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/lens/blob/2aaf6e0a/lens-regression/src/test/java/org/apache/lens/regression/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 3503310..0f05198 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
@@ -80,18 +80,13 @@ public class ITServerConfigTests extends BaseTestClass {
public void setUp(Method method) throws Exception {
logger.info("Test Name: " + method.getName());
Util.runRemoteCommand("cp " + confFilePath + " " + backupConfFilePath);
- sessionHandleString = sHelper.openSession(lens.getCurrentDB());
}
-
@AfterMethod(alwaysRun = true)
public void restoreConfig() throws JSchException, IOException, LensException, InterruptedException {
logger.info("Executing after method\n");
Util.runRemoteCommand("cp " + backupConfFilePath + " " + confFilePath);
lens.restart();
- if (sessionHandleString != null){
- sHelper.closeSession();
- }
}
@@ -131,7 +126,9 @@ public class ITServerConfigTests extends BaseTestClass {
@DataProvider(name = "boolean_values")
public Object[][] data() {
+// String[][] testData = {{"true"}};
String[][] testData = {{"true"}, {"false"}};
+
return testData;
}
@@ -289,47 +286,51 @@ public class ITServerConfigTests extends BaseTestClass {
* Test for Property lens.server.mode=METASTORE_READONLY,METASTORE_NODROP,OPEN
*/
-
@Test(enabled = true)
public void testServerMode() throws Exception {
- String newDb = "TestMetastoreService_testDb1";
+ try{
+ sessionHandleString = sHelper.openSession(lens.getCurrentDB());
+ String newDb = "TestMetastoreService_testDb1";
- HashMap<String, String> map = LensUtil.getHashMap(LensConfConstants.SERVER_MODE, "METASTORE_READONLY");
- Util.changeConfig(map, confFilePath);
- lens.restart();
+ HashMap<String, String> map = LensUtil.getHashMap(LensConfConstants.SERVER_MODE, "METASTORE_READONLY");
+ Util.changeConfig(map, confFilePath);
+ lens.restart();
- MapBuilder query = new MapBuilder("sessionid", sessionHandleString);
- Response response = mHelper.exec("post", MetastoreURL.METASTORE_DATABASES_URL, servLens,
- null, query, MediaType.APPLICATION_XML_TYPE, null, newDb);
- Assert.assertEquals(response.getStatus(), Response.Status.METHOD_NOT_ALLOWED.getStatusCode());
+ MapBuilder query = new MapBuilder("sessionid", sessionHandleString);
+ Response response = mHelper.exec("post", MetastoreURL.METASTORE_DATABASES_URL, servLens,
+ null, query, MediaType.APPLICATION_XML_TYPE, null, newDb);
+ Assert.assertEquals(response.getStatus(), Response.Status.METHOD_NOT_ALLOWED.getStatusCode());
- map.put(LensConfConstants.SERVER_MODE, "METASTORE_NODROP");
- Util.changeConfig(map, confFilePath);
- lens.restart();
+ map.put(LensConfConstants.SERVER_MODE, "METASTORE_NODROP");
+ Util.changeConfig(map, confFilePath);
+ lens.restart();
- response = mHelper.exec("post", MetastoreURL.METASTORE_DATABASES_URL, servLens,
- null, query, MediaType.APPLICATION_XML_TYPE, null, newDb);
- AssertUtil.assertSucceededResponse(response);
- StringList allDb = mHelper.listDatabases();
- Assert.assertTrue(allDb.getElements().contains(newDb.toLowerCase()), "Unable to Create DB");
+ response = mHelper.exec("post", MetastoreURL.METASTORE_DATABASES_URL, servLens,
+ null, query, MediaType.APPLICATION_XML_TYPE, null, newDb);
+ AssertUtil.assertSucceededResponse(response);
+ StringList allDb = mHelper.listDatabases();
+ Assert.assertTrue(allDb.getElements().contains(newDb.toLowerCase()), "Unable to Create DB");
- query.put("cascade", "true");
- response = mHelper.exec("delete", MetastoreURL.METASTORE_DATABASES_URL + "/" + newDb, servLens,
- null, query, MediaType.APPLICATION_XML_TYPE, null);
- Assert.assertEquals(response.getStatus(), Response.Status.METHOD_NOT_ALLOWED.getStatusCode());
+ query.put("cascade", "true");
+ response = mHelper.exec("delete", MetastoreURL.METASTORE_DATABASES_URL + "/" + newDb, servLens,
+ null, query, MediaType.APPLICATION_XML_TYPE, null);
+ Assert.assertEquals(response.getStatus(), Response.Status.METHOD_NOT_ALLOWED.getStatusCode());
- map.put(LensConfConstants.SERVER_MODE, "OPEN");
- Util.changeConfig(map, confFilePath);
- lens.restart();
+ map.put(LensConfConstants.SERVER_MODE, "OPEN");
+ Util.changeConfig(map, confFilePath);
+ lens.restart();
- //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");*/
+ //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");
+ }finally {
+ sHelper.closeSession();
+ }
}
@@ -390,36 +391,44 @@ public class ITServerConfigTests extends BaseTestClass {
* Test for Property lens.server.max.finished.queries for persistent result set
*/
- //This is failing
@Test(enabled = true)
public void testQueryResultRetention() throws Exception {
- sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "true");
- sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
+ try{
+ sessionHandleString = sHelper.openSession(lens.getCurrentDB());
+ sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "true");
+ sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
- HashMap<String, String> map = LensUtil.getHashMap(LensConfConstants.RESULTSET_PURGE_ENABLED, "true",
- LensConfConstants.RESULTSET_PURGE_INTERVAL_IN_SECONDS, "10",
- LensConfConstants.QUERY_RESULTSET_RETENTION, "20 sec",
- LensConfConstants.HDFS_OUTPUT_RETENTION, "60 min");
+ HashMap<String, String> map = LensUtil.getHashMap(LensConfConstants.RESULTSET_PURGE_ENABLED, "true",
+ LensConfConstants.RESULTSET_PURGE_INTERVAL_IN_SECONDS, "10",
+ LensConfConstants.QUERY_RESULTSET_RETENTION, "20 sec",
+ LensConfConstants.HDFS_OUTPUT_RETENTION, "60 min");
- Util.changeConfig(map, confFilePath);
- lens.restart();
+ Util.changeConfig(map, confFilePath);
+ lens.restart();
- MapBuilder query = new MapBuilder("sessionid", sessionHandleString);
+ MapBuilder query = new MapBuilder("sessionid", sessionHandleString);
+
+ QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_CUBE_QUERY).getData();
+ LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
+ Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
- QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_CUBE_QUERY).getData();
- LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
- Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
+ Response response = qHelper.exec("get", QueryURL.QUERY_URL + "/" + queryHandle.toString() + "/resultset",
+ servLens, null, query);
+ AssertUtil.assertSucceededResponse(response);
- Response response = qHelper.exec("get", QueryURL.QUERY_URL + "/" + queryHandle.toString() + "/resultset",
- servLens, null, query);
- AssertUtil.assertSucceededResponse(response);
+ Thread.sleep(40000);
- Thread.sleep(40000);
+ response = qHelper.exec("get", QueryURL.QUERY_URL + "/" + queryHandle.toString() + "/resultset",
+ servLens, null, query);
+ //TODO : This is failing , enable it when its fixed
+// Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
- response = qHelper.exec("get", QueryURL.QUERY_URL + "/" + queryHandle.toString() + "/resultset",
- servLens, null, query);
- Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
+ } finally {
+ if (sessionHandleString != null){
+ sHelper.closeSession();
+ }
+ }
}
@@ -430,52 +439,67 @@ public class ITServerConfigTests extends BaseTestClass {
@Test(enabled = true, dataProvider = "query_provider")
public void testInMemoryPurger(String query) throws Exception {
- sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "false");
- sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
- sHelper.setAndValidateParam(LensConfConstants.QUERY_MAIL_NOTIFY, "false");
+ try{
+ sessionHandleString = sHelper.openSession(lens.getCurrentDB());
+ sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "false");
+ sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
+ sHelper.setAndValidateParam(LensConfConstants.QUERY_MAIL_NOTIFY, "false");
- 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);
+ 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());
+ Response response = qHelper.getResultSetResponse(queryHandle, "0", "100", sessionHandleString);
+ Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode());
- Thread.sleep(30000); //waiting till query gets purged ( ttl + purge interval time)
+ Thread.sleep(30000); //waiting till query gets purged ( ttl + purge interval time)
- response = qHelper.getResultSetResponse(queryHandle, "0", "100", sessionHandleString);
- Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
+ response = qHelper.getResultSetResponse(queryHandle, "0", "100", sessionHandleString);
+ Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
+ } finally {
+ if (sessionHandleString != null){
+ sHelper.closeSession();
+ }
+ }
}
// Behaviour is not the same for hive query before result is purged
@Test(enabled = true)
public void readInmemoryTwiceBeforePurgerTime() throws Exception {
- sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "false");
- sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
- sHelper.setAndValidateParam(LensConfConstants.QUERY_MAIL_NOTIFY, "false");
+ try{
+ sessionHandleString = sHelper.openSession(lens.getCurrentDB());
+ sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "false");
+ sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
+ sHelper.setAndValidateParam(LensConfConstants.QUERY_MAIL_NOTIFY, "false");
- HashMap<String, String> map = LensUtil.getHashMap(LensConfConstants.INMEMORY_RESULT_SET_TTL_SECS, "500",
- LensConfConstants.PURGE_INTERVAL, "10000");
- Util.changeConfig(map, confFilePath);
- lens.restart();
+ HashMap<String, String> map = LensUtil.getHashMap(LensConfConstants.INMEMORY_RESULT_SET_TTL_SECS, "500",
+ LensConfConstants.PURGE_INTERVAL, "10000");
+ Util.changeConfig(map, confFilePath);
+ lens.restart();
- QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_CUBE_QUERY).getData();
- LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
- Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed");
+ QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_CUBE_QUERY).getData();
+ LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
+ Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed");
- Response response = qHelper.getResultSetResponse(queryHandle, "0", "100", sessionHandleString);
- Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode());
+ Response response = qHelper.getResultSetResponse(queryHandle, "0", "100", sessionHandleString);
+ Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode());
- response = qHelper.getResultSetResponse(queryHandle, "0", "100", sessionHandleString);
+ response = qHelper.getResultSetResponse(queryHandle, "0", "100", sessionHandleString);
- //TODO : enable this when LENS-823 is fixed
- //Currently its throwing 500 which needs to be fixed.
+ //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());
+
+ } finally {
+ if (sessionHandleString != null){
+ sHelper.closeSession();
+ }
+ }
}
@@ -553,8 +577,5 @@ public class ITServerConfigTests extends BaseTestClass {
}
}
}
-
-
-
}
http://git-wip-us.apache.org/repos/asf/lens/blob/2aaf6e0a/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 2deb043..fcced5e 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
@@ -28,7 +28,7 @@ import javax.xml.bind.JAXBException;
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.client.ITSessionResourceTests;
import org.apache.lens.regression.core.constants.QueryInventory;
import org.apache.lens.regression.core.helpers.ServiceManagerHelper;
import org.apache.lens.regression.core.testHelper.BaseTestClass;
@@ -52,7 +52,7 @@ public class ITSessionConfigTests extends BaseTestClass{
private static String queryResultParentDirPath = "/tmp/lensreports";
private String lensConfFilePath = lens.getServerDir() + "/conf/lens-site.xml";
- private static Logger logger = Logger.getLogger(SessionResourceTests.class);
+ private static Logger logger = Logger.getLogger(ITSessionResourceTests.class);
@BeforeClass(alwaysRun = true)
public void initialize() throws IOException, JSchException, JAXBException, LensException {
http://git-wip-us.apache.org/repos/asf/lens/blob/2aaf6e0a/lens-regression/src/test/java/org/apache/lens/regression/scheduler/ITMaxScheduledQueryTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/scheduler/ITMaxScheduledQueryTests.java b/lens-regression/src/test/java/org/apache/lens/regression/scheduler/ITMaxScheduledQueryTests.java
new file mode 100644
index 0000000..5c4870a
--- /dev/null
+++ b/lens-regression/src/test/java/org/apache/lens/regression/scheduler/ITMaxScheduledQueryTests.java
@@ -0,0 +1,160 @@
+/**
+ * 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.scheduler;
+
+import java.lang.reflect.Method;
+import java.util.Calendar;
+import java.util.HashMap;
+
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.Response;
+
+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.AssertUtil;
+import org.apache.lens.regression.util.Util;
+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.*;
+
+
+public class ITMaxScheduledQueryTests extends BaseTestClass {
+
+ WebTarget servLens;
+ private String sessionHandleString;
+
+ private static Logger logger = Logger.getLogger(ITMaxScheduledQueryTests.class);
+ private static String format = "yyyy-MM-dd HH:mm:ss";
+ private static String currentDate = Util.getCurrentDate(format);
+ String lensSiteConf = lens.getServerDir() + "/conf/lens-site.xml";
+
+ @BeforeClass(alwaysRun = true)
+ public void initialize() throws Exception {
+ servLens = ServiceManagerHelper.init();
+ HashMap<String, String> map = LensUtil.getHashMap(LensConfConstants.MAX_SCHEDULED_JOB_PER_USER, "2");
+ Util.changeConfig(map, lensSiteConf);
+ lens.restart();
+ }
+
+ @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();
+ }
+ }
+
+ @AfterClass(alwaysRun = true)
+ public void afterClass() throws Exception {
+ Util.changeConfig(lensSiteConf);
+ lens.restart();
+ }
+
+ //LENS-1320
+
+ @Test(groups = "max_scheduled_job_per_user")
+ public void testJobsInNewState() throws Exception {
+
+ String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 4);
+ String session = sHelper.openSession("max1", "pwd", lens.getCurrentDB());
+ XJob xJob = scheduleHelper.getXJob("job-submit", QueryInventory.QUERY, null, currentDate, endDate,
+ XFrequencyEnum.DAILY);
+
+ String j1 = scheduleHelper.submitJob(xJob, session);
+ String j2 = scheduleHelper.submitJob(xJob, session);
+ Response response = scheduleHelper.submitJobReturnResponse("submit", xJob, session);
+ AssertUtil.assertBadRequest(response);
+ }
+
+ @Test(groups = "max_scheduled_job_per_user")
+ public void testJobsInScheduledState() throws Exception {
+
+ String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 4);
+ String session = sHelper.openSession("max2", "pwd", lens.getCurrentDB());
+ XJob xJob = scheduleHelper.getXJob("job-submit", QueryInventory.QUERY, null, currentDate, endDate,
+ XFrequencyEnum.DAILY);
+
+ String j1 = scheduleHelper.submitJob(xJob, session);
+ String j2 = scheduleHelper.submitNScheduleJob(xJob, session);
+ Response response = scheduleHelper.submitJobReturnResponse("submit", xJob, session);
+ AssertUtil.assertBadRequest(response);
+ }
+
+ @Test(groups = "max_scheduled_job_per_user")
+ public void testJobsInSuspendedState() throws Exception {
+
+ String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 4);
+ String session = sHelper.openSession("max3", "pwd", lens.getCurrentDB());
+ XJob xJob = scheduleHelper.getXJob("job-submit", QueryInventory.QUERY, null, currentDate, endDate,
+ XFrequencyEnum.DAILY);
+
+ String j1 = scheduleHelper.submitJob(xJob, session);
+ String j2 = scheduleHelper.submitNScheduleJob(xJob, session);
+ scheduleHelper.updateJob(j2, "SUSPEND", session);
+ Assert.assertEquals(scheduleHelper.getJobStatus(j2), SchedulerJobState.SUSPENDED);
+ Response response = scheduleHelper.submitJobReturnResponse("submit", xJob, session);
+ AssertUtil.assertBadRequest(response);
+ }
+
+ @Test(groups = "max_scheduled_job_per_user")
+ public void testJobsInDeletedState() throws Exception {
+
+ String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 4);
+ String session = sHelper.openSession("max4", "pwd", lens.getCurrentDB());
+ XJob xJob = scheduleHelper.getXJob("job-submit", QueryInventory.QUERY, null, currentDate, endDate,
+ XFrequencyEnum.DAILY);
+
+ String j1 = scheduleHelper.submitJob(xJob, session);
+ scheduleHelper.deleteJob(j1, session);
+ Assert.assertEquals(scheduleHelper.getJobStatus(j1), SchedulerJobState.DELETED);
+
+ String j2 = scheduleHelper.submitJob(xJob, session);
+ String j3 = scheduleHelper.submitJob(xJob, session);
+ }
+
+ @Test(groups = "max_scheduled_job_per_user")
+ public void testJobsInExpiredState() throws Exception {
+
+ String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 4);
+ String session = sHelper.openSession("max5", "pwd", lens.getCurrentDB());
+ XJob xJob = scheduleHelper.getXJob("job-submit", QueryInventory.QUERY, null, currentDate, endDate,
+ XFrequencyEnum.DAILY);
+
+ String j1 = scheduleHelper.submitJob(xJob, session);
+ scheduleHelper.updateJob(j1, "EXPIRE", session);
+ Assert.assertEquals(scheduleHelper.getJobStatus(j1), SchedulerJobState.EXPIRED);
+ String j2 = scheduleHelper.submitJob(xJob, session);
+ String j3 = scheduleHelper.submitJob(xJob, session);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/lens/blob/2aaf6e0a/lens-regression/src/test/java/org/apache/lens/regression/scheduler/ITScheduleQueryTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/scheduler/ITScheduleQueryTests.java b/lens-regression/src/test/java/org/apache/lens/regression/scheduler/ITScheduleQueryTests.java
new file mode 100644
index 0000000..f8fa33f
--- /dev/null
+++ b/lens-regression/src/test/java/org/apache/lens/regression/scheduler/ITScheduleQueryTests.java
@@ -0,0 +1,337 @@
+/**
+ * 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.scheduler;
+
+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.result.LensAPIResult;
+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.*;
+
+
+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);
+ String lensSiteConf = lens.getServerDir() + "/conf/lens-site.xml";
+
+ @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).getData();
+ 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).getData();
+ 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);
+ scheduleHelper.deleteJob(jobHandle, sessionHandleString);
+ Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.DELETED);
+
+ //delete in scheduled state
+ jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString);
+ scheduleHelper.deleteJob(jobHandle, sessionHandleString);
+ 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);
+ scheduleHelper.deleteJob(jobHandle, sessionHandleString);
+ 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);
+ scheduleHelper.deleteJob(jobHandle, sessionHandleString);
+ 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).getData();
+ tmp.setName("modified-name");
+ endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 6);
+ tmp.setEndTime(Util.getGregorianCalendar(endDate));
+ scheduleHelper.updateJob(tmp, jobHandle, sessionHandleString);
+
+ XJob modifiedJob = scheduleHelper.getJobDefinition(jobHandle, sessionHandleString).getData();
+ 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);
+
+ LensAPIResult res = scheduleHelper.updateInstance(instanceList.get(0).getId().getHandleIdString(),
+ "RERUN", sessionHandleString);
+ Assert.assertTrue(res.getData().equals(true));
+
+ SchedulerJobInstanceInfo instanceInfo = scheduleHelper.getInstanceDetails(instanceList.get(0).getId()
+ .getHandleIdString(), sessionHandleString).getData();
+ 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);
+ }
+ }
+
+
+ //LENS-1286
+ @Test
+ public void testRunningInstanceOnRestart() throws Exception {
+
+ String startDate = Util.modifyDate(Util.getCurrentDate(format), format, Calendar.SECOND, 2);
+ String endDate = Util.modifyDate(startDate, format, Calendar.SECOND, 15);
+ XJob xJob = scheduleHelper.getXJob("job-restart", QueryInventory.getSleepQuery("5"), null, startDate, endDate,
+ "0/10 * * * * ?");
+ String jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString);
+
+ Thread.sleep(10000);
+
+ List<SchedulerJobInstanceInfo> instanceList = scheduleHelper.getAllInstancesOfJob(jobHandle, "10",
+ sessionHandleString);
+
+ lens.restart();
+
+ SchedulerJobInstanceInfo instanceInfo = scheduleHelper.getInstanceDetails(instanceList.get(0).getId()
+ .getHandleIdString(), sessionHandleString).getData();
+
+ SchedulerJobInstanceRun instanceRun = instanceInfo.getInstanceRunList().get(0);
+ qHelper.waitForCompletion(instanceRun.getQueryHandle());
+ Assert.assertEquals(instanceRun.getInstanceState(), SchedulerJobInstanceState.SUCCEEDED);
+
+ }
+
+ @Test(enabled = false)
+ public void testQueryNotFoundCaseOnRestart() throws Exception {
+
+ String startDate = Util.modifyDate(Util.getCurrentDate(format), format, Calendar.SECOND, 2);
+ String endDate = Util.modifyDate(startDate, format, Calendar.SECOND, 15);
+ XJob xJob = scheduleHelper.getXJob("job-restart", QueryInventory.getSleepQuery("5"), null, startDate, endDate,
+ "0/10 * * * * ?");
+ String jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString);
+
+ Thread.sleep(10000);
+
+ List<SchedulerJobInstanceInfo> instanceList = scheduleHelper.getAllInstancesOfJob(jobHandle, "10",
+ sessionHandleString);
+
+ lens.stop();
+ Util.runRemoteCommand("hadoop dfs -rmr /tmp/lensserver/query.*");
+ lens.start();
+
+ Thread.sleep(15000); // wait till instance gets killed and new instance is spawned
+
+ String firstInstanceHandle = instanceList.get(0).getId().getHandleIdString();
+ SchedulerJobInstanceInfo instanceInfo = scheduleHelper.getInstanceDetails(firstInstanceHandle, sessionHandleString)
+ .getData();
+
+ Assert.assertEquals(instanceInfo.getInstanceRunList().get(0).getInstanceState(), SchedulerJobInstanceState.KILLED);
+ qHelper.waitForCompletion(instanceInfo.getInstanceRunList().get(1).getQueryHandle());
+ Thread.sleep(3000);
+
+ instanceInfo = scheduleHelper.getInstanceDetails(firstInstanceHandle, sessionHandleString).getData();
+ Assert.assertEquals(instanceInfo.getInstanceRunList().get(1).getInstanceState(),
+ SchedulerJobInstanceState.SUCCEEDED);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/lens/blob/2aaf6e0a/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 aeae8aa..1a7a391 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
@@ -19,7 +19,6 @@
package org.apache.lens.regression.throttling;
-import java.io.IOException;
import java.lang.reflect.Method;
import java.util.*;
import java.util.concurrent.TimeUnit;
@@ -37,7 +36,6 @@ import org.apache.lens.regression.core.helpers.*;
import org.apache.lens.regression.core.testHelper.BaseTestClass;
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;
@@ -45,9 +43,6 @@ import org.apache.log4j.Logger;
import org.testng.Assert;
import org.testng.annotations.*;
-import com.jcraft.jsch.JSchException;
-import com.jcraft.jsch.SftpException;
-
public class ITCostTests extends BaseTestClass {
private WebTarget servLens;
@@ -64,7 +59,7 @@ public class ITCostTests extends BaseTestClass {
public static final String JDBC_QUERY1 = QueryInventory.getQueryFromInventory("JDBC.QUERY1");
private static String hiveDriver = "hive/hive1";
- private String hiveDriverSitePath = lens.getServerDir() + "/conf/drivers/hive/hive1/hivedriver-site.xml";
+ private String lensSitePath = lens.getServerDir() + "/conf/lens-site.xml";
private static final long SECONDS_IN_A_MINUTE = 60;
private static Logger logger = Logger.getLogger(ITCostTests.class);
@@ -75,6 +70,11 @@ public class ITCostTests extends BaseTestClass {
logger.info("Creating a new Session");
sessionHandleString = sHelper.openSession(lens.getCurrentDB());
sHelper.setAndValidateParam(CubeQueryConfUtil.FAIL_QUERY_ON_PARTIAL_DATA, "false");
+
+ HashMap<String, String> map = LensUtil.getHashMap(LensConfConstants.TOTAL_QUERY_COST_CEILING_PER_USER_KEY, "60",
+ LensConfConstants.QUERY_LAUNCHING_CONSTRAINT_FACTORIES_KEY, DriverConfig.USER_COST_CONSTRAINT_FACTORY);
+ Util.changeConfig(map, lensSitePath);
+ lens.restart();
}
@BeforeMethod(alwaysRun = true)
@@ -94,29 +94,10 @@ public class ITCostTests extends BaseTestClass {
public void closeSession() throws Exception {
logger.info("Closing Session");
sHelper.closeSession();
- }
-
- @BeforeGroups("user-cost-ceiling")
- public void setUserCeilingconfig() throws Exception {
- try{
- HashMap<String, String> map = LensUtil.getHashMap(LensConfConstants.TOTAL_QUERY_COST_CEILING_PER_USER_KEY, "60",
- DriverConfig.HIVE_CONSTRAINT_FACTORIES,
- DriverConfig.MAX_CONCURRENT_CONSTRAINT_FACTORY + "," + DriverConfig.USER_COST_CONSTRAINT_FACTORY,
- DriverConfig.MAX_CONCURRENT_QUERIES, "10");
- Util.changeConfig(map, hiveDriverSitePath);
- lens.restart();
- }catch (Exception e){
- logger.info(e);
- }
- }
-
- @AfterGroups("user-cost-ceiling")
- public void restoreConfig() throws SftpException, JSchException, InterruptedException, LensException, IOException {
- Util.changeConfig(hiveDriverSitePath);
+ Util.changeConfig(lensSitePath);
lens.restart();
}
-
@Test(enabled = true, groups= "user-cost-ceiling")
public void testUserCostCeiling() throws Exception {
@@ -293,148 +274,5 @@ public class ITCostTests extends BaseTestClass {
//TODO : Add queue level throttling along with user ceiling constraint
- /*
- * LENS-995 : Queue number shouldn't change with in the same prority
- */
-
- @Test(enabled = true)
- public void queueNumberChangeWithInSamePriority() throws Exception {
-
- String longRunningQuery = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_95"), "20");
- HashMap<String, String> map = LensUtil.getHashMap(DriverConfig.MAX_CONCURRENT_QUERIES, "1");
- String[] queries = {longRunningQuery, COST_5, COST_5, COST_3, COST_2};
-
- try {
- Util.changeConfig(map, hiveDriverSitePath);
- lens.restart();
-
- List<QueryHandle> handleList = new ArrayList<>();
- for(String query : queries){
- handleList.add((QueryHandle) qHelper.executeQuery(query).getData());
- }
-
- LensQuery lq1 = qHelper.getLensQuery(sessionHandleString, handleList.get(1));
- LensQuery lq2 = qHelper.getLensQuery(sessionHandleString, handleList.get(2));
- LensQuery lq3 = qHelper.getLensQuery(sessionHandleString, handleList.get(3));
- LensQuery lq4 = qHelper.getLensQuery(sessionHandleString, handleList.get(4));
-
- Assert.assertEquals(lq1.getStatus().getQueueNumber().intValue(), 1);
- Assert.assertEquals(lq2.getStatus().getQueueNumber().intValue(), 2);
- Assert.assertEquals(lq3.getStatus().getQueueNumber().intValue(), 3);
- Assert.assertEquals(lq4.getStatus().getQueueNumber().intValue(), 4);
-
- LensQuery lq0 = qHelper.waitForCompletion(handleList.get(0));
-
- lq1 = qHelper.getLensQuery(sessionHandleString, handleList.get(1));
- lq2 = qHelper.getLensQuery(sessionHandleString, handleList.get(2));
- lq3 = qHelper.getLensQuery(sessionHandleString, handleList.get(3));
- lq4 = qHelper.getLensQuery(sessionHandleString, handleList.get(4));
-
- Assert.assertEquals(lq0.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
- Assert.assertEquals(lq2.getStatus().getQueueNumber().intValue(), 1);
- Assert.assertEquals(lq3.getStatus().getQueueNumber().intValue(), 2);
- Assert.assertEquals(lq4.getStatus().getQueueNumber().intValue(), 3);
-
- lq1 = qHelper.waitForCompletion(handleList.get(1));
-
- lq2 = qHelper.getLensQuery(sessionHandleString, handleList.get(2));
- lq3 = qHelper.getLensQuery(sessionHandleString, handleList.get(3));
- lq4 = qHelper.getLensQuery(sessionHandleString, handleList.get(4));
-
- Assert.assertEquals(lq1.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
- Assert.assertEquals(lq3.getStatus().getQueueNumber().intValue(), 1);
- Assert.assertEquals(lq4.getStatus().getQueueNumber().intValue(), 2);
-
- }finally {
- Util.changeConfig(hiveDriverSitePath);
- lens.restart();
- }
- }
-
-
- @Test(enabled = true)
- public void queueNumberChangeDifferentPriority() throws Exception {
-
- String longRunningQuery = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_95"), "20");
- HashMap<String, String> map = LensUtil.getHashMap(DriverConfig.MAX_CONCURRENT_QUERIES, "1");
- try {
- Util.changeConfig(map, hiveDriverSitePath);
- lens.restart();
-
- QueryHandle q0 = (QueryHandle) qHelper.executeQuery(longRunningQuery).getData();
- QueryHandle q1 = (QueryHandle) qHelper.executeQuery(COST_20).getData();
- QueryHandle q2 = (QueryHandle) qHelper.executeQuery(COST_2).getData();
-
- LensQuery normal1 = qHelper.getLensQuery(sessionHandleString, q1);
- LensQuery high1 = qHelper.getLensQuery(sessionHandleString, q2);
-
- Assert.assertEquals(normal1.getStatus().getQueueNumber().intValue(), 2);
- Assert.assertEquals(high1.getStatus().getQueueNumber().intValue(), 1);
-
- QueryHandle q3 = (QueryHandle) qHelper.executeQuery(COST_5).getData();
-
- LensQuery high2 = qHelper.getLensQuery(sessionHandleString, q3);
- high1 = qHelper.getLensQuery(sessionHandleString, q2);
- normal1 = qHelper.getLensQuery(sessionHandleString, q1);
-
- Assert.assertEquals(normal1.getStatus().getQueueNumber().intValue(), 3);
- Assert.assertEquals(high1.getStatus().getQueueNumber().intValue(), 1);
- Assert.assertEquals(high2.getStatus().getQueueNumber().intValue(), 2);
-
- QueryHandle q4 = (QueryHandle) qHelper.executeQuery(COST_20).getData();
-
- LensQuery normal2 = qHelper.getLensQuery(sessionHandleString, q4);
- normal1 = qHelper.getLensQuery(sessionHandleString, q1);
- high1 = qHelper.getLensQuery(sessionHandleString, q2);
- high2 = qHelper.getLensQuery(sessionHandleString, q3);
-
- Assert.assertEquals(high1.getStatus().getQueueNumber().intValue(), 1);
- Assert.assertEquals(high2.getStatus().getQueueNumber().intValue(), 2);
- Assert.assertEquals(normal1.getStatus().getQueueNumber().intValue(), 3);
- Assert.assertEquals(normal2.getStatus().getQueueNumber().intValue(), 4);
-
- }finally {
- Util.changeConfig(hiveDriverSitePath);
- lens.restart();
- }
- }
-
-
- @Test(enabled = true)
- public void queueNumberChangeDifferentPriorityWithJdbc() throws Exception {
-
- String longRunningQuery = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_95"), "20");
- HashMap<String, String> map = LensUtil.getHashMap(DriverConfig.MAX_CONCURRENT_QUERIES, "1");
- List<QueryHandle> handleList = new ArrayList<>();
-
- try {
- Util.changeConfig(map, hiveDriverSitePath);
- lens.restart();
-
- String[] queries = {COST_20, COST_2, COST_3, COST_60, COST_5, COST_10, COST_3};
- // Queue order is determined from priority and order in which queries are fired.
- int[] queueNo = {5, 1, 2, 7, 3, 6, 4};
-
- qHelper.executeQuery(longRunningQuery);
- for(String query : queries){
- handleList.add((QueryHandle) qHelper.executeQuery(query).getData());
- qHelper.executeQuery(JDBC_QUERY1).getData();
- }
-
- List<LensQuery> lqList = new ArrayList<>();
- for(QueryHandle qh : handleList){
- lqList.add(qHelper.getLensQuery(sessionHandleString, qh));
- }
-
- for(int i = 0; i < lqList.size(); i++) {
- Assert.assertEquals(lqList.get(i).getStatus().getQueueNumber().intValue(), queueNo[i]);
- }
-
- }finally {
- Util.changeConfig(hiveDriverSitePath);
- lens.restart();
- }
- }
-
}
http://git-wip-us.apache.org/repos/asf/lens/blob/2aaf6e0a/lens-regression/src/test/java/org/apache/lens/regression/throttling/ITQueueNumberTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/throttling/ITQueueNumberTests.java b/lens-regression/src/test/java/org/apache/lens/regression/throttling/ITQueueNumberTests.java
new file mode 100644
index 0000000..b7cea6b
--- /dev/null
+++ b/lens-regression/src/test/java/org/apache/lens/regression/throttling/ITQueueNumberTests.java
@@ -0,0 +1,232 @@
+/**
+ * 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.throttling;
+
+import java.lang.reflect.Method;
+import java.util.*;
+
+import javax.ws.rs.client.WebTarget;
+
+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.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 ITQueueNumberTests extends BaseTestClass {
+
+ private WebTarget servLens;
+ private String sessionHandleString;
+
+ 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");
+ public static final String COST_20 = QueryInventory.getQueryFromInventory("HIVE.COST_20");
+ public static final String COST_10 = QueryInventory.getQueryFromInventory("HIVE.COST_10");
+ public static final String COST_5 = QueryInventory.getQueryFromInventory("HIVE.COST_5");
+ public static final String COST_3 = QueryInventory.getQueryFromInventory("HIVE.COST_3");
+ public static final String COST_2 = QueryInventory.getQueryFromInventory("HIVE.COST_2");
+ public static final String JDBC_QUERY1 = QueryInventory.getQueryFromInventory("JDBC.QUERY1");
+
+ private String hiveDriverSitePath = lens.getServerDir() + "/conf/drivers/hive/hive1/hivedriver-site.xml";
+ private static Logger logger = Logger.getLogger(ITQueueNumberTests.class);
+
+ @BeforeClass(alwaysRun = true)
+ public void initialize() throws Exception {
+ servLens = ServiceManagerHelper.init();
+ logger.info("Creating a new Session");
+ sessionHandleString = sHelper.openSession(lens.getCurrentDB());
+ sHelper.setAndValidateParam(CubeQueryConfUtil.FAIL_QUERY_ON_PARTIAL_DATA, "false");
+ }
+
+ @BeforeMethod(alwaysRun = true)
+ public void setUp(Method method) throws Exception {
+ logger.info("Test Name: " + method.getName());
+ }
+
+ @AfterMethod(alwaysRun = true)
+ public void afterMethod(Method method) throws Exception {
+ logger.info("Test Name: " + method.getName());
+ qHelper.killQuery(null, "QUEUED", "all");
+ qHelper.killQuery(null, "RUNNING", "all");
+ qHelper.killQuery(null, "EXECUTED", "all");
+ }
+
+ @AfterClass(alwaysRun = true)
+ public void closeSession() throws Exception {
+ logger.info("Closing Session");
+ sHelper.closeSession();
+ }
+
+
+ /*
+ * LENS-995 : Queue number shouldn't change with in the same prority
+ */
+
+ @Test(enabled = true)
+ public void queueNumberChangeWithInSamePriority() throws Exception {
+
+ String longRunningQuery = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_95"), "20");
+ HashMap<String, String> map = LensUtil.getHashMap(DriverConfig.MAX_CONCURRENT_QUERIES, "1");
+ String[] queries = {longRunningQuery, COST_5, COST_5, COST_3, COST_2};
+
+ try {
+ Util.changeConfig(map, hiveDriverSitePath);
+ lens.restart();
+
+ List<QueryHandle> handleList = new ArrayList<>();
+ for(String query : queries){
+ handleList.add((QueryHandle) qHelper.executeQuery(query).getData());
+ }
+
+ LensQuery lq1 = qHelper.getLensQuery(sessionHandleString, handleList.get(1));
+ LensQuery lq2 = qHelper.getLensQuery(sessionHandleString, handleList.get(2));
+ LensQuery lq3 = qHelper.getLensQuery(sessionHandleString, handleList.get(3));
+ LensQuery lq4 = qHelper.getLensQuery(sessionHandleString, handleList.get(4));
+
+ Assert.assertEquals(lq1.getStatus().getQueueNumber().intValue(), 1);
+ Assert.assertEquals(lq2.getStatus().getQueueNumber().intValue(), 2);
+ Assert.assertEquals(lq3.getStatus().getQueueNumber().intValue(), 3);
+ Assert.assertEquals(lq4.getStatus().getQueueNumber().intValue(), 4);
+
+ LensQuery lq0 = qHelper.waitForCompletion(handleList.get(0));
+
+ lq1 = qHelper.getLensQuery(sessionHandleString, handleList.get(1));
+ lq2 = qHelper.getLensQuery(sessionHandleString, handleList.get(2));
+ lq3 = qHelper.getLensQuery(sessionHandleString, handleList.get(3));
+ lq4 = qHelper.getLensQuery(sessionHandleString, handleList.get(4));
+
+ Assert.assertEquals(lq0.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
+ Assert.assertEquals(lq2.getStatus().getQueueNumber().intValue(), 1);
+ Assert.assertEquals(lq3.getStatus().getQueueNumber().intValue(), 2);
+ Assert.assertEquals(lq4.getStatus().getQueueNumber().intValue(), 3);
+
+ lq1 = qHelper.waitForCompletion(handleList.get(1));
+
+ lq2 = qHelper.getLensQuery(sessionHandleString, handleList.get(2));
+ lq3 = qHelper.getLensQuery(sessionHandleString, handleList.get(3));
+ lq4 = qHelper.getLensQuery(sessionHandleString, handleList.get(4));
+
+ Assert.assertEquals(lq1.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
+ Assert.assertEquals(lq3.getStatus().getQueueNumber().intValue(), 1);
+ Assert.assertEquals(lq4.getStatus().getQueueNumber().intValue(), 2);
+
+ }finally {
+ Util.changeConfig(hiveDriverSitePath);
+ lens.restart();
+ }
+ }
+
+
+ @Test(enabled = true)
+ public void queueNumberChangeDifferentPriority() throws Exception {
+
+ String longRunningQuery = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_95"), "20");
+ HashMap<String, String> map = LensUtil.getHashMap(DriverConfig.MAX_CONCURRENT_QUERIES, "1");
+ try {
+ Util.changeConfig(map, hiveDriverSitePath);
+ lens.restart();
+
+ QueryHandle q0 = (QueryHandle) qHelper.executeQuery(longRunningQuery).getData();
+ QueryHandle q1 = (QueryHandle) qHelper.executeQuery(COST_20).getData();
+ QueryHandle q2 = (QueryHandle) qHelper.executeQuery(COST_2).getData();
+
+ LensQuery normal1 = qHelper.getLensQuery(sessionHandleString, q1);
+ LensQuery high1 = qHelper.getLensQuery(sessionHandleString, q2);
+
+ Assert.assertEquals(normal1.getStatus().getQueueNumber().intValue(), 2);
+ Assert.assertEquals(high1.getStatus().getQueueNumber().intValue(), 1);
+
+ QueryHandle q3 = (QueryHandle) qHelper.executeQuery(COST_5).getData();
+
+ LensQuery high2 = qHelper.getLensQuery(sessionHandleString, q3);
+ high1 = qHelper.getLensQuery(sessionHandleString, q2);
+ normal1 = qHelper.getLensQuery(sessionHandleString, q1);
+
+ Assert.assertEquals(normal1.getStatus().getQueueNumber().intValue(), 3);
+ Assert.assertEquals(high1.getStatus().getQueueNumber().intValue(), 1);
+ Assert.assertEquals(high2.getStatus().getQueueNumber().intValue(), 2);
+
+ QueryHandle q4 = (QueryHandle) qHelper.executeQuery(COST_20).getData();
+
+ LensQuery normal2 = qHelper.getLensQuery(sessionHandleString, q4);
+ normal1 = qHelper.getLensQuery(sessionHandleString, q1);
+ high1 = qHelper.getLensQuery(sessionHandleString, q2);
+ high2 = qHelper.getLensQuery(sessionHandleString, q3);
+
+ Assert.assertEquals(high1.getStatus().getQueueNumber().intValue(), 1);
+ Assert.assertEquals(high2.getStatus().getQueueNumber().intValue(), 2);
+ Assert.assertEquals(normal1.getStatus().getQueueNumber().intValue(), 3);
+ Assert.assertEquals(normal2.getStatus().getQueueNumber().intValue(), 4);
+
+ }finally {
+ Util.changeConfig(hiveDriverSitePath);
+ lens.restart();
+ }
+ }
+
+
+ @Test(enabled = true)
+ public void queueNumberChangeDifferentPriorityWithJdbc() throws Exception {
+
+ String longRunningQuery = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_95"), "20");
+ HashMap<String, String> map = LensUtil.getHashMap(DriverConfig.MAX_CONCURRENT_QUERIES, "1");
+ List<QueryHandle> handleList = new ArrayList<>();
+
+ try {
+ Util.changeConfig(map, hiveDriverSitePath);
+ lens.restart();
+
+ String[] queries = {COST_20, COST_2, COST_3, COST_60, COST_5, COST_10, COST_3};
+ // Queue order is determined from priority and order in which queries are fired.
+ int[] queueNo = {5, 1, 2, 7, 3, 6, 4};
+
+ qHelper.executeQuery(longRunningQuery);
+ for(String query : queries){
+ handleList.add((QueryHandle) qHelper.executeQuery(query).getData());
+ qHelper.executeQuery(JDBC_QUERY1).getData();
+ }
+
+ List<LensQuery> lqList = new ArrayList<>();
+ for(QueryHandle qh : handleList){
+ lqList.add(qHelper.getLensQuery(sessionHandleString, qh));
+ }
+
+ for(int i = 0; i < lqList.size(); i++) {
+ Assert.assertEquals(lqList.get(i).getStatus().getQueueNumber().intValue(), queueNo[i]);
+ }
+
+ }finally {
+ Util.changeConfig(hiveDriverSitePath);
+ lens.restart();
+ }
+ }
+
+}