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/03/31 09:48:16 UTC
[08/16] lens git commit: LENS-1380 : Revamp testcase division
http://git-wip-us.apache.org/repos/asf/lens/blob/97fe26d3/lens-regression/src/test/java/org/apache/lens/regression/client/ITSessionResourceTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/client/ITSessionResourceTests.java b/lens-regression/src/test/java/org/apache/lens/regression/client/ITSessionResourceTests.java
new file mode 100644
index 0000000..d39a2bd
--- /dev/null
+++ b/lens-regression/src/test/java/org/apache/lens/regression/client/ITSessionResourceTests.java
@@ -0,0 +1,401 @@
+/**
+ * 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 ITSessionResourceTests 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(ITSessionResourceTests.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);
+ 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);
+ 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/97fe26d3/lens-regression/src/test/java/org/apache/lens/regression/client/KillQueryTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/client/KillQueryTests.java b/lens-regression/src/test/java/org/apache/lens/regression/client/KillQueryTests.java
deleted file mode 100644
index a39b2fe..0000000
--- a/lens-regression/src/test/java/org/apache/lens/regression/client/KillQueryTests.java
+++ /dev/null
@@ -1,362 +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 javax.ws.rs.client.WebTarget;
-
-import javax.xml.bind.JAXBException;
-
-import org.apache.lens.api.query.*;
-import org.apache.lens.regression.core.constants.QueryInventory;
-import org.apache.lens.regression.core.helpers.*;
-import org.apache.lens.regression.core.testHelper.BaseTestClass;
-import org.apache.lens.server.api.error.LensException;
-
-import org.apache.log4j.Logger;
-
-import org.testng.Assert;
-import org.testng.annotations.*;
-
-
-public class KillQueryTests extends BaseTestClass {
-
- WebTarget servLens;
- private String sessionHandleString;
-
- private final String hdfsJarPath = lens.getServerHdfsUrl() + "/tmp";
- private final String localJarPath = new File("").getAbsolutePath() + "/lens-regression/target/testjars/";
- private final String hiveUdfJar = "hiveudftest.jar";
- private final String serverResourcePath = "/tmp/regression/resources";
- String sleepQuery = QueryInventory.getSleepQuery("5");
-
- private static Logger logger = Logger.getLogger(KillQueryTests.class);
-
- @BeforeClass(alwaysRun = true)
- public void initialize() throws IOException, JAXBException, LensException, IllegalAccessException,
- InstantiationException {
- servLens = ServiceManagerHelper.init();
- logger.info("Creating a new Session");
- sessionHandleString = sHelper.openSession(lens.getCurrentDB());
-
- //TODO : Enable when udf registration per driver is fixed
-/* HadoopUtil.uploadJars(localJarPath + "/" + hiveUdfJar, hdfsJarPath);
- logger.info("Adding jar for making query to run for longer period of time");
- sHelper.addResourcesJar(hdfsJarPath + "/" + hiveUdfJar);
- QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.SLEEP_FUNCTION).getData();*/
- }
-
- @BeforeMethod(alwaysRun = true)
- public void setUp(Method method) throws Exception {
- logger.info("Test Name: " + method.getName());
- }
-
-
- @AfterClass(alwaysRun = true)
- public void closeSession() throws Exception {
- logger.info("Closing Session");
- sHelper.closeSession();
- }
-
-
- @Test(enabled = true)
- public void killQueryByHandle() throws Exception {
-
- QueryHandle qH = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
- logger.info("QUERY HANDLE : " + qH);
-
- QueryStatus queryStatus = qHelper.waitForQueryToRun(qH);
- Assert.assertEquals(queryStatus.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
-
- qHelper.killQueryByQueryHandle(qH);
-
- queryStatus = qHelper.getQueryStatus(qH);
- Assert.assertEquals(queryStatus.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
- }
-
-
- @Test(enabled = true)
- public void killQueryByUser() throws Exception {
-
- String diffUser = "diff";
- String diffPass = "diff";
-
- String newSessionHandleSring = sHelper.openSession(diffUser, diffPass, lens.getCurrentDB());
-
- logger.info("Adding jar for making query to run for longer period of time");
- sHelper.addResourcesJar(hdfsJarPath + "/" + hiveUdfJar, newSessionHandleSring);
-
- QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
- logger.info("1st QUERY HANDLE : " + queryHandle1);
-
- QueryHandle queryHandle2 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
- logger.info("2nd QUERY HANDLE : " + queryHandle2);
-
- QueryHandle queryHandle3 = (QueryHandle) qHelper.executeQuery(sleepQuery, null,
- newSessionHandleSring).getData();
- logger.info("3rd QUERY HANDLE : " + queryHandle3);
-
- QueryStatus queryStatus1 = qHelper.waitForQueryToRun(queryHandle1);
- QueryStatus queryStatus2 = qHelper.waitForQueryToRun(queryHandle2);
- QueryStatus queryStatus3 = qHelper.waitForQueryToRun(queryHandle3, newSessionHandleSring);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
- Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
-
- Thread.sleep(1000);
-
- qHelper.killQuery(null, null, lens.getUserName());
- Thread.sleep(2000);
- queryStatus1 = qHelper.getQueryStatus(queryHandle1);
- queryStatus2 = qHelper.getQueryStatus(queryHandle2);
- queryStatus3 = qHelper.getQueryStatus(queryHandle3);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
- Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
-
- qHelper.killQuery(null, null, diffUser);
-
- queryStatus3 = qHelper.getQueryStatus(queryHandle3);
- Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
-
- }
-
- @Test(enabled = true)
- public void killQueryOfAllUser() throws Exception {
-
- String diffUser = "diff";
- String diffPass = "diff";
- String newSessionHandleSring = sHelper.openSession(diffUser, diffPass, lens.getCurrentDB());
- sHelper.addResourcesJar(hdfsJarPath + "/" + hiveUdfJar, newSessionHandleSring);
-
- QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
- QueryHandle queryHandle2 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
- QueryHandle queryHandle3 = (QueryHandle) qHelper.executeQuery(sleepQuery, null,
- newSessionHandleSring).getData();
-
- QueryStatus queryStatus1 = qHelper.waitForQueryToRun(queryHandle1);
- QueryStatus queryStatus2 = qHelper.waitForQueryToRun(queryHandle2);
- QueryStatus queryStatus3 = qHelper.waitForQueryToRun(queryHandle3, newSessionHandleSring);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
- Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
-
- qHelper.killQuery(null, null, "all");
-
- queryStatus1 = qHelper.getQueryStatus(queryHandle1);
- queryStatus2 = qHelper.getQueryStatus(queryHandle2);
- queryStatus3 = qHelper.getQueryStatus(queryHandle3);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
- Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
- }
-
-
- @Test(enabled = true)
- public void killAllQueryOfUser() throws Exception {
-
- QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
- QueryHandle queryHandle2 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
-
- QueryStatus queryStatus1 = qHelper.waitForQueryToRun(queryHandle1);
- QueryStatus queryStatus2 = qHelper.waitForQueryToRun(queryHandle2);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
-
- qHelper.killQuery();
-
- queryStatus1 = qHelper.getQueryStatus(queryHandle1);
- queryStatus2 = qHelper.getQueryStatus(queryHandle2);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
- }
-
-
- @Test(enabled = true)
- public void killQueryByState() throws Exception {
-
- QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
- QueryHandle queryHandle2 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
-
- QueryStatus queryStatus1 = qHelper.waitForQueryToRun(queryHandle1);
- QueryStatus queryStatus2 = qHelper.waitForQueryToRun(queryHandle2);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
-
- //kill Running queries
- qHelper.killQuery(null, "RUNNING");
-
- queryStatus1 = qHelper.getQueryStatus(queryHandle1);
- queryStatus2 = qHelper.getQueryStatus(queryHandle2);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
-
- //kill Canceled query
- qHelper.killQuery(null, "CANCELED");
-
- queryStatus1 = qHelper.getQueryStatus(queryHandle1);
- queryStatus2 = qHelper.getQueryStatus(queryHandle2);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Running");
-
- //kill successful query
- QueryHandle queryHandle3 = (QueryHandle) qHelper.executeQuery(QueryInventory.QUERY).getData();
- LensQuery lensQuery = qHelper.waitForCompletion(queryHandle3);
- Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
- qHelper.killQuery(null, "SUCCESSFUL");
- QueryStatus queryStatus3 = qHelper.getQueryStatus(queryHandle3);
- Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.SUCCESSFUL);
- }
-
- //TODO: enable when the bug is fixed.
-
- /* Currently doing kill query by queryName "query" will kill all the query with queryName as "*query*"
- * Raised a JIRA for same
- * When its Fixed Revisit this function */
-
- @Test(enabled = false)
- public void killQueryByQueryName() throws Exception {
-
- String queryName1 = "queryNameFirst";
- String queryName2 = "queryNameSecond";
- String queryName3 = "Name";
-
- QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(sleepQuery, queryName1).getData();
- logger.info("1st QUERY HANDLE : " + queryHandle1);
-
- QueryHandle queryHandle2 = (QueryHandle) qHelper.executeQuery(sleepQuery, queryName2).getData();
- logger.info("2nd QUERY HANDLE : " + queryHandle2);
-
- QueryHandle queryHandle3 = (QueryHandle) qHelper.executeQuery(sleepQuery, queryName3).getData();
- logger.info("3rd QUERY HANDLE : " + queryHandle3);
-
- QueryStatus queryStatus1 = qHelper.waitForQueryToRun(queryHandle1);
- QueryStatus queryStatus2 = qHelper.waitForQueryToRun(queryHandle2);
- QueryStatus queryStatus3 = qHelper.waitForQueryToRun(queryHandle3);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
- Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
-
- qHelper.killQuery(queryName3);
-
- queryStatus1 = qHelper.getQueryStatus(queryHandle1);
- queryStatus2 = qHelper.getQueryStatus(queryHandle2);
- queryStatus3 = qHelper.getQueryStatus(queryHandle3);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
- Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.CANCELED, "Query is Not Cancelled");
-
- qHelper.killQuery(queryName1);
-
- queryStatus1 = qHelper.getQueryStatus(queryHandle1);
- queryStatus2 = qHelper.getQueryStatus(queryHandle2);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.CANCELED, "Query is Not CANCELED");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
-
- qHelper.killQuery(queryName2);
- queryStatus2 = qHelper.getQueryStatus(queryHandle2);
-
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.CANCELED, "Query is Not CANCELED");
- }
-
- @Test(enabled = true)
- public void killQueryByTimeRange() throws Exception {
-
- String startTime1 = String.valueOf(System.currentTimeMillis());
- logger.info("Start Time of 1st Query : " + startTime1);
- Thread.sleep(1000);
- QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
- Thread.sleep(1000);
- String endTime1 = String.valueOf(System.currentTimeMillis());
- logger.info("End Time of 1st Query : " + endTime1);
-
- Thread.sleep(1000);
-
- String startTime2 = String.valueOf(System.currentTimeMillis());
- logger.info("Start Time of 2nd Query : " + startTime2);
- Thread.sleep(1000);
- QueryHandle queryHandle2 = (QueryHandle) qHelper.executeQuery(sleepQuery).getData();
- Thread.sleep(1000);
- String endTime2 = String.valueOf(System.currentTimeMillis());
- logger.info("End Time of 2nd Query : " + endTime2);
-
- QueryStatus queryStatus1 = qHelper.waitForQueryToRun(queryHandle1);
- QueryStatus queryStatus2 = qHelper.waitForQueryToRun(queryHandle2);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
-
- qHelper.killQuery(null, null, null, sessionHandleString, startTime1, endTime1);
-
- queryStatus1 = qHelper.getQueryStatus(queryHandle1);
- queryStatus2 = qHelper.getQueryStatus(queryHandle2);
-
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.CANCELED, "Query is Not CANCELED");
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not CANCELED");
-
- qHelper.killQuery(null, null, null, sessionHandleString, startTime2, endTime2);
-
- queryStatus2 = qHelper.getQueryStatus(queryHandle2);
- Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.CANCELED, "Query is Not CANCELED");
-
- }
-
-
- @Test(enabled = true)
- public void killQueryByAllFilter() throws Exception {
-
- String queryName1 = "TestKill";
-
- String startTime1 = String.valueOf(System.currentTimeMillis());
- logger.info("Start Time of 1st Query : " + startTime1);
- Thread.sleep(1000);
-
- QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(sleepQuery, queryName1).getData();
- Thread.sleep(1000);
-
- String endTime1 = String.valueOf(System.currentTimeMillis());
- logger.info("End Time of 1st Query : " + endTime1);
-
- QueryStatus queryStatus1 = qHelper.waitForQueryToRun(queryHandle1);
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
-
- qHelper.killQuery(queryName1, "RUNNING", lens.getUserName(), sessionHandleString, startTime1, endTime1);
-
- queryStatus1 = qHelper.getQueryStatus(queryHandle1);
- Assert.assertEquals(queryStatus1.getStatus(), QueryStatus.Status.CANCELED, "Query is Not CANCELED");
- }
-
-}
-
http://git-wip-us.apache.org/repos/asf/lens/blob/97fe26d3/lens-regression/src/test/java/org/apache/lens/regression/client/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/97fe26d3/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/97fe26d3/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/97fe26d3/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/97fe26d3/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);
+ }
+
+}