rt/vmtest/src/main/java/org/apidesign/bck2brwsr/vmtest/impl/CompareCase.java
changeset 1860 4ce38f21f4cd
parent 1787 ea12a3bb4b33
child 1861 433856f897dd
     1.1 --- a/rt/vmtest/src/main/java/org/apidesign/bck2brwsr/vmtest/impl/CompareCase.java	Tue Feb 24 11:12:53 2015 +0100
     1.2 +++ b/rt/vmtest/src/main/java/org/apidesign/bck2brwsr/vmtest/impl/CompareCase.java	Tue Jan 26 04:36:23 2016 +0100
     1.3 @@ -40,11 +40,13 @@
     1.4  public final class CompareCase implements ITest {
     1.5      private final Bck2BrwsrCase first, second;
     1.6      private final Method m;
     1.7 +    private final double slowdown;
     1.8      
     1.9 -    private CompareCase(Method m, Bck2BrwsrCase first, Bck2BrwsrCase second) {
    1.10 +    private CompareCase(Method m, Bck2BrwsrCase first, Bck2BrwsrCase second, double slowdown) {
    1.11          this.first = first;
    1.12          this.second = second;
    1.13          this.m = m;
    1.14 +        this.slowdown = slowdown;
    1.15      }
    1.16  
    1.17      /** Inspects <code>clazz</code> and for each {@lik Compare} method creates
    1.18 @@ -120,6 +122,20 @@
    1.19              Bck2BrwsrCase.dumpJS(sb, second);
    1.20              throw new AssertionError(sb.toString());
    1.21          }
    1.22 +        if (slowdown > 0.0) {
    1.23 +            Bck2BrwsrCase slow;
    1.24 +            Bck2BrwsrCase fast;
    1.25 +            if (first.time >= second.time) {
    1.26 +                slow = second;
    1.27 +                fast = first;
    1.28 +            } else {
    1.29 +                fast = second;
    1.30 +                slow = first;
    1.31 +            }
    1.32 +            if (slow.time * slowdown < fast.time) {
    1.33 +                Assert.fail("Too slow " + slow.getTestName() + " took " + slow.time + " ms vs. " + fast.time + " ms of " + fast.getTestName());
    1.34 +            }
    1.35 +        }
    1.36      }
    1.37      
    1.38      /** Test name.
    1.39 @@ -135,19 +151,24 @@
    1.40          if (c == null) {
    1.41              return;
    1.42          }
    1.43 +        String slowdownOverride = System.getProperty("vmtest.slowdown");
    1.44          final Bck2BrwsrCase real = new Bck2BrwsrCase(m, "Java", null, false, null, null);
    1.45          ret.add(real);
    1.46 +        double slowdown = c.slowdown();
    1.47 +        if (slowdown > 0.0 && slowdownOverride != null) {
    1.48 +            slowdown = Double.parseDouble(slowdownOverride);
    1.49 +        }
    1.50          if (c.scripting()) {
    1.51              final Bck2BrwsrCase js = new Bck2BrwsrCase(m, "JavaScript", l.javaScript(), false, null, null);
    1.52              ret.add(js);
    1.53 -            ret.add(new CompareCase(m, real, js));
    1.54 +            ret.add(new CompareCase(m, real, js, slowdown));
    1.55          }
    1.56          for (String b : brwsr) {
    1.57              final Launcher s = l.brwsr(b);
    1.58              ret.add(s);
    1.59              final Bck2BrwsrCase cse = new Bck2BrwsrCase(m, b, s, false, null, null);
    1.60              ret.add(cse);
    1.61 -            ret.add(new CompareCase(m, real, cse));
    1.62 +            ret.add(new CompareCase(m, real, cse, slowdown));
    1.63          }
    1.64      }
    1.65      private static void registerBrwsrCases(Class<? extends Annotation> brwsrTest, Method m, final LaunchSetup l, List<Object> ret, String[] brwsr) {