You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by mi...@apache.org on 2015/08/17 10:16:25 UTC

olingo-odata4 git commit: [OLINGO-659] Improved async test case

Repository: olingo-odata4
Updated Branches:
  refs/heads/master e6d1b964f -> 5248f3421


[OLINGO-659] Improved async test case


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/5248f342
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/5248f342
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/5248f342

Branch: refs/heads/master
Commit: 5248f342150fc4f8949a9c03b7892a60870a020e
Parents: e6d1b96
Author: Michael Bolz <mi...@sap.com>
Authored: Mon Aug 17 10:12:08 2015 +0200
Committer: Michael Bolz <mi...@sap.com>
Committed: Mon Aug 17 10:12:35 2015 +0200

----------------------------------------------------------------------
 .../fit/tecsvc/http/BasicAsyncITCase.java       | 29 +++++++++++++++++---
 1 file changed, 25 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5248f342/fit/src/test/java/org/apache/olingo/fit/tecsvc/http/BasicAsyncITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/tecsvc/http/BasicAsyncITCase.java b/fit/src/test/java/org/apache/olingo/fit/tecsvc/http/BasicAsyncITCase.java
index c4a6779..fa0e4b3 100644
--- a/fit/src/test/java/org/apache/olingo/fit/tecsvc/http/BasicAsyncITCase.java
+++ b/fit/src/test/java/org/apache/olingo/fit/tecsvc/http/BasicAsyncITCase.java
@@ -60,6 +60,7 @@ public class BasicAsyncITCase extends AbstractBaseTestITCase {
 
   private static final String CRLF = "\r\n";
   private static final String DEFAULT_ENCODING = "utf-8";
+  public static final long SLEEP_TIMEOUT_IN_MS = 200;
 
   /**
    * Works
@@ -87,8 +88,8 @@ public class BasicAsyncITCase extends AbstractBaseTestITCase {
     assertEquals(0, statusBody.byteLength());
 
     // get async response (now finished)
-    TimeUnit.SECONDS.sleep(2);
-    HttpURLConnection result = getRequest(new URL(respondUri), Collections.<String, String>emptyMap());
+    HttpURLConnection result = waitTillDone(respondUri, 4);
+
     StringHelper.Stream resultBody = StringHelper.toStream(result.getInputStream());
     Map<String, List<String>> resultHeaderFields = result.getHeaderFields();
     String resBody = resultBody.asString();
@@ -131,8 +132,7 @@ public class BasicAsyncITCase extends AbstractBaseTestITCase {
     assertEquals(0, statusBody.byteLength());
 
     // get async response (now finished)
-    TimeUnit.SECONDS.sleep(2);
-    HttpURLConnection result = getRequest(new URL(respondUri), Collections.<String, String>emptyMap());
+    HttpURLConnection result = waitTillDone(respondUri, 4);
     StringHelper.Stream resultBody = StringHelper.toStream(result.getInputStream());
     Map<String, List<String>> resultHeaderFields = result.getHeaderFields();
     String resBody = resultBody.asString();
@@ -184,6 +184,27 @@ public class BasicAsyncITCase extends AbstractBaseTestITCase {
         + "--" + DEFAULT_BATCH_BOUNDARY + "--";
   }
 
+  private HttpURLConnection waitTillDone(String location, int maxWaitInSeconds) throws Exception {
+    HttpURLConnection result = null;
+    int waitCounter = maxWaitInSeconds * 1000;
+
+    while(result == null && waitCounter > 0) {
+      HttpURLConnection statusRequest = getRequest(new URL(location), Collections.<String, String>emptyMap());
+      Map<String, List<String>> statusHeaderFields = statusRequest.getHeaderFields();
+      String statusHeader = statusHeaderFields.get(null).get(0);
+      if("HTTP/1.1 202 Accepted".equals(statusHeader)) {
+        TimeUnit.MILLISECONDS.sleep(SLEEP_TIMEOUT_IN_MS);
+        waitCounter -= SLEEP_TIMEOUT_IN_MS;
+      } else if("HTTP/1.1 200 OK".equals(statusHeader)) {
+        result = statusRequest;
+      } else {
+        throw new RuntimeException("Unexpected status header ('" + statusHeader +
+                "') for async status request on: " + location);
+      }
+    }
+    return result;
+  }
+
   private HttpURLConnection postRequest(final URL url, final String content, final Map<String, String> headers)
       throws IOException {
     final HttpURLConnection connection = (HttpURLConnection) url.openConnection();