You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lens.apache.org by de...@apache.org on 2016/04/27 13:45:22 UTC

lens git commit: LENS-1017 : Add session config tests to regression

Repository: lens
Updated Branches:
  refs/heads/master 3b3f42da5 -> e26ee5a71


LENS-1017 : Add session config tests to regression


Project: http://git-wip-us.apache.org/repos/asf/lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/e26ee5a7
Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/e26ee5a7
Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/e26ee5a7

Branch: refs/heads/master
Commit: e26ee5a71fc493dec34f81066b52be399576c996
Parents: 3b3f42d
Author: Archana H <ar...@gmail.com>
Authored: Wed Apr 27 17:14:50 2016 +0530
Committer: Deepak Kumar Barr <de...@gmail.com>
Committed: Wed Apr 27 17:14:50 2016 +0530

----------------------------------------------------------------------
 .../core/constants/QueryInventory.java          |   4 +-
 .../regression/core/helpers/QueryHelper.java    |   8 +-
 .../regression/core/helpers/SessionHelper.java  |   3 +-
 .../lens/regression/client/ITListQueryTest.java |  26 +-
 .../lens/regression/client/KillQueryTests.java  |  18 +-
 .../regression/client/SessionResourceTests.java | 153 +++-----
 .../regression/config/ITSessionConfigTests.java | 358 +++++++++++++++++++
 7 files changed, 435 insertions(+), 135 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lens/blob/e26ee5a7/lens-regression/src/main/java/org/apache/lens/regression/core/constants/QueryInventory.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/main/java/org/apache/lens/regression/core/constants/QueryInventory.java b/lens-regression/src/main/java/org/apache/lens/regression/core/constants/QueryInventory.java
index 5f1f607..869a96b 100644
--- a/lens-regression/src/main/java/org/apache/lens/regression/core/constants/QueryInventory.java
+++ b/lens-regression/src/main/java/org/apache/lens/regression/core/constants/QueryInventory.java
@@ -60,8 +60,8 @@ public class QueryInventory {
     + "time_range_in(delivery_time,'2015-04-12','2015-04-14')";
 
   public static final String WRONG_HIVE_DIM_QUERY = "cube select NO_ID from sample_dim2 where name != 'first'";
-  public static final String WRONG_HIVE_CUBE_QUERY="cube select sample_dim_chain.name, measure4 from sample_cube where "
-    + "time_range_in(dt, '2014-07-01-00', '2014-07-25-05')";
+  public static final String NO_PARTITION_HIVE_CUBE_QUERY="cube select sample_dim_chain.name, measure4 from sample_cube"
+    + " where time_range_in(dt, '2014-07-01-00', '2014-07-25-05')";
 
   public static final String WRONG_SYNTAX_QUERY="cube select id,name from sample_dim2 name != 'first'";
 

http://git-wip-us.apache.org/repos/asf/lens/blob/e26ee5a7/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/QueryHelper.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/QueryHelper.java b/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/QueryHelper.java
index 9355e47..2b4a750 100644
--- a/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/QueryHelper.java
+++ b/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/QueryHelper.java
@@ -298,18 +298,16 @@ public class QueryHelper extends ServiceManagerHelper {
    * @param sessionHandleString
    * @return the query Result
    */
+
   public QueryResult getResultSet(QueryHandle queryHandle, String fromIndex, String fetchSize,
       String sessionHandleString) throws  LensException {
 
-    MapBuilder query = new MapBuilder("sessionid", sessionHandleString);
-    query.put("fromindex", fromIndex);
-    query.put("fetchsize", fetchSize);
-
+    MapBuilder query = new MapBuilder("sessionid", sessionHandleString, "fromindex", fromIndex,
+        "fetchsize", fetchSize);
     Response response = this.exec("get", QueryURL.QUERY_URL + "/" + queryHandle.toString() + "/resultset", servLens,
         null, query, MediaType.APPLICATION_XML_TYPE, MediaType.APPLICATION_XML, null);
     AssertUtil.assertSucceededResponse(response);
     QueryResult result = response.readEntity(new GenericType<QueryResult>(){});
-    log.info("QueryResult String:{}", result);
     return result;
   }
 

http://git-wip-us.apache.org/repos/asf/lens/blob/e26ee5a7/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/SessionHelper.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/SessionHelper.java b/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/SessionHelper.java
index 753a7b4..4918882 100644
--- a/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/SessionHelper.java
+++ b/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/SessionHelper.java
@@ -216,8 +216,7 @@ public class SessionHelper extends ServiceManagerHelper {
   }
 
   public String getSessionParam(String sessionHandleString, String param) throws Exception {
-    MapBuilder query = new MapBuilder("sessionid", sessionHandleString);
-    query.put("key", param);
+    MapBuilder query = new MapBuilder("sessionid", sessionHandleString, "key", param);
     Response response = this.exec("get", SessionURL.SESSION_PARAMS_URL, servLens, null, query);
     AssertUtil.assertSucceededResponse(response);
     StringList strList = response.readEntity(new GenericType<StringList>(StringList.class));

http://git-wip-us.apache.org/repos/asf/lens/blob/e26ee5a7/lens-regression/src/test/java/org/apache/lens/regression/client/ITListQueryTest.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/client/ITListQueryTest.java b/lens-regression/src/test/java/org/apache/lens/regression/client/ITListQueryTest.java
index d193c9c..60cf26c 100644
--- a/lens-regression/src/test/java/org/apache/lens/regression/client/ITListQueryTest.java
+++ b/lens-regression/src/test/java/org/apache/lens/regression/client/ITListQueryTest.java
@@ -77,7 +77,7 @@ public class ITListQueryTest extends BaseTestClass {
     lens.closeSession();
   }
 
-  @DataProvider(name = "DP")
+  @DataProvider(name = "query-provider")
   public Object[][] getData() throws Exception {
 
     String[] queries = new String[]{QueryInventory.HIVE_CUBE_QUERY, QueryInventory.HIVE_DIM_QUERY,
@@ -93,7 +93,7 @@ public class ITListQueryTest extends BaseTestClass {
   }
 
 
-  @Test(enabled = true, dataProvider = "DP")
+  @Test(enabled = true, dataProvider = "query-provider")
   public void getQueryByQueryNameAllQuery(String queryString) throws Exception {
 
     String queryName = "queryNameFirst";
@@ -151,35 +151,26 @@ public class ITListQueryTest extends BaseTestClass {
   public void listQueryByTimeRange() throws Exception {
 
     //Running First Query
-
     String startTime = String.valueOf(System.currentTimeMillis());
     logger.info("Start Time of 1st Query : " + startTime);
-    Thread.sleep(20000);
-
     QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.QUERY).getData();
     LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
     Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed");
-
     String endTime = String.valueOf(System.currentTimeMillis());
     logger.info("End Time of 1st Query : " + endTime);
 
-    Thread.sleep(20000);
+    Thread.sleep(1000);
 
     //Running Second Query
-
     String startTime1 = String.valueOf(System.currentTimeMillis());
     logger.info("Start Time of 2nd Query : " + startTime1);
-    Thread.sleep(20000);
-
     QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(QueryInventory.QUERY).getData();
     lensQuery = qHelper.waitForCompletion(queryHandle1);
     Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed");
-
     String endTime1 = String.valueOf(System.currentTimeMillis());
     logger.info("End Time of 2nd Query : " + endTime1);
 
     List<QueryHandle> list = qHelper.getQueryHandleList(null, null, null, sessionHandleString, startTime, endTime);
-
     Assert.assertTrue(list.contains(queryHandle), "QueryList by TimeRange is not correct");
     Assert.assertFalse(list.contains(queryHandle1), "QueryList by TimeRange is not correct");
 
@@ -239,7 +230,6 @@ public class ITListQueryTest extends BaseTestClass {
 
     String startTime = String.valueOf(System.currentTimeMillis());
     logger.info("Start Time of 1st Query : " + startTime);
-    Thread.sleep(60000);
 
     QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.QUERY, queryName).getData();
     LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
@@ -467,28 +457,26 @@ public class ITListQueryTest extends BaseTestClass {
     String diffSession2 = sHelper.openNewSession(user2, pwd2, lens.getCurrentDB());
 
     String startTime1 = String.valueOf(System.currentTimeMillis());
-    Thread.sleep(10000);
     QueryHandle q1 = (QueryHandle) qHelper.executeQuery(QueryInventory.QUERY, queryName1).getData();
     LensQuery lensQuery = qHelper.waitForCompletion(q1);
     Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed");
     String endTime1 = String.valueOf(System.currentTimeMillis());
 
-    Thread.sleep(10000);
+    Thread.sleep(1000);
 
     String startTime2 = String.valueOf(System.currentTimeMillis());
-    Thread.sleep(10000);
     QueryHandle q2 = (QueryHandle) qHelper.executeQuery(QueryInventory.SLEEP_QUERY, queryName2, diffSession1).getData();
     String endTime2 = String.valueOf(System.currentTimeMillis());
 
-    Thread.sleep(10000);
+    Thread.sleep(1000);
 
     String startTime3 = String.valueOf(System.currentTimeMillis());
-    Thread.sleep(10000);
+    Thread.sleep(1000);
     QueryHandle q3 = (QueryHandle) qHelper.executeQuery(QueryInventory.SLEEP_QUERY, queryName3, diffSession2).getData();
     qHelper.killQueryByQueryHandle(q3);
     String endTime3 = String.valueOf(System.currentTimeMillis());
 
-    Thread.sleep(10000);
+    Thread.sleep(1000);
 
     List<QueryHandle> list1 = qHelper.getQueryHandleList(queryName2, "RUNNING", user1, sessionHandleString, startTime2,
         endTime2);

http://git-wip-us.apache.org/repos/asf/lens/blob/e26ee5a7/lens-regression/src/test/java/org/apache/lens/regression/client/KillQueryTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/client/KillQueryTests.java b/lens-regression/src/test/java/org/apache/lens/regression/client/KillQueryTests.java
index e2148e3..8aabe2d 100644
--- a/lens-regression/src/test/java/org/apache/lens/regression/client/KillQueryTests.java
+++ b/lens-regression/src/test/java/org/apache/lens/regression/client/KillQueryTests.java
@@ -128,8 +128,7 @@ public class KillQueryTests extends BaseTestClass {
     Assert.assertEquals(queryStatus2.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
     Assert.assertEquals(queryStatus3.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
 
-    logger.info("Going to kill in 20 sec");
-    Thread.sleep(20000);
+    Thread.sleep(1000);
 
     qHelper.killQuery(null, null, lens.getUserName());
     Thread.sleep(2000);
@@ -302,24 +301,17 @@ public class KillQueryTests extends BaseTestClass {
 
     String startTime1 = String.valueOf(System.currentTimeMillis());
     logger.info("Start Time of 1st Query : " + startTime1);
-    Thread.sleep(20000);
-
+    Thread.sleep(1000);
     QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(QueryInventory.SLEEP_QUERY).getData();
-    logger.info("1st QUERY HANDLE : " + queryHandle1);
-
     String endTime1 = String.valueOf(System.currentTimeMillis());
     logger.info("End Time of 1st Query : " + endTime1);
 
-    //Sleeping for 1 min
-    Thread.sleep(20000);
+    Thread.sleep(1000);
 
     String startTime2 = String.valueOf(System.currentTimeMillis());
     logger.info("Start Time of 2nd Query : " + startTime2);
-    Thread.sleep(20000);
-
+    Thread.sleep(1000);
     QueryHandle queryHandle2 = (QueryHandle) qHelper.executeQuery(QueryInventory.SLEEP_QUERY).getData();
-    logger.info("2nd QUERY HANDLE : " + queryHandle2);
-
     String endTime2 = String.valueOf(System.currentTimeMillis());
     logger.info("End Time of 2nd Query : " + endTime2);
 
@@ -352,7 +344,7 @@ public class KillQueryTests extends BaseTestClass {
 
     String startTime1 = String.valueOf(System.currentTimeMillis());
     logger.info("Start Time of 1st Query : " + startTime1);
-    Thread.sleep(20000);
+    Thread.sleep(1000);
 
     QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(QueryInventory.SLEEP_QUERY, queryName1).getData();
     logger.info("1st QUERY HANDLE : " + queryHandle1);

http://git-wip-us.apache.org/repos/asf/lens/blob/e26ee5a7/lens-regression/src/test/java/org/apache/lens/regression/client/SessionResourceTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/client/SessionResourceTests.java b/lens-regression/src/test/java/org/apache/lens/regression/client/SessionResourceTests.java
index 3bb30d8..62dd0ba 100644
--- a/lens-regression/src/test/java/org/apache/lens/regression/client/SessionResourceTests.java
+++ b/lens-regression/src/test/java/org/apache/lens/regression/client/SessionResourceTests.java
@@ -39,6 +39,7 @@ import org.apache.lens.api.query.QueryHandle;
 import org.apache.lens.api.query.QueryStatus;
 import org.apache.lens.regression.core.constants.MetastoreURL;
 import org.apache.lens.regression.core.constants.QueryInventory;
+import org.apache.lens.regression.core.constants.QueryURL;
 import org.apache.lens.regression.core.constants.SessionURL;
 import org.apache.lens.regression.core.helpers.LensServerHelper;
 import org.apache.lens.regression.core.helpers.MetastoreHelper;
@@ -49,9 +50,9 @@ 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.HadoopUtil;
 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;
 
@@ -84,13 +85,6 @@ public class SessionResourceTests extends BaseTestClass {
   @BeforeClass(alwaysRun = true)
   public void initialize() throws IOException, JSchException, JAXBException, LensException {
     servLens = ServiceManagerHelper.init();
-
-    HadoopUtil.uploadJars(localJarPath + "/" + hiveUdfJar, hdfsJarPath);
-    logger.info("Creating Local Resource Directory in Server Machine");
-    Util.runRemoteCommand("mkdir -p " + serverResourcePath);
-    String path = hdfsJarPath + "/" + hiveUdfJar;
-    logger.info("Copying " + path + " to Local Resource Directory in Server Machine");
-    Util.runRemoteCommand("hadoop fs -get " + path + " " + serverResourcePath);
   }
 
   @BeforeMethod(alwaysRun = true)
@@ -106,13 +100,13 @@ public class SessionResourceTests extends BaseTestClass {
     lens.closeSession();
   }
 
-  public boolean checkSessionParamMap(String sessionHandle)  throws Exception {
+  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){
+    if (map == null) {
       return false;
     }
     return true;
@@ -121,64 +115,34 @@ public class SessionResourceTests extends BaseTestClass {
 
   @Test
   public void testSessionGet() throws Exception {
-    Response response = lens.exec("get", "/session", servLens, null, null);
-    AssertUtil.assertSucceededResponse(response);
+    String newSessionHandle = sHelper.openNewSession("diff", "diff");
+    Assert.assertNotNull(newSessionHandle);
   }
 
 
   @Test
-  public void testSessionPostDelete() throws Exception {
-
-    Map<String, String> resource = new HashMap<String, String>();
-    resource.put("username", lens.getUserName());
-    resource.put("password", lens.getPassword());
-
-    FormBuilder formData = new FormBuilder(resource);
-    Response response = lens.sendForm("post", SessionURL.SESSION_BASE_URL, formData);
-    AssertUtil.assertSucceededResponse(response);
-    String sessionHandle = response.readEntity(String.class);
-    Assert.assertTrue(checkSessionParamMap(sessionHandle), "Session is Closed");
-
-    MapBuilder query = new MapBuilder("sessionid", sessionHandle);
-    response = lens.exec("delete", SessionURL.SESSION_BASE_URL, servLens, null, query);
-    AssertUtil.assertSucceeded(response);
-    Assert.assertFalse(checkSessionParamMap(sessionHandle), "Session is Still Open");
-  }
-
-  @Test
-  public void testSessionParamsGetVerbose()  throws Exception {
+  public void testSessionParamsGetVerbose() throws Exception {
     Assert.assertTrue(checkSessionParamMap(sessionHandleString), "Returned Empty Params list");
   }
 
 
   @Test
-  public void testSessionParamsGetNPut()  throws Exception {
-
-    Map<String, String> resource = new HashMap<String, String>();
-    resource.put("sessionid", sessionHandleString);
-    resource.put("key", newParamsKey);
-    resource.put("value", newParamsValue);
+  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.assertSucceeded(response);
 
-    MapBuilder query = new MapBuilder("sessionid", sessionHandleString, "key", "datanucleus.autoCreateSchema");
-
-    response = lens.sendQuery("get", SessionURL.SESSION_PARAMS_URL, query);
-    AssertUtil.assertSucceededResponse(response);
+    String value = sHelper.getSessionParam(newParamsKey);
+    Assert.assertEquals(value, newParamsValue, "From Session Params Put");
 
-    StringList strList = response.readEntity(new GenericType<StringList>(StringList.class));
-    HashMap<String, String> map = Util.stringListToMap(strList);
-
-    Assert.assertEquals(map.get("datanucleus.autoCreateSchema"),
-        newParamsValue, "From Session Params Put");
-    Assert.assertEquals(map.size(), 1, "Params List contains more than one param");
   }
 
   //Negative Test Case
   @Test
-  public void testSessionGetUndefinedParams()  throws Exception {
+  public void testSessionGetUndefinedParams() throws Exception {
 
     String undefinedParamsKey = "test123";
     MapBuilder query = new MapBuilder("sessionid", sessionHandleString, "key", undefinedParamsKey);
@@ -195,32 +159,29 @@ public class SessionResourceTests extends BaseTestClass {
 
   @Test
   public void testSessionRestore() throws Exception {
-    Map<String, String> resource = new HashMap<String, String>();
-    resource.put("sessionid", sessionHandleString);
-    resource.put("key", newParamsKey);
-    resource.put("value", newParamsValue);
 
+    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.assertSucceeded(response);
 
     lens.restart();
 
-    MapBuilder query = new MapBuilder("sessionid", sessionHandleString, "key", "datanucleus.autoCreateSchema");
+    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("datanucleus.autoCreateSchema"),
-        newParamsValue, "From Session Params Put");
+    Assert.assertEquals(map.get(newParamsKey), newParamsValue, "From Session Params Put");
     Assert.assertEquals(map.size(), 1, "Params List contains more than one param");
   }
 
 
   @Test
-  public void testSessionHDFSResourcePutNDelete()  throws Exception {
+  public void testSessionHDFSResourcePutNDelete() throws Exception {
 
     String path = hdfsJarPath + "/" + hiveUdfJar;
     sHelper.addResourcesJar(path);
@@ -228,21 +189,18 @@ public class SessionResourceTests extends BaseTestClass {
     QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(createSleepFunction).getData();
     LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
     Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
-    Assert.assertEquals(lensQuery.getStatus().getStatusMessage().trim(),
-        "Query is successful!", "Query did not succeed");
 
     sHelper.removeResourcesJar(path);
 
     queryHandle = (QueryHandle) qHelper.executeQuery(createSleepFunction).getData();
     lensQuery = qHelper.waitForCompletion(queryHandle);
     Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.FAILED);
-    Assert.assertNotEquals(lensQuery.getStatus().getStatusMessage().trim(),
-        "Query is successful!", "Query Should have Failed but it Passed");
+
   }
 
 
   @Test
-  public void testSessionLocalResourcePutNDelete()  throws Exception {
+  public void testSessionLocalResourcePutNDelete() throws Exception {
 
     String path = serverResourcePath + "/" + hiveUdfJar;
     sHelper.addResourcesJar(path);
@@ -250,47 +208,46 @@ public class SessionResourceTests extends BaseTestClass {
     QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(createSleepFunction).getData();
     LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
     Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
-    Assert.assertEquals(lensQuery.getStatus().getStatusMessage().trim(),
-        "Query is successful!", "Query did not succeed");
 
     sHelper.removeResourcesJar(path);
 
     queryHandle = (QueryHandle) qHelper.executeQuery(createSleepFunction).getData();
     lensQuery = qHelper.waitForCompletion(queryHandle);
     Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.FAILED);
-    Assert.assertNotEquals(lensQuery.getStatus().getStatusMessage().trim(),
-        "Query is successful!", "Query Should have Failed but it Passed");
 
   }
 
   @Test
-  public void testListResources()  throws Exception {
+  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);
-    logger.info(response);
     AssertUtil.assertSucceededResponse(response);
     StringList responseString = response.readEntity(StringList.class);
     List<String> jars = responseString.getElements();
-    for(String t : jars) {
+    for (String t : jars) {
       Assert.assertTrue(t.contains(hiveUdfJar));
     }
-    System.out.println(responseString);
   }
 
 
   @Test
-  public void testSessionGone()  throws Exception {
+  public void testSessionGone() throws Exception {
+
     String newSession = sHelper.openNewSession("test", "test");
     sHelper.closeNewSession(newSession);
+
     MapBuilder query = new MapBuilder("sessionid", newSession);
 
-    // Get Session Params with closed session
+    // Get Session resources with closed session
     Response response = lens.sendQuery("get", SessionURL.SESSION_LIST_RESOURCE_URL, query);
-    logger.info(response);
+    AssertUtil.assertGoneResponse(response);
+
+    // Get Session params with closd session
+    response = lens.sendQuery("get", SessionURL.SESSION_PARAMS_URL, query);
     AssertUtil.assertGoneResponse(response);
 
     //Setting DB with closed session Handle
@@ -298,30 +255,27 @@ public class SessionResourceTests extends BaseTestClass {
         null, query, MediaType.APPLICATION_XML_TYPE, null, lens.getCurrentDB());
     AssertUtil.assertGoneResponse(response);
 
-    //Explain Query with closed session Handle
     FormBuilder formData = new FormBuilder();
     formData.add("sessionid", newSession);
     formData.add("query", QueryInventory.QUERY);
-    formData.add("operation", "EXPLAIN");
     formData.add("conf", "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><conf />");
-    response = lens.exec("post", "/queryapi/queries", servLens, null, null,
+
+    //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.assertGoneResponse(response);
 
     //Execute Query with closed session Handle
-    formData = new FormBuilder();
-    formData.add("sessionid", newSession);
-    formData.add("query", QueryInventory.QUERY);
     formData.add("operation", "EXECUTE");
-    formData.add("conf", "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><conf />");
-    response = lens.exec("post", "/queryapi/queries", servLens, null, null,
+    response = lens.exec("post", QueryURL.QUERY_URL, servLens, null, null,
         MediaType.MULTIPART_FORM_DATA_TYPE, MediaType.APPLICATION_XML, formData.getForm());
     AssertUtil.assertGoneResponse(response);
 
   }
 
   @Test
-  public void testOpenSessionWithDB()  throws Exception {
+  public void testOpenSessionWithDB() throws Exception {
 
     String newDb = "opensessionwithdb";
     mHelper.createDatabase(newDb);
@@ -333,7 +287,7 @@ public class SessionResourceTests extends BaseTestClass {
   }
 
   @Test
-  public void testOpenSessionDefault()  throws Exception {
+  public void testOpenSessionDefault() throws Exception {
 
     String newSession = sHelper.openNewSession("test", "test");
     String curDB = mHelper.getCurrentDatabase(newSession);
@@ -343,21 +297,14 @@ public class SessionResourceTests extends BaseTestClass {
 
 
   @Test
-  public void testOpenSessionDBDoesnotExist()  throws Exception {
-
-    FormBuilder formData = new FormBuilder();
-    formData.add("username", "test");
-    formData.add("password", "test");
-    formData.add("database", "dbdoesnotexist");
+  public void testOpenSessionDBDoesnotExist() throws Exception {
 
-    Response response = mHelper.exec("post", "/session", servLens, null, null,
-        MediaType.MULTIPART_FORM_DATA_TYPE, MediaType.APPLICATION_XML, formData.getForm());
+    Response response = sHelper.openSessionReturnResponse("test", "test", "dbdoesnotexist", null);
     AssertUtil.assertFailedResponse(response);
-
   }
 
   @Test
-  public void testDBCeption()  throws Exception {
+  public void testSessionDBChange() throws Exception {
 
     String newDb = "opensessionwithdb";
     String newDb1 = "opensessionwithdb1";
@@ -371,9 +318,27 @@ public class SessionResourceTests extends BaseTestClass {
     mHelper.setCurrentDatabase(newSession, newDb1);
     curDB = mHelper.getCurrentDatabase(newSession);
     Assert.assertEquals(curDB, newDb1, "Could not open session with passed db");
+
     sHelper.closeNewSession(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.openNewSession("diff", "diff", null, MediaType.APPLICATION_JSON);
+    Assert.assertNotNull(newSessionHandle);
+    Assert.assertFalse(newSessionHandle.isEmpty());
+    sHelper.closeNewSession(newSessionHandle, MediaType.APPLICATION_JSON);
+  }
+
+  @Test(enabled = true)
+  public void testCloseSessionJson() throws Exception {
+    String s2 = sHelper.openNewSession("diff", "diff", null, MediaType.APPLICATION_XML);
+    Assert.assertNotNull(s2);
+    Assert.assertFalse(s2.isEmpty());
+    sHelper.closeNewSession(s2, MediaType.APPLICATION_JSON);
+  }
 }

http://git-wip-us.apache.org/repos/asf/lens/blob/e26ee5a7/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
new file mode 100644
index 0000000..d3b8ffb
--- /dev/null
+++ b/lens-regression/src/test/java/org/apache/lens/regression/config/ITSessionConfigTests.java
@@ -0,0 +1,358 @@
+/**
+ * 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.config;
+
+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.cube.parse.CubeQueryConfUtil;
+import org.apache.lens.regression.client.SessionResourceTests;
+import org.apache.lens.regression.core.constants.QueryInventory;
+import org.apache.lens.regression.core.helpers.LensServerHelper;
+import org.apache.lens.regression.core.helpers.MetastoreHelper;
+import org.apache.lens.regression.core.helpers.QueryHelper;
+import org.apache.lens.regression.core.helpers.ServiceManagerHelper;
+import org.apache.lens.regression.core.helpers.SessionHelper;
+import org.apache.lens.regression.core.testHelper.BaseTestClass;
+import org.apache.lens.regression.util.Util;
+import org.apache.lens.server.api.LensConfConstants;
+import org.apache.lens.server.api.error.LensException;
+
+import org.apache.log4j.Logger;
+
+import org.testng.Assert;
+import org.testng.annotations.*;
+
+import com.jcraft.jsch.JSchException;
+
+
+public class ITSessionConfigTests extends BaseTestClass{
+
+  WebTarget servLens;
+  String sessionHandleString;
+
+  LensServerHelper lens = getLensServerHelper();
+  MetastoreHelper mHelper = getMetastoreHelper();
+  SessionHelper sHelper = getSessionHelper();
+  QueryHelper qHelper = getQueryHelper();
+
+  private static String queryResultParentDirPath = "/tmp/lensreports";
+  private String lensConfFilePath = lens.getServerDir() + "/conf/lens-site.xml";
+
+  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());
+    sessionHandleString = sHelper.openSession(lens.getCurrentDB());
+  }
+
+  @AfterMethod(alwaysRun=true)
+  public void restoreConfig() throws JSchException, IOException, JAXBException, LensException{
+    sHelper.closeSession();
+  }
+
+
+  @DataProvider(name="query_provider")
+  public Object[][] queryProvider(){
+    String[][] query = { {QueryInventory.JDBC_DIM_QUERY}, {QueryInventory.HIVE_CUBE_QUERY},
+                         {QueryInventory.HIVE_DIM_QUERY}, };
+    return query;
+  }
+
+
+  // Test for lens.query.enable.persistent.resultset
+
+  @Test(enabled=true, dataProvider="query_provider")
+  public void testDisablePresistentResult(String queryString) throws Exception{
+
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "false");
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
+
+    QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(queryString).getData();
+    LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
+    Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed");
+
+    InMemoryQueryResult inmemory = (InMemoryQueryResult) qHelper.getResultSet(queryHandle, "0", "100");
+    Assert.assertNotNull(inmemory);
+
+    try {
+      PersistentQueryResult result = (PersistentQueryResult)qHelper.getResultSet(queryHandle, "0", "100");
+      Assert.assertFalse(true);
+    } catch(Exception e){
+      logger.info(e.getMessage().toString());
+    }
+
+  }
+
+  @Test(enabled=true, dataProvider="query_provider")
+  public void testPresistentResult(String queryString) throws Exception{
+
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "true");
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
+
+    QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(queryString).getData();
+    LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
+    Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed");
+
+    try{
+      InMemoryQueryResult inmemory = (InMemoryQueryResult)qHelper.getResultSet(queryHandle, "0", "100");
+      Assert.assertFalse(true);
+    }catch(Exception e){
+      logger.info(e.getMessage().toString());
+    }
+
+    PersistentQueryResult result = (PersistentQueryResult)qHelper.getResultSet(queryHandle, "0", "100");
+    Assert.assertNotNull(result);
+  }
+
+
+  @Test(enabled=false)  //Issue with indriver persistence for local file path
+  public void testPersistentResultsetIndriver() throws Exception{
+
+    String parentDir = "file://" + queryResultParentDirPath;
+    String hdfsoutPath = "temphdfsout";
+    Util.runRemoteCommand("mkdir " + queryResultParentDirPath + "/" + hdfsoutPath);
+    Util.runRemoteCommand("chmod -R 777 " + queryResultParentDirPath + "/"+ hdfsoutPath);
+
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "true");
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "true");
+    sHelper.setAndValidateParam(LensConfConstants.RESULT_SET_PARENT_DIR, parentDir);
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_HDFS_OUTPUT_PATH, hdfsoutPath);
+
+    QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.HIVE_CUBE_QUERY).getData();
+    LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
+    Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed");
+
+    PersistentQueryResult result = (PersistentQueryResult)qHelper.getResultSet(queryHandle);
+    String rowCount = Util.runRemoteCommand("cat " + queryResultParentDirPath + "/" + hdfsoutPath + "/"
+        + queryHandle.toString() + "/* |wc -l");
+    //Result file will have 2 lines extra, column header and footer saying number of rows.
+    Assert.assertEquals(Integer.parseInt(rowCount.trim()), result.getNumRows()+2,
+        "Result is not persisted in the given directory");
+  }
+
+
+  //Test for session properties lens.query.result.parent.dir
+
+  @DataProvider(name="path_provider")
+  public Object[][] pathProvider() throws JSchException, IOException{
+
+    Util.runRemoteCommand("mkdir /tmp/temporary");
+    Util.runRemoteCommand("chmod -R 777 /tmp/temporary");
+
+    String[][] path = { {"file://" + queryResultParentDirPath, "local"},
+                        {lens.getServerHdfsUrl() + queryResultParentDirPath, "hdfs"},
+                        {"file:///tmp/temporary", "local"},
+    };
+    return path;
+  }
+
+  @Test(enabled=true, dataProvider="path_provider")
+  public void testPersistentResultPath(String parentDir, String type) throws Exception {
+
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "true");
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
+    sHelper.setAndValidateParam(LensConfConstants.RESULT_SET_PARENT_DIR, parentDir);
+
+    QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.HIVE_CUBE_QUERY).getData();
+    LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
+    Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed");
+
+    PersistentQueryResult result = (PersistentQueryResult) qHelper.getResultSet(queryHandle);
+    String rowCount = null;
+
+    if (type.equalsIgnoreCase("hdfs")) {
+      rowCount = Util.runRemoteCommand("hadoop fs -cat  " + parentDir + "/" + queryHandle + "* | gunzip | wc -l");
+    } else {
+      rowCount = Util.runRemoteCommand("cat " + parentDir.substring(7, parentDir.length()) + "/" + queryHandle
+         + "* | gunzip | wc -l");
+    }
+
+    Assert.assertEquals(Integer.parseInt(rowCount.trim()), result.getNumRows()+2,
+        "Result is not persisted in the given directory");
+  }
+
+  @Test(enabled=true, dataProvider="path_provider")
+  public void testPersistentResultPathJDBCQuery(String parentDir, String type) throws Exception {
+
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "true");
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
+    sHelper.setAndValidateParam(LensConfConstants.RESULT_SET_PARENT_DIR, parentDir);
+
+    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");
+
+    PersistentQueryResult result = (PersistentQueryResult) qHelper.getResultSet(queryHandle);
+    String rowCount = null;
+
+    if (type.equalsIgnoreCase("hdfs")) {
+      rowCount = Util.runRemoteCommand("hadoop fs -cat " + parentDir + "/" + queryHandle + "* | gunzip | wc -l");
+    } else {
+      rowCount = Util.runRemoteCommand("cat " + parentDir.substring(7, parentDir.length()) + "/" + queryHandle
+          + "* | gunzip | wc -l");
+    }
+
+    Assert.assertEquals(Integer.parseInt(rowCount.trim()), result.getNumRows()+2);
+
+  }
+
+
+  // Test for lens.query.result.split.multiple and lens.query.result.split.multiple.maxrows
+
+  @Test(enabled=true, dataProvider="query_provider")
+  public void testQueryResultSplit(String queryString) throws Exception{
+
+    int splitSize = 1;
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "true");
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
+    sHelper.setAndValidateParam(LensConfConstants.RESULT_SET_PARENT_DIR, lens.getServerHdfsUrl()
+        + queryResultParentDirPath);
+    sHelper.setAndValidateParam(LensConfConstants.RESULT_SPLIT_INTO_MULTIPLE, "true");
+    sHelper.setAndValidateParam(LensConfConstants.RESULT_SPLIT_MULTIPLE_MAX_ROWS, String.valueOf(splitSize));
+
+    QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(queryString).getData();
+    LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
+    Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed");
+    PersistentQueryResult result = (PersistentQueryResult)qHelper.getResultSet(queryHandle);
+
+    logger.info(Util.runRemoteCommand("bash hadoop fs -get " + queryResultParentDirPath + "/" + queryHandle
+        + ".zip  /tmp"));
+    logger.info(Util.runRemoteCommand("cd /tmp; unzip " + queryHandle + ".zip"));
+    String numberOfFiles = Util.runRemoteCommand("ls /tmp/" + queryHandle + "* | grep -v zip |wc -l");
+    logger.info("number of files is-:" + numberOfFiles.trim());
+    int numFiles = Integer.parseInt(numberOfFiles.trim());
+    Assert.assertEquals(numFiles, result.getNumRows().intValue(), "Files are not splitting");
+
+    for(int i = 0; i < numFiles; i++) {
+      String rowsPerFile = Util.runRemoteCommand("cd /tmp;ls " + queryHandle + "_part-" + String.valueOf(i)
+          + ".csv |wc -l");
+      Assert.assertEquals(rowsPerFile.trim(), String.valueOf(splitSize), "Maxrows property not followed");
+    }
+  }
+
+  // Test for property lens.cube.query.fail.if.data.partial
+  @Test(enabled=true)
+  public void testQueryFailIfDataPartial() throws Exception{
+
+    sHelper.setAndValidateParam(CubeQueryConfUtil.FAIL_QUERY_ON_PARTIAL_DATA, "true");
+    QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.NO_PARTITION_HIVE_CUBE_QUERY).getData();
+    Assert.assertNull(queryHandle);
+
+    sHelper.setAndValidateParam(CubeQueryConfUtil.FAIL_QUERY_ON_PARTIAL_DATA, "false");
+    queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.NO_PARTITION_HIVE_CUBE_QUERY).getData();
+    LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
+    Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed!!");
+  }
+
+
+ /*
+  * Test for property lens.query.output.write.header and lens.query.output.header
+ */
+
+  @Test(enabled=true, dataProvider="query_provider")
+  public void testQueryOutputHeader(String queryString) throws Exception {
+
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_OUTPUT_WRITE_HEADER, "true");
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_OUTPUT_HEADER, "Query Result");
+    sHelper.setAndValidateParam(LensConfConstants.RESULT_SPLIT_INTO_MULTIPLE, "false");
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "true");
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
+    sHelper.setAndValidateParam(LensConfConstants.RESULT_SET_PARENT_DIR, "file://" + queryResultParentDirPath);
+
+    QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(queryString).getData();
+    LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
+    Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed!!");
+
+    PersistentQueryResult result = (PersistentQueryResult)qHelper.getResultSet(queryHandle);
+    Util.runRemoteCommand("gzip -d " + queryResultParentDirPath + "/" + queryHandle + ".csv.gz");
+
+    String content = Util.runRemoteCommand("cat " + queryResultParentDirPath + "/" + queryHandle + ".csv");
+    String[] lines = content.split("\n");
+    Assert.assertEquals(lines[0].trim(), "Query Result", "Header incorrect");
+
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_OUTPUT_WRITE_HEADER, "false");
+
+    queryHandle = (QueryHandle) qHelper.executeQuery(queryString).getData();
+    lensQuery = qHelper.waitForCompletion(queryHandle);
+    Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed!!");
+
+    PersistentQueryResult result1 = (PersistentQueryResult)qHelper.getResultSet(queryHandle);
+    Util.runRemoteCommand("gzip -d " + queryResultParentDirPath + "/" + queryHandle + ".csv.gz");
+
+    content = Util.runRemoteCommand("cat " + queryResultParentDirPath + "/" + queryHandle + ".csv");
+    lines = content.split("\n");
+    Assert.assertNotEquals(lines[0].trim(), "Query Result", "Header should not be printed");
+  }
+
+  /*
+   * Test for property lens.query.output.write.footer and lens.query.output.footer
+  */
+
+  @Test(enabled=true, dataProvider="query_provider")
+  public void testQueryOutputFooter(String queryString) throws Exception {
+
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_OUTPUT_FOOTER, "CopyRight");
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_OUTPUT_WRITE_FOOTER, "true");
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "true");
+    sHelper.setAndValidateParam(LensConfConstants.RESULT_SPLIT_INTO_MULTIPLE, "false");
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
+    sHelper.setAndValidateParam(LensConfConstants.RESULT_SET_PARENT_DIR, "file://" + queryResultParentDirPath);
+
+    QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(queryString).getData();
+    LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
+    Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed!!");
+
+    PersistentQueryResult result = (PersistentQueryResult)qHelper.getResultSet(queryHandle);
+    Util.runRemoteCommand("gzip -d " + queryResultParentDirPath + "/" + queryHandle + ".csv.gz");
+
+    String content = Util.runRemoteCommand("cat " + queryResultParentDirPath + "/" + queryHandle + ".csv");
+    String[] lines = content.split("\n");
+    Assert.assertEquals(lines[result.getNumRows()+1].trim(), "CopyRight", "Footer incorrect");
+
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_OUTPUT_WRITE_FOOTER, "false");
+
+    queryHandle = (QueryHandle) qHelper.executeQuery(queryString).getData();
+    lensQuery = qHelper.waitForCompletion(queryHandle);
+    Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed!!");
+
+    PersistentQueryResult result1 = (PersistentQueryResult)qHelper.getResultSet(queryHandle);
+    Util.runRemoteCommand("gzip -d " + queryResultParentDirPath + "/" + queryHandle + ".csv.gz");
+
+    content = Util.runRemoteCommand("cat " + queryResultParentDirPath + "/" + queryHandle + ".csv");
+    lines = content.split("\n");
+    Assert.assertEquals(lines.length, (result1.getNumRows().intValue())+1, "Footer shouldn't be coming");
+  }
+
+}
+
+
+