[NO ISSUE] Introduce TestExecutor.extractResult

- user model changes: no
- storage format changes: no
- interface changes: no

Change-Id: I8dbd239fa4a3997006c7fa2b27579956ac9660a2
Reviewed-on: https://asterix-gerrit.ics.uci.edu/2433
Sonar-Qube: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Contrib: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Murtadha Hubail <mhubail@apache.org>
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 113fc67..9f4f248 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
@@ -1779,19 +1779,7 @@
             InputStream resultStream = executeQueryService(
                     "select dv.DataverseName from Metadata.`Dataverse` as dv order by dv.DataverseName;",
                     getEndpoint(Servlets.QUERY_SERVICE), OutputFormat.CLEAN_JSON);
-            String out = IOUtils.toString(resultStream, StandardCharsets.UTF_8);
-            ObjectMapper om = new ObjectMapper();
-            om.setConfig(om.getDeserializationConfig().with(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT));
-            JsonNode result;
-            try {
-                result = om.readValue(out, ObjectNode.class).get("results");
-            } catch (JsonMappingException e) {
-                LOGGER.warn("error mapping response '{}' to json", out, e);
-                result = null;
-            }
-            if (result == null) {
-                return;
-            }
+            JsonNode result = extractResult(IOUtils.toString(resultStream, StandardCharsets.UTF_8));
             for (int i = 0; i < result.size(); i++) {
                 JsonNode json = result.get(i);
                 if (json != null) {
@@ -1821,6 +1809,21 @@
         }
     }
 
+    private JsonNode extractResult(String jsonString) throws IOException {
+        ObjectMapper om = new ObjectMapper();
+        om.setConfig(om.getDeserializationConfig().with(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT));
+        try {
+            final JsonNode result = om.readValue(jsonString, ObjectNode.class).get("results");
+            if (result == null) {
+                throw new IllegalArgumentException("No field 'results' in " + jsonString);
+            }
+            return result;
+        } catch (JsonMappingException e) {
+            LOGGER.warn("error mapping response '{}' to json", jsonString, e);
+            return om.createArrayNode();
+        }
+    }
+
     //This method is here to enable extension
     protected String getPath(String servlet) {
         return servlet;