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