You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lens.apache.org by pr...@apache.org on 2016/04/25 09:08:06 UTC

lens git commit: LENS-1004: Add prepared and query API tests

Repository: lens
Updated Branches:
  refs/heads/master 90cbd94f4 -> 393153fab


LENS-1004: Add prepared and query API tests


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

Branch: refs/heads/master
Commit: 393153fab1dbd1f186225330b281685291fa9c42
Parents: 90cbd94
Author: Archana H <ar...@gmail.com>
Authored: Mon Apr 25 12:33:17 2016 +0530
Committer: Rajat Khandelwal <ra...@gmail.com>
Committed: Mon Apr 25 12:33:17 2016 +0530

----------------------------------------------------------------------
 lens-regression/pom.xml                         |   5 +
 .../regression/core/constants/DriverConfig.java |  38 ++
 .../core/constants/QueryInventory.java          |   2 +-
 .../regression/core/helpers/QueryHelper.java    |   6 +-
 .../regression/core/helpers/SessionHelper.java  |  16 +-
 .../lens/regression/core/type/MapBuilder.java   |   7 +
 .../src/main/resources/lens.properties          |   9 -
 .../src/main/resources/template.lens.properties |   9 +
 .../lens/regression/client/ITListQueryTest.java |  19 +-
 .../regression/client/ITPreparedQueryTests.java | 522 +++++++++++++++++++
 .../lens/regression/client/ITQueryApiTests.java | 335 ++++++++++++
 .../regression/client/SessionResourceTests.java |  61 ++-
 pom.xml                                         |   7 +
 13 files changed, 976 insertions(+), 60 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lens/blob/393153fa/lens-regression/pom.xml
----------------------------------------------------------------------
diff --git a/lens-regression/pom.xml b/lens-regression/pom.xml
index 1a656e3..08a7ece 100644
--- a/lens-regression/pom.xml
+++ b/lens-regression/pom.xml
@@ -78,6 +78,11 @@
       <artifactId>hadoop-client</artifactId>
     </dependency>
 
+    <dependency>
+      <groupId>com.google.protobuf</groupId>
+      <artifactId>protobuf-java</artifactId>
+    </dependency>
+
   </dependencies>
 
   <build>

http://git-wip-us.apache.org/repos/asf/lens/blob/393153fa/lens-regression/src/main/java/org/apache/lens/regression/core/constants/DriverConfig.java
----------------------------------------------------------------------
diff --git a/lens-regression/src/main/java/org/apache/lens/regression/core/constants/DriverConfig.java b/lens-regression/src/main/java/org/apache/lens/regression/core/constants/DriverConfig.java
new file mode 100644
index 0000000..5a2df11
--- /dev/null
+++ b/lens-regression/src/main/java/org/apache/lens/regression/core/constants/DriverConfig.java
@@ -0,0 +1,38 @@
+/**
+ * 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.constants;
+
+import org.apache.lens.server.api.query.constraint.MaxConcurrentDriverQueriesConstraintFactory;
+
+public class DriverConfig {
+
+  private DriverConfig() {
+
+  }
+
+  public static final String MAX_CONCURRENT_QUERIES = MaxConcurrentDriverQueriesConstraintFactory.
+      MAX_CONCURRENT_QUERIES_KEY;
+  public static final String PRIORITY_MAX_CONCURRENT = MaxConcurrentDriverQueriesConstraintFactory.
+      MAX_CONCURRENT_QUERIES_PER_PRIORITY_KEY;
+  public static final String QUEUE_MAX_CONCURRENT = MaxConcurrentDriverQueriesConstraintFactory.
+      MAX_CONCURRENT_QUERIES_PER_QUEUE_KEY;
+
+}
+

http://git-wip-us.apache.org/repos/asf/lens/blob/393153fa/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 eb889c4..5f1f607 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
@@ -76,6 +76,6 @@ public class QueryInventory {
   public static final String NO_CUBE_KEYWORD_QUERY = "select sample_dim_chain.name, measure4 from sample_cube where "
       + "time_range_in(dt, '2014-06-24-23', '2014-06-25-00')";
 
-  public static final String QUOTE_QUERY = "cube select id,name from sample_dim2 where name != 'first\'s'";
+  public static final String QUOTE_QUERY = "cube select id,name from sample_dim2 where name != 'first\\'s'";
 
 }

http://git-wip-us.apache.org/repos/asf/lens/blob/393153fa/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 5035ce8..9355e47 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
@@ -67,10 +67,14 @@ public class QueryHelper extends ServiceManagerHelper {
     formData.add("sessionid", sessionHandleString);
     formData.add("query", queryString);
     formData.add("operation", "EXECUTE");
-    formData.add("conf", conf);
     if (queryName != null) {
       formData.add("queryName", queryName);
     }
+    if (conf == null) {
+      conf = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><conf />";
+    }
+    formData.add("conf", conf);
+
     Response response = this.exec("post", QueryURL.QUERY_URL, servLens, null, null, MediaType.MULTIPART_FORM_DATA_TYPE,
         outputMediaType, formData.getForm());
     LensAPIResult result = response.readEntity(new GenericType<LensAPIResult>(){});

http://git-wip-us.apache.org/repos/asf/lens/blob/393153fa/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 64268a6..753a7b4 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
@@ -29,6 +29,7 @@ import javax.ws.rs.core.Response;
 import org.apache.lens.api.LensConf;
 import org.apache.lens.api.LensSessionHandle;
 import org.apache.lens.api.StringList;
+import org.apache.lens.regression.core.constants.SessionURL;
 import org.apache.lens.regression.core.type.FormBuilder;
 import org.apache.lens.regression.core.type.MapBuilder;
 import org.apache.lens.regression.util.AssertUtil;
@@ -116,7 +117,8 @@ public class SessionHelper extends ServiceManagerHelper {
   public void closeNewSession(String sessionHandleString, String outputMediaType) throws LensException {
 
     MapBuilder query = new MapBuilder("sessionid", sessionHandleString);
-    Response response = this.exec("delete", "/session", servLens, null, query, null, outputMediaType, null);
+    Response response = this.exec("delete", SessionURL.SESSION_BASE_URL, servLens, null, query, null,
+        outputMediaType, null);
     AssertUtil.assertSucceededResponse(response);
     log.info("Closed Session : {}", sessionHandleString);
   }
@@ -138,13 +140,13 @@ public class SessionHelper extends ServiceManagerHelper {
     formData.add("sessionid", sessionHandleString);
     formData.add("key", param);
     formData.add("value", value);
-    Response response = this.exec("put", "/session/params", servLens, null, null, MediaType.MULTIPART_FORM_DATA_TYPE,
-         null, formData.getForm());
+    Response response = this.exec("put", SessionURL.SESSION_PARAMS_URL, servLens, null, null,
+        MediaType.MULTIPART_FORM_DATA_TYPE, null, formData.getForm());
     AssertUtil.assertSucceededResponse(response);
 
     MapBuilder query = new MapBuilder("sessionid", sessionHandleString);
     query.put("key", param);
-    response = this.exec("get", "/session/params", servLens, null, query);
+    response = this.exec("get", SessionURL.SESSION_PARAMS_URL, servLens, null, query);
     AssertUtil.assertSucceededResponse(response);
     StringList strList = response.readEntity(new GenericType<StringList>(StringList.class));
     HashMap<String, String> map = Util.stringListToMap(strList);
@@ -181,7 +183,7 @@ public class SessionHelper extends ServiceManagerHelper {
     formData.add("sessionid", sessionHandleString);
     formData.add("type", "jar");
     formData.add("path", path);
-    Response response = this.exec("put", "/session/resources/add", servLens, null, null,
+    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);
@@ -203,7 +205,7 @@ public class SessionHelper extends ServiceManagerHelper {
     formData.add("sessionid", sessionHandleString);
     formData.add("type", "jar");
     formData.add("path", path);
-    Response response = this.exec("put", "/session/resources/delete", servLens, null, null,
+    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);
@@ -216,7 +218,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);
-    Response response = this.exec("get", "/session/params", servLens, null, query);
+    Response response = this.exec("get", SessionURL.SESSION_PARAMS_URL, servLens, null, query);
     AssertUtil.assertSucceededResponse(response);
     StringList strList = response.readEntity(new GenericType<StringList>(StringList.class));
     HashMap<String, String> map = Util.stringListToMap(strList);

http://git-wip-us.apache.org/repos/asf/lens/blob/393153fa/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 eae8a06..59d99a3 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
@@ -21,6 +21,9 @@ package org.apache.lens.regression.core.type;
 
 import java.util.HashMap;
 
+import org.apache.lens.server.api.util.LensUtil;
+
+
 public class MapBuilder {
   private HashMap<String, String> map;
 
@@ -44,6 +47,10 @@ public class MapBuilder {
     }
   }
 
+  public MapBuilder(String... args) {
+    map = LensUtil.getHashMap(args);
+  }
+
   public void put(String key, String value) {
     map.put(key, value);
   }

http://git-wip-us.apache.org/repos/asf/lens/blob/393153fa/lens-regression/src/main/resources/lens.properties
----------------------------------------------------------------------
diff --git a/lens-regression/src/main/resources/lens.properties b/lens-regression/src/main/resources/lens.properties
deleted file mode 100644
index de00410..0000000
--- a/lens-regression/src/main/resources/lens.properties
+++ /dev/null
@@ -1,9 +0,0 @@
-lens.baseurl=
-lens.adminurl=
-lens.username=
-lens.password=
-lens.server.dir=/usr/local/lens/server/
-lens.client.dir=/usr/local/lens/client/
-lens.remote.host=
-lens.remote.username=
-lens.remote.password=
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lens/blob/393153fa/lens-regression/src/main/resources/template.lens.properties
----------------------------------------------------------------------
diff --git a/lens-regression/src/main/resources/template.lens.properties b/lens-regression/src/main/resources/template.lens.properties
new file mode 100644
index 0000000..de00410
--- /dev/null
+++ b/lens-regression/src/main/resources/template.lens.properties
@@ -0,0 +1,9 @@
+lens.baseurl=
+lens.adminurl=
+lens.username=
+lens.password=
+lens.server.dir=/usr/local/lens/server/
+lens.client.dir=/usr/local/lens/client/
+lens.remote.host=
+lens.remote.username=
+lens.remote.password=
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lens/blob/393153fa/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 821c388..d193c9c 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
@@ -147,7 +147,7 @@ public class ITListQueryTest extends BaseTestClass {
     Assert.assertTrue(list3.contains(queryHandle3), "List by Query Name failed");
   }
 
-  @Test(enabled = true)
+  @Test
   public void listQueryByTimeRange() throws Exception {
 
     //Running First Query
@@ -197,9 +197,8 @@ public class ITListQueryTest extends BaseTestClass {
   }
 
 
-  @Test(enabled = true)
+  @Test
   public void listQuerySpecificUserAllUser() throws Exception {
-
     String diffUser = "diff";
     String diffPass = "diff";
     String diffSessionHandleString = sHelper.openNewSession(diffUser, diffPass, lens.getCurrentDB());
@@ -233,7 +232,7 @@ public class ITListQueryTest extends BaseTestClass {
   }
 
 
-  @Test(enabled = true)
+  @Test
   public void listQueryByTimeRangeQueryName() throws Exception {
 
     String queryName = "testQueryName";
@@ -257,7 +256,7 @@ public class ITListQueryTest extends BaseTestClass {
 
   }
 
-  @Test(enabled = true)
+  @Test
   public void listQueryByState() throws Exception {
     //Successful Query
     QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(QueryInventory.QUERY).getData();
@@ -308,7 +307,7 @@ public class ITListQueryTest extends BaseTestClass {
   }
 
 
-  @Test(enabled = true)
+  @Test
   public void listQueryByDriver() throws Exception {
 
     QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_CUBE_QUERY).getData();
@@ -340,7 +339,7 @@ public class ITListQueryTest extends BaseTestClass {
   }
 
 
-  @Test(enabled = true)
+  @Test
   public void listFinishedQueryByDriver() throws Exception {
 
     QueryHandle queryHandle1 = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_CUBE_QUERY).getData();
@@ -379,7 +378,7 @@ public class ITListQueryTest extends BaseTestClass {
   }
 
 
-  @Test(enabled = true)
+  @Test
   public void listQueryByDriverNUser() throws Exception {
 
     QueryHandle q1 = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_CUBE_QUERY).getData();
@@ -409,7 +408,7 @@ public class ITListQueryTest extends BaseTestClass {
   }
 
 
-  @Test(enabled = true)
+  @Test
   public void listQueryByDriverNStatus() throws Exception {
 
     String user = "new", pwd = "new";
@@ -457,7 +456,7 @@ public class ITListQueryTest extends BaseTestClass {
 
 
 
-  @Test(enabled = true)
+  @Test
   public void listQueryByNameStatusUserTimeRange() throws Exception {
 
     String queryName1 = "first", queryName2 = "second", queryName3 = "third";

http://git-wip-us.apache.org/repos/asf/lens/blob/393153fa/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
new file mode 100644
index 0000000..bf40c74
--- /dev/null
+++ b/lens-regression/src/test/java/org/apache/lens/regression/client/ITPreparedQueryTests.java
@@ -0,0 +1,522 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.lens.regression.client;
+
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.GenericType;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import javax.xml.bind.JAXBException;
+
+import org.apache.lens.api.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;
+import org.apache.lens.regression.util.AssertUtil;
+import org.apache.lens.server.api.LensConfConstants;
+import org.apache.lens.server.api.error.LensException;
+
+import org.apache.log4j.Logger;
+
+import org.glassfish.jersey.media.multipart.FormDataBodyPart;
+import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
+
+import org.testng.Assert;
+import org.testng.annotations.*;
+
+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");
+    defaultParams.put(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
+  }
+
+  private static Logger logger = Logger.getLogger(ITPreparedQueryTests.class);
+
+
+  @BeforeClass(alwaysRun = true)
+  public void initialize() throws IOException, JAXBException, LensException {
+    servLens = ServiceManagerHelper.init();
+    logger.info("Creating a new Session");
+    sessionHandleString = lens.openSession();
+    mHelper.setCurrentDatabase(lens.getCurrentDB());
+  }
+
+  @BeforeMethod(alwaysRun = true)
+  public void setUp(Method method) throws Exception {
+    logger.info("Test Name: " + method.getName());
+  }
+
+  @AfterClass(alwaysRun = true)
+  public void closeSession() throws Exception {
+    logger.info("Closing Session");
+    lens.closeSession();
+  }
+
+  @Test
+  public void testPrepareAndExecutePreparedQuery()  throws Exception {
+
+    sHelper.setAndValidateParam(defaultParams);
+    QueryPrepareHandle queryPrepareHandle = qHelper.submitPreparedQuery(QueryInventory.QUERY);
+    Assert.assertNotNull(queryPrepareHandle, "Query Execute Failed");
+    logger.info("PREPARE QUERY HANDLE : " + queryPrepareHandle);
+
+    QueryHandle queryHandle = qHelper.executePreparedQuery(queryPrepareHandle);
+    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);
+  }
+
+  // This is failing
+  @Test(enabled = false)
+  public void testPrepareAndExecuteTimeoutPreparedQuery()  throws Exception {
+
+    sHelper.setAndValidateParam(defaultParams);
+    QueryPrepareHandle queryPrepareHandle = qHelper.submitPreparedQuery(QueryInventory.QUERY);
+    Assert.assertNotNull(queryPrepareHandle, "Query Execute Failed");
+    logger.info("PREPARE QUERY HANDLE : " + queryPrepareHandle);
+
+    QueryHandleWithResultSet queryHandleResultSet = qHelper.executePreparedQueryTimeout(queryPrepareHandle, "60000");
+    InMemoryQueryResult result = (InMemoryQueryResult) queryHandleResultSet.getResult();
+    validateInMemoryResultSet(result);
+  }
+
+  @Test
+  public void destroyPreparedQueryByHandle()  throws Exception {
+
+    QueryPrepareHandle queryPrepareHandle = qHelper.submitPreparedQuery(QueryInventory.QUERY);
+    Assert.assertNotNull(queryPrepareHandle, "Query Execute Failed");
+    logger.info("PREPARE QUERY HANDLE : " + queryPrepareHandle);
+
+    MapBuilder query = new MapBuilder("sessionid", sessionHandleString,
+        "prepareHandle", queryPrepareHandle.toString()
+    );
+
+    Response response = qHelper.getPreparedQuery(queryPrepareHandle);
+    AssertUtil.assertSucceededResponse(response);
+
+    logger.info("Deleting Prepared Query");
+    qHelper.destoryPreparedQueryByHandle(queryPrepareHandle);
+
+    logger.info("Get Should now give 404");
+    response = qHelper.getPreparedQuery(queryPrepareHandle);
+    AssertUtil.assertFailedResponse(response);
+  }
+
+  @Test
+  public void modifyPreparedQueryByHandle()  throws Exception {
+
+    QueryPrepareHandle queryPrepareHandle = qHelper.submitPreparedQuery(QueryInventory.QUERY);
+    Assert.assertNotNull(queryPrepareHandle, "Query Execute Failed");
+    logger.info("PREPARE QUERY HANDLE : " + queryPrepareHandle);
+
+    MapBuilder query = new MapBuilder("sessionid", sessionHandleString,
+        "prepareHandle", queryPrepareHandle.toString()
+    );
+
+    logger.info("Get Should be Successful");
+    Response response = lens.exec("get", QueryURL.PREPAREDQUERY_URL + "/" + queryPrepareHandle.toString(),
+        servLens, null, query);
+    AssertUtil.assertSucceededResponse(response);
+
+    logger.info("Modifying PreparedQuery conf");
+
+    LensConf lensConf = new LensConf();
+    lensConf.addProperty(LensConfConstants.RESULT_SET_PARENT_DIR, "hdfs://lens-test:8020/tmp/lensreports");
+
+    FormBuilder formData = new FormBuilder();
+    formData.add("sessionid", sessionHandleString);
+    formData.getForm().bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("conf").fileName("conf").build(),
+        lensConf, MediaType.APPLICATION_XML_TYPE));
+
+    response = lens.exec("put", QueryURL.PREPAREDQUERY_URL + "/" + queryPrepareHandle.toString(), servLens, null, null,
+        MediaType.MULTIPART_FORM_DATA_TYPE, MediaType.APPLICATION_XML, formData.getForm());
+    AssertUtil.assertSucceededResponse(response);
+
+    logger.info("Get Should be Successful");
+    response = lens.exec("get", QueryURL.PREPAREDQUERY_URL + "/" + queryPrepareHandle.toString(),
+        servLens, null, query);
+    AssertUtil.assertSucceededResponse(response);
+
+    LensPreparedQuery gq = response.readEntity(new GenericType<LensPreparedQuery>(){});
+    logger.info("Modified Conf : " + gq.getConf().getProperties().get("lens.query.result.parent.dir"));
+    Assert.assertEquals(gq.getConf().getProperties().get(LensConfConstants.RESULT_SET_PARENT_DIR),
+        "hdfs://lens-test:8020/tmp/lensreports", "Update on Prepared Query Failed!!");
+  }
+
+
+  @Test
+  public void listAllPreparedQueriesOfUser()  throws Exception {
+
+    QueryPrepareHandle queryPrepareHandle = qHelper.submitPreparedQuery(QueryInventory.QUERY);
+    Assert.assertNotNull(queryPrepareHandle, "Query Execute Failed");
+    logger.info("PREPARE QUERY HANDLE : " + queryPrepareHandle);
+
+    QueryPrepareHandle queryPrepareHandle1 = qHelper.submitPreparedQuery(QueryInventory.QUERY);
+    Assert.assertNotNull(queryPrepareHandle1, "Query Execute Failed");
+    logger.info("PREPARE QUERY HANDLE : " + queryPrepareHandle1);
+
+    List<QueryPrepareHandle> list = qHelper.getPreparedQueryHandleList();
+
+    Assert.assertTrue(list.contains(queryPrepareHandle), "List of All QueryPreparedHandle of a user failed");
+    Assert.assertTrue(list.contains(queryPrepareHandle1), "List of All QueryPreparedHandle of a user failed");
+  }
+
+
+  @Test
+  public void listAllPreparedQueriesByQueryName()  throws Exception {
+
+    //TODO : Filter by queryName is not working, Commented the fail part, Uncomment it when fixed
+    String name1 = "FirstQuery";
+    String name2 = "SecondQuery";
+
+    QueryPrepareHandle queryPrepareHandle = qHelper.submitPreparedQuery(QueryInventory.QUERY, name1);
+    Assert.assertNotNull(queryPrepareHandle, "Query Execute Failed");
+    logger.info("PREPARE QUERY HANDLE : " + queryPrepareHandle);
+
+    QueryPrepareHandle queryPrepareHandle1 = qHelper.submitPreparedQuery(QueryInventory.QUERY, name2);
+    Assert.assertNotNull(queryPrepareHandle1, "Query Execute Failed");
+    logger.info("PREPARE QUERY HANDLE : " + queryPrepareHandle1);
+
+    List<QueryPrepareHandle> list = qHelper.getPreparedQueryHandleList(name1);
+    Assert.assertTrue(list.contains(queryPrepareHandle), "List of All QueryPreparedHandle By QueryName failed");
+    //Assert.assertFalse(list.contains(queryPrepareHandle1), "List of All QueryPreparedHandle By QueryName failed");
+
+    list = qHelper.getPreparedQueryHandleList(name2);
+    //Assert.assertFalse(list.contains(queryPrepareHandle), "List of All QueryPreparedHandle By QueryName failed");
+    Assert.assertTrue(list.contains(queryPrepareHandle1), "List of All QueryPreparedHandle By QueryName failed");
+
+    list = qHelper.getPreparedQueryHandleList();
+    Assert.assertTrue(list.contains(queryPrepareHandle), "List of All QueryPreparedHandle of a user failed");
+    Assert.assertTrue(list.contains(queryPrepareHandle1), "List of All QueryPreparedHandle of a user failed");
+  }
+
+  @Test
+  public void listAllPreparedQueriesByUser()  throws Exception {
+
+    //TODO : Filter by user is not working, Commented the fail part, Uncomment it when fixed
+
+    String user = "diff", pass = "diff";
+
+    String session1 = sHelper.openNewSession(user, pass, lens.getCurrentDB());
+
+    QueryPrepareHandle queryPrepareHandle1 = qHelper.submitPreparedQuery(QueryInventory.QUERY);
+    Assert.assertNotEquals(queryPrepareHandle1, null, "Query Execute Failed");
+    logger.info("PREPARE QUERY HANDLE : " + queryPrepareHandle1);
+
+    QueryPrepareHandle queryPrepareHandle2 = qHelper.submitPreparedQuery(QueryInventory.QUERY, null, session1);
+    Assert.assertNotEquals(queryPrepareHandle2, null, "Query Execute Failed");
+    logger.info("PREPARE QUERY HANDLE : " + queryPrepareHandle2);
+
+    List<QueryPrepareHandle> list = qHelper.getPreparedQueryHandleList(null, lens.getUserName());
+    Assert.assertTrue(list.contains(queryPrepareHandle1), "List of All QueryPreparedHandle By user failed");
+    //Assert.assertFalse(list.contains(queryPrepareHandle2), "List of All QueryPreparedHandle By user failed");
+
+    list = qHelper.getPreparedQueryHandleList(null, user);
+    //Assert.assertFalse(list.contains(queryPrepareHandle1), "List of All QueryPreparedHandle By user failed");
+    Assert.assertTrue(list.contains(queryPrepareHandle2), "List of All QueryPreparedHandle By user failed");
+
+    list = qHelper.getPreparedQueryHandleList(null, "all");
+    Assert.assertTrue(list.contains(queryPrepareHandle1), "List of All QueryPreparedHandle by 'all' user failed");
+    Assert.assertTrue(list.contains(queryPrepareHandle2), "List of All QueryPreparedHandle by 'all' user failed");
+  }
+
+  @Test
+  public void listAllPreparedQueriesByTimeRange()  throws Exception {
+
+    //Submitting First Query
+    String startTime = String.valueOf(System.currentTimeMillis());
+    logger.info("Start Time of 1st Query : " + startTime);
+
+    QueryPrepareHandle queryPrepareHandle1 = qHelper.submitPreparedQuery(QueryInventory.QUERY);
+    Assert.assertNotEquals(queryPrepareHandle1, null, "Query Execute Failed");
+    logger.info("PREPARE QUERY HANDLE : " + queryPrepareHandle1);
+
+    String endTime = String.valueOf(System.currentTimeMillis());
+    logger.info("End Time of 1st Query : " + endTime);
+
+    Thread.sleep(1000);
+
+    //Submitting Second Query
+    String startTime1 = String.valueOf(System.currentTimeMillis());
+    logger.info("Start Time of 2nd Query : " + startTime1);
+
+    QueryPrepareHandle queryPrepareHandle2 = qHelper.submitPreparedQuery(QueryInventory.QUERY);
+    Assert.assertNotEquals(queryPrepareHandle2, null, "Query Execute Failed");
+    logger.info("PREPARE QUERY HANDLE : " + queryPrepareHandle2);
+
+    String endTime1 = String.valueOf(System.currentTimeMillis());
+    logger.info("End Time of 2nd Query : " + endTime1);
+
+    List<QueryPrepareHandle> list = qHelper.getPreparedQueryHandleList(null, null, sessionHandleString,
+        startTime, endTime);
+    Assert.assertTrue(list.contains(queryPrepareHandle1), "List of All QueryPreparedHandle By timeRange failed");
+    Assert.assertFalse(list.contains(queryPrepareHandle2), "List of All QueryPreparedHandle By timeRange failed");
+
+    list = qHelper.getPreparedQueryHandleList(null, null, sessionHandleString, startTime1, endTime1);
+    Assert.assertFalse(list.contains(queryPrepareHandle1), "List of All QueryPreparedHandle By timeRange failed");
+    Assert.assertTrue(list.contains(queryPrepareHandle2), "List of All QueryPreparedHandle By timeRange failed");
+
+    list = qHelper.getPreparedQueryHandleList(null, null, sessionHandleString, startTime, endTime1);
+    Assert.assertTrue(list.contains(queryPrepareHandle1), "List of All QueryPreparedHandle by timeRange user failed");
+    Assert.assertTrue(list.contains(queryPrepareHandle2), "List of All QueryPreparedHandle by timeRange user failed");
+  }
+
+  @Test
+  public void destroyAllPreparedQueriesOfUser()  throws Exception {
+
+    QueryPrepareHandle queryPrepareHandle1 = qHelper.submitPreparedQuery(QueryInventory.QUERY);
+    Assert.assertNotEquals(queryPrepareHandle1, null, "Query Execute Failed");
+    logger.info("PREPARE QUERY HANDLE : " + queryPrepareHandle1);
+
+    QueryPrepareHandle queryPrepareHandle2 = qHelper.submitPreparedQuery(QueryInventory.QUERY);
+    Assert.assertNotEquals(queryPrepareHandle2, null, "Query Execute Failed");
+    logger.info("PREPARE QUERY HANDLE : " + queryPrepareHandle2);
+
+    Response response = qHelper.getPreparedQuery(queryPrepareHandle1);
+    AssertUtil.assertSucceededResponse(response);
+
+    response = qHelper.getPreparedQuery(queryPrepareHandle2);
+    AssertUtil.assertSucceededResponse(response);
+
+    qHelper.destroyPreparedQuery();
+
+    response = qHelper.getPreparedQuery(queryPrepareHandle1);
+    AssertUtil.assertFailedResponse(response);
+
+    response = qHelper.getPreparedQuery(queryPrepareHandle2);
+    AssertUtil.assertFailedResponse(response);
+
+  }
+
+  //LENS-1012
+  @Test
+  public void destroyAllPreparedQueriesByQueryName()  throws Exception {
+
+    //TODO : Destroy by queryName is not working, Commented the fail part, Uncomment it when fixed
+
+    String name1 = "Query1";
+    String name2 = "Query2";
+
+    QueryPrepareHandle queryPrepareHandle1 = qHelper.submitPreparedQuery(QueryInventory.QUERY, name1);
+    Assert.assertNotEquals(queryPrepareHandle1, null, "Query Execute Failed");
+    logger.info("PREPARE QUERY HANDLE : " + queryPrepareHandle1);
+
+    QueryPrepareHandle queryPrepareHandle2 = qHelper.submitPreparedQuery(QueryInventory.QUERY, name2);
+    Assert.assertNotEquals(queryPrepareHandle2, null, "Query Execute Failed");
+    logger.info("PREPARE QUERY HANDLE : " + queryPrepareHandle2);
+
+    Response response = qHelper.getPreparedQuery(queryPrepareHandle1);
+    AssertUtil.assertSucceededResponse(response);
+    response = qHelper.getPreparedQuery(queryPrepareHandle2);
+    AssertUtil.assertSucceededResponse(response);
+
+    qHelper.destroyPreparedQuery(name1);
+
+    response = qHelper.getPreparedQuery(queryPrepareHandle1);
+    AssertUtil.assertFailedResponse(response);
+    response = qHelper.getPreparedQuery(queryPrepareHandle2);
+    //AssertUtil.assertSucceededResponse(response);
+
+    qHelper.destroyPreparedQuery(name2);
+
+    response = qHelper.getPreparedQuery(queryPrepareHandle1);
+    AssertUtil.assertFailedResponse(response);
+    response = qHelper.getPreparedQuery(queryPrepareHandle2);
+    AssertUtil.assertFailedResponse(response);
+
+  }
+
+  //LENS-1012
+  @Test
+  public void destroyAllPreparedQueriesByUser()  throws Exception {
+
+    //TODO : Destroy by user is not working, Commented the fail part, Uncomment it when fixed
+
+    String user2 = "diff", pass = "diff";
+    String session1 = sHelper.openNewSession(user2, pass);
+
+    FormBuilder formData=new FormBuilder();
+    formData.add("sessionid", session1);
+    formData.add("type", "jar");
+    formData.add("path", "file:///usr/local/lens/webapp/lens-server/WEB-INF/lib/lens-query-lib-1.2.5.jar");
+
+    Response response=lens.sendForm("put", "/session/resources/add", formData);
+    AssertUtil.assertSucceededResponse(response);
+
+    QueryPrepareHandle queryPrepareHandle1 = qHelper.submitPreparedQuery(QueryInventory.QUERY);
+    Assert.assertNotEquals(queryPrepareHandle1, null, "Query Execute Failed marker");
+    logger.info("PREPARE QUERY HANDLE : " + queryPrepareHandle1);
+
+    QueryPrepareHandle queryPrepareHandle2 = qHelper.submitPreparedQuery(QueryInventory.QUERY, null, session1);
+    Assert.assertNotEquals(queryPrepareHandle2, null, "Query Execute Failed");
+    logger.info("PREPARE QUERY HANDLE : " + queryPrepareHandle2);
+
+    response = qHelper.getPreparedQuery(queryPrepareHandle1);
+    AssertUtil.assertSucceededResponse(response);
+    response = qHelper.getPreparedQuery(queryPrepareHandle2);
+    AssertUtil.assertSucceededResponse(response);
+
+    qHelper.destroyPreparedQuery(null, lens.getUserName());
+
+    response = qHelper.getPreparedQuery(queryPrepareHandle1);
+    AssertUtil.assertFailedResponse(response);
+    response = qHelper.getPreparedQuery(queryPrepareHandle2);
+    //AssertUtil.assertSucceededResponse(response);
+
+    qHelper.destroyPreparedQuery(null, user2);
+
+    response = qHelper.getPreparedQuery(queryPrepareHandle1);
+    AssertUtil.assertFailedResponse(response);
+    response = qHelper.getPreparedQuery(queryPrepareHandle2);
+    AssertUtil.assertFailedResponse(response);
+  }
+
+  //jira raised LENS-567
+  @Test
+  public void destroyAllPreparedQueriesByTimeRange()  throws Exception {
+
+    //TODO : Filter by user is not working, Commented the fail part, Uncomment it when fixed
+
+    //Submitting First Query
+    String startTime = String.valueOf(System.currentTimeMillis());
+    logger.info("Start Time of 1st Query : " + startTime);
+    QueryPrepareHandle queryPrepareHandle1 = qHelper.submitPreparedQuery(QueryInventory.QUERY);
+    Assert.assertNotEquals(queryPrepareHandle1, null, "Query Execute Failed");
+    logger.info("PREPARE QUERY HANDLE : " + queryPrepareHandle1);
+    String endTime = String.valueOf(System.currentTimeMillis());
+    logger.info("End Time of 1st Query : " + endTime);
+
+    Thread.sleep(1000);
+
+    //Submitting Second Query
+    String startTime1 = String.valueOf(System.currentTimeMillis());
+    logger.info("Start Time of 2nd Query : " + startTime1);
+    QueryPrepareHandle queryPrepareHandle2 = qHelper.submitPreparedQuery(QueryInventory.QUERY);
+    Assert.assertNotEquals(queryPrepareHandle2, null, "Query Execute Failed");
+    logger.info("PREPARE QUERY HANDLE : " + queryPrepareHandle2);
+    String endTime1 = String.valueOf(System.currentTimeMillis());
+    logger.info("End Time of 2nd Query : " + endTime1);
+
+    Thread.sleep(1000);
+
+    Response response = qHelper.getPreparedQuery(queryPrepareHandle1);
+    AssertUtil.assertSucceededResponse(response);
+    response = qHelper.getPreparedQuery(queryPrepareHandle2);
+    AssertUtil.assertSucceededResponse(response);
+
+    qHelper.destroyPreparedQuery(null, null, sessionHandleString, startTime, endTime);
+
+    response = qHelper.getPreparedQuery(queryPrepareHandle1);
+    AssertUtil.assertFailedResponse(response);
+    response = qHelper.getPreparedQuery(queryPrepareHandle2);
+    AssertUtil.assertSucceededResponse(response);
+
+    qHelper.destroyPreparedQuery(null, null, sessionHandleString, startTime1, endTime1);
+
+    response = qHelper.getPreparedQuery(queryPrepareHandle1);
+    AssertUtil.assertFailedResponse(response);
+    response = qHelper.getPreparedQuery(queryPrepareHandle2);
+    AssertUtil.assertFailedResponse(response);
+
+  }
+
+  private void validateInMemoryResultSet(InMemoryQueryResult result) {
+
+    int size = result.getRows().size();
+    for(int i=0; i<size; i++) {
+      logger.info(result.getRows().get(i).getValues().get(0) + " " + result.getRows().get(i).getValues().get(1));
+    }
+    Assert.assertEquals(size, 2, "Wrong result");
+    Assert.assertEquals(result.getRows().get(0).getValues().get(0), 2, "Wrong result");
+    Assert.assertEquals(result.getRows().get(0).getValues().get(1), "second", "Wrong result");
+    Assert.assertEquals(result.getRows().get(1).getValues().get(0), 3, "Wrong result");
+    Assert.assertEquals(result.getRows().get(1).getValues().get(1), "third", "Wrong result");
+  }
+
+  @Test
+  public void listAllPreparedQueriesByQueryNameUserTimeRange()  throws Exception {
+
+    String queryName1 = "queryfirst", queryName2 = "querysecond";
+    String user2 = "user2", pass2 = "pass2";
+    String session1 = sHelper.openNewSession(user2, pass2, lens.getCurrentDB());
+
+    String startTime1=String.valueOf(System.currentTimeMillis());
+    logger.info("Start Time of first query- "+startTime1);
+    QueryPrepareHandle queryPreparedHandle1= qHelper.submitPreparedQuery(QueryInventory.QUERY, queryName1);
+    String endTime1=String.valueOf(System.currentTimeMillis());
+    logger.info("End Time of first query- "+endTime1);
+
+    Thread.sleep(1000);
+
+    String startTime2=String.valueOf(System.currentTimeMillis());
+    logger.info("Start Time of second query- " + startTime2);
+    QueryPrepareHandle queryPreparedHandle2=qHelper.submitPreparedQuery(QueryInventory.QUERY, queryName2, session1);
+    String endTime2=String.valueOf(System.currentTimeMillis());
+    logger.info("End Time for second query- "+ endTime2);
+
+    Thread.sleep(1000);
+
+    List<QueryPrepareHandle> list = qHelper.getPreparedQueryHandleList(queryName1, lens.getUserName(),
+        sessionHandleString, startTime1, endTime1);
+    Assert.assertTrue(list.contains(queryPreparedHandle1),
+        "List of all prepared query by user,Time range and query name failed");
+    Assert.assertFalse(list.contains(queryPreparedHandle2),
+        "List of all prepared query by user,Time range and query name failed");
+
+    list = qHelper.getPreparedQueryHandleList(queryName2, user2, session1, startTime2, endTime2);
+    Assert.assertTrue(list.contains(queryPreparedHandle2),
+        "List of all prepared query by user,Time range and query name failed");
+    Assert.assertFalse(list.contains(queryPreparedHandle1),
+        "List of all prepared query by user,Time range and query name failed");
+  }
+
+  @Test
+  public void testExplainAndPrepareQuery() throws Exception {
+    QueryPlan queryPlan = qHelper.explainAndPrepareQuery(QueryInventory.HIVE_CUBE_QUERY);
+    logger.info("Query Handle" + queryPlan.getPrepareHandle());
+    Assert.assertNotNull(queryPlan.getPrepareHandle(), "not returning queryhandle");
+  }
+}

http://git-wip-us.apache.org/repos/asf/lens/blob/393153fa/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
new file mode 100644
index 0000000..e16b220
--- /dev/null
+++ b/lens-regression/src/test/java/org/apache/lens/regression/client/ITQueryApiTests.java
@@ -0,0 +1,335 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.lens.regression.client;
+
+import java.lang.reflect.Method;
+
+import javax.ws.rs.client.WebTarget;
+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.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.MapBuilder;
+import org.apache.lens.regression.util.AssertUtil;
+import org.apache.lens.server.api.LensConfConstants;
+
+import org.apache.log4j.Logger;
+
+import org.testng.Assert;
+import org.testng.annotations.*;
+
+
+public class ITQueryApiTests extends BaseTestClass {
+
+  WebTarget servLens;
+  private String sessionHandleString;
+
+  LensServerHelper lens = getLensServerHelper();
+  MetastoreHelper mHelper = getMetastoreHelper();
+  SessionHelper sHelper = getSessionHelper();
+  QueryHelper qHelper = getQueryHelper();
+
+  private static Logger logger = Logger.getLogger(ITQueryApiTests.class);
+
+
+  @BeforeClass(alwaysRun = true)
+  public void initialize() throws Exception {
+    servLens = ServiceManagerHelper.init();
+  }
+
+  @BeforeMethod(alwaysRun = true)
+  public void setUp(Method method) throws Exception {
+    logger.info("Test Name: " + method.getName());
+    logger.info("Creating a new Session");
+    sessionHandleString = lens.openSession(lens.getCurrentDB());
+  }
+
+  @AfterMethod(alwaysRun = true)
+  public void closeSession() throws Exception {
+    logger.info("Closing Session");
+    lens.closeSession();
+  }
+
+
+  @Test
+  public void testQueryServiceStatus() throws Exception {
+    Response response = lens.exec("get", QueryURL.QUERYAPI_BASE_URL, servLens, null, null, MediaType.TEXT_PLAIN_TYPE,
+        MediaType.TEXT_PLAIN);
+    Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode());
+  }
+
+
+  @Test
+  public void explainQuery() throws Exception {
+
+    //sample_dim2 is on hive only. It should return queryPlan
+    QueryPlan queryPlan = (QueryPlan) qHelper.explainQuery(QueryInventory.HIVE_DIM_QUERY).getData();
+    Assert.assertNotNull(queryPlan.getPlanString());
+    Assert.assertFalse(queryPlan.getPlanString().isEmpty());
+
+    // sample_dim is present in hive and db. Lens should choose the db one
+    queryPlan = (QueryPlan) qHelper.explainQuery(QueryInventory.DIM_QUERY).getData();
+    Assert.assertNotNull(queryPlan.getPlanString());
+    Assert.assertTrue(queryPlan.getPlanString().isEmpty());
+
+    // sample_db_dim is present in db
+    queryPlan = (QueryPlan) qHelper.explainQuery(QueryInventory.JDBC_DIM_QUERY).getData();
+    Assert.assertNotNull(queryPlan.getPlanString());
+    Assert.assertTrue(queryPlan.getPlanString().isEmpty());
+  }
+
+
+  @Test
+  public void testExecute() throws Exception {
+    QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.HIVE_CUBE_QUERY).getData();
+    LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
+    Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
+  }
+
+  @Test
+  public void testExecuteWrongQuery() throws Exception {
+    QueryHandle qH = (QueryHandle) qHelper.executeQuery(QueryInventory.WRONG_QUERY, "queryName").getData();
+    Assert.assertNull(qH);
+  }
+
+    /* Bug : LENS-1005
+     Fails bcos json output cannot be input for any API.
+     Here query handle is in json which caanot be passed to get query status
+  */
+
+  @Test
+  public void testExecuteJson() throws Exception {
+    QueryHandle handle = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_CUBE_QUERY, null,
+        sessionHandleString, null, MediaType.APPLICATION_JSON).getData();
+    Assert.assertNotNull(handle);
+    LensQuery lensQuery = qHelper.waitForCompletion(sessionHandleString, handle, MediaType.APPLICATION_JSON_TYPE,
+        MediaType.APPLICATION_JSON);
+    Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL);
+  }
+
+  @Test
+  public void passPropertyQueryConf() throws Exception {
+
+    LensConf lensConf = new LensConf();
+    lensConf.addProperty(LensConfConstants.QUERY_OUTPUT_SERDE, "org.apache.lens.lib.query.CSVSerde1");
+    QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.QUERY, null, null, sessionHandleString,
+        lensConf).getData();
+    LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
+    Assert.assertEquals(lensQuery.getStatus().getStatusMessage().trim(), "Result formatting failed!",
+        "Query did not Fail");
+
+    lensConf.addProperty(LensConfConstants.QUERY_OUTPUT_SERDE, "org.apache.lens.lib.query.CSVSerde");
+    queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.QUERY, null, null, sessionHandleString,
+        lensConf).getData();
+    lensQuery = qHelper.waitForCompletion(queryHandle);
+    Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed");
+  }
+
+  @Test
+  public void testExecuteWithTimeout() throws Exception {
+
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "false");
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
+
+    QueryHandleWithResultSet qHWithResultSet = (QueryHandleWithResultSet) qHelper.executeQueryTimeout(
+        QueryInventory.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);
+
+    qHWithResultSet = (QueryHandleWithResultSet) qHelper.executeQueryTimeout(QueryInventory.SLEEP_QUERY, "10000")
+        .getData();
+    queryStatus = qHelper.getQueryStatus(qHWithResultSet.getQueryHandle());
+    Assert.assertEquals(queryStatus.getStatus(), QueryStatus.Status.RUNNING, "Query is Not Running");
+
+    qHelper.killQueryByQueryHandle(qHWithResultSet.getQueryHandle());
+    queryStatus = qHelper.getQueryStatus(qHWithResultSet.getQueryHandle());
+    Assert.assertEquals(queryStatus.getStatus(), QueryStatus.Status.CANCELED, "Query should be cancelled");
+  }
+
+  @Test
+  public void testGetInMemoryResultSet() throws Exception {
+
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "false");
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_MAIL_NOTIFY, "false");
+
+    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");
+    InMemoryQueryResult result = (InMemoryQueryResult) qHelper.getResultSet(queryHandle);
+    Assert.assertNotNull(result);
+    validateInMemoryResultSet(result);
+
+  }
+
+  @Test
+  public void testGetPersistentResultSet() throws Exception {
+
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "true");
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
+
+    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");
+    PersistentQueryResult result = (PersistentQueryResult) qHelper.getResultSet(queryHandle);
+    Assert.assertNotNull(result);
+    Assert.assertEquals(result.getNumRows().intValue(), 2, "Wrong result");
+  }
+
+
+  private void validateInMemoryResultSet(InMemoryQueryResult result) {
+
+    int size = result.getRows().size();
+    for (int i = 0; i < size; i++) {
+      logger.info(result.getRows().get(i).getValues().get(0) + " " + result.getRows().get(i).getValues().get(1));
+    }
+    Assert.assertEquals(result.getRows().size(), 2, "Wrong result");
+    Assert.assertEquals(result.getRows().get(0).getValues().get(0), 2, "Wrong result");
+    Assert.assertEquals(result.getRows().get(0).getValues().get(1), "second", "Wrong result");
+    Assert.assertEquals(result.getRows().get(1).getValues().get(0), 3, "Wrong result");
+    Assert.assertEquals(result.getRows().get(1).getValues().get(1), "third", "Wrong result");
+  }
+
+
+  @Test
+  public void testQueryResultJsonInmemory() throws Exception {
+
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "false");
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
+
+    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");
+    String resultSetJson = qHelper.getInmemoryResultSetJson(queryHandle, "0", "100", sessionHandleString);
+    Assert.assertNotNull(resultSetJson);
+    Assert.assertFalse(resultSetJson.isEmpty());
+
+    //TODO : Enable this once LENS-1005 is fixed
+//    Cannot convert json output to InMemoryQueryResult
+//    InMemoryQueryResult ResultSetJson = (InMemoryQueryResult) qHelper.getResultSetJson(queryHandle1, "0", "100");
+  }
+
+
+  @Test
+  public void testQueryResultJsonPersistent() throws Exception {
+
+    String parentDir = "file:/tmp/lensreports";
+    sHelper.setAndValidateParam(LensConfConstants.RESULT_SET_PARENT_DIR, parentDir);
+
+    QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.JDBC_DIM_QUERY, null,
+        sessionHandleString).getData();
+    LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
+    Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed");
+    String resultSetJson = qHelper.getPersistentResultSetJson(queryHandle, "0", "100");
+    Assert.assertNotNull(resultSetJson);
+    Assert.assertFalse(resultSetJson.isEmpty());
+
+    //TODO : Enable this once LENS-1005 is fixed
+
+//    PersistentQueryResult resultSetJson = qHelper.getPersistentResultSetJson(queryHandle, "0", "100");
+//    Assert.assertNotNull(resultSetJson);
+//    Assert.assertEquals(resultSetJson.getPersistedURI(), parentDir+"/"+queryHandle.toString()+".zip",
+//    "Persistened result url not matching");
+  }
+
+  //LENS-928
+  @Test
+  public void testDeleteOnInMemoryResult() throws Exception {
+
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_SET, "false");
+    sHelper.setAndValidateParam(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, "false");
+    sHelper.setAndValidateParam("lens.query.enable.mail.notify", "false");
+
+    MapBuilder query = new MapBuilder("sessionid", sessionHandleString, "fromindex", "0", "fetchsize", "100");
+
+    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");
+
+    Response response = qHelper.exec("get", QueryURL.QUERY_URL + "/" + queryHandle.toString() + "/resultset", servLens,
+        null, query);
+    AssertUtil.assertSucceededResponse(response);
+
+    Thread.sleep(20000);
+
+    Response response1 = qHelper.exec("delete", QueryURL.QUERY_URL + "/" + queryHandle.toString() + "/resultset",
+        servLens, null, query);
+    AssertUtil.assertSucceededResponse(response1);
+
+  }
+
+  @Test
+  public void cubeKeywordOptional() throws Exception {
+    QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.NO_CUBE_KEYWORD_QUERY).getData();
+    LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
+    Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed");
+  }
+
+
+  @Test
+  public void testQueryWithQuote() throws Exception {
+    QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.QUOTE_QUERY).getData();
+    LensQuery lensQuery = qHelper.waitForCompletion(queryHandle);
+    Assert.assertEquals(lensQuery.getStatus().getStatus(), QueryStatus.Status.SUCCESSFUL, "Query did not succeed");
+  }
+
+
+  /*
+      LENS-909. When query is formatting result (status between executed and successfull), if fetched for
+      result it provides the result url as hdfs path. getResult was not checking for status= success,hence it had wrong
+      path. With this fix, fetch result will return 404 if query is not complete.
+  */
+
+  @Test
+  public void testResultPathBeforeQueryCompletion() throws Exception {
+
+    MapBuilder query = new MapBuilder("sessionid", sessionHandleString, "fromindex", "0", "fetchsize", "100");
+
+    QueryHandle queryHandle = (QueryHandle) qHelper.executeQuery(QueryInventory.SLEEP_QUERY).getData();
+    LensQuery lq = qHelper.getLensQuery(sessionHandleString, queryHandle);
+
+    int i = 0;
+    while (lq.getStatus().getStatus() != QueryStatus.Status.SUCCESSFUL) {
+      Response response = qHelper.exec("get", QueryURL.QUERY_URL + "/" + queryHandle.toString() + "/resultset",
+          servLens, null, query);
+      AssertUtil.assertFailedResponse(response);
+      System.out.println("trial : " + i++);
+      lq = qHelper.getLensQuery(sessionHandleString, queryHandle);
+    }
+
+    PersistentQueryResult result = (PersistentQueryResult) qHelper.getResultSet(queryHandle);
+    String resultUrl = result.getHttpResultUrl();
+    System.out.println("http url : " + resultUrl);
+    Assert.assertTrue(resultUrl.contains("httpresultset"));
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/lens/blob/393153fa/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 bbe438f..3bb30d8 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
@@ -107,8 +107,7 @@ public class SessionResourceTests extends BaseTestClass {
   }
 
   public boolean checkSessionParamMap(String sessionHandle)  throws Exception {
-    MapBuilder query = new MapBuilder("sessionid", sessionHandle);
-    query.put("verbose", "true");
+    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));
@@ -120,14 +119,14 @@ public class SessionResourceTests extends BaseTestClass {
   }
 
 
-  @Test(enabled = true)
+  @Test
   public void testSessionGet() throws Exception {
     Response response = lens.exec("get", "/session", servLens, null, null);
     AssertUtil.assertSucceededResponse(response);
   }
 
 
-  @Test(enabled = true)
+  @Test
   public void testSessionPostDelete() throws Exception {
 
     Map<String, String> resource = new HashMap<String, String>();
@@ -146,13 +145,13 @@ public class SessionResourceTests extends BaseTestClass {
     Assert.assertFalse(checkSessionParamMap(sessionHandle), "Session is Still Open");
   }
 
-  @Test(enabled = true)
+  @Test
   public void testSessionParamsGetVerbose()  throws Exception {
     Assert.assertTrue(checkSessionParamMap(sessionHandleString), "Returned Empty Params list");
   }
 
 
-  @Test(enabled = true)
+  @Test
   public void testSessionParamsGetNPut()  throws Exception {
 
     Map<String, String> resource = new HashMap<String, String>();
@@ -164,8 +163,8 @@ public class SessionResourceTests extends BaseTestClass {
     Response response = lens.sendForm("put", SessionURL.SESSION_PARAMS_URL, formData);
     AssertUtil.assertSucceeded(response);
 
-    MapBuilder query = new MapBuilder("sessionid", sessionHandleString);
-    query.put("key", "datanucleus.autoCreateSchema");
+    MapBuilder query = new MapBuilder("sessionid", sessionHandleString, "key", "datanucleus.autoCreateSchema");
+
     response = lens.sendQuery("get", SessionURL.SESSION_PARAMS_URL, query);
     AssertUtil.assertSucceededResponse(response);
 
@@ -173,17 +172,16 @@ public class SessionResourceTests extends BaseTestClass {
     HashMap<String, String> map = Util.stringListToMap(strList);
 
     Assert.assertEquals(map.get("datanucleus.autoCreateSchema"),
-            newParamsValue, "From Session Params Put");
+        newParamsValue, "From Session Params Put");
     Assert.assertEquals(map.size(), 1, "Params List contains more than one param");
   }
 
   //Negative Test Case
-  @Test(enabled = true)
+  @Test
   public void testSessionGetUndefinedParams()  throws Exception {
 
     String undefinedParamsKey = "test123";
-    MapBuilder query = new MapBuilder("sessionid", sessionHandleString);
-    query.put("key", undefinedParamsKey);
+    MapBuilder query = new MapBuilder("sessionid", sessionHandleString, "key", undefinedParamsKey);
     Response response = lens.sendQuery("get", SessionURL.SESSION_PARAMS_URL, query);
     AssertUtil.assertSucceededResponse(response);
     StringList strList = response.readEntity(new GenericType<StringList>(StringList.class));
@@ -195,7 +193,7 @@ public class SessionResourceTests extends BaseTestClass {
  * Testing if Session is restored after server restart
  */
 
-  @Test(enabled = true)
+  @Test
   public void testSessionRestore() throws Exception {
     Map<String, String> resource = new HashMap<String, String>();
     resource.put("sessionid", sessionHandleString);
@@ -208,8 +206,7 @@ public class SessionResourceTests extends BaseTestClass {
 
     lens.restart();
 
-    MapBuilder query = new MapBuilder("sessionid", sessionHandleString);
-    query.put("key", "datanucleus.autoCreateSchema");
+    MapBuilder query = new MapBuilder("sessionid", sessionHandleString, "key", "datanucleus.autoCreateSchema");
     response = lens.sendQuery("get", SessionURL.SESSION_PARAMS_URL, query);
     AssertUtil.assertSucceededResponse(response);
 
@@ -217,12 +214,12 @@ public class SessionResourceTests extends BaseTestClass {
     HashMap<String, String> map = Util.stringListToMap(strList);
 
     Assert.assertEquals(map.get("datanucleus.autoCreateSchema"),
-            newParamsValue, "From Session Params Put");
+        newParamsValue, "From Session Params Put");
     Assert.assertEquals(map.size(), 1, "Params List contains more than one param");
   }
 
 
-  @Test(enabled = true)
+  @Test
   public void testSessionHDFSResourcePutNDelete()  throws Exception {
 
     String path = hdfsJarPath + "/" + hiveUdfJar;
@@ -232,7 +229,7 @@ public class SessionResourceTests extends BaseTestClass {
     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");
+        "Query is successful!", "Query did not succeed");
 
     sHelper.removeResourcesJar(path);
 
@@ -240,11 +237,11 @@ public class SessionResourceTests extends BaseTestClass {
     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");
+        "Query is successful!", "Query Should have Failed but it Passed");
   }
 
 
-  @Test(enabled = true)
+  @Test
   public void testSessionLocalResourcePutNDelete()  throws Exception {
 
     String path = serverResourcePath + "/" + hiveUdfJar;
@@ -254,7 +251,7 @@ public class SessionResourceTests extends BaseTestClass {
     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");
+        "Query is successful!", "Query did not succeed");
 
     sHelper.removeResourcesJar(path);
 
@@ -262,11 +259,11 @@ public class SessionResourceTests extends BaseTestClass {
     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");
+        "Query is successful!", "Query Should have Failed but it Passed");
 
   }
 
-  @Test(enabled = true)
+  @Test
   public void testListResources()  throws Exception {
 
     String path = serverResourcePath + "/" + hiveUdfJar;
@@ -285,7 +282,7 @@ public class SessionResourceTests extends BaseTestClass {
   }
 
 
-  @Test(enabled = true)
+  @Test
   public void testSessionGone()  throws Exception {
     String newSession = sHelper.openNewSession("test", "test");
     sHelper.closeNewSession(newSession);
@@ -298,7 +295,7 @@ public class SessionResourceTests extends BaseTestClass {
 
     //Setting DB with closed session Handle
     response = lens.exec("post", MetastoreURL.METASTORE_DATABASES_URL, servLens,
-            null, query, MediaType.APPLICATION_XML_TYPE, null, lens.getCurrentDB());
+        null, query, MediaType.APPLICATION_XML_TYPE, null, lens.getCurrentDB());
     AssertUtil.assertGoneResponse(response);
 
     //Explain Query with closed session Handle
@@ -308,7 +305,7 @@ public class SessionResourceTests extends BaseTestClass {
     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,
-            MediaType.MULTIPART_FORM_DATA_TYPE, MediaType.APPLICATION_XML, formData.getForm());
+        MediaType.MULTIPART_FORM_DATA_TYPE, MediaType.APPLICATION_XML, formData.getForm());
     AssertUtil.assertGoneResponse(response);
 
     //Execute Query with closed session Handle
@@ -318,12 +315,12 @@ public class SessionResourceTests extends BaseTestClass {
     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,
-            MediaType.MULTIPART_FORM_DATA_TYPE, MediaType.APPLICATION_XML, formData.getForm());
+        MediaType.MULTIPART_FORM_DATA_TYPE, MediaType.APPLICATION_XML, formData.getForm());
     AssertUtil.assertGoneResponse(response);
 
   }
 
-  @Test(enabled = true)
+  @Test
   public void testOpenSessionWithDB()  throws Exception {
 
     String newDb = "opensessionwithdb";
@@ -335,7 +332,7 @@ public class SessionResourceTests extends BaseTestClass {
     mHelper.dropDatabase(newDb);
   }
 
-  @Test(enabled = true)
+  @Test
   public void testOpenSessionDefault()  throws Exception {
 
     String newSession = sHelper.openNewSession("test", "test");
@@ -345,7 +342,7 @@ public class SessionResourceTests extends BaseTestClass {
   }
 
 
-  @Test(enabled = true)
+  @Test
   public void testOpenSessionDBDoesnotExist()  throws Exception {
 
     FormBuilder formData = new FormBuilder();
@@ -354,12 +351,12 @@ public class SessionResourceTests extends BaseTestClass {
     formData.add("database", "dbdoesnotexist");
 
     Response response = mHelper.exec("post", "/session", servLens, null, null,
-            MediaType.MULTIPART_FORM_DATA_TYPE, MediaType.APPLICATION_XML, formData.getForm());
+        MediaType.MULTIPART_FORM_DATA_TYPE, MediaType.APPLICATION_XML, formData.getForm());
     AssertUtil.assertFailedResponse(response);
 
   }
 
-  @Test(enabled = true)
+  @Test
   public void testDBCeption()  throws Exception {
 
     String newDb = "opensessionwithdb";

http://git-wip-us.apache.org/repos/asf/lens/blob/393153fa/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 309921f..ca5c45d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -61,6 +61,8 @@
     <lombok.maven.plugin.version>1.16.4.1</lombok.maven.plugin.version>
     <typesafe.config.version>1.2.1</typesafe.config.version>
     <logback.version>1.1.3</logback.version>
+    <protobuf.version>2.5.0</protobuf.version>
+
 
     <jackson.asl.version>1.9.13</jackson.asl.version>
     <jackson.guava.version>2.3.3</jackson.guava.version>
@@ -860,6 +862,11 @@
         <version>${guava.version}</version>
       </dependency>
       <dependency>
+        <groupId>com.google.protobuf</groupId>
+        <artifactId>protobuf-java</artifactId>
+        <version>${protobuf.version}</version>
+      </dependency>
+      <dependency>
         <groupId>org.apache.hadoop</groupId>
         <artifactId>hadoop-common</artifactId>
         <version>${hadoop.version}</version>