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) {