You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by mb...@apache.org on 2022/01/25 03:41:04 UTC

[asterixdb] 12/13: [NO ISSUE][TEST] Introduce helper methods in TestExecutor

This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit f4c503a2fda2433c2c6254bc3406aa90e3570126
Author: Dmitry Lychagin <dm...@couchbase.com>
AuthorDate: Thu Jan 20 21:47:06 2022 -0800

    [NO ISSUE][TEST] Introduce helper methods in TestExecutor
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Details:
    - Extract helper methods to list dataverses,
      datasets and to drop a dataverse
    
    Change-Id: If347992216958d72eab5d8f38c9373f78121bd66
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/14887
    Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Reviewed-by: Dmitry Lychagin <dm...@couchbase.com>
    Reviewed-by: Ali Alsuliman <al...@gmail.com>
---
 .../apache/asterix/test/common/TestExecutor.java   | 73 +++++++++++++++-------
 1 file changed, 51 insertions(+), 22 deletions(-)

diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
index 7dc42b2..e2f50d3 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
@@ -103,6 +103,7 @@ import java.util.stream.Stream;
 import org.apache.asterix.api.http.server.QueryServiceRequestParameters;
 import org.apache.asterix.app.external.IExternalUDFLibrarian;
 import org.apache.asterix.common.api.Duration;
+import org.apache.asterix.common.config.DatasetConfig;
 import org.apache.asterix.common.config.GlobalConfig;
 import org.apache.asterix.common.metadata.DataverseName;
 import org.apache.asterix.common.utils.Servlets;
@@ -2570,32 +2571,12 @@ public class TestExecutor {
     public void cleanup(String testCase, List<String> badtestcases) throws Exception {
         try {
             List<DataverseName> toBeDropped = new ArrayList<>();
-            InputStream resultStream = executeQueryService(
-                    "select dv.DataverseName from Metadata.`Dataverse` as dv order by dv.DataverseName;",
-                    getEndpoint(Servlets.QUERY_SERVICE), OutputFormat.CLEAN_JSON);
-            JsonNode result = extractResult(IOUtils.toString(resultStream, UTF_8));
-            for (int i = 0; i < result.size(); i++) {
-                JsonNode json = result.get(i);
-                if (json != null) {
-                    DataverseName dvName = DataverseName.createFromCanonicalForm(json.get("DataverseName").asText());
-                    if (!dvName.equals(MetadataConstants.METADATA_DATAVERSE_NAME)
-                            && !dvName.equals(MetadataBuiltinEntities.DEFAULT_DATAVERSE_NAME)) {
-                        toBeDropped.add(dvName);
-                    }
-                }
-            }
+            listUserDefinedDataverses(toBeDropped);
             if (!toBeDropped.isEmpty()) {
                 badtestcases.add(testCase);
                 LOGGER.info("Last test left some garbage. Dropping dataverses: " + StringUtils.join(toBeDropped, ','));
-                StringBuilder dropStatement = new StringBuilder();
                 for (DataverseName dv : toBeDropped) {
-                    dropStatement.setLength(0);
-                    dropStatement.append("drop dataverse ");
-                    SqlppStatementUtil.encloseDataverseName(dropStatement, dv);
-                    dropStatement.append(";\n");
-                    resultStream = executeQueryService(dropStatement.toString(), getEndpoint(Servlets.QUERY_SERVICE),
-                            OutputFormat.CLEAN_JSON, UTF_8);
-                    ResultExtractor.extract(resultStream, UTF_8, OutputFormat.CLEAN_JSON);
+                    dropDataverse(dv);
                 }
             }
         } catch (Throwable th) {
@@ -2604,6 +2585,54 @@ public class TestExecutor {
         }
     }
 
+    protected void listUserDefinedDataverses(List<DataverseName> outDataverses) throws Exception {
+        String query = "select dv.DataverseName from Metadata.`Dataverse` as dv order by dv.DataverseName";
+        InputStream resultStream =
+                executeQueryService(query, getEndpoint(Servlets.QUERY_SERVICE), OutputFormat.CLEAN_JSON);
+        JsonNode result = extractResult(IOUtils.toString(resultStream, UTF_8));
+        for (int i = 0; i < result.size(); i++) {
+            JsonNode json = result.get(i);
+            if (json != null) {
+                DataverseName dvName = DataverseName.createFromCanonicalForm(json.get("DataverseName").asText());
+                if (!dvName.equals(MetadataConstants.METADATA_DATAVERSE_NAME)
+                        && !dvName.equals(MetadataBuiltinEntities.DEFAULT_DATAVERSE_NAME)) {
+                    outDataverses.add(dvName);
+                }
+            }
+        }
+    }
+
+    protected void dropDataverse(DataverseName dv) throws Exception {
+        StringBuilder dropStatement = new StringBuilder();
+        dropStatement.append("drop dataverse ");
+        SqlppStatementUtil.encloseDataverseName(dropStatement, dv);
+        dropStatement.append(";\n");
+        InputStream resultStream = executeQueryService(dropStatement.toString(), getEndpoint(Servlets.QUERY_SERVICE),
+                OutputFormat.CLEAN_JSON, UTF_8);
+        ResultExtractor.extract(resultStream, UTF_8, OutputFormat.CLEAN_JSON);
+    }
+
+    protected void listDatasets(DataverseName dataverseName, List<Pair<String, DatasetConfig.DatasetType>> outDatasets)
+            throws Exception {
+        String query = "select d.DatasetName, d.DatasetType from Metadata.`Dataset` d where d.DataverseName = '"
+                + dataverseName.getCanonicalForm() + "'";
+        InputStream resultStream = executeQueryService(query, getEndpoint(Servlets.QUERY_SERVICE),
+                TestCaseContext.OutputFormat.CLEAN_JSON);
+        JsonNode result = extractResult(IOUtils.toString(resultStream, UTF_8));
+        for (int i = 0; i < result.size(); i++) {
+            JsonNode json = result.get(i);
+            String datasetName = json.get("DatasetName").asText();
+            String datasetTypeText = json.get("DatasetType").asText();
+            DatasetConfig.DatasetType datasetType;
+            try {
+                datasetType = DatasetConfig.DatasetType.valueOf(datasetTypeText);
+            } catch (IllegalArgumentException e) {
+                throw new Exception("Unexpected dataset type: " + datasetTypeText);
+            }
+            outDatasets.add(new Pair<>(datasetName, datasetType));
+        }
+    }
+
     private JsonNode extractResult(String jsonString) throws IOException {
         try {
             final JsonNode result = RESULT_NODE_READER.<ObjectNode> readValue(jsonString).get("results");