| diff --git a/chrome/test/data/dromaeo/webrunner.js b/chrome/test/data/dromaeo/webrunner.js |
| index 63d777b..598998b 100644 |
| --- a/chrome/test/data/dromaeo/webrunner.js |
| +++ b/chrome/test/data/dromaeo/webrunner.js |
| @@ -230,6 +230,8 @@ |
| var time = 0; |
| var title, testName, testID, testSummary = {} , testSummaryNum = {}, maxTotal = 0, maxTotalNum = 0; |
| var nameDone = {}; |
| + var automated = false; |
| + var post_json = false; |
| |
| // Query String Parsing |
| var search = window.limitSearch || (window.location.search || "?").substr(1); |
| @@ -269,6 +271,11 @@ |
| m = /^numTests=(\d+)$/.exec(parts[i]); |
| if (m) |
| numTests = Number(m[1]); |
| + |
| + if (/^automated$/.exec(parts[i])) |
| + automated = true; |
| + if (/^post_json$/.exec(parts[i])) |
| + post_json = true; |
| } |
| |
| jQuery(function(){ |
| @@ -377,17 +384,28 @@ |
| } |
| |
| } else if ( dataStore && dataStore.length ) { |
| - $("body").addClass("alldone"); |
| - var div = jQuery("<div class='results'>Saving...</div>").insertBefore("#overview"); |
| - jQuery.ajax({ |
| - type: "POST", |
| - url: "store.php", |
| - data: "data=" + encodeURIComponent(JSON.stringify(dataStore)) + "&style=" + runStyle, |
| - success: function(id){ |
| - var url = window.location.href.replace(/\?.*$/, "") + "?id=" + id; |
| - div.html("Results saved. You can access them at a later time at the following URL:<br/><strong><a href='" + url + "'>" + url + "</a></strong></div>"); |
| - } |
| - }); |
| + if (!automated) { |
| + $("body").addClass("alldone"); |
| + var div = jQuery("<div class='results'>Saving...</div>").insertBefore("#overview"); |
| + jQuery.ajax({ |
| + type: "POST", |
| + url: "store.php", |
| + data: "data=" + encodeURIComponent(JSON.stringify(dataStore)) + "&style=" + runStyle, |
| + success: function(id){ |
| + var url = window.location.href.replace(/\?.*$/, "") + "?id=" + id; |
| + div.html("Results saved. You can access them at a later time at the following URL:<br/><strong><a href='" + url + "'>" + url + "</a></strong></div>"); |
| + } |
| + }); |
| + } else if (post_json) { |
| + jQuery.ajax({ |
| + type: "POST", |
| + url: "store.php", |
| + data: "data=" + encodeURIComponent(JSON.stringify(window.automation.GetResults())) |
| + }); |
| + } |
| + else { |
| + window.automation.SetDone(); |
| + } |
| } |
| } |
| } |
| @@ -406,20 +424,28 @@ |
| time += timePerTest; |
| updateTime(); |
| |
| - $("#pause") |
| - .val("Run") |
| - .click(function(){ |
| - if ( interval ) { |
| - interval = null; |
| - this.value = "Run"; |
| - } else { |
| - if ( !interval ) { |
| - interval = true; |
| - dequeue(); |
| + if (!automated) { |
| + $("#pause") |
| + .val("Run") |
| + .click(function(){ |
| + if ( interval ) { |
| + interval = null; |
| + this.value = "Run"; |
| + } else { |
| + if ( !interval ) { |
| + interval = true; |
| + dequeue(); |
| + } |
| + this.value = "Pause"; |
| } |
| - this.value = "Pause"; |
| - } |
| - }); |
| + }); |
| + } else { |
| + $("#pause") |
| + .val("Automated") |
| + .click(function(){}); |
| + interval = true; |
| + dequeue(); |
| + } |
| |
| if ( window.limitSearch ) { |
| $("#pause").click(); |
| @@ -778,4 +804,45 @@ |
| |
| updateTestPos({curID: testID, collection: tests[testID] ? tests[testID].name : testID, version: testVersions[testID]}, true); |
| } |
| + |
| + if (automated) { |
| + // Add some more stuff if running in automated mode. |
| + window.automation = {} |
| + window.automation.SetDone = function() { |
| + console.log("Total: " + this.GetScore()); |
| + window.document.cookie = "__done=1; path=/"; |
| + } |
| + window.automation.GetScore = function() { |
| + return (runStyle === "runs/s" ? Math.pow(Math.E, maxTotal / maxTotalNum) : maxTotal).toString(); |
| + } |
| + window.automation.GetResults = function() { |
| + var results = {}; |
| + var aggregated = {}; |
| + function normalizeName(name) { |
| + // At least for ui_tests, dots are not allowed. |
| + return name.replace(".", "_"); |
| + } |
| + function appendToAggregated(name, value) { |
| + name = normalizeName(name); |
| + (aggregated[name] || (aggregated[name] = [])).push(Math.log(value)); |
| + } |
| + |
| + for (var i = 0; i < dataStore.length; i++) { |
| + var data = dataStore[i]; |
| + var topName = data.collection.split("-", 1)[0]; |
| + appendToAggregated(topName, data.mean); |
| + appendToAggregated(data.collection, data.mean); |
| + results[normalizeName(data.collection + "/" + data.name)] = data.mean.toString(); |
| + } |
| + |
| + for (var name in aggregated) { |
| + var means = aggregated[name]; |
| + var sum = 0; |
| + for (var i = 0; i < means.length; i++) sum += means[i]; |
| + results[name] = Math.pow(Math.E, sum/means.length).toString(); |
| + } |
| + |
| + return results; |
| + } |
| + } |
| })(); |
| -- |
| 2.8.0.rc3.226.g39d4020 |
| |