Revision: 775
          http://jwebunit.svn.sourceforge.net/jwebunit/?rev=775&view=rev
Author:   jevonwright
Date:     2008-11-30 23:54:23 +0000 (Sun, 30 Nov 2008)

Log Message:
-----------
issue 1674646: added setTimeout() method for HtmlUnit

Modified Paths:
--------------
    
trunk/jwebunit-commons-tests/src/main/java/net/sourceforge/jwebunit/tests/ResponseServletTest.java
    
trunk/jwebunit-commons-tests/src/main/java/net/sourceforge/jwebunit/tests/util/ResponseServlet.java
    
trunk/jwebunit-commons-tests/src/main/resources/testcases/ResponseServletTest/SimpleForm.html
    
trunk/jwebunit-core/src/main/java/net/sourceforge/jwebunit/api/ITestingEngine.java
    
trunk/jwebunit-core/src/main/java/net/sourceforge/jwebunit/junit/WebTester.java
    
trunk/jwebunit-htmlunit-plugin/src/main/java/net/sourceforge/jwebunit/htmlunit/HtmlUnitTestingEngineImpl.java
    
trunk/jwebunit-selenium-plugin/src/main/java/net/sourceforge/jwebunit/selenium/SeleniumTestingEngineImpl.java
    trunk/src/changes/changes.xml

Modified: 
trunk/jwebunit-commons-tests/src/main/java/net/sourceforge/jwebunit/tests/ResponseServletTest.java
===================================================================
--- 
trunk/jwebunit-commons-tests/src/main/java/net/sourceforge/jwebunit/tests/ResponseServletTest.java
  2008-11-30 23:17:46 UTC (rev 774)
+++ 
trunk/jwebunit-commons-tests/src/main/java/net/sourceforge/jwebunit/tests/ResponseServletTest.java
  2008-11-30 23:54:23 UTC (rev 775)
@@ -4,6 +4,8 @@
  
******************************************************************************/
 package net.sourceforge.jwebunit.tests;
 
+import java.net.SocketTimeoutException;
+
 import junit.framework.Test;
 import junit.framework.TestSuite;
 import net.sourceforge.jwebunit.tests.util.JettySetup;
@@ -22,6 +24,7 @@
 
     public void setUp() throws Exception {
         super.setUp();
+        setTimeout(2);                 // specify a global timeout of 2 (must 
be set before the WebConnection is initialised)
         setIgnoreFailingStatusCodes(true);     // ignore failing status codes
         getTestContext().setBaseUrl(HOST_PATH + "/ResponseServletTest");
     }
@@ -73,5 +76,21 @@
         submit();
         assertResponseCode(501);
     }
+    
+    /**
+     * Issue 1674646: add support for specifying the timeout of pages
+     */
+    public void testTimeout() {
+        beginAt("/SimpleForm.html");
+        assertTitleEquals("response form");
+        setTextField("timeout", "10");         // server wait for 4 seconds
+        try {
+               submit();
+        } catch (RuntimeException e) {
+               assertTrue("timeout caused by SocketTimeoutException, but was " 
+ e.getCause().getClass(), e.getCause() instanceof SocketTimeoutException);
+        }
+        assertTextNotPresent("hello, world!"); // this will only display if 
the timeout is completed
+       
+    }
 
 }

Modified: 
trunk/jwebunit-commons-tests/src/main/java/net/sourceforge/jwebunit/tests/util/ResponseServlet.java
===================================================================
--- 
trunk/jwebunit-commons-tests/src/main/java/net/sourceforge/jwebunit/tests/util/ResponseServlet.java
 2008-11-30 23:17:46 UTC (rev 774)
+++ 
trunk/jwebunit-commons-tests/src/main/java/net/sourceforge/jwebunit/tests/util/ResponseServlet.java
 2008-11-30 23:54:23 UTC (rev 775)
@@ -34,6 +34,14 @@
                response.setContentType( request.getParameter("content-type") );
        }
        
+       // wait for a timeout?
+       if (request.getParameter("timeout") != null && 
request.getParameter("timeout").length() > 0) {
+               int seconds = Integer.parseInt(request.getParameter("timeout"));
+               long start = System.nanoTime();
+               while (System.nanoTime() < start + (seconds * 1000 * 1000))
+                       ;       // wait
+       }
+       
        // lets set some headers
        response.setHeader("Test", "test2");
        response.setHeader("Header-Added", new java.util.Date().toString());

Modified: 
trunk/jwebunit-commons-tests/src/main/resources/testcases/ResponseServletTest/SimpleForm.html
===================================================================
--- 
trunk/jwebunit-commons-tests/src/main/resources/testcases/ResponseServletTest/SimpleForm.html
       2008-11-30 23:17:46 UTC (rev 774)
+++ 
trunk/jwebunit-commons-tests/src/main/resources/testcases/ResponseServletTest/SimpleForm.html
       2008-11-30 23:54:23 UTC (rev 775)
@@ -7,6 +7,7 @@
        <ol>
                <li>Desired status: <input type="text" name="status" value="" 
/></li>
                <li>Desired content-type: <input type="text" 
name="content-type" value="" /></li>
+               <li>Desired timeout: <input type="text" name="timeout" value="" 
/></li>
                <li><input type="submit" /></li>
        </ol>
        </form>

Modified: 
trunk/jwebunit-core/src/main/java/net/sourceforge/jwebunit/api/ITestingEngine.java
===================================================================
--- 
trunk/jwebunit-core/src/main/java/net/sourceforge/jwebunit/api/ITestingEngine.java
  2008-11-30 23:17:46 UTC (rev 774)
+++ 
trunk/jwebunit-core/src/main/java/net/sourceforge/jwebunit/api/ITestingEngine.java
  2008-11-30 23:54:23 UTC (rev 775)
@@ -903,6 +903,15 @@
     /**
      * Get all the comments in a document, as a list of strings.
      */
-    public List<String> getComments();    
-
+    public List<String> getComments();
+    
+    /**
+     * Set the timeout for the request. A timeout of 0 means
+     * an infinite timeout.
+     * 
+     * @param seconds the seconds in which to timeout, or 0 for infinite
+     * wait (the default).
+     */
+    public void setTimeout(int seconds);
+    
 }

Modified: 
trunk/jwebunit-core/src/main/java/net/sourceforge/jwebunit/junit/WebTester.java
===================================================================
--- 
trunk/jwebunit-core/src/main/java/net/sourceforge/jwebunit/junit/WebTester.java 
    2008-11-30 23:17:46 UTC (rev 774)
+++ 
trunk/jwebunit-core/src/main/java/net/sourceforge/jwebunit/junit/WebTester.java 
    2008-11-30 23:54:23 UTC (rev 775)
@@ -3337,6 +3337,17 @@
     public Image getImage(String imageSrc, String imageAlt) {
         return validateImage(imageSrc, imageAlt, null);
     }
+    
+    /**
+     * Set the timeout for the request. A timeout of 0 means
+     * an infinite timeout.
+     * 
+     * @param seconds the seconds in which to timeout, or 0 for infinite
+     * wait (the default).
+     */
+    public void setTimeout(int seconds) {
+       getTestingEngine().setTimeout(seconds);
+    }
 
     private Image validateImage(String imageSrc, String imageAlt, File out) {
         assertImagePresent(imageSrc, imageAlt);

Modified: 
trunk/jwebunit-htmlunit-plugin/src/main/java/net/sourceforge/jwebunit/htmlunit/HtmlUnitTestingEngineImpl.java
===================================================================
--- 
trunk/jwebunit-htmlunit-plugin/src/main/java/net/sourceforge/jwebunit/htmlunit/HtmlUnitTestingEngineImpl.java
       2008-11-30 23:17:46 UTC (rev 774)
+++ 
trunk/jwebunit-htmlunit-plugin/src/main/java/net/sourceforge/jwebunit/htmlunit/HtmlUnitTestingEngineImpl.java
       2008-11-30 23:54:23 UTC (rev 775)
@@ -152,6 +152,11 @@
      */
     private boolean ignoreFailingStatusCodes = false;
     
+    /**
+     * Do we provide a timeout limit (in seconds)? Default 0 = unlimited 
timeout.
+     */
+    private int timeout = 0;
+    
     // Implementation of IJWebUnitDialog
 
     /**
@@ -739,6 +744,7 @@
         wc.setThrowExceptionOnScriptError(true);
         wc.setRedirectEnabled(true);
         wc.setRefreshHandler(new ImmediateRefreshHandler());
+        wc.setTimeout(timeout);
         DefaultCredentialsProvider creds = new DefaultCredentialsProvider();
         if (getTestContext().hasAuthorization()) {
             creds.addCredentials(getTestContext().getUser(), getTestContext()
@@ -2290,4 +2296,11 @@
                this.defaultBrowserVersion = defaultBrowserVersion;
        }
 
+       public void setTimeout(int seconds) {
+               if (wc != null && wc.getWebConnection() != null) {
+                       throw new IllegalArgumentException("Cannot set the 
timeout when the WebConnection has already been created.");
+               }
+               timeout = seconds;
+       }
+
 }

Modified: 
trunk/jwebunit-selenium-plugin/src/main/java/net/sourceforge/jwebunit/selenium/SeleniumTestingEngineImpl.java
===================================================================
--- 
trunk/jwebunit-selenium-plugin/src/main/java/net/sourceforge/jwebunit/selenium/SeleniumTestingEngineImpl.java
       2008-11-30 23:17:46 UTC (rev 774)
+++ 
trunk/jwebunit-selenium-plugin/src/main/java/net/sourceforge/jwebunit/selenium/SeleniumTestingEngineImpl.java
       2008-11-30 23:54:23 UTC (rev 775)
@@ -730,4 +730,9 @@
                throw new UnsupportedOperationException("getComments");
        }
 
+       public void setTimeout(int seconds) {
+               // TODO implement method
+               throw new UnsupportedOperationException("setTimeout");
+       }
+
 }

Modified: trunk/src/changes/changes.xml
===================================================================
--- trunk/src/changes/changes.xml       2008-11-30 23:17:46 UTC (rev 774)
+++ trunk/src/changes/changes.xml       2008-11-30 23:54:23 UTC (rev 775)
@@ -36,6 +36,9 @@
                <action type="add" dev="jevonwright" issue="1277374">
                        Added assertCommentPresent(text) and 
assertCommentNotPresent(text) methods.
                </action>
+               <action type="add" dev="jevonwright" issue="1674646">
+                       Added setTimeout() method.
+               </action>
        </release>
         <release version="2.0" date="October 27, 2008">
             <action type="update" dev="henryju">


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
JWebUnit-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jwebunit-development

Reply via email to