diff -r a41b238056f4 -r 8b59e6f8c837 launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java --- a/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java Fri Dec 21 12:49:27 2012 +0100 +++ b/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java Sat Dec 22 14:55:49 2012 +0100 @@ -179,6 +179,7 @@ conf.addHttpHandler(new Page(resources, "org/apidesign/bck2brwsr/launcher/harness.xhtml" ), "/execute"); + final int[] currentTest = { -1 }; conf.addHttpHandler(new HttpHandler() { int cnt; @Override @@ -189,6 +190,7 @@ value = value.replace("%20", " "); cases[Integer.parseInt(id)].result = value; } + currentTest[0] = cnt; if (cnt >= cases.length) { response.getWriter().write(""); @@ -208,7 +210,24 @@ launchServerAndBrwsr(server, "/execute"); - wait.await(timeOut, TimeUnit.MILLISECONDS); + for (;;) { + int prev = currentTest[0]; + if (wait.await(timeOut, TimeUnit.MILLISECONDS)) { + break; + } + if (prev == currentTest[0]) { + LOG.log( + Level.WARNING, + "Timeout and no test has been executed meanwhile (at {0}). Giving up.", + currentTest[0] + ); + break; + } + LOG.log(Level.INFO, + "Timeout, but tests got from {0} to {1}. Trying again.", + new Object[]{prev, currentTest[0]} + ); + } server.stop(); }