[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 <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Dmitry Lychagin <dmitry.lychagin@couchbase.com>
Reviewed-by: Ali Alsuliman <ali.al.solaiman@gmail.com>
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 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 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 @@
         }
     }
 
+    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");