Increasing the timeout of JsonpRequestTest and forcing the server to flush results faster.

Patch by: jlabanca
Review by: jat (desk)



git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@6090 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/test/com/google/gwt/jsonp/client/JsonpRequestTest.java b/user/test/com/google/gwt/jsonp/client/JsonpRequestTest.java
index 9d93f4f..8022eb7 100644
--- a/user/test/com/google/gwt/jsonp/client/JsonpRequestTest.java
+++ b/user/test/com/google/gwt/jsonp/client/JsonpRequestTest.java
@@ -25,27 +25,38 @@
 public class JsonpRequestTest extends GWTTestCase {
 
   /**
-   * The maximum amount of time to wait for a response in milliseconds. 
+   * The maximum amount of time to wait for a response in milliseconds.
    */
-  private static final int RESPONSE_DELAY = 1500; 
+  private static final int RESPONSE_DELAY = 2500;
+
+  /**
+   * The current Id of the async callback.
+   */
+  protected static int currentId;
 
   /**
    * Checks that an error is received.
    */
   private class AssertFailureCallback<T> implements AsyncCallback<T> {
     private String expectedMessage;
+    private int id;
 
     public AssertFailureCallback(String expectedMessage) {
+      id = ++currentId;
       this.expectedMessage = expectedMessage;
     }
 
     public void onFailure(Throwable throwable) {
-      assertEquals(expectedMessage, throwable.getMessage());
-      finishTest();
+      if (id == currentId) {
+        assertEquals(expectedMessage, throwable.getMessage());
+        finishTest();
+      }
     }
 
     public void onSuccess(T value) {
-      fail();
+      if (id == currentId) {
+        fail();
+      }
     }
   }
 
@@ -54,18 +65,24 @@
    */
   private class AssertSuccessCallback<T> implements AsyncCallback<T> {
     private T expectedValue;
+    private int id;
 
     private AssertSuccessCallback(T expectedValue) {
+      this.id = ++currentId;
       this.expectedValue = expectedValue;
     }
 
     public void onFailure(Throwable throwable) {
-      fail();
+      if (id == currentId) {
+        fail();
+      }
     }
 
     public void onSuccess(T value) {
-      assertEquals(expectedValue, value);
-      finishTest();
+      if (id == currentId) {
+        assertEquals(expectedValue, value);
+        finishTest();
+      }
     }
   }
 
@@ -103,33 +120,33 @@
   }
 
   public void testBooleanFalse() {
+    delayTestFinish(RESPONSE_DELAY);
     jsonp.requestBoolean(echo("false"), new AssertSuccessCallback<Boolean>(
         Boolean.FALSE));
-    delayTestFinish(RESPONSE_DELAY);
   }
 
   public void testBooleanTrue() {
+    delayTestFinish(RESPONSE_DELAY);
     jsonp.requestBoolean(echo("true"), new AssertSuccessCallback<Boolean>(
         Boolean.TRUE));
-    delayTestFinish(RESPONSE_DELAY);
   }
 
   public void testDouble() {
+    delayTestFinish(RESPONSE_DELAY);
     jsonp.requestDouble(echo("123.456"), new AssertSuccessCallback<Double>(
         123.456));
-    delayTestFinish(RESPONSE_DELAY);
   }
 
   public void testFailureCallback() {
+    delayTestFinish(RESPONSE_DELAY);
     jsonp.setFailureCallbackParam("failureCallback");
     jsonp.requestString(echoFailure("ERROR"),
         new AssertFailureCallback<String>("ERROR"));
-    delayTestFinish(RESPONSE_DELAY);
   }
 
   public void testInteger() {
-    jsonp.requestInteger(echo("123"), new AssertSuccessCallback<Integer>(123));
     delayTestFinish(RESPONSE_DELAY);
+    jsonp.requestInteger(echo("123"), new AssertSuccessCallback<Integer>(123));
   }
 
   /**
@@ -137,46 +154,47 @@
    * only a 'callback' parameter, and sends back the error to it.
    */
   public void testNoFailureCallback() {
+    delayTestFinish(RESPONSE_DELAY);
     jsonp.setFailureCallbackParam(null);
     jsonp.requestString(echoFailure("ERROR"),
         new AssertSuccessCallback<String>("ERROR"));
-    delayTestFinish(RESPONSE_DELAY);
   }
 
   public void testNullBoolean() {
-    jsonp.requestBoolean(echo("null"), new AssertSuccessCallback<Boolean>(null));
     delayTestFinish(RESPONSE_DELAY);
+    jsonp.requestBoolean(echo("null"), new AssertSuccessCallback<Boolean>(null));
   }
 
   public void testNullDouble() {
-    jsonp.requestDouble(echo("null"), new AssertSuccessCallback<Double>(null));
     delayTestFinish(RESPONSE_DELAY);
+    jsonp.requestDouble(echo("null"), new AssertSuccessCallback<Double>(null));
   }
 
   public void testNullInteger() {
-    jsonp.requestInteger(echo("null"), new AssertSuccessCallback<Integer>(null));
     delayTestFinish(RESPONSE_DELAY);
+    jsonp.requestInteger(echo("null"), new AssertSuccessCallback<Integer>(null));
   }
 
   public void testNullString() {
-    jsonp.requestString(echo("null"), new AssertSuccessCallback<String>(null));
     delayTestFinish(RESPONSE_DELAY);
+    jsonp.requestString(echo("null"), new AssertSuccessCallback<String>(null));
   }
 
   public void testString() {
+    delayTestFinish(RESPONSE_DELAY);
     jsonp.requestString(echo("'Hello'"), new AssertSuccessCallback<String>(
         "Hello"));
-    delayTestFinish(RESPONSE_DELAY);
   }
 
   public void testTimeout() {
-    jsonp.requestString(echoTimeout(), new AssertTimeoutExceptionCallback<String>());
     delayTestFinish(jsonp.getTimeout() + 500);
+    jsonp.requestString(echoTimeout(),
+        new AssertTimeoutExceptionCallback<String>());
   }
 
   public void testVoid() {
-    jsonp.send(echo(null), new AssertSuccessCallback<Void>(null));
     delayTestFinish(RESPONSE_DELAY);
+    jsonp.send(echo(null), new AssertSuccessCallback<Void>(null));
   }
 
   @Override
diff --git a/user/test/com/google/gwt/jsonp/server/EchoServlet.java b/user/test/com/google/gwt/jsonp/server/EchoServlet.java
index bdee3ef..18461dc 100644
--- a/user/test/com/google/gwt/jsonp/server/EchoServlet.java
+++ b/user/test/com/google/gwt/jsonp/server/EchoServlet.java
@@ -56,6 +56,7 @@
           value = "";
         }
         res.getWriter().println(callback + "(" + value + ");");
+        res.getWriter().flush();
         break;
       }
 
@@ -64,11 +65,13 @@
         String error = req.getParameter("error");
         if (failureCallback != null) {
           res.getWriter().println(failureCallback + "('" + error + "');");
+          res.getWriter().flush();
         } else {
           // If no failure callback is defined, send the error through the
           // success callback.
           String callback = req.getParameter("callback");
           res.getWriter().println(callback + "('" + error + "');");
+          res.getWriter().flush();
         }
         break;
       }