Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(39)

Side by Side Diff: samples/third_party/dromaeo/htmlrunner.js

Issue 199003005: Package-ify Dromaeo and browser controller functionality (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // An version of Dromaeo's original htmlrunner adapted for the
2 // Dart-based test driver.
3
4 var _operations = [];
5 var _N_RUNS = 5;
6 var _nRanTests = 0;
7 var _nTests = 0;
8 var _T_DISTRIBUTION = 2.776;
9
10 function startTest() {
11 window.addEventListener(
12 'message',
13 function (event) {
14 if (event.data == 'start') {
15 _run();
16 } else {
17 window.alert('Unknown command: ' + event.data);
18 }
19 },
20 false);
21 }
22
23 function _run() {
24 var currentOperation = 0;
25 function handler() {
26 if (currentOperation < _operations.length) {
27 _operations[currentOperation]();
28 currentOperation++;
29 window.setTimeout(handler, 1);
30 } else {
31 _postMessage('over');
32 }
33 }
34 window.setTimeout(handler, 0);
35 }
36
37 function _postMessage(command, data) {
38 var payload = { 'command': command };
39 if (data) {
40 payload['data'] = data;
41 }
42 window.parent.postMessage(JSON.stringify(payload), '*');
43 }
44
45 function test(name, fn) {
46 _nTests++;
47 _operations.push(function () {
48 // List of number of runs in seconds.
49 var runsPerSecond = [];
50 // Run the test several times.
51 try {
52 // TODO(antonm): use .setTimeout to schedule next run as JS
53 // version does. That allows to report the intermediate results
54 // more smoothly as well.
55 for (var i = 0; i < _N_RUNS; i++) {
56 var runs = 0;
57 var start = Date.now();
58
59 var cur = Date.now();
60 while ((cur - start) < 1000) {
61 fn();
62 cur = Date.now();
63 runs++;
64 }
65
66 runsPerSecond.push((runs * 1000.0) / (cur - start));
67 }
68 } catch(e) {
69 window.alert('Exception : ' + e);
70 return;
71 }
72 _reportTestResults(name, runsPerSecond);
73 });
74 }
75
76 // Adapted from Dromaeo's webrunner.
77 function _compute(times){
78 var results = {runs: times.length}, num = times.length;
79
80 times = times.sort(function(a,b){
81 return a - b;
82 });
83
84 // Make Sum
85 results.sum = 0;
86
87 for ( var i = 0; i < num; i++ )
88 results.sum += times[i];
89
90 // Make Min
91 results.min = times[0];
92
93 // Make Max
94 results.max = times[ num - 1 ];
95
96 // Make Mean
97 results.mean = results.sum / num;
98
99 // Make Median
100 results.median = num % 2 == 0 ?
101 (times[Math.floor(num/2)] + times[Math.ceil(num/2)]) / 2 :
102 times[Math.round(num/2)];
103
104 // Make Variance
105 results.variance = 0;
106
107 for ( var i = 0; i < num; i++ )
108 results.variance += Math.pow(times[i] - results.mean, 2);
109
110 results.variance /= num - 1;
111
112 // Make Standard Deviation
113 results.deviation = Math.sqrt( results.variance );
114
115 // Compute Standard Errors Mean
116 results.sem = (results.deviation / Math.sqrt(results.runs)) * _T_DISTRIBUTION;
117
118 // Error
119 results.error = ((results.sem / results.mean) * 100) || 0;
120
121 return results;
122 }
123
124 function _reportTestResults(name, times) {
125 _nRanTests++;
126 var results = _compute(times);
127
128 _postMessage('result', {
129 'testName': name,
130 'mean': results.mean,
131 'error': results.error,
132 'percent': (100.0 * _nRanTests / _nTests)
133 });
134 }
135
136 function endTest() {
137 _postMessage('inited', { 'nTests': _nTests });
138 }
139
140 function prep(fn) {
141 _operations.push(fn);
142 }
OLDNEW
« no previous file with comments | « samples/third_party/dromaeo/generate_perf_and_dart2js_tests.py ('k') | samples/third_party/dromaeo/images/bg.png » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698