Murtadha Hubail has uploaded a new change for review.

  https://asterix-gerrit.ics.uci.edu/2829

Change subject: [NO ISSUE][TEST] Fix HttpServerTest
......................................................................

[NO ISSUE][TEST] Fix HttpServerTest

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

Details:
- Throw exception in case of request too large response
  is received.
- Disable auto-retry on test http client.

Change-Id: Ica2a2cb0d79472174e7ac349a618bbd7d27b0086
---
M 
hyracks-fullstack/hyracks/hyracks-http/src/test/java/org/apache/hyracks/http/test/HttpRequestTask.java
M 
hyracks-fullstack/hyracks/hyracks-http/src/test/java/org/apache/hyracks/http/test/HttpServerTest.java
2 files changed, 20 insertions(+), 14 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/29/2829/1

diff --git 
a/hyracks-fullstack/hyracks/hyracks-http/src/test/java/org/apache/hyracks/http/test/HttpRequestTask.java
 
b/hyracks-fullstack/hyracks/hyracks-http/src/test/java/org/apache/hyracks/http/test/HttpRequestTask.java
index 2ab0229..78226ae 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-http/src/test/java/org/apache/hyracks/http/test/HttpRequestTask.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-http/src/test/java/org/apache/hyracks/http/test/HttpRequestTask.java
@@ -32,8 +32,8 @@
 import org.apache.http.client.methods.HttpUriRequest;
 import org.apache.http.client.methods.RequestBuilder;
 import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.DefaultHttpRequestRetryHandler;
 import org.apache.http.impl.client.HttpClients;
-import org.apache.http.impl.client.StandardHttpRequestRetryHandler;
 
 import io.netty.handler.codec.http.HttpResponseStatus;
 
@@ -41,8 +41,8 @@
 
     protected final HttpUriRequest request;
 
-    protected HttpRequestTask(int size) throws URISyntaxException {
-        request = post(null, size);
+    protected HttpRequestTask(int entitySize) throws URISyntaxException {
+        request = post(null, entitySize);
     }
 
     @Override
@@ -53,6 +53,8 @@
                 HttpServerTest.SUCCESS_COUNT.incrementAndGet();
             } else if (response.getStatusLine().getStatusCode() == 
HttpResponseStatus.SERVICE_UNAVAILABLE.code()) {
                 HttpServerTest.UNAVAILABLE_COUNT.incrementAndGet();
+            } else if (response.getStatusLine().getStatusCode() == 
HttpResponseStatus.REQUEST_ENTITY_TOO_LARGE.code()) {
+                throw new 
Exception(HttpResponseStatus.REQUEST_ENTITY_TOO_LARGE.reasonPhrase());
             } else {
                 HttpServerTest.OTHER_COUNT.incrementAndGet();
             }
@@ -73,7 +75,7 @@
     }
 
     protected HttpResponse executeHttpRequest(HttpUriRequest method) throws 
Exception {
-        HttpClient client = 
HttpClients.custom().setRetryHandler(StandardHttpRequestRetryHandler.INSTANCE).build();
+        HttpClient client = HttpClients.custom().setRetryHandler(new 
DefaultHttpRequestRetryHandler(0, false)).build();
         try {
             return client.execute(method);
         } catch (Exception e) {
@@ -90,7 +92,7 @@
         return builder.build();
     }
 
-    protected HttpUriRequest post(String query, int size) throws 
URISyntaxException {
+    protected HttpUriRequest post(String query, int entitySize) throws 
URISyntaxException {
         URI uri = new URI(HttpServerTest.PROTOCOL, null, HttpServerTest.HOST, 
HttpServerTest.PORT, HttpServerTest.PATH,
                 query, null);
         RequestBuilder builder = RequestBuilder.post(uri);
@@ -102,11 +104,13 @@
         String statement = str.toString();
         builder.setHeader("Content-type", "application/x-www-form-urlencoded");
         builder.addParameter("statement", statement);
-        for (int i = 0; i < size; i++) {
-            str.append("This is a string statement that will be ignored");
-            str.append('\n');
+        if (entitySize > 0) {
+            str.setLength(0);
+            for (int i = 0; i < entitySize; i++) {
+                str.append("x");
+            }
+            builder.setEntity(new StringEntity(str.toString(), 
StandardCharsets.UTF_8));
         }
-        builder.setEntity(new StringEntity(str.toString(), 
StandardCharsets.UTF_8));
         builder.setCharset(StandardCharsets.UTF_8);
         return builder.build();
     }
diff --git 
a/hyracks-fullstack/hyracks/hyracks-http/src/test/java/org/apache/hyracks/http/test/HttpServerTest.java
 
b/hyracks-fullstack/hyracks/hyracks-http/src/test/java/org/apache/hyracks/http/test/HttpServerTest.java
index 8867bb5..b5683ae 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-http/src/test/java/org/apache/hyracks/http/test/HttpServerTest.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-http/src/test/java/org/apache/hyracks/http/test/HttpServerTest.java
@@ -40,6 +40,7 @@
 import org.apache.hyracks.http.server.WebManager;
 import org.apache.hyracks.http.servlet.ChattyServlet;
 import org.apache.hyracks.http.servlet.SleepyServlet;
+import org.apache.hyracks.util.StorageUtil;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
@@ -348,7 +349,8 @@
     public void testLargeRequest() throws Exception {
         WebManager webMgr = new WebManager();
         // Server with max allowed request size = 512K
-        final HttpServerConfig config = 
HttpServerConfigBuilder.custom().setMaxRequestSize(512 * 1024).build();
+        final int maxRequestSize = StorageUtil.getIntSizeInBytes(512, 
StorageUtil.StorageUnit.KILOBYTE);
+        final HttpServerConfig config = 
HttpServerConfigBuilder.custom().setMaxRequestSize(maxRequestSize).build();
         HttpServer server = new HttpServer(webMgr.getBosses(), 
webMgr.getWorkers(), PORT, config);
         ChattyServlet servlet = new ChattyServlet(server.ctx(), new String[] { 
PATH });
         server.addServlet(servlet);
@@ -356,7 +358,7 @@
         webMgr.start();
         Exception failure = null;
         try {
-            request(1, 32000);
+            request(1, maxRequestSize + 1);
             for (Future<Void> thread : FUTURES) {
                 thread.get();
             }
@@ -375,12 +377,12 @@
     }
 
     private void request(int count) throws URISyntaxException {
-        request(count, 32);
+        request(count, 0);
     }
 
-    private void request(int count, int size) throws URISyntaxException {
+    private void request(int count, int entitySize) throws URISyntaxException {
         for (int i = 0; i < count; i++) {
-            HttpRequestTask requestTask = new HttpRequestTask(size);
+            HttpRequestTask requestTask = new HttpRequestTask(entitySize);
             Future<Void> next = executor.submit(requestTask);
             FUTURES.add(next);
             TASKS.add(requestTask);

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2829
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ica2a2cb0d79472174e7ac349a618bbd7d27b0086
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mhub...@apache.org>

Reply via email to