[NO ISSUE][TEST] += paramsfromquery

- Add 'paramsfromquery' test file directive, to transform http query into
  form post parameters

Change-Id: I05c9eae65ff30d001b4a5f4190f9a35ef911d46a
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/10686
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Michael Blow <mblow@apache.org>
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 730ed46..453ed59 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
@@ -109,6 +109,7 @@
 import org.apache.http.HttpHost;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpStatus;
+import org.apache.http.NameValuePair;
 import org.apache.http.auth.AuthScope;
 import org.apache.http.auth.UsernamePasswordCredentials;
 import org.apache.http.client.AuthCache;
@@ -118,6 +119,7 @@
 import org.apache.http.client.methods.HttpUriRequest;
 import org.apache.http.client.methods.RequestBuilder;
 import org.apache.http.client.protocol.HttpClientContext;
+import org.apache.http.client.utils.URLEncodedUtils;
 import org.apache.http.entity.ContentType;
 import org.apache.http.entity.StringEntity;
 import org.apache.http.entity.mime.HttpMultipartMode;
@@ -186,6 +188,9 @@
     private static final Pattern VARIABLE_REF_PATTERN = Pattern.compile("\\$(\\w+)");
     private static final Pattern HTTP_PARAM_PATTERN =
             Pattern.compile("param (?<name>[\\w-$]+)(?::(?<type>\\w+))?=(?<value>.*)", Pattern.MULTILINE);
+    private static final Pattern HTTP_PARAMS_FROM_QUERY_PATTERN =
+            Pattern.compile("paramsfromquery (?<value>.*)", Pattern.MULTILINE);
+
     private static final Pattern HTTP_AUTH_PATTERN =
             Pattern.compile("auth (?<username>.*):(?<password>.*)", Pattern.MULTILINE);
     private static final Pattern HTTP_BODY_PATTERN = Pattern.compile("body=(.*)", Pattern.MULTILINE);
@@ -1930,7 +1935,7 @@
 
     public static List<Parameter> extractParameters(String statement) {
         List<Parameter> params = new ArrayList<>();
-        final Matcher m = HTTP_PARAM_PATTERN.matcher(statement);
+        Matcher m = HTTP_PARAM_PATTERN.matcher(statement);
         while (m.find()) {
             final Parameter param = new Parameter();
             String name = m.group("name");
@@ -1948,6 +1953,16 @@
             }
             params.add(param);
         }
+        m = HTTP_PARAMS_FROM_QUERY_PATTERN.matcher(statement);
+        while (m.find()) {
+            String queryString = m.group("value");
+            for (NameValuePair queryParam : URLEncodedUtils.parse(queryString, UTF_8)) {
+                Parameter param = new Parameter();
+                param.setName(queryParam.getName());
+                param.setValue(queryParam.getValue());
+                params.add(param);
+            }
+        }
         return params;
     }