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 <archa...@apache.org> Authored: Tue Oct 4 13:18:09 2016 +0530 Committer: Archana H <archa...@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); + } }