Timeout per single test launcher
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Sat, 22 Dec 2012 14:55:49 +0100
branchlauncher
changeset 3638b59e6f8c837
parent 362 a41b238056f4
child 364 91f5b1f604d8
Timeout per single test
launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java
     1.1 --- a/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java	Fri Dec 21 12:49:27 2012 +0100
     1.2 +++ b/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java	Sat Dec 22 14:55:49 2012 +0100
     1.3 @@ -179,6 +179,7 @@
     1.4          conf.addHttpHandler(new Page(resources, 
     1.5              "org/apidesign/bck2brwsr/launcher/harness.xhtml"
     1.6          ), "/execute");
     1.7 +        final int[] currentTest = { -1 };
     1.8          conf.addHttpHandler(new HttpHandler() {
     1.9              int cnt;
    1.10              @Override
    1.11 @@ -189,6 +190,7 @@
    1.12                      value = value.replace("%20", " ");
    1.13                      cases[Integer.parseInt(id)].result = value;
    1.14                  }
    1.15 +                currentTest[0] = cnt;
    1.16                  
    1.17                  if (cnt >= cases.length) {
    1.18                      response.getWriter().write("");
    1.19 @@ -208,7 +210,24 @@
    1.20  
    1.21          launchServerAndBrwsr(server, "/execute");
    1.22          
    1.23 -        wait.await(timeOut, TimeUnit.MILLISECONDS);
    1.24 +        for (;;) {
    1.25 +            int prev = currentTest[0];
    1.26 +            if (wait.await(timeOut, TimeUnit.MILLISECONDS)) {
    1.27 +                break;
    1.28 +            }
    1.29 +            if (prev == currentTest[0]) {
    1.30 +                LOG.log(
    1.31 +                    Level.WARNING, 
    1.32 +                    "Timeout and no test has been executed meanwhile (at {0}). Giving up.", 
    1.33 +                    currentTest[0]
    1.34 +                );
    1.35 +                break;
    1.36 +            }
    1.37 +            LOG.log(Level.INFO, 
    1.38 +                "Timeout, but tests got from {0} to {1}. Trying again.", 
    1.39 +                new Object[]{prev, currentTest[0]}
    1.40 +            );
    1.41 +        }
    1.42          server.stop();
    1.43      }
    1.44