You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lens.apache.org by ar...@apache.org on 2016/10/04 07:48:47 UTC

[2/2] lens git commit: LENS-1271 : Regression tests for Saved Query and Scheduler feature

LENS-1271 : Regression tests for Saved Query and Scheduler feature


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

Branch: refs/heads/master
Commit: 5a18cce85185c554193620c63523c0811e097707
Parents: bf25ac5
Author: Archana H <ar...@apache.org>
Authored: Tue Oct 4 13:18:09 2016 +0530
Committer: Archana H <ar...@apache.org>
Committed: Tue Oct 4 13:18:09 2016 +0530

----------------------------------------------------------------------
 lens-regression/pom.xml                         |   4 +-
 .../regression/core/constants/SessionURL.java   |   1 +
 .../regression/core/helpers/LensHelper.java     |  58 ----
 .../core/helpers/LensServerHelper.java          |  20 ++
 .../core/helpers/MetastoreHelper.java           |  18 +-
 .../regression/core/helpers/QueryHelper.java    |   4 +-
 .../core/helpers/SavedQueryResourceHelper.java  | 212 ++++++++++++++
 .../core/helpers/ScheduleResourceHelper.java    | 238 ++++++++++++++++
 .../core/helpers/ServiceManagerHelper.java      |  32 +--
 .../regression/core/helpers/SessionHelper.java  |  15 +-
 .../core/testHelper/BaseTestClass.java          |  33 +--
 .../lens/regression/core/type/MapBuilder.java   |   5 +
 .../apache/lens/regression/util/AssertUtil.java | 145 ++--------
 .../org/apache/lens/regression/util/Util.java   |  50 +++-
 .../apache/lens/regression/ITMetricsTest.java   |   9 -
 .../apache/lens/regression/ITPriorityTests.java |   9 +-
 .../apache/lens/regression/ITRestartTests.java  |   5 -
 .../lens/regression/ITStreamingTests.java       |  14 +-
 .../apache/lens/regression/SessionTests.java    |   5 -
 .../lens/regression/client/ITListQueryTest.java |   5 -
 .../regression/client/ITPreparedQueryTests.java |  39 +--
 .../lens/regression/client/ITQueryApiTests.java |  85 ++++--
 .../regression/client/ITSavedQueryTests.java    | 245 ++++++++++++++++
 .../regression/client/ITScheduleQueryTests.java | 284 +++++++++++++++++++
 .../lens/regression/client/KillQueryTests.java  |  10 +-
 .../regression/client/SessionResourceTests.java | 107 +++++--
 .../regression/config/ITServerConfigTests.java  |  61 ++--
 .../regression/config/ITSessionConfigTests.java |  21 +-
 .../lens/regression/throttling/ITCostTests.java |   9 +-
 .../lens/regression/throttling/Throttling.java  |  71 +++--
 pom.xml                                         |  12 +
 31 files changed, 1400 insertions(+), 426 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/pom.xml
----------------------------------------------------------------------
diff --git a/lens-regression/pom.xml b/lens-regression/pom.xml
index 5deb373..13dd552 100644
--- a/lens-regression/pom.xml
+++ b/lens-regression/pom.xml
@@ -78,6 +78,7 @@
     <dependency>
       <groupId>org.testng</groupId>
       <artifactId>testng</artifactId>
+      <scope>compile</scope>
     </dependency>
     <dependency>
       <groupId>org.glassfish.jersey.core</groupId>
@@ -142,8 +143,7 @@
           </configuration>
         </plugin>
 
-
-        </plugins>
+</plugins>
   </build>
 
 

http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/main/java/org/apache/lens/regression/core/constants/SessionURL.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/main/java/org/apache/lens/regression/core/constants/SessionURL.java b/lens-regression/src/main/java/org/apache/lens/regression/core/constants/SessionURL.java
index 365146b..f471381 100644
--- a/lens-regression/src/main/java/org/apache/lens/regression/core/constants/SessionURL.java
+++ b/lens-regression/src/main/java/org/apache/lens/regression/core/constants/SessionURL.java
@@ -30,5 +30,6 @@ public class SessionURL {
   public static final String SESSION_ADD_RESOURCE_URL = SESSION_BASE_URL + "/resources/add";
   public static final String SESSION_REMOVE_RESOURCE_URL = SESSION_BASE_URL + "/resources/delete";
   public static final String SESSION_LIST_RESOURCE_URL = SESSION_BASE_URL + "/resources/list";
+  public static final String SESSIONS_LIST_URL = SESSION_BASE_URL + "/sessions";
 
 }

http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/LensHelper.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/LensHelper.java b/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/LensHelper.java
deleted file mode 100644
index c74da5d..0000000
--- a/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/LensHelper.java
+++ /dev/null
@@ -1,58 +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.core.helpers;
-
-public class LensHelper {
-
-  protected QueryHelper queryHelper;
-  protected MetastoreHelper metastoreHelper;
-  protected SessionHelper sessionHelper;
-  protected LensServerHelper serverHelper;
-  protected String envFileName;
-
-  public LensHelper(String envFileName) {
-    this.envFileName = envFileName;
-    queryHelper = new QueryHelper(envFileName);
-    metastoreHelper = new MetastoreHelper(envFileName);
-    sessionHelper = new SessionHelper(envFileName);
-    serverHelper = new LensServerHelper(envFileName);
-  }
-
-  public QueryHelper getQueryHelper() {
-    return queryHelper;
-  }
-
-  public MetastoreHelper getMetastoreHelper() {
-    return metastoreHelper;
-  }
-
-  public SessionHelper getSessionHelper() {
-    return sessionHelper;
-  }
-
-  public LensServerHelper getServerHelper() {
-    return serverHelper;
-  }
-
-  public String getEnvFileName() {
-    return envFileName;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/LensServerHelper.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/LensServerHelper.java b/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/LensServerHelper.java
index 8019182..093af8f 100644
--- a/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/LensServerHelper.java
+++ b/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/LensServerHelper.java
@@ -61,5 +61,25 @@ public class LensServerHelper extends ServiceManagerHelper {
 
     AssertUtil.assertSucceededResponse(response);
   }
+
+  public void stop() throws JSchException, IOException, InterruptedException, LensException {
+    int counter = 0;
+    Util.runRemoteCommand("bash /usr/local/lens/server/bin/lens-ctl stop");
+  }
+
+  public void start() throws JSchException, IOException, InterruptedException, LensException {
+    int counter = 0;
+    Util.runRemoteCommand("bash /usr/local/lens/server/bin/lens-ctl start");
+
+    Response response = this.exec("get", "", servLens, null, null, MediaType.TEXT_PLAIN_TYPE, MediaType.TEXT_PLAIN);
+    while (response == null && counter < 40) {
+      log.info("Waiting for Lens server to come up ");
+      Thread.sleep(1000);
+      response = this.exec("get", "", servLens, null, null, MediaType.TEXT_PLAIN_TYPE, MediaType.TEXT_PLAIN);
+      counter++;
+    }
+
+    AssertUtil.assertSucceededResponse(response);
+  }
 }
 

http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/MetastoreHelper.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/MetastoreHelper.java b/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/MetastoreHelper.java
index e993256..e2ae836 100644
--- a/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/MetastoreHelper.java
+++ b/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/MetastoreHelper.java
@@ -125,7 +125,7 @@ public class MetastoreHelper extends ServiceManagerHelper {
     Response response = this
         .exec("post", MetastoreURL.METASTORE_DATABASES_URL, servLens, null, query, MediaType.APPLICATION_XML_TYPE, null,
             dbName);
-    AssertUtil.assertSucceeded(response);
+    AssertUtil.assertSucceededResult(response);
   }
 
   public void createDatabase(String dbName) throws JAXBException, LensException {
@@ -143,7 +143,7 @@ public class MetastoreHelper extends ServiceManagerHelper {
     query.put("cascade", "true");
     Response response = this.exec("delete", MetastoreURL.METASTORE_DATABASES_URL + "/" + dbName, servLens, null, query,
         MediaType.APPLICATION_XML_TYPE, null);
-    AssertUtil.assertSucceeded(response);
+    AssertUtil.assertSucceededResult(response);
   }
 
   public void dropDatabase(String dbName) throws JAXBException, LensException {
@@ -158,7 +158,7 @@ public class MetastoreHelper extends ServiceManagerHelper {
     Response response = this
         .exec("post", MetastoreURL.METASTORE_STORAGES_URL, servLens, null, query, MediaType.APPLICATION_XML_TYPE, null,
             storageString);
-    AssertUtil.assertSucceeded(response);
+    AssertUtil.assertSucceededResult(response);
   }
 
   public void createStorage(XStorage storage) throws Exception {
@@ -170,7 +170,7 @@ public class MetastoreHelper extends ServiceManagerHelper {
     Response response = this
         .exec("delete", MetastoreURL.METASTORE_STORAGES_URL + "/" + storageName, servLens, null, query,
             MediaType.APPLICATION_XML_TYPE, null);
-    AssertUtil.assertSucceeded(response);
+    AssertUtil.assertSucceededResult(response);
   }
 
   public void dropStorage(String storageName) throws JAXBException, LensException {
@@ -195,7 +195,7 @@ public class MetastoreHelper extends ServiceManagerHelper {
     Response response = this
         .exec("post", MetastoreURL.METASTORE_CUBES_URL, servLens, null, query, MediaType.APPLICATION_XML_TYPE, null,
             cubeString);
-    AssertUtil.assertSucceeded(response);
+    AssertUtil.assertSucceededResult(response);
   }
 
   public void createCube(XCube cube) throws Exception {
@@ -212,7 +212,7 @@ public class MetastoreHelper extends ServiceManagerHelper {
     Response response = this
         .exec("post", MetastoreURL.METASTORE_FACTS_URL, servLens, null, null, MediaType.MULTIPART_FORM_DATA_TYPE,
             MediaType.APPLICATION_XML, formData.getForm());
-    AssertUtil.assertSucceeded(response);
+    AssertUtil.assertSucceededResult(response);
   }
 
   public void createFacts(XFactTable facts) throws Exception {
@@ -311,7 +311,7 @@ public class MetastoreHelper extends ServiceManagerHelper {
     String cubeString = Util.convertObjectToXml(cube, XCube.class, "createXCube");
     Response response = this.exec("put", MetastoreURL.METASTORE_CUBES_URL + "/" + cubeName, servLens, null, query,
         MediaType.APPLICATION_XML_TYPE, null, cubeString);
-    AssertUtil.assertSucceeded(response);
+    AssertUtil.assertSucceededResult(response);
   }
 
   public void updateCube(XCube cube, String cubeName) throws Exception {
@@ -322,7 +322,7 @@ public class MetastoreHelper extends ServiceManagerHelper {
     MapBuilder query = new MapBuilder("sessionid", sessionHandleString);
     Response response = this.exec("delete", MetastoreURL.METASTORE_CUBES_URL + "/" + cubeName, servLens, null, query,
         MediaType.APPLICATION_XML_TYPE, null);
-    AssertUtil.assertSucceeded(response);
+    AssertUtil.assertSucceededResult(response);
   }
 
   public void dropCube(String cubeName) throws JAXBException, LensException {
@@ -339,7 +339,7 @@ public class MetastoreHelper extends ServiceManagerHelper {
     Response response = this
         .exec("post", MetastoreURL.METASTORE_DIMTABLES_URL, servLens, null, null, MediaType.MULTIPART_FORM_DATA_TYPE,
             MediaType.APPLICATION_XML, formData.getForm());
-    AssertUtil.assertSucceeded(response);
+    AssertUtil.assertSucceededResult(response);
   }
 
   public void createDimTable(XDimensionTable dt) throws Exception {

http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/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 dbbb4aa..c5fecae 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
@@ -127,7 +127,7 @@ public class QueryHelper extends ServiceManagerHelper {
     }
     Response response = this.exec("post", QueryURL.QUERY_URL, servLens, null, null, MediaType.MULTIPART_FORM_DATA_TYPE,
         MediaType.APPLICATION_XML, formData.getForm());
-    LensAPIResult result = response.readEntity(new GenericType<LensAPIResult>(){});
+    LensAPIResult result = response.readEntity(LensAPIResult.class);
     return result;
   }
 
@@ -472,7 +472,7 @@ public class QueryHelper extends ServiceManagerHelper {
     }
     Response response = this.exec("post", QueryURL.PREPAREDQUERY_URL + queryHandle.toString(), servLens, null, null,
         MediaType.MULTIPART_FORM_DATA_TYPE, MediaType.APPLICATION_XML, formData.getForm());
-    QueryHandleWithResultSet result = response.readEntity(new GenericType<QueryHandleWithResultSet>(){});
+    QueryHandleWithResultSet result = response.readEntity(QueryHandleWithResultSet.class);
     return result;
   }
 

http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/SavedQueryResourceHelper.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/SavedQueryResourceHelper.java b/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/SavedQueryResourceHelper.java
new file mode 100644
index 0000000..6a11f26
--- /dev/null
+++ b/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/SavedQueryResourceHelper.java
@@ -0,0 +1,212 @@
+/**
+ * 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.core.helpers;
+
+import java.io.IOException;
+import java.io.StringWriter;
+import java.util.HashMap;
+import java.util.List;
+
+import javax.ws.rs.core.GenericType;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+
+import org.apache.lens.api.query.QueryHandle;
+import org.apache.lens.api.query.save.*;
+import org.apache.lens.api.result.LensAPIResult;
+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.server.api.error.LensException;
+
+import org.codehaus.jackson.map.ObjectMapper;
+
+import org.glassfish.jersey.media.multipart.FormDataBodyPart;
+import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class SavedQueryResourceHelper extends ServiceManagerHelper {
+
+  public static final String SAVED_QUERY_BASE_URL = "/queryapi/savedqueries";
+
+  public SavedQueryResourceHelper() {
+  }
+
+  public SavedQueryResourceHelper(String envFileName) {
+    super(envFileName);
+  }
+
+
+  public ListResponse listSavedQueries(String start, String count, String sessionHandleString) throws JAXBException {
+    MapBuilder query = new MapBuilder("sessionid", sessionHandleString, "start", start, "count", count);
+    Response response = this.exec("get", SAVED_QUERY_BASE_URL, servLens, null, query);
+    AssertUtil.assertSucceededResponse(response);
+    return response.readEntity(ListResponse.class);
+  }
+
+  public ListResponse getSavedQueries(String start, String count) throws JAXBException {
+    return listSavedQueries(start, count, sessionHandleString);
+  }
+
+  public ResourceModifiedResponse createSavedQuery(String query, String name, List<Parameter> paramList,
+      String sessionHandleString, MediaType inputMediaType) throws JAXBException, IOException {
+
+    MapBuilder map = new MapBuilder("sessionid", sessionHandleString);
+
+    SavedQuery savedQuery = new SavedQuery();
+    savedQuery.setQuery(query);
+    savedQuery.setName(name);
+    savedQuery.setParameters(paramList);
+    savedQuery.setDescription("description");
+
+    Response response = null;
+
+    if (inputMediaType!=null && inputMediaType.equals(MediaType.APPLICATION_XML_TYPE)) {
+
+      Marshaller m = JAXBContext.newInstance(SavedQuery.class).createMarshaller();
+      StringWriter xmlStringWriter = new StringWriter();
+      m.marshal(savedQuery, xmlStringWriter);
+      response = this.exec("post", SAVED_QUERY_BASE_URL, servLens, null, map, inputMediaType,
+          MediaType.APPLICATION_XML, xmlStringWriter.toString());
+
+    } else {
+      String json = "{\"savedQuery\":" + (new ObjectMapper().writeValueAsString(savedQuery))  + "}";
+      response = this.exec("post", SAVED_QUERY_BASE_URL, servLens, null, map, inputMediaType,
+          MediaType.APPLICATION_XML, json);
+    }
+
+    AssertUtil.assertCreated(response);
+    response.getStringHeaders().putSingle(HttpHeaders.CONTENT_TYPE, "application/xml");
+    return response.readEntity(ResourceModifiedResponse.class);
+  }
+
+  public Parameter getParameter(String name, ParameterDataType dataType, String defaultValue,
+    ParameterCollectionType collectionType){
+
+    Parameter p = new Parameter(name);
+    p.setDataType(dataType);
+    p.setCollectionType(collectionType);
+    p.setDisplayName("param display name");
+
+    if (collectionType.equals(ParameterCollectionType.MULTIPLE)){
+      p.setDefaultValue(defaultValue.split(","));
+    }else {
+      p.setDefaultValue(new String[]{defaultValue});
+    }
+    return p;
+  }
+
+  public ResourceModifiedResponse createSavedQuery(String query, String name, List<Parameter> paramList)
+    throws JAXBException, IOException {
+    return createSavedQuery(query, name, paramList, sessionHandleString, MediaType.APPLICATION_JSON_TYPE);
+  }
+
+  public ResourceModifiedResponse createSavedQuery(String query, String name, List<Parameter> paramList, String session)
+    throws JAXBException, IOException {
+    return createSavedQuery(query, name, paramList, session, MediaType.APPLICATION_JSON_TYPE);
+  }
+
+
+  public SavedQuery getSavedQuery(Long queryId, String sessionHandleString) throws JAXBException {
+    MapBuilder query = new MapBuilder("sessionid", sessionHandleString, "id", Long.toString(queryId));
+    Response response = this.exec("get", SAVED_QUERY_BASE_URL + "/" + queryId , servLens, null, query);
+    AssertUtil.assertSucceededResponse(response);
+    return response.readEntity(SavedQuery.class);
+  }
+
+  public SavedQuery getSavedQuery(Long queryId) throws JAXBException, LensException {
+    return getSavedQuery(queryId, sessionHandleString);
+  }
+
+  public ResourceModifiedResponse deleteSavedQuery(Long queryId, String sessionHandleString) throws JAXBException {
+    MapBuilder query = new MapBuilder("sessionid", sessionHandleString, "id", Long.toString(queryId));
+    Response response = this.exec("delete", SAVED_QUERY_BASE_URL + "/" + queryId , servLens, null, query);
+    AssertUtil.assertSucceededResponse(response);
+    return response.readEntity(ResourceModifiedResponse.class);
+  }
+
+  public void deleteAllSavedQueries() throws JAXBException {
+    ListResponse savedQueryList = listSavedQueries("0", "100", sessionHandleString);
+    if (savedQueryList.getResoures() != null){
+      for(SavedQuery s: savedQueryList.getResoures()){
+        deleteSavedQuery(s.getId(), sessionHandleString);
+      }
+    }
+  }
+
+  public ResourceModifiedResponse updateSavedQuery(Long queryId, String sessionHandleString, SavedQuery savedQuery)
+    throws JAXBException, IOException {
+
+    MapBuilder map = new MapBuilder("sessionid", sessionHandleString);
+    String json = "{\"savedQuery\":" + (new ObjectMapper().writeValueAsString(savedQuery))  + "}";
+    Response response = this.exec("put", SAVED_QUERY_BASE_URL + "/" + Long.toString(queryId), servLens, null, map,
+        MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_XML, json);
+    AssertUtil.assertCreated(response);
+    response.getStringHeaders().putSingle(HttpHeaders.CONTENT_TYPE, "application/xml");
+    return response.readEntity(ResourceModifiedResponse.class);
+  }
+
+  public LensAPIResult<QueryHandle> runSavedQuery(Long queryId, String sessionHandleString, String conf,
+    HashMap<String, String> params) throws JAXBException {
+
+    MapBuilder map = new MapBuilder(params);
+    FormBuilder formData = new FormBuilder("sessionid", sessionHandleString);
+
+    if (conf == null) {
+      conf = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><conf />";
+    }
+    formData.getForm().bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("conf").fileName("conf")
+        .build(), conf, MediaType.APPLICATION_XML_TYPE));
+
+    Response response = this.exec("post", SAVED_QUERY_BASE_URL + "/" + queryId , servLens, null, map,
+        MediaType.MULTIPART_FORM_DATA_TYPE, MediaType.APPLICATION_XML, formData.getForm());
+
+    AssertUtil.assertSucceededResponse(response);
+    return response.readEntity(new GenericType<LensAPIResult<QueryHandle>>(){});
+  }
+
+  public LensAPIResult<QueryHandle> runSavedQuery(Long queryId, String sessionHandleString,
+    HashMap<String, String> params) throws JAXBException {
+    return runSavedQuery(queryId, sessionHandleString, null, params);
+  }
+
+  public LensAPIResult<QueryHandle> runSavedQuery(Long queryId, HashMap<String, String> params) throws JAXBException {
+    return runSavedQuery(queryId, sessionHandleString, null, params);
+  }
+
+  public ParameterParserResponse getSavedQueryParameter(String query, String sessionHandleString) throws JAXBException {
+
+    MapBuilder map = new MapBuilder("sessionid", sessionHandleString);
+    FormBuilder formData = new FormBuilder("query", query);
+
+    Response response = this.exec("post", SAVED_QUERY_BASE_URL + "/parameters", servLens, null, map,
+        MediaType.MULTIPART_FORM_DATA_TYPE, MediaType.APPLICATION_XML, formData.getForm());
+    AssertUtil.assertSucceededResponse(response);
+    response.getStringHeaders().putSingle(HttpHeaders.CONTENT_TYPE, "application/xml");
+    return response.readEntity(ParameterParserResponse.class);
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/ScheduleResourceHelper.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/ScheduleResourceHelper.java b/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/ScheduleResourceHelper.java
new file mode 100644
index 0000000..f2883f0
--- /dev/null
+++ b/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/ScheduleResourceHelper.java
@@ -0,0 +1,238 @@
+/**
+ * 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.core.helpers;
+
+import java.io.IOException;
+import java.text.ParseException;
+import java.util.List;
+
+import javax.ws.rs.core.*;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.datatype.DatatypeConfigurationException;
+
+import org.apache.lens.api.APIResult;
+import org.apache.lens.api.ToXMLString;
+import org.apache.lens.api.scheduler.*;
+import org.apache.lens.regression.core.type.MapBuilder;
+import org.apache.lens.regression.util.AssertUtil;
+import org.apache.lens.regression.util.Util;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class ScheduleResourceHelper extends ServiceManagerHelper {
+
+  public static final String SCHEDULER_BASE_URL = "/scheduler";
+  public static final String SCHEDULER_JOBS_URL = SCHEDULER_BASE_URL + "/jobs";
+  public static final String SCHEDULER_INSTANCES_URL = SCHEDULER_BASE_URL + "/instances";
+
+  public ScheduleResourceHelper() {
+  }
+
+  public ScheduleResourceHelper(String envFileName) {
+    super(envFileName);
+  }
+
+
+  public String submitJob(String action, XJob job, String sessionHandleString)
+    throws JAXBException, IOException, ParseException, DatatypeConfigurationException {
+
+    MapBuilder map = new MapBuilder("sessionid", sessionHandleString);
+    if (action != null) {
+      map.put("action", action);
+    }
+
+    JAXBElement<XJob> xmlJob = new ObjectFactory().createJob(job);
+    GenericEntity<JAXBElement<XJob>> entry = new GenericEntity<JAXBElement<XJob>>(xmlJob){};
+    Response response = this.exec("post", SCHEDULER_JOBS_URL, servLens, null, map, MediaType.APPLICATION_XML_TYPE,
+        MediaType.APPLICATION_XML, entry);
+    AssertUtil.assertSucceededResponse(response);
+    SchedulerJobHandle handle =  response.readEntity(SchedulerJobHandle.class);
+    return handle.getHandleIdString();
+  }
+
+  public String submitJob(XJob job, String sessionHandleString)
+    throws JAXBException, IOException, ParseException, DatatypeConfigurationException {
+    return submitJob("submit", job, sessionHandleString);
+  }
+
+  public String submitNScheduleJob(XJob job, String sessionHandleString)
+    throws JAXBException, IOException, ParseException, DatatypeConfigurationException {
+    return submitJob("submit_and_schedule", job, sessionHandleString);
+  }
+
+  public XJob getXJob(String name, String query, String db, String startTime, String endTime, XFrequencyEnum frequency)
+    throws ParseException, DatatypeConfigurationException {
+
+    XJob job = new XJob();
+    job.setName(name);
+    job.setStartTime(Util.getGregorianCalendar(startTime));
+    job.setEndTime(Util.getGregorianCalendar(endTime));
+    job.setTrigger(getXTrigger(frequency));
+    job.setExecution(getXExecution(query, db));
+    return job;
+  }
+
+  public XJob getXJob(String name, String query, String db, String startTime, String endTime, String cronExpression)
+    throws ParseException, DatatypeConfigurationException {
+
+    XJob job = new XJob();
+    job.setName(name);
+    job.setStartTime(Util.getGregorianCalendar(startTime));
+    job.setEndTime(Util.getGregorianCalendar(endTime));
+    job.setTrigger(getXTrigger(cronExpression));
+    job.setExecution(getXExecution(query, db));
+    return job;
+  }
+
+  public XTrigger getXTrigger(XFrequencyEnum frequency){
+
+    XTrigger xTrigger = new XTrigger();
+    XFrequency xf = new XFrequency();
+    xf.setEnum(frequency);
+    xTrigger.setFrequency(xf);
+    return xTrigger;
+  }
+
+  public XTrigger getXTrigger(String cronExpression){
+
+    XTrigger xTrigger = new XTrigger();
+    XFrequency xf = new XFrequency();
+    xf.setCronExpression(cronExpression);
+    xTrigger.setFrequency(xf);
+    return xTrigger;
+  }
+
+  public XExecution getXExecution(String query, String db){
+    return getXExecution(query, db, null, null);
+  }
+
+  public XExecution getXExecution(String query, String db, List<MapType> queryConfig, List<MapType> sessionConfig){
+    XExecution execution = new XExecution();
+
+    XJobQuery xJobQuery = new XJobQuery();
+    xJobQuery.setQuery(query);
+    if (queryConfig != null){
+      xJobQuery.withConf(queryConfig);
+    }
+
+    XSessionType sessionType = new XSessionType();
+    if (db == null){
+      db = getCurrentDB();
+    }
+    sessionType.setDb(db);
+    if (sessionConfig != null){
+      sessionType.withConf(sessionConfig);
+    }
+
+    execution.setQuery(xJobQuery);
+    execution.setSession(sessionType);
+    return execution;
+  }
+
+  public XJob getJobDefinition(String jobHandle, String sessionId, MediaType inputMedia, String outputMedia){
+    MapBuilder map = new MapBuilder("sessionid", sessionId);
+    Response response = this.exec("get", SCHEDULER_JOBS_URL + "/" + jobHandle , servLens, null, map, inputMedia,
+        outputMedia);
+    AssertUtil.assertSucceededResponse(response);
+    return response.readEntity(XJob.class);
+  }
+
+  public XJob getJobDefinition(String jobHandle, String sessionId){
+    return getJobDefinition(jobHandle, sessionId, MediaType.APPLICATION_XML_TYPE, MediaType.APPLICATION_XML);
+  }
+
+  public APIResult deleteJob(String jobHandle, String sessionId){
+    MapBuilder map = new MapBuilder("sessionid", sessionId);
+    Response response = this.exec("delete", SCHEDULER_JOBS_URL + "/" + jobHandle , servLens, null, map, null,
+        MediaType.APPLICATION_JSON);
+    AssertUtil.assertSucceededResponse(response);
+    return response.readEntity(APIResult.class);
+  }
+
+  public APIResult updateJob(XJob job, String jobHandle, String sessionHandleString)
+    throws JAXBException, IOException, ParseException, DatatypeConfigurationException {
+
+    MapBuilder map = new MapBuilder("sessionid", sessionHandleString);
+    JAXBElement<XJob> xmlJob = new ObjectFactory().createJob(job);
+
+    Response response = this.exec("put", SCHEDULER_JOBS_URL + "/" + jobHandle, servLens, null, map,
+        MediaType.APPLICATION_XML_TYPE, MediaType.APPLICATION_XML, ToXMLString.toString(xmlJob));
+    AssertUtil.assertSucceededResponse(response);
+    return response.readEntity(APIResult.class);
+  }
+
+  public APIResult updateJob(String jobHandle, String action, String sessionHandleString)
+    throws JAXBException, IOException, ParseException, DatatypeConfigurationException {
+
+    MapBuilder map = new MapBuilder("sessionid", sessionHandleString, "action", action);
+    Response response = this.exec("post", SCHEDULER_JOBS_URL + "/" + jobHandle, servLens, null, map);
+    AssertUtil.assertSucceededResponse(response);
+    return response.readEntity(APIResult.class);
+  }
+
+  public SchedulerJobInfo getJobDetails(String jobHandle, String sessionHandleString){
+
+    MapBuilder map = new MapBuilder("sessionid", sessionHandleString);
+    Response response = this.exec("get", SCHEDULER_JOBS_URL + "/" + jobHandle + "/info", servLens, null, map,
+        MediaType.APPLICATION_XML_TYPE, MediaType.APPLICATION_XML);
+    AssertUtil.assertSucceededResponse(response);
+    return response.readEntity(SchedulerJobInfo.class);
+  }
+
+
+  public SchedulerJobState getJobStatus(String jobHandle, String sessionHandleString){
+    SchedulerJobInfo jobInfo = getJobDetails(jobHandle, sessionHandleString);
+    return jobInfo.getJobState();
+  }
+
+  public SchedulerJobState getJobStatus(String jobHandle){
+    SchedulerJobInfo jobInfo = getJobDetails(jobHandle, sessionHandleString);
+    return jobInfo.getJobState();
+  }
+
+  public List<SchedulerJobInstanceInfo> getAllInstancesOfJob(String jobHandle, String numResults, String sessionId)
+    throws JAXBException, IOException, ParseException, DatatypeConfigurationException {
+
+    MapBuilder map = new MapBuilder("sessionid", sessionId, "numResults", numResults);
+    Response response = this.exec("get", SCHEDULER_JOBS_URL + "/" + jobHandle + "/instances", servLens, null, map);
+    AssertUtil.assertSucceededResponse(response);
+    return response.readEntity(new GenericType<List<SchedulerJobInstanceInfo>>(){});
+  }
+
+  public SchedulerJobInstanceInfo getInstanceDetails(String instanceHandle, String sessionId)
+    throws JAXBException, IOException, ParseException, DatatypeConfigurationException {
+
+    MapBuilder map = new MapBuilder("sessionid", sessionId);
+    Response response = this.exec("get", SCHEDULER_INSTANCES_URL + "/" + instanceHandle , servLens, null, map);
+    AssertUtil.assertSucceededResponse(response);
+    return response.readEntity(SchedulerJobInstanceInfo.class);
+  }
+
+  public APIResult updateInstance(String instanceHandle, String action, String sessionId)
+    throws JAXBException, IOException, ParseException, DatatypeConfigurationException {
+
+    MapBuilder map = new MapBuilder("sessionid", sessionId, "action", action);
+    Response response = this.exec("post", SCHEDULER_INSTANCES_URL + "/" + instanceHandle , servLens, null, map);
+    AssertUtil.assertSucceededResponse(response);
+    return response.readEntity(APIResult.class);
+  }
+}

http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/ServiceManagerHelper.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/ServiceManagerHelper.java b/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/ServiceManagerHelper.java
index eb49827..2370f3e 100644
--- a/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/ServiceManagerHelper.java
+++ b/lens-regression/src/main/java/org/apache/lens/regression/core/helpers/ServiceManagerHelper.java
@@ -66,7 +66,7 @@ public abstract class ServiceManagerHelper {
 
   public static WebTarget init() {
     Client client = ClientBuilder.newBuilder().register(MultiPartFeature.class).build();
-    String baseUri = Util.getProperty("lens.baseurl");
+    String baseUri = Util.getProperty(LENS_BASE_URL);
     servLens = client.target(UriBuilder.fromUri(baseUri).build());
     return servLens;
   }
@@ -138,13 +138,17 @@ public abstract class ServiceManagerHelper {
     return exec(functionName, path, service, headers, queryParams, null, null, null);
   }
 
+  public <T> Response exec(String functionName, String path, WebTarget service, FormDataMultiPart headers,
+      MapBuilder queryParams, MediaType inputMediaType, String outputMediaType, T inputObject) {
+
+    Response cl = (Response) exec(functionName, path, service, headers, queryParams, inputMediaType, outputMediaType,
+        Response.class, inputObject);
+    return cl;
+  }
+
   public <T> Object exec(String functionName, String path, WebTarget service, FormDataMultiPart headers,
       MapBuilder queryParams, MediaType inputMediaType, String outputMediaType, Class responseClass, T inputObject) {
 
-    Object result;
-    WebTarget builder = null;
-    String className = this.getClass().getName();
-
     if (outputMediaType == null) {
       outputMediaType = MediaType.APPLICATION_XML;
     }
@@ -152,7 +156,7 @@ public abstract class ServiceManagerHelper {
       inputMediaType = MediaType.APPLICATION_XML_TYPE;
     }
 
-    builder = service.path(path);
+    WebTarget builder = service.path(path);
     if (queryParams != null) {
       for (Map.Entry<String, String> queryMapEntry : queryParams.getMap().entrySet()) {
         builder = builder.queryParam(queryMapEntry.getKey(), queryMapEntry.getValue());
@@ -163,13 +167,13 @@ public abstract class ServiceManagerHelper {
     functionName = "exec" + functionName.toUpperCase();
 
     try {
-      Class methodClass = Class.forName(className);
+      Class methodClass = Class.forName(this.getClass().getName());
       Object methodObject = methodClass.newInstance();
 
       Method method = methodObject.getClass()
           .getMethod(functionName, Invocation.Builder.class, inputMediaType.getClass(), responseClass.getClass(),
               Object.class);
-      result = method.invoke(methodObject, build, inputMediaType, responseClass, inputObject);
+      Object result = method.invoke(methodObject, build, inputMediaType, responseClass, inputObject);
       return result;
 
     } catch (Exception e) {
@@ -178,19 +182,7 @@ public abstract class ServiceManagerHelper {
     }
   }
 
-  public <T> Response exec(String functionName, String path, WebTarget service, FormDataMultiPart headers,
-      MapBuilder queryParams, MediaType inputMediaType, String outputMediaType, T inputObject) {
 
-    Class responseClass = Response.class;
-    Response cl = null;
-    try {
-      cl = (Response) exec(functionName, path, service, headers, queryParams, inputMediaType, outputMediaType,
-          responseClass, inputObject);
-    } catch (Exception e) {
-      log.error("Exception in exec", e);
-    }
-    return cl;
-  }
 
   public <T> Object execPUT(Invocation.Builder builder, MediaType inputMediaType, Class<?> responseClass,
       T inputObject) {

http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/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 6c01d1e..d996b39 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
@@ -20,6 +20,7 @@
 package org.apache.lens.regression.core.helpers;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import javax.ws.rs.core.GenericType;
@@ -28,6 +29,7 @@ import javax.ws.rs.core.Response;
 
 import org.apache.lens.api.LensConf;
 import org.apache.lens.api.StringList;
+import org.apache.lens.api.session.UserSessionInfo;
 import org.apache.lens.regression.core.constants.SessionURL;
 import org.apache.lens.regression.core.type.FormBuilder;
 import org.apache.lens.regression.core.type.MapBuilder;
@@ -119,7 +121,7 @@ public class SessionHelper extends ServiceManagerHelper {
     MapBuilder query = new MapBuilder("sessionid", sessionHandleString);
     Response response = this.exec("delete", SessionURL.SESSION_BASE_URL, servLens, null, query, null,
         outputMediaType, null);
-    AssertUtil.assertSucceeded(response);
+    AssertUtil.assertSucceededResult(response);
     log.info("Closed Session : {}", sessionHandleString);
   }
 
@@ -191,7 +193,7 @@ public class SessionHelper extends ServiceManagerHelper {
     Response response = this.exec("put", SessionURL.SESSION_ADD_RESOURCE_URL, servLens, null, null,
         MediaType.MULTIPART_FORM_DATA_TYPE, null, formData.getForm());
     log.info("Response : {}", response);
-    AssertUtil.assertSucceeded(response);
+    AssertUtil.assertSucceededResult(response);
   }
 
   public void addResourcesJar(String path) throws  LensException {
@@ -213,7 +215,7 @@ public class SessionHelper extends ServiceManagerHelper {
     Response response = this.exec("put", SessionURL.SESSION_REMOVE_RESOURCE_URL, servLens, null, null,
         MediaType.MULTIPART_FORM_DATA_TYPE, null,  formData.getForm());
     log.info("Response : {}", response);
-    AssertUtil.assertSucceeded(response);
+    AssertUtil.assertSucceededResult(response);
   }
 
   public void removeResourcesJar(String path) throws LensException {
@@ -233,4 +235,11 @@ public class SessionHelper extends ServiceManagerHelper {
     return getSessionParam(sessionHandleString, param);
   }
 
+  public List<UserSessionInfo> getSessionList() throws Exception {
+    Response response = this.exec("get", SessionURL.SESSIONS_LIST_URL, servLens, null, null);
+    AssertUtil.assertSucceededResponse(response);
+    List<UserSessionInfo> sessionInfoList = response.readEntity(new GenericType<List<UserSessionInfo>>(){});
+    return sessionInfoList;
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/main/java/org/apache/lens/regression/core/testHelper/BaseTestClass.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/main/java/org/apache/lens/regression/core/testHelper/BaseTestClass.java b/lens-regression/src/main/java/org/apache/lens/regression/core/testHelper/BaseTestClass.java
index f442983..d67a6a9 100644
--- a/lens-regression/src/main/java/org/apache/lens/regression/core/testHelper/BaseTestClass.java
+++ b/lens-regression/src/main/java/org/apache/lens/regression/core/testHelper/BaseTestClass.java
@@ -19,29 +19,26 @@
 
 package org.apache.lens.regression.core.testHelper;
 
-import org.apache.lens.regression.core.helpers.LensHelper;
-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.SessionHelper;
+import org.apache.lens.regression.core.helpers.*;
 
 public class BaseTestClass {
 
-  private LensHelper lensHelper;
-  private QueryHelper qHelper;
-  private MetastoreHelper mHelper;
-  private SessionHelper sHelper;
-  private LensServerHelper lens;
+  protected QueryHelper qHelper;
+  protected MetastoreHelper mHelper;
+  protected SessionHelper sHelper;
+  protected LensServerHelper lens;
+  protected SavedQueryResourceHelper savedQueryResourceHelper;
+  protected ScheduleResourceHelper scheduleHelper;
 
   public static final String LENS_PROPERTIES = "lens.properties";
 
   public BaseTestClass() {
-
-    lensHelper = new LensHelper(LENS_PROPERTIES);
-    qHelper = lensHelper.getQueryHelper();
-    mHelper = lensHelper.getMetastoreHelper();
-    sHelper = lensHelper.getSessionHelper();
-    lens = lensHelper.getServerHelper();
+    qHelper = new QueryHelper(LENS_PROPERTIES);
+    mHelper = new MetastoreHelper(LENS_PROPERTIES);
+    sHelper = new SessionHelper(LENS_PROPERTIES);
+    lens = new LensServerHelper(LENS_PROPERTIES);
+    savedQueryResourceHelper = new SavedQueryResourceHelper(LENS_PROPERTIES);
+    scheduleHelper = new ScheduleResourceHelper(LENS_PROPERTIES);
   }
 
   public QueryHelper getQueryHelper() {
@@ -60,5 +57,9 @@ public class BaseTestClass {
     return lens;
   }
 
+  public SavedQueryResourceHelper getSavedQueryResourceHelper() {
+    return savedQueryResourceHelper;
+  }
+
 
 }

http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/main/java/org/apache/lens/regression/core/type/MapBuilder.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/main/java/org/apache/lens/regression/core/type/MapBuilder.java b/lens-regression/src/main/java/org/apache/lens/regression/core/type/MapBuilder.java
index 59d99a3..96207c6 100644
--- a/lens-regression/src/main/java/org/apache/lens/regression/core/type/MapBuilder.java
+++ b/lens-regression/src/main/java/org/apache/lens/regression/core/type/MapBuilder.java
@@ -20,6 +20,7 @@
 package org.apache.lens.regression.core.type;
 
 import java.util.HashMap;
+import java.util.Map;
 
 import org.apache.lens.server.api.util.LensUtil;
 
@@ -55,6 +56,10 @@ public class MapBuilder {
     map.put(key, value);
   }
 
+  public void put(Map<String, String> map) {
+    this.map.putAll(map);
+  }
+
   public String get(String key) {
     return map.get(key);
   }

http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/main/java/org/apache/lens/regression/util/AssertUtil.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/main/java/org/apache/lens/regression/util/AssertUtil.java b/lens-regression/src/main/java/org/apache/lens/regression/util/AssertUtil.java
index b2af76b..b04e420 100644
--- a/lens-regression/src/main/java/org/apache/lens/regression/util/AssertUtil.java
+++ b/lens-regression/src/main/java/org/apache/lens/regression/util/AssertUtil.java
@@ -22,9 +22,8 @@ package org.apache.lens.regression.util;
 import javax.ws.rs.core.Response;
 
 import org.apache.lens.api.APIResult;
-import org.apache.lens.api.result.LensAPIResult;
-import org.apache.lens.api.result.LensErrorTO;
-import org.apache.lens.server.api.error.LensException;
+
+import org.testng.Assert;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -37,145 +36,39 @@ public class AssertUtil {
 
   /**
    * Checks that Response status is SUCCEEDED
-   *
    * @param response Response
-   * @throws LensException
    */
 
-  public static void assertSucceeded(Response response) throws LensException {
-    if (response.getStatus() != 200) {
-      throw new LensException("Status code should be 200");
-    }
-    APIResult result = response.readEntity(APIResult.class);
-    if (result.getStatus() != APIResult.Status.SUCCEEDED) {
-      throw new LensException("Status should be SUCCEEDED");
-    }
-    if (result.getMessage() == null) {
-      throw new LensException("Status message is null");
-    }
-  }
-
-  /**
-   * Checks that Response status is SUCCEEDED
-   *
-   * @param response Response
-   * @throws LensException
-   */
-  public static void assertSucceededResponse(Response response) throws LensException {
-    if (response.getStatus() != 200) {
-      throw new LensException("Status code should be 200");
-    }
-  }
+  public static void assertSucceededResult(Response response) {
 
-  public static void assertSucceededResponse(Response response, int expected) throws LensException {
-    if (response.getStatus() != expected) {
-      throw new LensException("Status code should be " + expected);
-    }
+    Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode());
+    APIResult result = response.readEntity(APIResult.class);
+    Assert.assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED);
+    Assert.assertNotNull(result.getMessage());
   }
 
-  public static void assertGoneResponse(Response response) throws LensException {
-    if (response.getStatus() != 410) {
-      throw new LensException("Status code should be 410");
-    }
+  public static void assertSucceededResponse(Response response) {
+    Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode());
   }
 
-  /**
-   * Checks that Response status is NOT FOUND
-   *
-   * @param response Response
-   * @throws LensException
-   */
-  public static void assertFailedResponse(Response response) throws LensException {
-    if (response.getStatus() != 404) {
-      throw new LensException("Status code should be 404");
-    }
+  public static void assertCreated(Response response) {
+    Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
   }
 
-  /**
-   * Checks that Response status is status FAILED with status code 400
-   *
-   * @param response Response
-   * @throws LensException
-   */
-  public static void assertFailed(Response response) throws LensException {
-    if (response.getStatus() != 400) {
-      throw new LensException("Status code should be 400");
-    }
-    APIResult result = Util.getApiResult(response);
-    if (result.getStatus() != APIResult.Status.FAILED) {
-      throw new LensException("Status should be FAILED");
-    }
-    if (result.getMessage() == null) {
-      throw new LensException("Status message is null");
-    }
+  public static void assertGone(Response response) {
+    Assert.assertEquals(response.getStatus(), Response.Status.GONE.getStatusCode());
   }
 
-  /**
-   * Checks that Response status is status FAILED with status code 200
-   *
-   * @param response Response
-   * @throws LensException
-   */
-  public static void assertStatusFailed(Response response) throws LensException {
-    if (response.getStatus() == 200) {
-      throw new LensException("Status code should be 200");
-    }
-    APIResult result = Util.getApiResult(response);
-    if (result.getStatus() == APIResult.Status.FAILED) {
-      throw new LensException("Status should be FAILED");
-    }
-    if (result.getMessage() == null) {
-      throw new LensException("Status message is null");
-    }
+  public static void assertNotFound(Response response) {
+    Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
   }
 
-  /**
-   * Checks that Response status is status FAILED with status code 500
-   *
-   * @param response Response
-   * @throws LensException
-   */
-
-  public static void assertInternalServerError(Response response) throws LensException {
-    if (response.getStatus() != 500) {
-      throw new LensException("Status code should be 500");
-    }
-
+  public static void assertBadRequest(Response response) {
+    Assert.assertEquals(response.getStatus(), Response.Status.BAD_REQUEST.getStatusCode());
   }
 
-  public static void validateFailedResponse(int errorCode, String errorMessage, boolean payLoad, Response response,
-      int httpResponseCode) throws InstantiationException, IllegalAccessException, LensException {
-    String queryHandleString = response.readEntity(String.class);
-    log.info(queryHandleString);
-    @SuppressWarnings("unchecked") LensAPIResult errorResponse = (LensAPIResult) Util
-        .getObject(queryHandleString, LensAPIResult.class);
-    LensErrorTO error = errorResponse.getLensErrorTO();
-    LensErrorTO expectedError = null;
-    if (payLoad) {
-      expectedError = LensErrorTO.composedOf(errorCode, errorMessage, "nothing", error.getPayload());
-    } else {
-      expectedError = LensErrorTO.composedOf(errorCode, errorMessage, "nothing");
-    }
-    log.info("expected Error-: " + expectedError);
-    log.info("actual Error-: " + error);
-    if (!error.equals(expectedError)) {
-      throw new LensException("Wrong Error Response");
-    }
-    if (!errorResponse.areValidStackTracesPresent()) {
-      throw new LensException("StackTrace should be present");
-    }
-    if (payLoad) {
-      if (error.getPayload() == null) {
-        throw new LensException("Payload should not be null");
-      }
-    } else {
-      if (error.getPayload() != null) {
-        throw new LensException("Payload should be null");
-      }
-    }
-    if (errorResponse.isSuccessResult()) {
-      throw new LensException("SuccessResponse should be false");
-    }
+  public static void assertInternalServerError(Response response) {
+    Assert.assertEquals(response.getStatus(), Response.Status.INTERNAL_SERVER_ERROR.getStatusCode());
   }
 
 }

http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/main/java/org/apache/lens/regression/util/Util.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/main/java/org/apache/lens/regression/util/Util.java b/lens-regression/src/main/java/org/apache/lens/regression/util/Util.java
index 2e48e80..f662490 100644
--- a/lens-regression/src/main/java/org/apache/lens/regression/util/Util.java
+++ b/lens-regression/src/main/java/org/apache/lens/regression/util/Util.java
@@ -27,6 +27,8 @@ import java.lang.reflect.Method;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.Map.Entry;
 import java.util.regex.Matcher;
@@ -98,7 +100,7 @@ public class Util {
     return null;
   }
 
-  public static String getProperty(String property) {
+  public static String getProperty(String property){
     Properties prop = Util.getPropertiesObj(PROPERTY_FILE);
     return prop.getProperty(property);
   }
@@ -303,7 +305,9 @@ public class Util {
   public static final void prettyPrint(Document xml) throws TransformerFactoryConfigurationError, TransformerException {
     xml.normalize();
     Transformer transformer = TransformerFactory.newInstance().newTransformer();
-    Result output = new StreamResult(new File(localFile));
+    transformer.setOutputProperty(OutputKeys.INDENT, "yes");
+    transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
+    StreamResult output = new StreamResult(new File(localFile));
     Source input = new DOMSource(xml);
     transformer.transform(input, output);
   }
@@ -467,4 +471,46 @@ public class Util {
     }
     return value;
   }
+
+
+  public static String getCurrentDate(String format){
+    SimpleDateFormat sdf = new SimpleDateFormat(format);
+    return sdf.format(new Date());
+  }
+
+  public static String getFormattedDate(String epochTime, String format){
+    SimpleDateFormat sdf = new SimpleDateFormat(format);
+    return sdf.format(Long.parseLong(epochTime));
+  }
+
+  public static String modifyDate(String dateString, String format, int calenderIntervalUnit, int diff)
+    throws ParseException {
+
+    SimpleDateFormat sdf = new SimpleDateFormat(format);
+    Calendar calendar = Calendar.getInstance();
+    calendar.setTime(sdf.parse(dateString));
+    calendar.add(calenderIntervalUnit, diff);
+    return sdf.format(calendar.getTime());
+  }
+
+  public static XMLGregorianCalendar getGregorianCalendar(String date, String format) throws ParseException,
+      DatatypeConfigurationException {
+    GregorianCalendar cal = new GregorianCalendar();
+    cal.setTime(new SimpleDateFormat(format).parse(date));
+    cal.setTimeZone(TimeZone.getTimeZone("UTC"));
+    XMLGregorianCalendar calendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(cal);
+    return calendar;
+  }
+
+  public static XMLGregorianCalendar getGregorianCalendar(String date) throws ParseException,
+      DatatypeConfigurationException {
+    return getGregorianCalendar(date, "yyyy-MM-dd HH:mm:ss");  //"yyyy-MM-dd'T'HH:mm:ss.SSSX"
+  }
+
+  public static String getDateStringFromGregorainCalender(XMLGregorianCalendar xcal, String format){
+    Date dt = xcal.toGregorianCalendar().getTime();
+    SimpleDateFormat sdf = new SimpleDateFormat(format);
+    return sdf.format(dt);
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/test/java/org/apache/lens/regression/ITMetricsTest.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/ITMetricsTest.java b/lens-regression/src/test/java/org/apache/lens/regression/ITMetricsTest.java
index dad7b07..3e7afba 100644
--- a/lens-regression/src/test/java/org/apache/lens/regression/ITMetricsTest.java
+++ b/lens-regression/src/test/java/org/apache/lens/regression/ITMetricsTest.java
@@ -32,11 +32,7 @@ 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.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.server.LensRequestListener;
 import org.apache.lens.server.api.query.QueryExecutionService;
@@ -54,11 +50,6 @@ public class ITMetricsTest extends BaseTestClass {
   WebTarget servLens;
   String sessionHandleString;
 
-  LensServerHelper lens = getLensServerHelper();
-  MetastoreHelper mHelper = getMetastoreHelper();
-  SessionHelper sHelper = getSessionHelper();
-  QueryHelper qHelper = getQueryHelper();
-
   private static String admin = "/metrics?pretty=true";
   private static Logger logger = Logger.getLogger(ITMetricsTest.class);
 

http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/test/java/org/apache/lens/regression/ITPriorityTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/ITPriorityTests.java b/lens-regression/src/test/java/org/apache/lens/regression/ITPriorityTests.java
index 1bae767..ee845fe 100644
--- a/lens-regression/src/test/java/org/apache/lens/regression/ITPriorityTests.java
+++ b/lens-regression/src/test/java/org/apache/lens/regression/ITPriorityTests.java
@@ -115,7 +115,7 @@ public class ITPriorityTests extends BaseTestClass{
     QueryHandle qh = (QueryHandle) qHelper.executeQuery(query).getData();
     qHelper.waitForQueryToRun(qh);
     LensQuery lq = qHelper.getLensQuery(sessionHandleString, qh);
-    String progressMsg = qHelper.getQueryStatus(qh).getProgressMessage();
+    String progressMsg = lq.getStatus().getProgressMessage();
     logger.info("Progress msg : " + progressMsg);
     String jobId = Util.getJobIdFromProgressMsg(progressMsg);
     Assert.assertEquals(lq.getPriority(), priority);
@@ -158,8 +158,11 @@ public class ITPriorityTests extends BaseTestClass{
     sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
     sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "true");
 
-    QueryHandleWithResultSet qhr = (QueryHandleWithResultSet) qHelper.executeQueryTimeout(cost60, "10000")
-        .getData();
+    LensConf lensConf = new LensConf();
+    lensConf.addProperty(LensConfConstants.CANCEL_QUERY_ON_TIMEOUT, "false");
+
+    QueryHandleWithResultSet qhr = (QueryHandleWithResultSet) qHelper.executeQueryTimeout(cost60, "10000",
+        null, sessionHandleString, lensConf).getData();
 
     for(int i = 0; i < 6; i++){
       list.add((QueryHandle) qHelper.executeQuery(QueryInventory.HIVE_CUBE_QUERY).getData());

http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/test/java/org/apache/lens/regression/ITRestartTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/ITRestartTests.java b/lens-regression/src/test/java/org/apache/lens/regression/ITRestartTests.java
index 70d1289..5ecccb6 100644
--- a/lens-regression/src/test/java/org/apache/lens/regression/ITRestartTests.java
+++ b/lens-regression/src/test/java/org/apache/lens/regression/ITRestartTests.java
@@ -49,11 +49,6 @@ public class ITRestartTests extends BaseTestClass {
   WebTarget servLens;
   String sessionHandleString;
 
-  LensServerHelper lens = getLensServerHelper();
-  MetastoreHelper mHelper = getMetastoreHelper();
-  SessionHelper sHelper = getSessionHelper();
-  QueryHelper qHelper = getQueryHelper();
-
   private static String hiveDriver = "hive/hive1";
   private static String jdbcDriver = "jdbc/jdbc1";
 

http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/test/java/org/apache/lens/regression/ITStreamingTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/ITStreamingTests.java b/lens-regression/src/test/java/org/apache/lens/regression/ITStreamingTests.java
index d28b2ac..4ceb218 100644
--- a/lens-regression/src/test/java/org/apache/lens/regression/ITStreamingTests.java
+++ b/lens-regression/src/test/java/org/apache/lens/regression/ITStreamingTests.java
@@ -26,6 +26,7 @@ import java.util.HashMap;
 import javax.ws.rs.client.WebTarget;
 import javax.xml.bind.JAXBException;
 
+import org.apache.lens.api.LensConf;
 import org.apache.lens.api.query.*;
 import org.apache.lens.regression.core.constants.QueryInventory;
 import org.apache.lens.regression.core.helpers.*;
@@ -49,13 +50,7 @@ public class ITStreamingTests extends BaseTestClass {
   private WebTarget servLens;
   private String sessionHandleString;
 
-  LensServerHelper lens = getLensServerHelper();
-  MetastoreHelper mHelper = getMetastoreHelper();
-  SessionHelper sHelper = getSessionHelper();
-  QueryHelper qHelper = getQueryHelper();
-
   private static Logger logger = Logger.getLogger(ITStreamingTests.class);
-
   String lensSiteConfPath = lens.getServerDir() + "/conf/lens-site.xml";
 
   @BeforeClass(alwaysRun = true)
@@ -131,8 +126,11 @@ public class ITStreamingTests extends BaseTestClass {
     sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "true");
     sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
 
+    LensConf lensConf = new LensConf();
+    lensConf.addProperty(LensConfConstants.CANCEL_QUERY_ON_TIMEOUT, "false");
+
     QueryHandleWithResultSet qhr = (QueryHandleWithResultSet) qHelper.executeQueryTimeout(
-        QueryInventory.getSleepQuery("10"), "100").getData();
+        QueryInventory.getSleepQuery("5"), "10", null, sessionHandleString, lensConf).getData();
     InMemoryQueryResult inmemoryResult = (InMemoryQueryResult) qhr.getResult();
     Assert.assertNull(inmemoryResult);
 
@@ -141,7 +139,7 @@ public class ITStreamingTests extends BaseTestClass {
 
     PersistentQueryResult persistResult = (PersistentQueryResult)qHelper.getResultSet(qhr.getQueryHandle());
     Assert.assertNotNull(persistResult);
-    Assert.assertEquals(persistResult.getNumRows().intValue(), 7);
+    Assert.assertEquals(persistResult.getNumRows().intValue(), 8);
   }
 
 

http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/test/java/org/apache/lens/regression/SessionTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/SessionTests.java b/lens-regression/src/test/java/org/apache/lens/regression/SessionTests.java
index 255f5be..ce727a1 100644
--- a/lens-regression/src/test/java/org/apache/lens/regression/SessionTests.java
+++ b/lens-regression/src/test/java/org/apache/lens/regression/SessionTests.java
@@ -57,11 +57,6 @@ public class SessionTests extends BaseTestClass {
   private WebTarget servLens;
   private String sessionHandleString;
 
-  LensServerHelper lens = getLensServerHelper();
-  MetastoreHelper mHelper = getMetastoreHelper();
-  SessionHelper sHelper = getSessionHelper();
-  QueryHelper qHelper = getQueryHelper();
-
   private static Logger logger = Logger.getLogger(SessionTests.class);
 
   @BeforeClass(alwaysRun = true)

http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/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 1652ba3..cad2937 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
@@ -43,11 +43,6 @@ public class ITListQueryTest extends BaseTestClass {
   WebTarget servLens;
   private String sessionHandleString;
 
-  LensServerHelper lens = getLensServerHelper();
-  MetastoreHelper mHelper = getMetastoreHelper();
-  SessionHelper sHelper = getSessionHelper();
-  QueryHelper qHelper = getQueryHelper();
-
   String jdbcDriver = "jdbc/jdbc1", hiveDriver = "hive/hive1";
   String sleepQuery = QueryInventory.getSleepQuery("5");
 

http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/test/java/org/apache/lens/regression/client/ITPreparedQueryTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/client/ITPreparedQueryTests.java b/lens-regression/src/test/java/org/apache/lens/regression/client/ITPreparedQueryTests.java
index 6292867..fd73ba4 100644
--- a/lens-regression/src/test/java/org/apache/lens/regression/client/ITPreparedQueryTests.java
+++ b/lens-regression/src/test/java/org/apache/lens/regression/client/ITPreparedQueryTests.java
@@ -36,11 +36,7 @@ import org.apache.lens.api.LensConf;
 import org.apache.lens.api.query.*;
 import org.apache.lens.regression.core.constants.QueryInventory;
 import org.apache.lens.regression.core.constants.QueryURL;
-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.core.type.FormBuilder;
 import org.apache.lens.regression.core.type.MapBuilder;
@@ -61,11 +57,6 @@ public class ITPreparedQueryTests extends BaseTestClass {
   WebTarget servLens;
   String sessionHandleString;
 
-  LensServerHelper lens = getLensServerHelper();
-  MetastoreHelper mHelper = getMetastoreHelper();
-  SessionHelper sHelper = getSessionHelper();
-  QueryHelper qHelper = getQueryHelper();
-
   private static Map<String, String> defaultParams = new HashMap<String, String>();
   static {
     defaultParams.put(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "false");
@@ -97,7 +88,7 @@ public class ITPreparedQueryTests extends BaseTestClass {
   public void testPrepareAndExecutePreparedQuery()  throws Exception {
 
     sHelper.setAndValidateParam(defaultParams);
-    QueryPrepareHandle queryPrepareHandle = qHelper.submitPreparedQuery(QueryInventory.QUERY);
+    QueryPrepareHandle queryPrepareHandle = qHelper.submitPreparedQuery(QueryInventory.JDBC_DIM_QUERY);
     Assert.assertNotNull(queryPrepareHandle, "Query Execute Failed");
     logger.info("PREPARE QUERY HANDLE : " + queryPrepareHandle);
 
@@ -105,11 +96,11 @@ public class ITPreparedQueryTests extends BaseTestClass {
     LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
     Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed");
     InMemoryQueryResult result = (InMemoryQueryResult) qHelper.getResultSet(queryHandle);
-    validateInMemoryResultSet(result);
+    Assert.assertEquals(result.getRows().size(), 2);
   }
 
   // This is failing
-  @Test(enabled = false)
+  @Test(enabled = true)
   public void testPrepareAndExecuteTimeoutPreparedQuery()  throws Exception {
 
     sHelper.setAndValidateParam(defaultParams);
@@ -141,7 +132,7 @@ public class ITPreparedQueryTests extends BaseTestClass {
 
     logger.info("Get Should now give 404");
     response = qHelper.getPreparedQuery(queryPrepareHandle);
-    AssertUtil.assertFailedResponse(response);
+    AssertUtil.assertNotFound(response);
   }
 
   @Test
@@ -323,10 +314,10 @@ public class ITPreparedQueryTests extends BaseTestClass {
     qHelper.destroyPreparedQuery();
 
     response = qHelper.getPreparedQuery(queryPrepareHandle1);
-    AssertUtil.assertFailedResponse(response);
+    AssertUtil.assertNotFound(response);
 
     response = qHelper.getPreparedQuery(queryPrepareHandle2);
-    AssertUtil.assertFailedResponse(response);
+    AssertUtil.assertNotFound(response);
 
   }
 
@@ -355,16 +346,16 @@ public class ITPreparedQueryTests extends BaseTestClass {
     qHelper.destroyPreparedQuery(name1);
 
     response = qHelper.getPreparedQuery(queryPrepareHandle1);
-    AssertUtil.assertFailedResponse(response);
+    AssertUtil.assertNotFound(response);
     response = qHelper.getPreparedQuery(queryPrepareHandle2);
     //AssertUtil.assertSucceededResponse(response);
 
     qHelper.destroyPreparedQuery(name2);
 
     response = qHelper.getPreparedQuery(queryPrepareHandle1);
-    AssertUtil.assertFailedResponse(response);
+    AssertUtil.assertNotFound(response);
     response = qHelper.getPreparedQuery(queryPrepareHandle2);
-    AssertUtil.assertFailedResponse(response);
+    AssertUtil.assertNotFound(response);
 
   }
 
@@ -393,16 +384,16 @@ public class ITPreparedQueryTests extends BaseTestClass {
     qHelper.destroyPreparedQuery(null, lens.getUserName());
 
     response = qHelper.getPreparedQuery(queryPrepareHandle1);
-    AssertUtil.assertFailedResponse(response);
+    AssertUtil.assertNotFound(response);
     response = qHelper.getPreparedQuery(queryPrepareHandle2);
 //    Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode());
 
     qHelper.destroyPreparedQuery(null, user);
 
     response = qHelper.getPreparedQuery(queryPrepareHandle1);
-    AssertUtil.assertFailedResponse(response);
+    AssertUtil.assertNotFound(response);
     response = qHelper.getPreparedQuery(queryPrepareHandle2);
-    AssertUtil.assertFailedResponse(response);
+    AssertUtil.assertNotFound(response);
   }
 
   //jira raised LENS-567
@@ -441,16 +432,16 @@ public class ITPreparedQueryTests extends BaseTestClass {
     qHelper.destroyPreparedQuery(null, null, sessionHandleString, startTime, endTime);
 
     response = qHelper.getPreparedQuery(queryPrepareHandle1);
-    AssertUtil.assertFailedResponse(response);
+    AssertUtil.assertNotFound(response);
     response = qHelper.getPreparedQuery(queryPrepareHandle2);
     AssertUtil.assertSucceededResponse(response);
 
     qHelper.destroyPreparedQuery(null, null, sessionHandleString, startTime1, endTime1);
 
     response = qHelper.getPreparedQuery(queryPrepareHandle1);
-    AssertUtil.assertFailedResponse(response);
+    AssertUtil.assertNotFound(response);
     response = qHelper.getPreparedQuery(queryPrepareHandle2);
-    AssertUtil.assertFailedResponse(response);
+    AssertUtil.assertNotFound(response);
 
   }
 

http://git-wip-us.apache.org/repos/asf/lens/blob/5a18cce8/lens-regression/src/test/java/org/apache/lens/regression/client/ITQueryApiTests.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/test/java/org/apache/lens/regression/client/ITQueryApiTests.java b/lens-regression/src/test/java/org/apache/lens/regression/client/ITQueryApiTests.java
index 2d0c3f1..7b8b377 100644
--- a/lens-regression/src/test/java/org/apache/lens/regression/client/ITQueryApiTests.java
+++ b/lens-regression/src/test/java/org/apache/lens/regression/client/ITQueryApiTests.java
@@ -25,21 +25,20 @@ import java.util.HashMap;
 import java.util.List;
 
 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 org.apache.lens.api.LensConf;
 import org.apache.lens.api.query.*;
+import org.apache.lens.api.result.LensAPIResult;
 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.constants.QueryURL;
-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.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;
@@ -57,15 +56,9 @@ public class ITQueryApiTests extends BaseTestClass {
   WebTarget servLens;
   private String sessionHandleString;
 
-  LensServerHelper lens = getLensServerHelper();
-  MetastoreHelper mHelper = getMetastoreHelper();
-  SessionHelper sHelper = getSessionHelper();
-  QueryHelper qHelper = getQueryHelper();
-
   private String hiveDriverSitePath  = lens.getServerDir() + "/conf/drivers/hive/hive1/hivedriver-site.xml";
   private static Logger logger = Logger.getLogger(ITQueryApiTests.class);
 
-
   @BeforeClass(alwaysRun = true)
   public void initialize() throws Exception {
     servLens = ServiceManagerHelper.init();
@@ -126,6 +119,7 @@ public class ITQueryApiTests extends BaseTestClass {
     Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
   }
 
+
   @Test
   public void testExecuteWrongQuery() throws Exception {
     QueryHandle qH = (QueryHandle) qHelper.executeQuery(QueryInventory.WRONG_QUERY, "queryName").getData();
@@ -172,15 +166,15 @@ public class ITQueryApiTests extends BaseTestClass {
     sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
 
     QueryHandleWithResultSet qHWithResultSet = (QueryHandleWithResultSet) qHelper.executeQueryTimeout(
-        QueryInventory.QUERY, "60000").getData();
+        QueryInventory.JDBC_DIM_QUERY, "60000").getData();
     QueryStatus queryStatus = qHelper.getQueryStatus(qHWithResultSet.getQueryHandle());
     Assert.assertEquals(queryStatus.getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed");
     InMemoryQueryResult result = (InMemoryQueryResult) qHWithResultSet.getResult();
     Assert.assertNotNull(result);
-    validateInMemoryResultSet(result);
+    Assert.assertEquals(result.getRows().size(), 2);
 
-    qHWithResultSet = (QueryHandleWithResultSet) qHelper.executeQueryTimeout(QueryInventory.SLEEP_QUERY, "10000")
-        .getData();
+    qHWithResultSet = (QueryHandleWithResultSet) qHelper.executeQueryTimeout(QueryInventory.getSleepQuery("10"),
+        "10000").getData();
     queryStatus = qHelper.getQueryStatus(qHWithResultSet.getQueryHandle());
     Assert.assertEquals(queryStatus.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
 
@@ -196,13 +190,29 @@ public class ITQueryApiTests extends BaseTestClass {
     sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
     sHelper.setAndValidateParam(LensConfConstants.QUERY_MAIL_NOTIFY, "false");
 
-    QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.QUERY).getData();
+    QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_DIM_QUERY).getData();
     LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
     Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed");
     InMemoryQueryResult result = (InMemoryQueryResult) qHelper.getResultSet(queryHandle);
     Assert.assertNotNull(result);
     validateInMemoryResultSet(result);
+  }
 
+  //LENS-909
+  @Test
+  public void testInMemoryResultMailNotify() throws Exception {
+
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "false");
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_MAIL_NOTIFY, "true");
+
+    QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_DIM_QUERY).getData();
+    LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
+    Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed");
+    InMemoryQueryResult result = (InMemoryQueryResult) qHelper.getResultSet(queryHandle);
+    Assert.assertNotNull(result);
+    validateInMemoryResultSet(result);
+    //TODO : add assert on actual mail sent
   }
 
   @Test
@@ -211,7 +221,7 @@ public class ITQueryApiTests extends BaseTestClass {
     sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "true");
     sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
 
-    QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.QUERY).getData();
+    QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_DIM_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);
@@ -398,7 +408,7 @@ public class ITQueryApiTests extends BaseTestClass {
     return testData;
   }
 
-  @Test(dataProvider = "query_names", enabled = false)
+  @Test(dataProvider = "query_names", enabled = true)
   public void testRunningSameNameSessionQuery(String queryName) throws Exception {
 
     String query = QueryInventory.getSleepQuery("10");
@@ -422,7 +432,7 @@ public class ITQueryApiTests extends BaseTestClass {
     Assert.assertEquals(resultList.get(2).getPersistedURI(), resultList.get(0).getPersistedURI());
   }
 
-  @Test(enabled = false)
+  @Test(enabled = true)
   public void testQueuedSameNameSessionQuery() throws Exception {
 
     String query = QueryInventory.getSleepQuery("10");
@@ -507,4 +517,43 @@ public class ITQueryApiTests extends BaseTestClass {
     Assert.assertFalse(qhr1.getHandleIdString().equals(qhr2.getHandleIdString()));
   }
 
+  // LENS-1186
+  @Test
+  public void testInvalidOperation() throws Exception {
+    FormBuilder formData = new FormBuilder();
+    formData.add("sessionid", sessionHandleString);
+    formData.add("query", QueryInventory.JDBC_CUBE_QUERY);
+    formData.add("operation", "INVALID_EXECUTE");
+    String conf = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><conf />";
+    formData.add("conf", conf);
+
+    Response response = lens.exec("post", QueryURL.QUERY_URL, servLens, null, null, MediaType.MULTIPART_FORM_DATA_TYPE,
+        MediaType.APPLICATION_XML, formData.getForm());
+    AssertUtil.assertBadRequest(response);
+    LensAPIResult result = response.readEntity(new GenericType<LensAPIResult>(){});
+    Assert.assertEquals(result.getErrorCode(), 2003);
+  }
+
+  @Test
+  public void testInvalidSessionHandle() throws Exception {
+
+    String session = sHelper.openSession("u1", "p1", lens.getCurrentDB());
+    QueryHandle q = (QueryHandle) qHelper.executeQuery(QueryInventory.getSleepQuery("10"), null, session).getData();
+    qHelper.waitForQueryToRun(q);
+    sHelper.closeSession(session);
+
+    FormBuilder formData = new FormBuilder();
+    formData.add("sessionid", session);
+    formData.add("query", QueryInventory.HIVE_CUBE_QUERY);
+    formData.add("operation", "EXECUTE");
+    String conf = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><conf />";
+    formData.add("conf", conf);
+
+    Response response = lens.exec("post", QueryURL.QUERY_URL, servLens, null, null, MediaType.MULTIPART_FORM_DATA_TYPE,
+        MediaType.APPLICATION_XML, formData.getForm());
+    AssertUtil.assertBadRequest(response);
+    LensAPIResult result = response.readEntity(new GenericType<LensAPIResult>() {
+    });
+    Assert.assertEquals(result.getErrorCode(), 2005);
+  }
 }