You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lens.apache.org by pr...@apache.org on 2017/02/28 12:48:21 UTC

[3/8] lens git commit: LENS-1389: Back Merge with master and fix lens-cube tests

http://git-wip-us.apache.org/repos/asf/lens/blob/2aaf6e0a/lens-regression/src/test/java/org/apache/lens/regression/client/SessionResourceTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/client/SessionResourceTests.java b/lens-regression/src/test/java/org/apache/lens/regression/client/SessionResourceTests.java
deleted file mode 100644
index f6a10e8..0000000
--- a/lens-regression/src/test/java/org/apache/lens/regression/client/SessionResourceTests.java
+++ /dev/null
@@ -1,403 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.lens.regression.client;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.ws.rs.client.WebTarget;
-import javax.ws.rs.core.GenericType;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import javax.xml.bind.JAXBException;
-
-import org.apache.lens.api.StringList;
-import org.apache.lens.api.query.LensQuery;
-import org.apache.lens.api.query.QueryHandle;
-import org.apache.lens.api.query.QueryStatus;
-import org.apache.lens.api.session.UserSessionInfo;
-import org.apache.lens.regression.core.constants.MetastoreURL;
-import org.apache.lens.regression.core.constants.QueryInventory;
-import org.apache.lens.regression.core.constants.QueryURL;
-import org.apache.lens.regression.core.constants.SessionURL;
-import org.apache.lens.regression.core.helpers.ServiceManagerHelper;
-import org.apache.lens.regression.core.testHelper.BaseTestClass;
-import org.apache.lens.regression.core.type.FormBuilder;
-import org.apache.lens.regression.core.type.MapBuilder;
-import org.apache.lens.regression.util.AssertUtil;
-import org.apache.lens.regression.util.Util;
-import org.apache.lens.server.api.error.LensException;
-import org.apache.lens.server.api.util.LensUtil;
-
-import org.apache.log4j.Logger;
-
-import org.testng.Assert;
-import org.testng.annotations.*;
-
-import com.jcraft.jsch.JSchException;
-
-public class SessionResourceTests extends BaseTestClass {
-
-  WebTarget servLens;
-  private String sessionHandleString;
-
-  private final String hdfsJarPath = lens.getServerHdfsUrl() + "/tmp";
-  private final String localJarPath = new File("").getAbsolutePath() + "/lens-regression/target/testjars/";
-  private final String hiveUdfJar = "hiveudftest.jar";
-  private final String serverResourcePath = "/tmp/regression/resources";
-
-  private static String newParamsKey = "datanucleus.autoCreateSchema";
-  private static String newParamsValue = "false";
-  private static String createSleepFunction = "CREATE TEMPORARY FUNCTION sleep AS 'SampleUdf'";
-  private static Logger logger = Logger.getLogger(SessionResourceTests.class);
-
-
-  @BeforeClass(alwaysRun = true)
-  public void initialize() throws IOException, JSchException, JAXBException, LensException {
-    servLens = ServiceManagerHelper.init();
-  }
-
-  @BeforeMethod(alwaysRun = true)
-  public void setUp(Method method) throws Exception {
-    logger.info("Test Name: " + method.getName());
-    logger.info("Creating a new Session");
-    sessionHandleString = sHelper.openSession(lens.getCurrentDB());
-  }
-
-  @AfterMethod(alwaysRun = true)
-  public void closeSession() throws Exception {
-    logger.info("Closing Session");
-    sHelper.closeSession();
-  }
-
-  private boolean checkSessionParamMap(String sessionHandle) throws Exception {
-    MapBuilder query = new MapBuilder("sessionid", sessionHandle, "verbose", "true");
-    Response response = lens.sendQuery("get", SessionURL.SESSION_PARAMS_URL, query);
-    AssertUtil.assertSucceededResponse(response);
-    StringList strList = response.readEntity(new GenericType<StringList>(StringList.class));
-    HashMap<String, String> map = Util.stringListToMap(strList);
-    if (map == null) {
-      return false;
-    }
-    return true;
-  }
-
-
-  @Test
-  public void testSessionGet() throws Exception {
-    String newSessionHandle = sHelper.openSession("diff", "diff");
-    Assert.assertNotNull(newSessionHandle);
-  }
-
-
-  @Test
-  public void testSessionParamsGetVerbose() throws Exception {
-    Assert.assertTrue(checkSessionParamMap(sessionHandleString), "Returned Empty Params list");
-  }
-
-
-  @Test
-  public void testSessionParamsGetNPut() throws Exception {
-
-    Map<String, String> resource = LensUtil.getHashMap("sessionid", sessionHandleString, "key", newParamsKey,
-      "value", newParamsValue);
-    FormBuilder formData = new FormBuilder(resource);
-    Response response = lens.sendForm("put", SessionURL.SESSION_PARAMS_URL, formData);
-    AssertUtil.assertSucceededResult(response);
-
-    String value = sHelper.getSessionParam(newParamsKey);
-    Assert.assertEquals(value, newParamsValue, "From Session Params Put");
-
-  }
-
-  //Negative Test Case
-  @Test
-  public void testSessionGetUndefinedParams() throws Exception {
-    String undefinedParamsKey = "test123";
-    MapBuilder query = new MapBuilder("sessionid", sessionHandleString, "key", undefinedParamsKey);
-    Response response = lens.sendQuery("get", SessionURL.SESSION_PARAMS_URL, query);
-    Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
-  }
-
-/*
- * Testing if Session is restored after server restart
- */
-
-  @Test
-  public void testSessionRestore() throws Exception {
-
-    Map<String, String> resource = LensUtil.getHashMap("sessionid", sessionHandleString,
-      "key", newParamsKey, "value", newParamsValue);
-    FormBuilder formData = new FormBuilder(resource);
-
-    Response response = lens.sendForm("put", SessionURL.SESSION_PARAMS_URL, formData);
-    AssertUtil.assertSucceededResult(response);
-
-    lens.restart();
-
-    MapBuilder query = new MapBuilder("sessionid", sessionHandleString, "key", newParamsKey);
-    response = lens.sendQuery("get", SessionURL.SESSION_PARAMS_URL, query);
-    AssertUtil.assertSucceededResponse(response);
-    StringList strList = response.readEntity(new GenericType<StringList>(StringList.class));
-    HashMap<String, String> map = Util.stringListToMap(strList);
-
-    Assert.assertEquals(map.get(newParamsKey), newParamsValue, "From Session Params Put");
-    Assert.assertEquals(map.size(), 1, "Params List contains more than one param");
-  }
-
-  @Test(enabled = true)
-  public void testSessionHDFSResourcePutNDelete() throws Exception {
-
-    String path = hdfsJarPath + "/" + hiveUdfJar;
-    sHelper.addResourcesJar(path);
-
-    QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(createSleepFunction).getData();
-    LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
-    Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
-
-    sHelper.removeResourcesJar(path);
-
-    queryHandle = (QueryHandle) qHelper.executeQuery(createSleepFunction).getData();
-    lensQuery = qHelper.waitForCompletion(queryHandle);
-    // TODO : Works only when there is single instance for each driver
-//    Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.FAILED);
-
-  }
-
-
-  @Test
-  public void testSessionLocalResourcePutNDelete() throws Exception {
-
-    String path = serverResourcePath + "/" + hiveUdfJar;
-    sHelper.addResourcesJar(path);
-
-    QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(createSleepFunction).getData();
-    LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
-    Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
-
-    sHelper.removeResourcesJar(path);
-
-    queryHandle = (QueryHandle) qHelper.executeQuery(createSleepFunction).getData();
-    lensQuery = qHelper.waitForCompletion(queryHandle);
-//  TODO : Works only when there is single instance for each driver
-//  Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.FAILED);
-
-  }
-
-  @Test
-  public void testListResources() throws Exception {
-
-    String path = serverResourcePath + "/" + hiveUdfJar;
-    sHelper.addResourcesJar(path);
-
-    MapBuilder query = new MapBuilder("sessionid", sessionHandleString);
-    Response response = lens.sendQuery("get", SessionURL.SESSION_LIST_RESOURCE_URL, query);
-    AssertUtil.assertSucceededResponse(response);
-    StringList responseString = response.readEntity(StringList.class);
-    List<String> jars = responseString.getElements();
-    for (String t : jars) {
-      Assert.assertTrue(t.contains(hiveUdfJar));
-    }
-  }
-
-
-  @Test
-  public void testSessionGone() throws Exception {
-
-    String newSession = sHelper.openSession("test", "test");
-    sHelper.closeSession(newSession);
-
-    MapBuilder query = new MapBuilder("sessionid", newSession);
-
-    // Get Session resources with closed session
-    Response response = lens.sendQuery("get", SessionURL.SESSION_LIST_RESOURCE_URL, query);
-    AssertUtil.assertGone(response);
-
-    // Get Session params with closd session
-    response = lens.sendQuery("get", SessionURL.SESSION_PARAMS_URL, query);
-    AssertUtil.assertGone(response);
-
-    //Setting DB with closed session Handle
-    response = lens.exec("post", MetastoreURL.METASTORE_DATABASES_URL, servLens,
-        null, query, MediaType.APPLICATION_XML_TYPE, null, lens.getCurrentDB());
-    AssertUtil.assertGone(response);
-
-    FormBuilder formData = new FormBuilder();
-    formData.add("sessionid", newSession);
-    formData.add("query", QueryInventory.QUERY);
-    formData.add("conf", "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><conf />");
-
-    //Explain Query with closed session Handle
-    formData.add("operation", "EXPLAIN");
-    response = lens.exec("post", QueryURL.QUERY_URL, servLens, null, null,
-        MediaType.MULTIPART_FORM_DATA_TYPE, MediaType.APPLICATION_XML, formData.getForm());
-    AssertUtil.assertGone(response);
-
-    //Execute Query with closed session Handle
-    formData.add("operation", "EXECUTE");
-    response = lens.exec("post", QueryURL.QUERY_URL, servLens, null, null,
-        MediaType.MULTIPART_FORM_DATA_TYPE, MediaType.APPLICATION_XML, formData.getForm());
-    AssertUtil.assertGone(response);
-
-  }
-
-  @Test
-  public void testOpenSessionWithDB() throws Exception {
-
-    String newDb = "opensessionwithdb";
-    mHelper.createDatabase(newDb);
-    String newSession = sHelper.openSession("test", "test", newDb);
-    String curDB = mHelper.getCurrentDatabase(newSession);
-    Assert.assertEquals(curDB, newDb, "Could not open session with passed db");
-    sHelper.closeSession(newSession);
-    //TODO : Enable when drop table is fixed
-//    mHelper.dropDatabase(newDb);
-  }
-
-  @Test
-  public void testOpenSessionDefault() throws Exception {
-
-    String newSession = sHelper.openSession("test", "test");
-    String curDB = mHelper.getCurrentDatabase(newSession);
-    Assert.assertEquals(curDB, "default", "Could not open session with passed db");
-    sHelper.closeSession(newSession);
-  }
-
-
-  @Test
-  public void testOpenSessionDBDoesnotExist() throws Exception {
-
-    Response response = sHelper.openSessionReturnResponse("test", "test", "dbdoesnotexist", null);
-    AssertUtil.assertNotFound(response);
-  }
-
-  @Test
-  public void testSessionDBChange() throws Exception {
-
-    String newDb = "opensessionwithdb";
-    String newDb1 = "opensessionwithdb1";
-    mHelper.createDatabase(newDb);
-    mHelper.createDatabase(newDb1);
-
-    String newSession = sHelper.openSession("test", "test", newDb);
-    String curDB = mHelper.getCurrentDatabase(newSession);
-    Assert.assertEquals(curDB, newDb, "Could not open session with passed db");
-
-    mHelper.setCurrentDatabase(newSession, newDb1);
-    curDB = mHelper.getCurrentDatabase(newSession);
-    Assert.assertEquals(curDB, newDb1, "Could not open session with passed db");
-
-    sHelper.closeSession(newSession);
-    //TODO : Enable when drop table issue is fixed
-//    mHelper.dropDatabase(newDb);
-//    mHelper.dropDatabase(newDb1);
-  }
-
-  //Fails as closeSession cannot take json as input,. (No API can take json as input)
-  @Test(enabled = false)
-  public void testGetSessionJson() throws Exception {
-
-    String newSessionHandle = sHelper.openSession("diff", "diff", null, MediaType.APPLICATION_JSON);
-    Assert.assertNotNull(newSessionHandle);
-    Assert.assertFalse(newSessionHandle.isEmpty());
-    sHelper.closeSession(newSessionHandle, MediaType.APPLICATION_JSON);
-  }
-
-  @Test(enabled = true)
-  public void assertSucceededResponse() throws Exception {
-    String session = sHelper.openSession("diff", "diff", null, MediaType.APPLICATION_XML);
-    Assert.assertNotNull(session);
-    Assert.assertFalse(session.isEmpty());
-
-    MapBuilder query = new MapBuilder("sessionid", session);
-    Response response = lens.exec("delete", SessionURL.SESSION_BASE_URL, servLens, null, query, null,
-        MediaType.APPLICATION_JSON, null);
-    AssertUtil.assertSucceededResponse(response);
-  }
-
-
-  @Test(enabled = true)
-  public void listSessionTest() throws Exception {
-
-    int origSize = sHelper.getSessionList().size();
-    for(int i=1; i<4; i++) {
-      sHelper.openSession("u" + i, "p" + i);
-    }
-    List<UserSessionInfo> sessionList = sHelper.getSessionList();
-    Assert.assertEquals(sessionList.size(), origSize+3);
-  }
-
-  //TODO : enable when session handle returned is entire xml instead of just public id
-  @Test(enabled = false)
-  public void listSessionUserSessionInfoVerification() throws Exception {
-
-    List<UserSessionInfo> sessionList = sHelper.getSessionList();
-    for(UserSessionInfo u : sessionList){
-      System.out.println(u.toString() + "\n");
-      sHelper.closeSession(u.getHandle());
-    }
-
-    String session1 = sHelper.openSession("u1", "p1", lens.getCurrentDB());
-    String session2 = sHelper.openSession("u2", "p2", lens.getCurrentDB());
-
-    QueryHandle qh1 = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_DIM_QUERY, null, session1).getData();
-    QueryHandle qh2 = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_DIM_QUERY, null, session2).getData();
-
-    sessionList = sHelper.getSessionList();
-    Assert.assertEquals(sessionList.size(), 2);
-
-    UserSessionInfo s1 = sessionList.get(0);
-    Assert.assertEquals(s1.getUserName(), "u1");
-    List<QueryHandle> queryHandleList = s1.getActiveQueries();
-    Assert.assertEquals(queryHandleList.size(), 2);
-    Assert.assertTrue(queryHandleList.contains(qh1));
-    Assert.assertTrue(queryHandleList.contains(qh2));
-
-    for(UserSessionInfo u : sessionList){
-      System.out.println(u.toString() + "\n");
-      sHelper.closeSession(u.getHandle());
-    }
-  }
-
-  //LENS-1199
-  @Test(enabled = true)
-  public void multipleCloseSessionForActiveQueries() throws Exception {
-    String session = sHelper.openSession("diff", "diff", lens.getCurrentDB());
-    QueryHandle qh = (QueryHandle) qHelper.executeQuery(QueryInventory.getSleepQuery("3"), null, session).getData();
-    sHelper.closeSession(session);
-    sHelper.closeSession(session);
-  }
-
-  //LENS-1199
-  @Test(enabled = true)
-  public void multipleCloseSession() throws Exception {
-    String session = sHelper.openSession("diff", "diff", lens.getCurrentDB());
-    sHelper.closeSession(session);
-    MapBuilder query = new MapBuilder("sessionid", session);
-    Response response = lens.exec("delete", SessionURL.SESSION_BASE_URL, servLens, null, query);
-    AssertUtil.assertGone(response);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lens/blob/2aaf6e0a/lens-regression/src/test/java/org/apache/lens/regression/config/ITServerConfigTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/config/ITServerConfigTests.java b/lens-regression/src/test/java/org/apache/lens/regression/config/ITServerConfigTests.java
index 3503310..0f05198 100644
--- a/lens-regression/src/test/java/org/apache/lens/regression/config/ITServerConfigTests.java
+++ b/lens-regression/src/test/java/org/apache/lens/regression/config/ITServerConfigTests.java
@@ -80,18 +80,13 @@ public class ITServerConfigTests extends BaseTestClass {
   public void setUp(Method method) throws Exception {
     logger.info("Test Name: " + method.getName());
     Util.runRemoteCommand("cp " + confFilePath + " " + backupConfFilePath);
-    sessionHandleString = sHelper.openSession(lens.getCurrentDB());
   }
 
-
   @AfterMethod(alwaysRun = true)
   public void restoreConfig() throws JSchException, IOException, LensException, InterruptedException {
     logger.info("Executing after method\n");
     Util.runRemoteCommand("cp " + backupConfFilePath + " " + confFilePath);
     lens.restart();
-    if (sessionHandleString != null){
-      sHelper.closeSession();
-    }
   }
 
 
@@ -131,7 +126,9 @@ public class ITServerConfigTests extends BaseTestClass {
 
   @DataProvider(name = "boolean_values")
   public Object[][] data() {
+//    String[][] testData = {{"true"}};
     String[][] testData = {{"true"}, {"false"}};
+
     return testData;
   }
 
@@ -289,47 +286,51 @@ public class ITServerConfigTests extends BaseTestClass {
   *  Test for Property lens.server.mode=METASTORE_READONLY,METASTORE_NODROP,OPEN
   */
 
-
   @Test(enabled = true)
   public void testServerMode() throws Exception {
 
-    String newDb = "TestMetastoreService_testDb1";
+    try{
+      sessionHandleString = sHelper.openSession(lens.getCurrentDB());
+      String newDb = "TestMetastoreService_testDb1";
 
-    HashMap<String, String> map = LensUtil.getHashMap(LensConfConstants.SERVER_MODE, "METASTORE_READONLY");
-    Util.changeConfig(map, confFilePath);
-    lens.restart();
+      HashMap<String, String> map = LensUtil.getHashMap(LensConfConstants.SERVER_MODE, "METASTORE_READONLY");
+      Util.changeConfig(map, confFilePath);
+      lens.restart();
 
-    MapBuilder query = new MapBuilder("sessionid", sessionHandleString);
-    Response response = mHelper.exec("post", MetastoreURL.METASTORE_DATABASES_URL, servLens,
-        null, query, MediaType.APPLICATION_XML_TYPE, null, newDb);
-    Assert.assertEquals(response.getStatus(), Response.Status.METHOD_NOT_ALLOWED.getStatusCode());
+      MapBuilder query = new MapBuilder("sessionid", sessionHandleString);
+      Response response = mHelper.exec("post", MetastoreURL.METASTORE_DATABASES_URL, servLens,
+          null, query, MediaType.APPLICATION_XML_TYPE, null, newDb);
+      Assert.assertEquals(response.getStatus(), Response.Status.METHOD_NOT_ALLOWED.getStatusCode());
 
-    map.put(LensConfConstants.SERVER_MODE, "METASTORE_NODROP");
-    Util.changeConfig(map, confFilePath);
-    lens.restart();
+      map.put(LensConfConstants.SERVER_MODE, "METASTORE_NODROP");
+      Util.changeConfig(map, confFilePath);
+      lens.restart();
 
-    response = mHelper.exec("post", MetastoreURL.METASTORE_DATABASES_URL, servLens,
-        null, query, MediaType.APPLICATION_XML_TYPE, null, newDb);
-    AssertUtil.assertSucceededResponse(response);
-    StringList allDb = mHelper.listDatabases();
-    Assert.assertTrue(allDb.getElements().contains(newDb.toLowerCase()), "Unable to Create DB");
+      response = mHelper.exec("post", MetastoreURL.METASTORE_DATABASES_URL, servLens,
+          null, query, MediaType.APPLICATION_XML_TYPE, null, newDb);
+      AssertUtil.assertSucceededResponse(response);
+      StringList allDb = mHelper.listDatabases();
+      Assert.assertTrue(allDb.getElements().contains(newDb.toLowerCase()), "Unable to Create DB");
 
-    query.put("cascade", "true");
-    response = mHelper.exec("delete", MetastoreURL.METASTORE_DATABASES_URL + "/" + newDb, servLens,
-        null, query, MediaType.APPLICATION_XML_TYPE, null);
-    Assert.assertEquals(response.getStatus(), Response.Status.METHOD_NOT_ALLOWED.getStatusCode());
+      query.put("cascade", "true");
+      response = mHelper.exec("delete", MetastoreURL.METASTORE_DATABASES_URL + "/" + newDb, servLens,
+          null, query, MediaType.APPLICATION_XML_TYPE, null);
+      Assert.assertEquals(response.getStatus(), Response.Status.METHOD_NOT_ALLOWED.getStatusCode());
 
-    map.put(LensConfConstants.SERVER_MODE, "OPEN");
-    Util.changeConfig(map, confFilePath);
-    lens.restart();
+      map.put(LensConfConstants.SERVER_MODE, "OPEN");
+      Util.changeConfig(map, confFilePath);
+      lens.restart();
 
-    //TODO : Enable this when delete db issue is fixed
-/*    response = mHelper.exec("delete", MetastoreURL.METASTORE_DATABASES_URL + "/" + newDb, servLens,
-        null, query, MediaType.APPLICATION_XML_TYPE, null);
-    AssertUtil.assertSucceededResponse(response);
-    allDb = mHelper.listDatabases();
-    Assert.assertFalse(allDb.getElements().contains(newDb.toLowerCase()), "Unable to Create DB");*/
+      //TODO : Enable this when delete db issue is fixed
+      response = mHelper.exec("delete", MetastoreURL.METASTORE_DATABASES_URL + "/" + newDb, servLens,
+          null, query, MediaType.APPLICATION_XML_TYPE, null);
+      AssertUtil.assertSucceededResponse(response);
+      allDb = mHelper.listDatabases();
+      Assert.assertFalse(allDb.getElements().contains(newDb.toLowerCase()), "Unable to Create DB");
 
+    }finally {
+      sHelper.closeSession();
+    }
   }
 
 
@@ -390,36 +391,44 @@ public class ITServerConfigTests extends BaseTestClass {
   * Test for Property lens.server.max.finished.queries for persistent result set
   */
 
-  //This is failing
   @Test(enabled = true)
   public void testQueryResultRetention() throws Exception {
 
-    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "true");
-    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
+    try{
+      sessionHandleString = sHelper.openSession(lens.getCurrentDB());
+      sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "true");
+      sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
 
-    HashMap<String, String> map = LensUtil.getHashMap(LensConfConstants.RESULTSET_PURGE_ENABLED, "true",
-        LensConfConstants.RESULTSET_PURGE_INTERVAL_IN_SECONDS, "10",
-        LensConfConstants.QUERY_RESULTSET_RETENTION, "20 sec",
-        LensConfConstants.HDFS_OUTPUT_RETENTION, "60 min");
+      HashMap<String, String> map = LensUtil.getHashMap(LensConfConstants.RESULTSET_PURGE_ENABLED, "true",
+          LensConfConstants.RESULTSET_PURGE_INTERVAL_IN_SECONDS, "10",
+          LensConfConstants.QUERY_RESULTSET_RETENTION, "20 sec",
+          LensConfConstants.HDFS_OUTPUT_RETENTION, "60 min");
 
-    Util.changeConfig(map, confFilePath);
-    lens.restart();
+      Util.changeConfig(map, confFilePath);
+      lens.restart();
 
-    MapBuilder query = new MapBuilder("sessionid", sessionHandleString);
+      MapBuilder query = new MapBuilder("sessionid", sessionHandleString);
+
+      QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_CUBE_QUERY).getData();
+      LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
+      Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
 
-    QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_CUBE_QUERY).getData();
-    LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
-    Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
+      Response response = qHelper.exec("get", QueryURL.QUERY_URL + "/" + queryHandle.toString() + "/resultset",
+          servLens, null, query);
+      AssertUtil.assertSucceededResponse(response);
 
-    Response response = qHelper.exec("get", QueryURL.QUERY_URL + "/" + queryHandle.toString() + "/resultset",
-        servLens, null, query);
-    AssertUtil.assertSucceededResponse(response);
+      Thread.sleep(40000);
 
-    Thread.sleep(40000);
+      response = qHelper.exec("get", QueryURL.QUERY_URL + "/" + queryHandle.toString() + "/resultset",
+          servLens, null, query);
+      //TODO : This is failing , enable it when its fixed
+//    Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
 
-    response = qHelper.exec("get", QueryURL.QUERY_URL + "/" + queryHandle.toString() + "/resultset",
-        servLens, null, query);
-    Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
+    } finally {
+      if (sessionHandleString != null){
+        sHelper.closeSession();
+      }
+    }
   }
 
 
@@ -430,52 +439,67 @@ public class ITServerConfigTests extends BaseTestClass {
   @Test(enabled = true, dataProvider = "query_provider")
   public void testInMemoryPurger(String query) throws Exception {
 
-    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "false");
-    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
-    sHelper.setAndValidateParam(LensConfConstants.QUERY_MAIL_NOTIFY, "false");
+    try{
+      sessionHandleString = sHelper.openSession(lens.getCurrentDB());
+      sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "false");
+      sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
+      sHelper.setAndValidateParam(LensConfConstants.QUERY_MAIL_NOTIFY, "false");
 
-    HashMap<String, String> map = LensUtil.getHashMap(LensConfConstants.INMEMORY_RESULT_SET_TTL_SECS, "20",
-        LensConfConstants.PURGE_INTERVAL, "10000"); //in millis
-    Util.changeConfig(map, confFilePath);
-    lens.restart();
-    QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(query).getData();
-    LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
-    Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
+      HashMap<String, String> map = LensUtil.getHashMap(LensConfConstants.INMEMORY_RESULT_SET_TTL_SECS, "20",
+          LensConfConstants.PURGE_INTERVAL, "10000"); //in millis
+      Util.changeConfig(map, confFilePath);
+      lens.restart();
+      QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(query).getData();
+      LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
+      Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
 
-    Response response = qHelper.getResultSetResponse(queryHandle, "0", "100", sessionHandleString);
-    Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode());
+      Response response = qHelper.getResultSetResponse(queryHandle, "0", "100", sessionHandleString);
+      Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode());
 
-    Thread.sleep(30000); //waiting till query gets purged ( ttl + purge interval time)
+      Thread.sleep(30000); //waiting till query gets purged ( ttl + purge interval time)
 
-    response = qHelper.getResultSetResponse(queryHandle, "0", "100", sessionHandleString);
-    Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
+      response = qHelper.getResultSetResponse(queryHandle, "0", "100", sessionHandleString);
+      Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
+    } finally {
+      if (sessionHandleString != null){
+        sHelper.closeSession();
+      }
+    }
   }
 
   // Behaviour is not the same for hive query before result is purged
   @Test(enabled = true)
   public void readInmemoryTwiceBeforePurgerTime() throws Exception {
 
-    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "false");
-    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
-    sHelper.setAndValidateParam(LensConfConstants.QUERY_MAIL_NOTIFY, "false");
+    try{
+      sessionHandleString = sHelper.openSession(lens.getCurrentDB());
+      sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "false");
+      sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
+      sHelper.setAndValidateParam(LensConfConstants.QUERY_MAIL_NOTIFY, "false");
 
-    HashMap<String, String> map = LensUtil.getHashMap(LensConfConstants.INMEMORY_RESULT_SET_TTL_SECS, "500",
-        LensConfConstants.PURGE_INTERVAL, "10000");
-    Util.changeConfig(map, confFilePath);
-    lens.restart();
+      HashMap<String, String> map = LensUtil.getHashMap(LensConfConstants.INMEMORY_RESULT_SET_TTL_SECS, "500",
+          LensConfConstants.PURGE_INTERVAL, "10000");
+      Util.changeConfig(map, confFilePath);
+      lens.restart();
 
-    QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_CUBE_QUERY).getData();
-    LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
-    Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed");
+      QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_CUBE_QUERY).getData();
+      LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
+      Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed");
 
-    Response response = qHelper.getResultSetResponse(queryHandle, "0", "100", sessionHandleString);
-    Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode());
+      Response response = qHelper.getResultSetResponse(queryHandle, "0", "100", sessionHandleString);
+      Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode());
 
-    response = qHelper.getResultSetResponse(queryHandle, "0", "100", sessionHandleString);
+      response = qHelper.getResultSetResponse(queryHandle, "0", "100", sessionHandleString);
 
-    //TODO : enable this when LENS-823 is fixed
-    //Currently its throwing 500 which needs to be fixed.
+      //TODO : enable this when LENS-823 is fixed
+      //Currently its throwing 500 which needs to be fixed.
 //    Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
+
+    } finally {
+      if (sessionHandleString != null){
+        sHelper.closeSession();
+      }
+    }
   }
 
 
@@ -553,8 +577,5 @@ public class ITServerConfigTests extends BaseTestClass {
       }
     }
   }
-
-
-
 }
 

http://git-wip-us.apache.org/repos/asf/lens/blob/2aaf6e0a/lens-regression/src/test/java/org/apache/lens/regression/config/ITSessionConfigTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/config/ITSessionConfigTests.java b/lens-regression/src/test/java/org/apache/lens/regression/config/ITSessionConfigTests.java
index 2deb043..fcced5e 100644
--- a/lens-regression/src/test/java/org/apache/lens/regression/config/ITSessionConfigTests.java
+++ b/lens-regression/src/test/java/org/apache/lens/regression/config/ITSessionConfigTests.java
@@ -28,7 +28,7 @@ import javax.xml.bind.JAXBException;
 
 import org.apache.lens.api.query.*;
 import org.apache.lens.cube.parse.CubeQueryConfUtil;
-import org.apache.lens.regression.client.SessionResourceTests;
+import org.apache.lens.regression.client.ITSessionResourceTests;
 import org.apache.lens.regression.core.constants.QueryInventory;
 import org.apache.lens.regression.core.helpers.ServiceManagerHelper;
 import org.apache.lens.regression.core.testHelper.BaseTestClass;
@@ -52,7 +52,7 @@ public class ITSessionConfigTests extends BaseTestClass{
   private static String queryResultParentDirPath = "/tmp/lensreports";
   private String lensConfFilePath = lens.getServerDir() + "/conf/lens-site.xml";
 
-  private static Logger logger = Logger.getLogger(SessionResourceTests.class);
+  private static Logger logger = Logger.getLogger(ITSessionResourceTests.class);
 
   @BeforeClass(alwaysRun = true)
   public void initialize() throws IOException, JSchException, JAXBException, LensException {

http://git-wip-us.apache.org/repos/asf/lens/blob/2aaf6e0a/lens-regression/src/test/java/org/apache/lens/regression/scheduler/ITMaxScheduledQueryTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/scheduler/ITMaxScheduledQueryTests.java b/lens-regression/src/test/java/org/apache/lens/regression/scheduler/ITMaxScheduledQueryTests.java
new file mode 100644
index 0000000..5c4870a
--- /dev/null
+++ b/lens-regression/src/test/java/org/apache/lens/regression/scheduler/ITMaxScheduledQueryTests.java
@@ -0,0 +1,160 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.lens.regression.scheduler;
+
+import java.lang.reflect.Method;
+import java.util.Calendar;
+import java.util.HashMap;
+
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.Response;
+
+import org.apache.lens.api.scheduler.*;
+import org.apache.lens.regression.core.constants.QueryInventory;
+import org.apache.lens.regression.core.helpers.ServiceManagerHelper;
+import org.apache.lens.regression.core.testHelper.BaseTestClass;
+import org.apache.lens.regression.util.AssertUtil;
+import org.apache.lens.regression.util.Util;
+import org.apache.lens.server.api.LensConfConstants;
+import org.apache.lens.server.api.util.LensUtil;
+
+import org.apache.log4j.Logger;
+
+import org.testng.Assert;
+import org.testng.annotations.*;
+
+
+public class ITMaxScheduledQueryTests extends BaseTestClass {
+
+  WebTarget servLens;
+  private String sessionHandleString;
+
+  private static Logger logger = Logger.getLogger(ITMaxScheduledQueryTests.class);
+  private static String format = "yyyy-MM-dd HH:mm:ss";
+  private static String currentDate = Util.getCurrentDate(format);
+  String lensSiteConf = lens.getServerDir() + "/conf/lens-site.xml";
+
+  @BeforeClass(alwaysRun = true)
+  public void initialize() throws Exception {
+    servLens = ServiceManagerHelper.init();
+    HashMap<String, String> map = LensUtil.getHashMap(LensConfConstants.MAX_SCHEDULED_JOB_PER_USER, "2");
+    Util.changeConfig(map, lensSiteConf);
+    lens.restart();
+  }
+
+  @BeforeMethod(alwaysRun = true)
+  public void setUp(Method method) throws Exception {
+    logger.info("Test Name: " + method.getName());
+    logger.info("Creating a new Session");
+    sessionHandleString = sHelper.openSession(lens.getCurrentDB());
+  }
+
+  @AfterMethod(alwaysRun = true)
+  public void closeSession() throws Exception {
+    logger.info("Closing Session");
+    if (sessionHandleString != null){
+      sHelper.closeSession();
+    }
+  }
+
+  @AfterClass(alwaysRun = true)
+  public void afterClass() throws Exception {
+    Util.changeConfig(lensSiteConf);
+    lens.restart();
+  }
+
+  //LENS-1320
+
+  @Test(groups = "max_scheduled_job_per_user")
+  public void testJobsInNewState() throws Exception {
+
+    String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 4);
+    String session = sHelper.openSession("max1", "pwd", lens.getCurrentDB());
+    XJob xJob = scheduleHelper.getXJob("job-submit", QueryInventory.QUERY, null, currentDate, endDate,
+        XFrequencyEnum.DAILY);
+
+    String j1 = scheduleHelper.submitJob(xJob, session);
+    String j2 = scheduleHelper.submitJob(xJob, session);
+    Response response = scheduleHelper.submitJobReturnResponse("submit", xJob, session);
+    AssertUtil.assertBadRequest(response);
+  }
+
+  @Test(groups = "max_scheduled_job_per_user")
+  public void testJobsInScheduledState() throws Exception {
+
+    String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 4);
+    String session = sHelper.openSession("max2", "pwd", lens.getCurrentDB());
+    XJob xJob = scheduleHelper.getXJob("job-submit", QueryInventory.QUERY, null, currentDate, endDate,
+        XFrequencyEnum.DAILY);
+
+    String j1 = scheduleHelper.submitJob(xJob, session);
+    String j2 = scheduleHelper.submitNScheduleJob(xJob, session);
+    Response response = scheduleHelper.submitJobReturnResponse("submit", xJob, session);
+    AssertUtil.assertBadRequest(response);
+  }
+
+  @Test(groups = "max_scheduled_job_per_user")
+  public void testJobsInSuspendedState() throws Exception {
+
+    String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 4);
+    String session = sHelper.openSession("max3", "pwd", lens.getCurrentDB());
+    XJob xJob = scheduleHelper.getXJob("job-submit", QueryInventory.QUERY, null, currentDate, endDate,
+        XFrequencyEnum.DAILY);
+
+    String j1 = scheduleHelper.submitJob(xJob, session);
+    String j2 = scheduleHelper.submitNScheduleJob(xJob, session);
+    scheduleHelper.updateJob(j2, "SUSPEND", session);
+    Assert.assertEquals(scheduleHelper.getJobStatus(j2), SchedulerJobState.SUSPENDED);
+    Response response = scheduleHelper.submitJobReturnResponse("submit", xJob, session);
+    AssertUtil.assertBadRequest(response);
+  }
+
+  @Test(groups = "max_scheduled_job_per_user")
+  public void testJobsInDeletedState() throws Exception {
+
+    String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 4);
+    String session = sHelper.openSession("max4", "pwd", lens.getCurrentDB());
+    XJob xJob = scheduleHelper.getXJob("job-submit", QueryInventory.QUERY, null, currentDate, endDate,
+        XFrequencyEnum.DAILY);
+
+    String j1 = scheduleHelper.submitJob(xJob, session);
+    scheduleHelper.deleteJob(j1, session);
+    Assert.assertEquals(scheduleHelper.getJobStatus(j1), SchedulerJobState.DELETED);
+
+    String j2 = scheduleHelper.submitJob(xJob, session);
+    String j3 = scheduleHelper.submitJob(xJob, session);
+  }
+
+  @Test(groups = "max_scheduled_job_per_user")
+  public void testJobsInExpiredState() throws Exception {
+
+    String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 4);
+    String session = sHelper.openSession("max5", "pwd", lens.getCurrentDB());
+    XJob xJob = scheduleHelper.getXJob("job-submit", QueryInventory.QUERY, null, currentDate, endDate,
+        XFrequencyEnum.DAILY);
+
+    String j1 = scheduleHelper.submitJob(xJob, session);
+    scheduleHelper.updateJob(j1, "EXPIRE", session);
+    Assert.assertEquals(scheduleHelper.getJobStatus(j1), SchedulerJobState.EXPIRED);
+    String j2 = scheduleHelper.submitJob(xJob, session);
+    String j3 = scheduleHelper.submitJob(xJob, session);
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/lens/blob/2aaf6e0a/lens-regression/src/test/java/org/apache/lens/regression/scheduler/ITScheduleQueryTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/scheduler/ITScheduleQueryTests.java b/lens-regression/src/test/java/org/apache/lens/regression/scheduler/ITScheduleQueryTests.java
new file mode 100644
index 0000000..f8fa33f
--- /dev/null
+++ b/lens-regression/src/test/java/org/apache/lens/regression/scheduler/ITScheduleQueryTests.java
@@ -0,0 +1,337 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.lens.regression.scheduler;
+
+import java.lang.reflect.Method;
+import java.util.Calendar;
+import java.util.List;
+
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.MediaType;
+
+import org.apache.lens.api.result.LensAPIResult;
+import org.apache.lens.api.scheduler.*;
+import org.apache.lens.regression.core.constants.QueryInventory;
+import org.apache.lens.regression.core.helpers.ServiceManagerHelper;
+import org.apache.lens.regression.core.testHelper.BaseTestClass;
+import org.apache.lens.regression.util.Util;
+
+import org.apache.log4j.Logger;
+
+import org.testng.Assert;
+import org.testng.annotations.*;
+
+
+public class ITScheduleQueryTests extends BaseTestClass {
+
+  WebTarget servLens;
+  private String sessionHandleString;
+
+  private static Logger logger = Logger.getLogger(ITScheduleQueryTests.class);
+  private static String format = "yyyy-MM-dd HH:mm:ss";
+  private static String currentDate = Util.getCurrentDate(format);
+  String lensSiteConf = lens.getServerDir() + "/conf/lens-site.xml";
+
+  @BeforeClass(alwaysRun = true)
+  public void initialize() throws Exception {
+    servLens = ServiceManagerHelper.init();
+  }
+
+  @BeforeMethod(alwaysRun = true)
+  public void setUp(Method method) throws Exception {
+    logger.info("Test Name: " + method.getName());
+    logger.info("Creating a new Session");
+    sessionHandleString = sHelper.openSession(lens.getCurrentDB());
+  }
+
+  @AfterMethod(alwaysRun = true)
+  public void closeSession() throws Exception {
+    logger.info("Closing Session");
+    if (sessionHandleString != null){
+      sHelper.closeSession();
+    }
+  }
+
+
+  @Test
+  public void submitJob() throws Exception {
+    String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 4);
+    XJob xJob = scheduleHelper.getXJob("job-submit", QueryInventory.QUERY, null, currentDate, endDate,
+        XFrequencyEnum.DAILY);
+    String jobHandle = scheduleHelper.submitJob(xJob, sessionHandleString);
+    Assert.assertNotNull(jobHandle);
+    Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.NEW);
+  }
+
+  @Test
+  public void submitNScheduleQuery() throws Exception {
+
+    String startDate = Util.modifyDate(currentDate, format, Calendar.DATE, -1);
+    String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 3);
+    XJob xJob = scheduleHelper.getXJob("job-submit-schedule", QueryInventory.JDBC_CUBE_QUERY, null, startDate,
+        endDate, XFrequencyEnum.DAILY);
+    String jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString);
+    Assert.assertNotNull(jobHandle);
+    Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.SCHEDULED);
+
+    SchedulerJobInfo jobInfo = scheduleHelper.getJobDetails(jobHandle, sessionHandleString).getData();
+    Assert.assertNotNull(jobInfo);
+    Assert.assertEquals(jobInfo.getJob().getName(), "job-submit-schedule");
+  }
+
+  //submit and schedule and also get job definition
+  @Test
+  public void submitNScheduleQueryCronExp() throws Exception {
+
+    String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 1);
+    XJob xJob = scheduleHelper.getXJob("job-submit-schedule-cronExp", QueryInventory.QUERY, null, currentDate,
+        endDate, "0/30 * * * * ?");
+    String jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString);
+    Assert.assertNotNull(jobHandle);
+
+    XJob job = scheduleHelper.getJobDefinition(jobHandle, sessionHandleString, MediaType.APPLICATION_XML_TYPE,
+        MediaType.APPLICATION_XML).getData();
+    Assert.assertNotNull(job);
+    Assert.assertEquals(job.getName(), "job-submit-schedule-cronExp");
+  }
+
+
+  @Test
+  public void testDeleteJob() throws Exception {
+
+    String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 1);
+    XJob xJob = scheduleHelper.getXJob("job-delete", QueryInventory.QUERY, null, currentDate, endDate,
+         "0/30 * * * * ?");
+
+    //delete in submit state
+    String jobHandle = scheduleHelper.submitJob(xJob, sessionHandleString);
+    scheduleHelper.deleteJob(jobHandle, sessionHandleString);
+    Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.DELETED);
+
+    //delete in scheduled state
+    jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString);
+    scheduleHelper.deleteJob(jobHandle, sessionHandleString);
+    Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.DELETED);
+
+    //delete in suspended state
+    jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString);
+    scheduleHelper.updateJob(jobHandle, "SUSPEND", sessionHandleString);
+    Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.SUSPENDED);
+    scheduleHelper.deleteJob(jobHandle, sessionHandleString);
+    Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.DELETED);
+
+    //delete in expired state
+    jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString);
+    scheduleHelper.updateJob(jobHandle, "EXPIRE", sessionHandleString);
+    Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.EXPIRED);
+    scheduleHelper.deleteJob(jobHandle, sessionHandleString);
+    Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.DELETED);
+  }
+
+  @Test
+  public void testUpdateJob() throws Exception {
+
+    String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 4);
+    XJob job = scheduleHelper.getXJob("job-update", QueryInventory.QUERY, null, currentDate, endDate,
+        XFrequencyEnum.WEEKLY);
+    String jobHandle = scheduleHelper.submitJob(job, sessionHandleString);
+
+    XJob tmp = scheduleHelper.getJobDefinition(jobHandle, sessionHandleString).getData();
+    tmp.setName("modified-name");
+    endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 6);
+    tmp.setEndTime(Util.getGregorianCalendar(endDate));
+    scheduleHelper.updateJob(tmp, jobHandle, sessionHandleString);
+
+    XJob modifiedJob = scheduleHelper.getJobDefinition(jobHandle, sessionHandleString).getData();
+    Assert.assertEquals(modifiedJob.getName(), "modified-name");
+    String modifiedEndTime = Util.getDateStringFromGregorainCalender(modifiedJob.getEndTime(), format);
+    Assert.assertEquals(modifiedEndTime, endDate);
+  }
+
+  @Test
+  public void testUpdateJobAction() throws Exception {
+
+    String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 1);
+    XJob job = scheduleHelper.getXJob("job-update-action", QueryInventory.QUERY, null, currentDate, endDate,
+        "0/20 * * * * ?");
+    String jobHandle = scheduleHelper.submitJob(job, sessionHandleString);
+    Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.NEW);
+
+    scheduleHelper.updateJob(jobHandle, "SCHEDULE", sessionHandleString);
+    Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.SCHEDULED);
+
+    scheduleHelper.updateJob(jobHandle, "SUSPEND", sessionHandleString);
+    Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.SUSPENDED);
+
+    scheduleHelper.updateJob(jobHandle, "RESUME", sessionHandleString);
+    Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.SCHEDULED);
+
+    scheduleHelper.updateJob(jobHandle, "EXPIRE", sessionHandleString);
+    Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.EXPIRED);
+  }
+
+  @Test
+  public void testGetAllInstancesOfAJob() throws Exception {
+
+    String startDate = Util.modifyDate(Util.getCurrentDate(format), format, Calendar.SECOND, 5);
+    String endDate = Util.modifyDate(startDate, format, Calendar.MINUTE, 4);
+    XJob xJob = scheduleHelper.getXJob("job-update-action", QueryInventory.QUERY, null, startDate, endDate,
+        "0/20 * * * * ?");
+    String jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString);
+
+    Thread.sleep(60000);
+
+    List<SchedulerJobInstanceInfo> instanceList = scheduleHelper.getAllInstancesOfJob(jobHandle, "10",
+        sessionHandleString);
+    Assert.assertEquals(instanceList.size(), 3);
+  }
+
+
+  @Test
+  public void updateInstance() throws Exception {
+
+    String startDate = Util.modifyDate(Util.getCurrentDate(format), format, Calendar.SECOND, 10);
+    String endDate = Util.modifyDate(startDate, format, Calendar.MINUTE, 3);
+    XJob xJob = scheduleHelper.getXJob("job-update-action", QueryInventory.JDBC_DIM_QUERY, null, startDate, endDate,
+        "0/20 * * * * ?");
+    String jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString);
+
+    Thread.sleep(20000);
+
+    List<SchedulerJobInstanceInfo> instanceList = scheduleHelper.getAllInstancesOfJob(jobHandle, "10",
+        sessionHandleString);
+
+    Thread.sleep(10000);
+
+    LensAPIResult res = scheduleHelper.updateInstance(instanceList.get(0).getId().getHandleIdString(),
+        "RERUN", sessionHandleString);
+    Assert.assertTrue(res.getData().equals(true));
+
+    SchedulerJobInstanceInfo instanceInfo = scheduleHelper.getInstanceDetails(instanceList.get(0).getId()
+        .getHandleIdString(), sessionHandleString).getData();
+    List<SchedulerJobInstanceRun> runList = instanceInfo.getInstanceRunList();
+    Assert.assertEquals(runList.size(), 2);
+    Assert.assertEquals(runList.get(1).getRunId(), 2);
+  }
+
+
+  @Test(enabled = true)
+  public void restart() throws Exception {
+
+    String startDate = Util.modifyDate(Util.getCurrentDate(format), format, Calendar.SECOND, 5);
+    String endDate = Util.modifyDate(startDate, format, Calendar.MINUTE, 2);
+    XJob xJob = scheduleHelper.getXJob("job-restart", QueryInventory.QUERY, null, startDate, endDate, "0/20 * * * * ?");
+
+    String jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString);
+    Assert.assertNotNull(jobHandle);
+
+    Thread.sleep(20000);
+    lens.stop();
+    Thread.sleep(20000);
+    lens.start();
+    Thread.sleep(60000);
+
+    List<SchedulerJobInstanceInfo> instanceList = scheduleHelper.getAllInstancesOfJob(jobHandle, "50",
+        sessionHandleString);
+    Assert.assertEquals(instanceList.size(), 6);
+  }
+
+  //LENS
+  @Test
+  public void testMisfiredEvents() throws Exception {
+
+    String startDate = Util.modifyDate(currentDate, format, Calendar.DATE, -2);
+    String endDate = Util.modifyDate(currentDate, format, Calendar.DATE, 3);
+    XJob xJob = scheduleHelper.getXJob("job-misfire", QueryInventory.JDBC_CUBE_QUERY, null, startDate,
+        endDate, XFrequencyEnum.DAILY);
+    String jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString);
+    Assert.assertNotNull(jobHandle);
+    Assert.assertEquals(scheduleHelper.getJobStatus(jobHandle), SchedulerJobState.SCHEDULED);
+
+    List<SchedulerJobInstanceInfo> instanceList = scheduleHelper.getAllInstancesOfJob(jobHandle, "10",
+        sessionHandleString);
+    Assert.assertEquals(instanceList.size(), 3);
+
+    if (jobHandle!=null){
+      scheduleHelper.updateJob(jobHandle, "EXPIRE", sessionHandleString);
+    }
+  }
+
+
+  //LENS-1286
+  @Test
+  public void testRunningInstanceOnRestart() throws Exception {
+
+    String startDate = Util.modifyDate(Util.getCurrentDate(format), format, Calendar.SECOND, 2);
+    String endDate = Util.modifyDate(startDate, format, Calendar.SECOND, 15);
+    XJob xJob = scheduleHelper.getXJob("job-restart", QueryInventory.getSleepQuery("5"), null, startDate, endDate,
+        "0/10 * * * * ?");
+    String jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString);
+
+    Thread.sleep(10000);
+
+    List<SchedulerJobInstanceInfo> instanceList = scheduleHelper.getAllInstancesOfJob(jobHandle, "10",
+        sessionHandleString);
+
+    lens.restart();
+
+    SchedulerJobInstanceInfo instanceInfo = scheduleHelper.getInstanceDetails(instanceList.get(0).getId()
+        .getHandleIdString(), sessionHandleString).getData();
+
+    SchedulerJobInstanceRun instanceRun = instanceInfo.getInstanceRunList().get(0);
+    qHelper.waitForCompletion(instanceRun.getQueryHandle());
+    Assert.assertEquals(instanceRun.getInstanceState(), SchedulerJobInstanceState.SUCCEEDED);
+
+  }
+
+  @Test(enabled = false)
+  public void testQueryNotFoundCaseOnRestart() throws Exception {
+
+    String startDate = Util.modifyDate(Util.getCurrentDate(format), format, Calendar.SECOND, 2);
+    String endDate = Util.modifyDate(startDate, format, Calendar.SECOND, 15);
+    XJob xJob = scheduleHelper.getXJob("job-restart", QueryInventory.getSleepQuery("5"), null, startDate, endDate,
+        "0/10 * * * * ?");
+    String jobHandle = scheduleHelper.submitNScheduleJob(xJob, sessionHandleString);
+
+    Thread.sleep(10000);
+
+    List<SchedulerJobInstanceInfo> instanceList = scheduleHelper.getAllInstancesOfJob(jobHandle, "10",
+        sessionHandleString);
+
+    lens.stop();
+    Util.runRemoteCommand("hadoop dfs -rmr /tmp/lensserver/query.*");
+    lens.start();
+
+    Thread.sleep(15000); // wait till instance gets killed and new instance is spawned
+
+    String firstInstanceHandle = instanceList.get(0).getId().getHandleIdString();
+    SchedulerJobInstanceInfo instanceInfo = scheduleHelper.getInstanceDetails(firstInstanceHandle, sessionHandleString)
+        .getData();
+
+    Assert.assertEquals(instanceInfo.getInstanceRunList().get(0).getInstanceState(), SchedulerJobInstanceState.KILLED);
+    qHelper.waitForCompletion(instanceInfo.getInstanceRunList().get(1).getQueryHandle());
+    Thread.sleep(3000);
+
+    instanceInfo = scheduleHelper.getInstanceDetails(firstInstanceHandle, sessionHandleString).getData();
+    Assert.assertEquals(instanceInfo.getInstanceRunList().get(1).getInstanceState(),
+        SchedulerJobInstanceState.SUCCEEDED);
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/lens/blob/2aaf6e0a/lens-regression/src/test/java/org/apache/lens/regression/throttling/ITCostTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/throttling/ITCostTests.java b/lens-regression/src/test/java/org/apache/lens/regression/throttling/ITCostTests.java
index aeae8aa..1a7a391 100644
--- a/lens-regression/src/test/java/org/apache/lens/regression/throttling/ITCostTests.java
+++ b/lens-regression/src/test/java/org/apache/lens/regression/throttling/ITCostTests.java
@@ -19,7 +19,6 @@
 
 package org.apache.lens.regression.throttling;
 
-import java.io.IOException;
 import java.lang.reflect.Method;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
@@ -37,7 +36,6 @@ import org.apache.lens.regression.core.helpers.*;
 import org.apache.lens.regression.core.testHelper.BaseTestClass;
 import org.apache.lens.regression.util.Util;
 import org.apache.lens.server.api.LensConfConstants;
-import org.apache.lens.server.api.error.LensException;
 import org.apache.lens.server.api.util.LensUtil;
 
 import org.apache.log4j.Logger;
@@ -45,9 +43,6 @@ import org.apache.log4j.Logger;
 import org.testng.Assert;
 import org.testng.annotations.*;
 
-import com.jcraft.jsch.JSchException;
-import com.jcraft.jsch.SftpException;
-
 public class ITCostTests extends BaseTestClass {
 
   private WebTarget servLens;
@@ -64,7 +59,7 @@ public class ITCostTests extends BaseTestClass {
   public static final String JDBC_QUERY1 = QueryInventory.getQueryFromInventory("JDBC.QUERY1");
 
   private static String hiveDriver = "hive/hive1";
-  private String hiveDriverSitePath  = lens.getServerDir() + "/conf/drivers/hive/hive1/hivedriver-site.xml";
+  private String lensSitePath  = lens.getServerDir() + "/conf/lens-site.xml";
   private static final long SECONDS_IN_A_MINUTE = 60;
 
   private static Logger logger = Logger.getLogger(ITCostTests.class);
@@ -75,6 +70,11 @@ public class ITCostTests extends BaseTestClass {
     logger.info("Creating a new Session");
     sessionHandleString = sHelper.openSession(lens.getCurrentDB());
     sHelper.setAndValidateParam(CubeQueryConfUtil.FAIL_QUERY_ON_PARTIAL_DATA, "false");
+
+    HashMap<String, String> map = LensUtil.getHashMap(LensConfConstants.TOTAL_QUERY_COST_CEILING_PER_USER_KEY, "60",
+        LensConfConstants.QUERY_LAUNCHING_CONSTRAINT_FACTORIES_KEY, DriverConfig.USER_COST_CONSTRAINT_FACTORY);
+    Util.changeConfig(map, lensSitePath);
+    lens.restart();
   }
 
   @BeforeMethod(alwaysRun = true)
@@ -94,29 +94,10 @@ public class ITCostTests extends BaseTestClass {
   public void closeSession() throws Exception {
     logger.info("Closing Session");
     sHelper.closeSession();
-  }
-
-  @BeforeGroups("user-cost-ceiling")
-  public void setUserCeilingconfig() throws Exception {
-    try{
-      HashMap<String, String> map = LensUtil.getHashMap(LensConfConstants.TOTAL_QUERY_COST_CEILING_PER_USER_KEY, "60",
-          DriverConfig.HIVE_CONSTRAINT_FACTORIES,
-          DriverConfig.MAX_CONCURRENT_CONSTRAINT_FACTORY + "," + DriverConfig.USER_COST_CONSTRAINT_FACTORY,
-          DriverConfig.MAX_CONCURRENT_QUERIES, "10");
-      Util.changeConfig(map, hiveDriverSitePath);
-      lens.restart();
-    }catch (Exception e){
-      logger.info(e);
-    }
-  }
-
-  @AfterGroups("user-cost-ceiling")
-  public void restoreConfig() throws SftpException, JSchException, InterruptedException, LensException, IOException {
-    Util.changeConfig(hiveDriverSitePath);
+    Util.changeConfig(lensSitePath);
     lens.restart();
   }
 
-
   @Test(enabled = true, groups= "user-cost-ceiling")
   public void testUserCostCeiling() throws Exception {
 
@@ -293,148 +274,5 @@ public class ITCostTests extends BaseTestClass {
 
   //TODO : Add queue level throttling along with user ceiling constraint
 
-  /*
-  * LENS-995 : Queue number shouldn't change with in the same prority
-  */
-
-  @Test(enabled = true)
-  public void queueNumberChangeWithInSamePriority() throws Exception {
-
-    String longRunningQuery = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_95"), "20");
-    HashMap<String, String> map = LensUtil.getHashMap(DriverConfig.MAX_CONCURRENT_QUERIES, "1");
-    String[] queries = {longRunningQuery, COST_5, COST_5, COST_3, COST_2};
-
-    try {
-      Util.changeConfig(map, hiveDriverSitePath);
-      lens.restart();
-
-      List<QueryHandle> handleList = new ArrayList<>();
-      for(String query : queries){
-        handleList.add((QueryHandle) qHelper.executeQuery(query).getData());
-      }
-
-      LensQuery lq1 = qHelper.getLensQuery(sessionHandleString, handleList.get(1));
-      LensQuery lq2 = qHelper.getLensQuery(sessionHandleString, handleList.get(2));
-      LensQuery lq3 = qHelper.getLensQuery(sessionHandleString, handleList.get(3));
-      LensQuery lq4 = qHelper.getLensQuery(sessionHandleString, handleList.get(4));
-
-      Assert.assertEquals(lq1.getStatus().getQueueNumber().intValue(), 1);
-      Assert.assertEquals(lq2.getStatus().getQueueNumber().intValue(), 2);
-      Assert.assertEquals(lq3.getStatus().getQueueNumber().intValue(), 3);
-      Assert.assertEquals(lq4.getStatus().getQueueNumber().intValue(), 4);
-
-      LensQuery lq0 = qHelper.waitForCompletion(handleList.get(0));
-
-      lq1 = qHelper.getLensQuery(sessionHandleString, handleList.get(1));
-      lq2 = qHelper.getLensQuery(sessionHandleString, handleList.get(2));
-      lq3 = qHelper.getLensQuery(sessionHandleString, handleList.get(3));
-      lq4 = qHelper.getLensQuery(sessionHandleString, handleList.get(4));
-
-      Assert.assertEquals(lq0.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
-      Assert.assertEquals(lq2.getStatus().getQueueNumber().intValue(), 1);
-      Assert.assertEquals(lq3.getStatus().getQueueNumber().intValue(), 2);
-      Assert.assertEquals(lq4.getStatus().getQueueNumber().intValue(), 3);
-
-      lq1 = qHelper.waitForCompletion(handleList.get(1));
-
-      lq2 = qHelper.getLensQuery(sessionHandleString, handleList.get(2));
-      lq3 = qHelper.getLensQuery(sessionHandleString, handleList.get(3));
-      lq4 = qHelper.getLensQuery(sessionHandleString, handleList.get(4));
-
-      Assert.assertEquals(lq1.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
-      Assert.assertEquals(lq3.getStatus().getQueueNumber().intValue(), 1);
-      Assert.assertEquals(lq4.getStatus().getQueueNumber().intValue(), 2);
-
-    }finally {
-      Util.changeConfig(hiveDriverSitePath);
-      lens.restart();
-    }
-  }
-
-
-  @Test(enabled = true)
-  public void queueNumberChangeDifferentPriority() throws Exception {
-
-    String longRunningQuery = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_95"), "20");
-    HashMap<String, String> map = LensUtil.getHashMap(DriverConfig.MAX_CONCURRENT_QUERIES, "1");
-    try {
-      Util.changeConfig(map, hiveDriverSitePath);
-      lens.restart();
-
-      QueryHandle q0 = (QueryHandle) qHelper.executeQuery(longRunningQuery).getData();
-      QueryHandle q1 = (QueryHandle) qHelper.executeQuery(COST_20).getData();
-      QueryHandle q2 = (QueryHandle) qHelper.executeQuery(COST_2).getData();
-
-      LensQuery normal1 = qHelper.getLensQuery(sessionHandleString, q1);
-      LensQuery high1 = qHelper.getLensQuery(sessionHandleString, q2);
-
-      Assert.assertEquals(normal1.getStatus().getQueueNumber().intValue(), 2);
-      Assert.assertEquals(high1.getStatus().getQueueNumber().intValue(), 1);
-
-      QueryHandle q3 = (QueryHandle) qHelper.executeQuery(COST_5).getData();
-
-      LensQuery high2 = qHelper.getLensQuery(sessionHandleString, q3);
-      high1 = qHelper.getLensQuery(sessionHandleString, q2);
-      normal1 = qHelper.getLensQuery(sessionHandleString, q1);
-
-      Assert.assertEquals(normal1.getStatus().getQueueNumber().intValue(), 3);
-      Assert.assertEquals(high1.getStatus().getQueueNumber().intValue(), 1);
-      Assert.assertEquals(high2.getStatus().getQueueNumber().intValue(), 2);
-
-      QueryHandle q4 = (QueryHandle) qHelper.executeQuery(COST_20).getData();
-
-      LensQuery normal2 = qHelper.getLensQuery(sessionHandleString, q4);
-      normal1 = qHelper.getLensQuery(sessionHandleString, q1);
-      high1 = qHelper.getLensQuery(sessionHandleString, q2);
-      high2 = qHelper.getLensQuery(sessionHandleString, q3);
-
-      Assert.assertEquals(high1.getStatus().getQueueNumber().intValue(), 1);
-      Assert.assertEquals(high2.getStatus().getQueueNumber().intValue(), 2);
-      Assert.assertEquals(normal1.getStatus().getQueueNumber().intValue(), 3);
-      Assert.assertEquals(normal2.getStatus().getQueueNumber().intValue(), 4);
-
-    }finally {
-      Util.changeConfig(hiveDriverSitePath);
-      lens.restart();
-    }
-  }
-
-
-  @Test(enabled = true)
-  public void queueNumberChangeDifferentPriorityWithJdbc() throws Exception {
-
-    String longRunningQuery = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_95"), "20");
-    HashMap<String, String> map = LensUtil.getHashMap(DriverConfig.MAX_CONCURRENT_QUERIES, "1");
-    List<QueryHandle> handleList = new ArrayList<>();
-
-    try {
-      Util.changeConfig(map, hiveDriverSitePath);
-      lens.restart();
-
-      String[] queries = {COST_20, COST_2, COST_3, COST_60, COST_5, COST_10, COST_3};
-      // Queue order is determined from priority and order in which queries are fired.
-      int[] queueNo = {5, 1, 2, 7, 3, 6, 4};
-
-      qHelper.executeQuery(longRunningQuery);
-      for(String query : queries){
-        handleList.add((QueryHandle) qHelper.executeQuery(query).getData());
-        qHelper.executeQuery(JDBC_QUERY1).getData();
-      }
-
-      List<LensQuery> lqList = new ArrayList<>();
-      for(QueryHandle qh : handleList){
-        lqList.add(qHelper.getLensQuery(sessionHandleString, qh));
-      }
-
-      for(int i = 0; i < lqList.size(); i++) {
-        Assert.assertEquals(lqList.get(i).getStatus().getQueueNumber().intValue(), queueNo[i]);
-      }
-
-    }finally {
-      Util.changeConfig(hiveDriverSitePath);
-      lens.restart();
-    }
-  }
-
 }
 

http://git-wip-us.apache.org/repos/asf/lens/blob/2aaf6e0a/lens-regression/src/test/java/org/apache/lens/regression/throttling/ITQueueNumberTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/throttling/ITQueueNumberTests.java b/lens-regression/src/test/java/org/apache/lens/regression/throttling/ITQueueNumberTests.java
new file mode 100644
index 0000000..b7cea6b
--- /dev/null
+++ b/lens-regression/src/test/java/org/apache/lens/regression/throttling/ITQueueNumberTests.java
@@ -0,0 +1,232 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.lens.regression.throttling;
+
+import java.lang.reflect.Method;
+import java.util.*;
+
+import javax.ws.rs.client.WebTarget;
+
+import org.apache.lens.api.query.LensQuery;
+import org.apache.lens.api.query.QueryHandle;
+import org.apache.lens.api.query.QueryStatus;
+import org.apache.lens.cube.parse.CubeQueryConfUtil;
+import org.apache.lens.regression.core.constants.DriverConfig;
+import org.apache.lens.regression.core.constants.QueryInventory;
+import org.apache.lens.regression.core.helpers.ServiceManagerHelper;
+import org.apache.lens.regression.core.testHelper.BaseTestClass;
+import org.apache.lens.regression.util.Util;
+import org.apache.lens.server.api.util.LensUtil;
+
+import org.apache.log4j.Logger;
+
+import org.testng.Assert;
+import org.testng.annotations.*;
+
+public class ITQueueNumberTests extends BaseTestClass {
+
+  private WebTarget servLens;
+  private String sessionHandleString;
+
+  public static final String COST_95 = QueryInventory.getQueryFromInventory("HIVE.COST_95");
+  public static final String COST_60 = QueryInventory.getQueryFromInventory("HIVE.COST_60");
+  public static final String COST_30 = QueryInventory.getQueryFromInventory("HIVE.COST_30");
+  public static final String COST_20 = QueryInventory.getQueryFromInventory("HIVE.COST_20");
+  public static final String COST_10 = QueryInventory.getQueryFromInventory("HIVE.COST_10");
+  public static final String COST_5 = QueryInventory.getQueryFromInventory("HIVE.COST_5");
+  public static final String COST_3 = QueryInventory.getQueryFromInventory("HIVE.COST_3");
+  public static final String COST_2 = QueryInventory.getQueryFromInventory("HIVE.COST_2");
+  public static final String JDBC_QUERY1 = QueryInventory.getQueryFromInventory("JDBC.QUERY1");
+
+  private String hiveDriverSitePath  = lens.getServerDir() + "/conf/drivers/hive/hive1/hivedriver-site.xml";
+  private static Logger logger = Logger.getLogger(ITQueueNumberTests.class);
+
+  @BeforeClass(alwaysRun = true)
+  public void initialize() throws Exception {
+    servLens = ServiceManagerHelper.init();
+    logger.info("Creating a new Session");
+    sessionHandleString = sHelper.openSession(lens.getCurrentDB());
+    sHelper.setAndValidateParam(CubeQueryConfUtil.FAIL_QUERY_ON_PARTIAL_DATA, "false");
+  }
+
+  @BeforeMethod(alwaysRun = true)
+  public void setUp(Method method) throws Exception {
+    logger.info("Test Name: " + method.getName());
+  }
+
+  @AfterMethod(alwaysRun = true)
+  public void afterMethod(Method method) throws Exception {
+    logger.info("Test Name: " + method.getName());
+    qHelper.killQuery(null, "QUEUED", "all");
+    qHelper.killQuery(null, "RUNNING", "all");
+    qHelper.killQuery(null, "EXECUTED", "all");
+  }
+
+  @AfterClass(alwaysRun = true)
+  public void closeSession() throws Exception {
+    logger.info("Closing Session");
+    sHelper.closeSession();
+  }
+
+
+  /*
+  * LENS-995 : Queue number shouldn't change with in the same prority
+  */
+
+  @Test(enabled = true)
+  public void queueNumberChangeWithInSamePriority() throws Exception {
+
+    String longRunningQuery = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_95"), "20");
+    HashMap<String, String> map = LensUtil.getHashMap(DriverConfig.MAX_CONCURRENT_QUERIES, "1");
+    String[] queries = {longRunningQuery, COST_5, COST_5, COST_3, COST_2};
+
+    try {
+      Util.changeConfig(map, hiveDriverSitePath);
+      lens.restart();
+
+      List<QueryHandle> handleList = new ArrayList<>();
+      for(String query : queries){
+        handleList.add((QueryHandle) qHelper.executeQuery(query).getData());
+      }
+
+      LensQuery lq1 = qHelper.getLensQuery(sessionHandleString, handleList.get(1));
+      LensQuery lq2 = qHelper.getLensQuery(sessionHandleString, handleList.get(2));
+      LensQuery lq3 = qHelper.getLensQuery(sessionHandleString, handleList.get(3));
+      LensQuery lq4 = qHelper.getLensQuery(sessionHandleString, handleList.get(4));
+
+      Assert.assertEquals(lq1.getStatus().getQueueNumber().intValue(), 1);
+      Assert.assertEquals(lq2.getStatus().getQueueNumber().intValue(), 2);
+      Assert.assertEquals(lq3.getStatus().getQueueNumber().intValue(), 3);
+      Assert.assertEquals(lq4.getStatus().getQueueNumber().intValue(), 4);
+
+      LensQuery lq0 = qHelper.waitForCompletion(handleList.get(0));
+
+      lq1 = qHelper.getLensQuery(sessionHandleString, handleList.get(1));
+      lq2 = qHelper.getLensQuery(sessionHandleString, handleList.get(2));
+      lq3 = qHelper.getLensQuery(sessionHandleString, handleList.get(3));
+      lq4 = qHelper.getLensQuery(sessionHandleString, handleList.get(4));
+
+      Assert.assertEquals(lq0.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
+      Assert.assertEquals(lq2.getStatus().getQueueNumber().intValue(), 1);
+      Assert.assertEquals(lq3.getStatus().getQueueNumber().intValue(), 2);
+      Assert.assertEquals(lq4.getStatus().getQueueNumber().intValue(), 3);
+
+      lq1 = qHelper.waitForCompletion(handleList.get(1));
+
+      lq2 = qHelper.getLensQuery(sessionHandleString, handleList.get(2));
+      lq3 = qHelper.getLensQuery(sessionHandleString, handleList.get(3));
+      lq4 = qHelper.getLensQuery(sessionHandleString, handleList.get(4));
+
+      Assert.assertEquals(lq1.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
+      Assert.assertEquals(lq3.getStatus().getQueueNumber().intValue(), 1);
+      Assert.assertEquals(lq4.getStatus().getQueueNumber().intValue(), 2);
+
+    }finally {
+      Util.changeConfig(hiveDriverSitePath);
+      lens.restart();
+    }
+  }
+
+
+  @Test(enabled = true)
+  public void queueNumberChangeDifferentPriority() throws Exception {
+
+    String longRunningQuery = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_95"), "20");
+    HashMap<String, String> map = LensUtil.getHashMap(DriverConfig.MAX_CONCURRENT_QUERIES, "1");
+    try {
+      Util.changeConfig(map, hiveDriverSitePath);
+      lens.restart();
+
+      QueryHandle q0 = (QueryHandle) qHelper.executeQuery(longRunningQuery).getData();
+      QueryHandle q1 = (QueryHandle) qHelper.executeQuery(COST_20).getData();
+      QueryHandle q2 = (QueryHandle) qHelper.executeQuery(COST_2).getData();
+
+      LensQuery normal1 = qHelper.getLensQuery(sessionHandleString, q1);
+      LensQuery high1 = qHelper.getLensQuery(sessionHandleString, q2);
+
+      Assert.assertEquals(normal1.getStatus().getQueueNumber().intValue(), 2);
+      Assert.assertEquals(high1.getStatus().getQueueNumber().intValue(), 1);
+
+      QueryHandle q3 = (QueryHandle) qHelper.executeQuery(COST_5).getData();
+
+      LensQuery high2 = qHelper.getLensQuery(sessionHandleString, q3);
+      high1 = qHelper.getLensQuery(sessionHandleString, q2);
+      normal1 = qHelper.getLensQuery(sessionHandleString, q1);
+
+      Assert.assertEquals(normal1.getStatus().getQueueNumber().intValue(), 3);
+      Assert.assertEquals(high1.getStatus().getQueueNumber().intValue(), 1);
+      Assert.assertEquals(high2.getStatus().getQueueNumber().intValue(), 2);
+
+      QueryHandle q4 = (QueryHandle) qHelper.executeQuery(COST_20).getData();
+
+      LensQuery normal2 = qHelper.getLensQuery(sessionHandleString, q4);
+      normal1 = qHelper.getLensQuery(sessionHandleString, q1);
+      high1 = qHelper.getLensQuery(sessionHandleString, q2);
+      high2 = qHelper.getLensQuery(sessionHandleString, q3);
+
+      Assert.assertEquals(high1.getStatus().getQueueNumber().intValue(), 1);
+      Assert.assertEquals(high2.getStatus().getQueueNumber().intValue(), 2);
+      Assert.assertEquals(normal1.getStatus().getQueueNumber().intValue(), 3);
+      Assert.assertEquals(normal2.getStatus().getQueueNumber().intValue(), 4);
+
+    }finally {
+      Util.changeConfig(hiveDriverSitePath);
+      lens.restart();
+    }
+  }
+
+
+  @Test(enabled = true)
+  public void queueNumberChangeDifferentPriorityWithJdbc() throws Exception {
+
+    String longRunningQuery = String.format(QueryInventory.getQueryFromInventory("HIVE.SLEEP_COST_95"), "20");
+    HashMap<String, String> map = LensUtil.getHashMap(DriverConfig.MAX_CONCURRENT_QUERIES, "1");
+    List<QueryHandle> handleList = new ArrayList<>();
+
+    try {
+      Util.changeConfig(map, hiveDriverSitePath);
+      lens.restart();
+
+      String[] queries = {COST_20, COST_2, COST_3, COST_60, COST_5, COST_10, COST_3};
+      // Queue order is determined from priority and order in which queries are fired.
+      int[] queueNo = {5, 1, 2, 7, 3, 6, 4};
+
+      qHelper.executeQuery(longRunningQuery);
+      for(String query : queries){
+        handleList.add((QueryHandle) qHelper.executeQuery(query).getData());
+        qHelper.executeQuery(JDBC_QUERY1).getData();
+      }
+
+      List<LensQuery> lqList = new ArrayList<>();
+      for(QueryHandle qh : handleList){
+        lqList.add(qHelper.getLensQuery(sessionHandleString, qh));
+      }
+
+      for(int i = 0; i < lqList.size(); i++) {
+        Assert.assertEquals(lqList.get(i).getStatus().getQueueNumber().intValue(), queueNo[i]);
+      }
+
+    }finally {
+      Util.changeConfig(hiveDriverSitePath);
+      lens.restart();
+    }
+  }
+
+}