Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 389A4200B80 for ; Wed, 31 Aug 2016 00:16:27 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 36F9D160AC5; Tue, 30 Aug 2016 22:16:27 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 05BB5160ABA for ; Wed, 31 Aug 2016 00:16:25 +0200 (CEST) Received: (qmail 42873 invoked by uid 500); 30 Aug 2016 22:16:25 -0000 Mailing-List: contact notifications-help@asterixdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@asterixdb.apache.org Delivered-To: mailing list notifications@asterixdb.apache.org Received: (qmail 42863 invoked by uid 99); 30 Aug 2016 22:16:25 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd4-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 30 Aug 2016 22:16:25 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd4-us-west.apache.org (ASF Mail Server at spamd4-us-west.apache.org) with ESMTP id AA829C05B7 for ; Tue, 30 Aug 2016 22:16:24 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd4-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 2.126 X-Spam-Level: ** X-Spam-Status: No, score=2.126 tagged_above=-999 required=6.31 tests=[MISSING_HEADERS=1.207, SPF_FAIL=0.919] autolearn=disabled Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd4-us-west.apache.org [10.40.0.11]) (amavisd-new, port 10024) with ESMTP id wPdoCftZ3rLv for ; Tue, 30 Aug 2016 22:16:21 +0000 (UTC) Received: from unhygienix.ics.uci.edu (unhygienix.ics.uci.edu [128.195.14.130]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTP id 41CC75FE3B for ; Tue, 30 Aug 2016 22:16:20 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by unhygienix.ics.uci.edu (Postfix) with ESMTP id 961AF241DA2; Tue, 30 Aug 2016 15:16:19 -0700 (PDT) Date: Tue, 30 Aug 2016 15:16:19 -0700 From: "Till Westmann (Code Review)" CC: Jenkins , Yingyi Bu Reply-To: tillw@apache.org X-Gerrit-MessageType: merged Subject: Change in asterixdb[master]: Update SQL++ test harness to use new HTTP API X-Gerrit-Change-Id: Ia36967386183777c6d840634850a8f8fc2ea4411 X-Gerrit-ChangeURL: X-Gerrit-Commit: 4256027f2e09e62713f25df3a1307b016af368b7 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Content-Disposition: inline User-Agent: Gerrit/2.8.4 Message-Id: <20160830221619.961AF241DA2@unhygienix.ics.uci.edu> archived-at: Tue, 30 Aug 2016 22:16:27 -0000 Till Westmann has submitted this change and it was merged. Change subject: Update SQL++ test harness to use new HTTP API ...................................................................... Update SQL++ test harness to use new HTTP API Change-Id: Ia36967386183777c6d840634850a8f8fc2ea4411 Reviewed-on: https://asterix-gerrit.ics.uci.edu/1127 Sonar-Qube: Jenkins Tested-by: Jenkins Integration-Tests: Jenkins Reviewed-by: Yingyi Bu --- M asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/SqlppExecutionTest.java M asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml M asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/ResultExtractor.java M asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/TestExecutor.java 4 files changed, 57 insertions(+), 50 deletions(-) Approvals: Yingyi Bu: Looks good to me, approved Jenkins: Verified; No violations found; Verified diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/SqlppExecutionTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/SqlppExecutionTest.java index 84542d0..84e644b 100644 --- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/SqlppExecutionTest.java +++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/SqlppExecutionTest.java @@ -86,7 +86,6 @@ testArgs.add(new Object[] { ctx }); } return testArgs; - } protected TestCaseContext tcCtx; diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml index b48a99c..01a036c 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml +++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml @@ -1660,7 +1660,7 @@ insert-duplicated-keys - org.apache.hyracks.storage.am.common.exceptions.TreeIndexDuplicateKeyException: Failed to insert key since key already exists + Failed to insert key since key already exists @@ -1683,7 +1683,7 @@ insert-with-autogenerated-pk_adm_02 - org.apache.hyracks.algebricks.common.exceptions.AlgebricksException: Duplicate field id encountered + Duplicate field id encountered @@ -1704,13 +1704,13 @@ load-with-autogenerated-pk_adm_02 - org.apache.asterix.external.parser.ADMDataParser$ParseException + Parse error at (0, 5): This record is closed, you can not add extra fields! new field name: id load-with-autogenerated-pk_adm_03 - org.apache.asterix.external.parser.ADMDataParser$ParseException + Parse error at (0, 5): This record is closed, you can not add extra fields! new field name: id @@ -3121,7 +3121,7 @@ - + enforced-field-name-collision @@ -3131,13 +3131,13 @@ enforced-field-type-collision - Error: A field "[value]" is already defined with the type "STRING" + A field "[value]" is already defined with the type "STRING" missing-enforce-statement - org.apache.hyracks.algebricks.common.exceptions.AlgebricksException: Cannot create typed index on "[value]" field without enforcing it's type + Cannot create typed index on "[value]" field without enforcing it's type @@ -3149,11 +3149,11 @@ index-on-closed-type - org.apache.hyracks.algebricks.common.exceptions.AlgebricksException: Typed index on "[value]" field could be created only for open datatype + Typed index on "[value]" field could be created only for open datatype - + btree-secondary-equi-join @@ -3195,7 +3195,7 @@ - + probe-pidx-with-join-btree-sidx1 @@ -3227,7 +3227,7 @@ - + btree-index-composite-key @@ -3328,7 +3328,7 @@ - + btree-secondary-equi-join @@ -3370,7 +3370,7 @@ - + probe-pidx-with-join-btree-sidx1 @@ -3402,7 +3402,7 @@ - + btree-index-composite-key @@ -3525,7 +3525,7 @@ - + btree-primary-equi-join @@ -3572,7 +3572,7 @@ - + probe-pidx-with-join-btree-sidx1 @@ -3604,7 +3604,7 @@ - + btree-index-composite-key @@ -4575,7 +4575,7 @@ query-issue410 - HyracksDataException: ASX0000: Field type DOUBLE can't be promoted to type STRING + ASX0000: Field type DOUBLE can't be promoted to type STRING @@ -7099,19 +7099,19 @@ csv_05 - java.io.IOException: At record: + At record: 1, field#: 4 - a quote enclosing a field needs to be placed in the beginning of that field csv_06 - java.io.IOException: At record: + At record: 1, field#: 3 - a quote enclosing a field needs to be placed in the beginning of that field csv_07 - java.io.IOException: At record: + At record: 1, field#: 3 - A quote enclosing a field needs to be followed by the delimiter @@ -7149,7 +7149,7 @@ none - org.apache.hyracks.algebricks.common.exceptions.AlgebricksException: Unable to load dataset Users since it does not exist + Unable to load dataset Users since it does not exist @@ -7181,7 +7181,7 @@ none - org.apache.hyracks.api.exceptions.HyracksException + Input stream given to BTree bulk load has duplicates diff --git a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/ResultExtractor.java b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/ResultExtractor.java index efadc8d..d99602f 100644 --- a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/ResultExtractor.java +++ b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/ResultExtractor.java @@ -48,10 +48,13 @@ tokener.next('{'); String name; String type = null; + String status = null; String results = ""; while ((name = getFieldName(tokener)) != null) { - if ("requestID".equals(name) || "signature".equals(name) || "status".equals(name)) { + if ("requestID".equals(name) || "signature".equals(name)) { getStringField(tokener); + } else if ("status".equals(name)) { + status = getStringField(tokener); } else if ("type".equals(name)) { type = getStringField(tokener); } else if ("metrics".equals(name)) { @@ -72,6 +75,9 @@ // skip along } tokener.next('}'); + if (! "success".equals(status)) { + throw new Exception("Unexpected status: '" + status + "'"); + } return IOUtils.toInputStream(results); } diff --git a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/TestExecutor.java b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/TestExecutor.java index 4dc206c..90b9d7e 100644 --- a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/TestExecutor.java +++ b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/TestExecutor.java @@ -30,6 +30,7 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.nio.charset.StandardCharsets; +import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; @@ -297,6 +298,10 @@ return response.getEntity().getContent(); } + public InputStream executeQueryService(String str, String url) throws Exception { + return executeQueryService(str, OutputFormat.CLEAN_JSON, url, new ArrayList<>()); + } + public InputStream executeQueryService(String str, OutputFormat fmt, String url, List params) throws Exception { setFormatParam(params, fmt); @@ -399,7 +404,7 @@ } private InputStream getHandleResult(String handle, OutputFormat fmt) throws Exception { - final String url = "http://" + host + ":" + port + getPath(Servlets.QUERY_RESULT); + final String url = getEndpoint(Servlets.QUERY_RESULT); // Create a method instance. HttpUriRequest request = RequestBuilder.get(url) @@ -523,9 +528,10 @@ switch (ctx.getType()) { case "ddl": if (ctx.getFile().getName().endsWith("aql")) { - executeDDL(statement, "http://" + host + ":" + port + getPath(Servlets.AQL_DDL)); + executeDDL(statement, getEndpoint(Servlets.AQL_DDL)); } else { - executeDDL(statement, "http://" + host + ":" + port + getPath(Servlets.SQLPP_DDL)); + InputStream resultStream = executeQueryService(statement, getEndpoint(Servlets.QUERY_SERVICE)); + ResultExtractor.extract(resultStream); } break; case "update": @@ -534,9 +540,10 @@ statement = statement.replaceAll("nc1://", "127.0.0.1://../../../../../../asterix-app/"); } if (ctx.getFile().getName().endsWith("aql")) { - executeUpdate(statement, "http://" + host + ":" + port + getPath(Servlets.AQL_UPDATE)); + executeUpdate(statement, getEndpoint(Servlets.AQL_UPDATE)); } else { - executeUpdate(statement, "http://" + host + ":" + port + getPath(Servlets.SQLPP_UPDATE)); + InputStream resultStream = executeQueryService(statement, getEndpoint(Servlets.QUERY_SERVICE)); + ResultExtractor.extract(resultStream); } break; case "query": @@ -553,26 +560,22 @@ OutputFormat fmt = OutputFormat.forCompilationUnit(cUnit); if (ctx.getFile().getName().endsWith("aql")) { if (ctx.getType().equalsIgnoreCase("query")) { - resultStream = executeQuery(statement, fmt, - "http://" + host + ":" + port + getPath(Servlets.AQL_QUERY), cUnit.getParameter()); + resultStream = executeQuery(statement, fmt, getEndpoint(Servlets.AQL_QUERY), + cUnit.getParameter()); } else if (ctx.getType().equalsIgnoreCase("async")) { - resultStream = executeAnyAQLAsync(statement, false, fmt, - "http://" + host + ":" + port + getPath(Servlets.AQL)); + resultStream = executeAnyAQLAsync(statement, false, fmt, getEndpoint(Servlets.AQL)); } else if (ctx.getType().equalsIgnoreCase("asyncdefer")) { - resultStream = executeAnyAQLAsync(statement, true, fmt, - "http://" + host + ":" + port + getPath(Servlets.AQL)); + resultStream = executeAnyAQLAsync(statement, true, fmt, getEndpoint(Servlets.AQL)); } } else { if (ctx.getType().equalsIgnoreCase("query")) { - resultStream = executeQueryService(statement, fmt, - "http://" + host + ":" + port + getPath(Servlets.QUERY_SERVICE), cUnit.getParameter()); + resultStream = executeQueryService(statement, fmt, getEndpoint(Servlets.QUERY_SERVICE), + cUnit.getParameter()); resultStream = ResultExtractor.extract(resultStream); } else if (ctx.getType().equalsIgnoreCase("async")) { - resultStream = executeAnyAQLAsync(statement, false, fmt, - "http://" + host + ":" + port + getPath(Servlets.SQLPP)); + resultStream = executeAnyAQLAsync(statement, false, fmt, getEndpoint(Servlets.SQLPP)); } else if (ctx.getType().equalsIgnoreCase("asyncdefer")) { - resultStream = executeAnyAQLAsync(statement, true, fmt, - "http://" + host + ":" + port + getPath(Servlets.SQLPP)); + resultStream = executeAnyAQLAsync(statement, true, fmt, getEndpoint(Servlets.SQLPP)); } } if (queryCount.intValue() >= expectedResultFileCtxs.size()) { @@ -598,14 +601,14 @@ break; case "txnqbc": // qbc represents query before crash resultStream = executeQuery(statement, OutputFormat.forCompilationUnit(cUnit), - "http://" + host + ":" + port + getPath(Servlets.AQL_QUERY), cUnit.getParameter()); + getEndpoint(Servlets.AQL_QUERY), cUnit.getParameter()); qbcFile = getTestCaseQueryBeforeCrashFile(actualPath, testCaseCtx, cUnit); qbcFile.getParentFile().mkdirs(); writeOutputToFile(qbcFile, resultStream); break; case "txnqar": // qar represents query after recovery resultStream = executeQuery(statement, OutputFormat.forCompilationUnit(cUnit), - "http://" + host + ":" + port + getPath(Servlets.AQL_QUERY), cUnit.getParameter()); + getEndpoint(Servlets.AQL_QUERY), cUnit.getParameter()); File qarFile = new File(actualPath + File.separator + testCaseCtx.getTestCase().getFilePath().replace(File.separator, "_") + "_" + cUnit.getName() + "_qar.adm"); @@ -616,7 +619,7 @@ break; case "txneu": // eu represents erroneous update try { - executeUpdate(statement, "http://" + host + ":" + port + getPath(Servlets.AQL_UPDATE)); + executeUpdate(statement, getEndpoint(Servlets.AQL_UPDATE)); } catch (Exception e) { // An exception is expected. failed = true; @@ -644,7 +647,7 @@ break; case "errddl": // a ddlquery that expects error try { - executeDDL(statement, "http://" + host + ":" + port + getPath(Servlets.AQL_DDL)); + executeDDL(statement, getEndpoint(Servlets.AQL_DDL)); } catch (Exception e) { // expected error happens failed = true; @@ -684,8 +687,7 @@ case "cstate": // cluster state query try { fmt = OutputFormat.forCompilationUnit(cUnit); - resultStream = executeClusterStateQuery(fmt, - "http://" + host + ":" + port + getPath(Servlets.CLUSTER_STATE)); + resultStream = executeClusterStateQuery(fmt, getEndpoint(Servlets.CLUSTER_STATE)); expectedResultFile = expectedResultFileCtxs.get(queryCount.intValue()).getFile(); actualResultFile = testCaseCtx.getActualResultFile(cUnit, expectedResultFile, new File(actualPath)); actualResultFile.getParentFile().mkdirs(); @@ -849,7 +851,7 @@ + cUnit.getName() + "_qbc.adm"); } - protected String getPath(Servlets servlet) { - return servlet.getPath(); + protected String getEndpoint(Servlets servlet) { + return "http://" + host + ":" + port + servlet.getPath(); } } -- To view, visit https://asterix-gerrit.ics.uci.edu/1127 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ia36967386183777c6d840634850a8f8fc2ea4411 Gerrit-PatchSet: 3 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Till Westmann Gerrit-Reviewer: Jenkins Gerrit-Reviewer: Till Westmann Gerrit-Reviewer: Yingyi Bu