Thanks for the detailed explanation, that sure helps.
> I have seen the timeout message happen due to a compile error in the GWT
> code, but you'd see those errors in the log also.
Could it have something to do with issue 4700 ?:
http://code.google.com/p/google-web-toolkit/issues/detail?id=4700
Some more details:
+ I run the the tests with the following jvm arguments:
-Xms756m -Xmx756m -Dcatalina.base.create=${project.basedir} -
Dgwt.args="-logLevel INFO -Xtries 1"
+ I run the tests in noserver mode against an external tomcat server
that runs the backend that is started by the cargo maven plugin. I use
a proxy servlet in the internal tomcat server that is started by GWT
like explained in issue 4615:
http://code.google.com/p/google-web-toolkit/issues/detail?id=4615
What is the relation between HTMLUnit and the internal tomcat that GWT
uses ?..
On Oct 1, 4:08 pm, Freeland Abbott <[email protected]> wrote:
> That timeout means that GWT has launched a browser pointed at itself, to run
> the test, but the browser didn't actually connect to us within 60 seconds.
> The constant isn't directly configurable, no, but it's not about the size
> of your test, just getting that first useful access from the browser (so
> it's supposed to encompass browser start time + network latency; 60s should
> be way over adequate!).
>
> I have seen the timeout message happen due to a compile error in the GWT
> code, but you'd see those errors in the log also.
>
> I don't know much about the maven codehaus plugin, but here's roughly what
> GWT tests do:
>
> 1. GWT sets itself up as a web server on some random port. JUnitShell
> derives off the older GWTShell, so this should mean using our internal
> tomcat as the server. (I'm not sure your "tomcat with the cargo plugin" is
> relevant!)
> 2. That server is set to serve a synthetic GWT module, which is created
> via a generator that can reflect on your test code.
> 3. Depending on the -runStyle flag, GWT chooses a browser to launch. By
> default, we'd use HtmlUnit (mostly because we know where it is!), but there
> are other options available, including Manual (which has no timeout, and
> expects you to point a browser at GWT's server) and External (you give GWT
> an executable that accepts a URL as an argument).
> 4. If the browser we launch doesn't successfully access the web server we
> have, on that random port, you will get the timeout you cite. If it does
> access in time, the page should pull your code and start walking through
> the
> tests, reporting status and moving to the next test (or batch, depending on
> your batch strategy).
>
> I hope that helps. HtmlUnit does have some known issues, so especially if
> you see this happening "sometimes" you might want to experiment with either
> -runStyle Manual or -runStyle External to see if those are better-behaved
> for you.
>
> On Fri, Oct 1, 2010 at 9:06 AM, Ed <[email protected]> wrote:
> > Sometimes my GWT test's fail (during nightly build) and give me the
> > following error.
> > -----
> > [INFO] com.google.gwt.junit.client.TimeoutException: The browser did
> > not contact the server within 60000ms.
> > [INFO] - NO RESPONSE: 192.168.1.65 / Mozilla/5.0 (Windows; U; Windows
> > NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1
> > [INFO] - 1 client(s) haven't responded back to JUnitShell since the
> > start of the test.
> > [INFO] Actual time elapsed: 60.004 seconds.
> > ------
>
> > This occurs when running my tests through the maven codehaus plugin,
> > starting first tomcat with the cargo plugin.
> > I played with the timeout settings I have in the maven and cargo
> > plugin, but don't seem to be able to solve it.
> > The maven plugin will run GWT test suites that extend from
> > GWTTestSuite that contain test cases that extend GWTTestCase.
> > The first GWT test suite always run with success and then the
> > following GWT test suite gives the above error
>
> > The code in JUnitShell throwing the above error:
> > ----
> > } else if (testBeginTimeout < currentTimeMillis) {
> > double elapsed = (currentTimeMillis - testBeginTime) / 1000.0;
> > throw new TimeoutException(
> > "The browser did not contact the server within "
> > + TEST_BEGIN_TIMEOUT_MILLIS + "ms.\n"
> > + messageQueue.getUnretrievedClients(currentTestInfo)
> > + "\n Actual time elapsed: " + elapsed + " seconds.\n");
> > }
> > ----
>
> > I don't understand well how the testing with server/client concept
> > works.
> > Why is this timeout generated and how can I solve this?
> > Shouldn't the timeout be adjustable as I the timeout is contained in
> > the constant TEST_BEGIN_TIMEOUT_MILLIS ?
>
> > --
> >http://groups.google.com/group/Google-Web-Toolkit-Contributors
>
>
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors