Speedometer 2.0: Add the capability to run a specific suite
authorrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 23 Aug 2017 23:04:13 +0000 (23:04 +0000)
committerrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 23 Aug 2017 23:04:13 +0000 (23:04 +0000)
https://bugs.webkit.org/show_bug.cgi?id=175908

Reviewed by Saam Barati.

Added ?suite=X query parameter to specify a specific suite (e.g. React-TodoMVC) to run.

* Speedometer/resources/main.js:
(enableOneSuite): Added.
(startBenchmark): Return true if the benchmark actually had started running.
(startTest): Don't transition to the "running" state if the benchmark failed to start (e.g. no tests to run).

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@221114 268f45cc-cd09-0410-ab3c-d52691b4dbfc

PerformanceTests/ChangeLog
PerformanceTests/Speedometer/resources/main.js

index bd20366..6d4d58c 100644 (file)
@@ -1,5 +1,19 @@
 2017-08-23  Ryosuke Niwa  <rniwa@webkit.org>
 
+        Speedometer 2.0: Add the capability to run a specific suite
+        https://bugs.webkit.org/show_bug.cgi?id=175908
+
+        Reviewed by Saam Barati.
+
+        Added ?suite=X query parameter to specify a specific suite (e.g. React-TodoMVC) to run.
+
+        * Speedometer/resources/main.js:
+        (enableOneSuite): Added.
+        (startBenchmark): Return true if the benchmark actually had started running.
+        (startTest): Don't transition to the "running" state if the benchmark failed to start (e.g. no tests to run).
+
+2017-08-23  Ryosuke Niwa  <rniwa@webkit.org>
+
         Speedometer 2.0: Async time is not always capturing layout time
         https://bugs.webkit.org/show_bug.cgi?id=175871
 
index d5d71c4..0e48e33 100644 (file)
@@ -149,7 +149,24 @@ window.benchmarkClient = {
     }
 }
 
+function enableOneSuite(suites, suiteToEnable)
+{
+    suiteToEnable = suiteToEnable.toLowerCase();
+    var found = false;
+    for (var i = 0; i < suites.length; i++) {
+        var currentSuite = suites[i];
+        if (currentSuite.name.toLowerCase() == suiteToEnable) {
+            currentSuite.disabled = false;
+            found = true;
+        } else
+            currentSuite.disabled = true;
+    }
+    return found;
+}
+
 function startBenchmark() {
+    var enabledSuites = Suites.filter(function (suite) { return !suite.disabled; });
+
     if (location.search.length > 1) {
         var parts = location.search.substring(1).split('&');
         for (var i = 0; i < parts.length; i++) {
@@ -170,16 +187,24 @@ function startBenchmark() {
                 else
                     console.error('Invalid iteration count: ' + value);
                 break;
+            case 'suite':
+                if (!enableOneSuite(Suites, value)) {
+                    alert('No tests to run');
+                    return false;
+                }
+                break;
             }
         }
     }
 
-    var enabledSuites = Suites.filter(function (suite) { return !suite.disabled });
+    var enabledSuites = Suites.filter(function (suite) { return !suite.disabled; });
     var totalSubtestCount = enabledSuites.reduce(function (testsCount, suite) { return testsCount + suite.tests.length; }, 0);
     benchmarkClient.testsCount = benchmarkClient.iterationCount * totalSubtestCount;
     benchmarkClient.suitesCount = enabledSuites.length;
     var runner = new BenchmarkRunner(Suites, benchmarkClient);
     runner.runMultipleIterations(benchmarkClient.iterationCount);
+
+    return true;
 }
 
 function computeScore(time) {
@@ -205,8 +230,8 @@ function showHome() {
 }
 
 function startTest() {
-    showSection('running');
-    startBenchmark();
+    if (startBenchmark())
+        showSection('running');
 }
 
 function showResultsSummary() {