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(); + } + } + +}
