Index: client/dom/benchmarks/dromaeo/Dromaeo.dart |
diff --git a/client/dom/benchmarks/dromaeo/Dromaeo.dart b/client/dom/benchmarks/dromaeo/Dromaeo.dart |
deleted file mode 100644 |
index 286568ce88e3e3aaed8cbf76c4021cdb869d8524..0000000000000000000000000000000000000000 |
--- a/client/dom/benchmarks/dromaeo/Dromaeo.dart |
+++ /dev/null |
@@ -1,206 +0,0 @@ |
-#import('dart:dom'); |
-#import('dart:json'); |
-#import('Suites.dart'); |
- |
-main() { |
- new Dromaeo().run(); |
-} |
- |
-class SuiteController { |
- final SuiteDescription _suiteDescription; |
- final HTMLIFrameElement _suiteIframe; |
- |
- HTMLDivElement _element; |
- double _meanProduct; |
- int _nTests; |
- |
- SuiteController(this._suiteDescription, this._suiteIframe) |
- : _meanProduct = 1.0, |
- _nTests = 0 { |
- _make(); |
- _init(); |
- } |
- |
- start() { |
- _suiteIframe.contentWindow.dynamic.postMessage('start', '*'); |
- } |
- |
- update(String testName, num mean, num error, double percent) { |
- _meanProduct *= mean; |
- _nTests++; |
- |
- final meanAsString = mean.toStringAsFixed(2); |
- final errorAsString = error.toStringAsFixed(2); |
- final HTMLElement progressDisplay = _element.nextSibling.nextSibling; |
- progressDisplay.innerHTML += |
- '<li><b>${testName}:</b>' + |
- '${meanAsString}<small> runs/s ±${errorAsString}%<small></li>'; |
- _updateTestPos(percent); |
- } |
- |
- _make() { |
- _element = _createDiv('test'); |
- // TODO(antonm): add an onclick functionality. |
- _updateTestPos(); |
- } |
- |
- _updateTestPos([double percent = 1.0]) { |
- String suiteName = _suiteDescription.name; |
- final done = percent >= 100.0; |
- String info = ''; |
- if (done) { |
- final parent = _element.parentNode; |
- parent.setAttribute('class', parent.getAttribute('class') + ' done'); |
- final mean = Math.pow(_meanProduct, 1.0 / _nTests).toStringAsFixed(2); |
- info = '<span>${mean} runs/s</span>'; |
- } |
- _element.innerHTML = |
- '<b>${suiteName}:</b>' + |
- '<div class="bar"><div style="width:${percent}%;">${info}</div></div>'; |
- } |
- |
- _init() { |
- final div = _createDiv('result-item'); |
- div.appendChild(_element); |
- final description = _suiteDescription.description; |
- final originUrl = _suiteDescription.origin.url; |
- final testUrl = 'tests/' + _suiteDescription.file; |
- div.innerHTML += |
- '<p>${description}<br/><a href="${originUrl}">Origin</a>' + |
- ', <a href="${testUrl}">Source</a>' + |
- '<ol class="results"></ol>'; |
- // Reread the element, as the previous wrapper get disconnected thanks |
- // to .innerHTML update above. |
- _element = div.firstChild; |
- |
- document.getElementById('main').appendChild(div); |
- } |
- |
- HTMLDivElement _createDiv(String clazz) { |
- final div = document.createElement('div'); |
- div.setAttribute('class', clazz); |
- return div; |
- } |
-} |
- |
-class Dromaeo { |
- final List<SuiteController> _suiteControllers; |
- Function _handler; |
- |
- Dromaeo() |
- : _suiteControllers = new List<SuiteController>() |
- { |
- _handler = _createHandler(); |
- window.addEventListener( |
- 'message', |
- (MessageEvent event) { |
- try { |
- final response = JSON.parse(event.data); |
- _handler = _handler(response['command'], response['data']); |
- } catch (final e, final stacktrace) { |
- window.alert('Exception: ${e}: ${stacktrace}'); |
- } |
- }, |
- false |
- ); |
- } |
- |
- run() { |
- // TODO(antonm): create Re-run tests href. |
- final HTMLElement suiteNameElement = _byId('overview').firstChild; |
- suiteNameElement.innerHTML = 'DOM Core Tests'; |
- _css(_byId('tests'), 'display', 'none'); |
- for (SuiteDescription suite in Suites.SUITE_DESCRIPTIONS) { |
- final iframe = document.createElement('iframe'); |
- _css(iframe, 'height', '1px'); |
- _css(iframe, 'width', '1px'); |
- iframe.src = 'tests/' + suite.file; |
- document.body.appendChild(iframe); |
- |
- _suiteControllers.add(new SuiteController(suite, iframe)); |
- } |
- } |
- |
- static final double _SECS_PER_TEST = 5.0; |
- |
- Function _createHandler() { |
- int suitesLoaded = 0; |
- int totalTests = 0; |
- int currentSuite; |
- double totalTimeSecs, estimatedTimeSecs; |
- |
- // TODO(jat): Remove void type below. Bug 5269037. |
- void _updateTime() { |
- final mins = (estimatedTimeSecs / 60).floor().toInt(); |
- final secs = (estimatedTimeSecs - mins * 60).round().toInt(); |
- final secsAsString = (secs < 10 ? '0' : '') + secs; |
- _byId('left').innerHTML = '${mins}:${secsAsString}'; |
- |
- final elapsed = totalTimeSecs - estimatedTimeSecs; |
- final percent = (100 * elapsed / totalTimeSecs).toStringAsFixed(2); |
- _css(_byId('timebar'), 'width', '${percent}%'); |
- } |
- |
- Function loading, running, done; |
- |
- loading = (String command, var data) { |
- assert(command == 'inited'); |
- suitesLoaded++; |
- totalTests += data['nTests']; |
- if (suitesLoaded == _suitesTotal) { |
- totalTimeSecs = estimatedTimeSecs = _SECS_PER_TEST * totalTests; |
- _updateTime(); |
- currentSuite = 0; |
- _suiteControllers[currentSuite].start(); |
- return running; |
- } |
- |
- return loading; |
- }; |
- |
- running = (String command, var data) { |
- switch (command) { |
- case 'result': |
- final testName = data['testName']; |
- final mean = data['mean']; |
- final error = data['error']; |
- final percent = data['percent']; |
- _suiteControllers[currentSuite].update(testName, mean, error, percent); |
- estimatedTimeSecs -= _SECS_PER_TEST; |
- _updateTime(); |
- return running; |
- |
- case 'over': |
- currentSuite++; |
- if (currentSuite < _suitesTotal) { |
- _suiteControllers[currentSuite].start(); |
- return running; |
- } |
- document.body.setAttribute('class', 'alldone'); |
- return done; |
- |
- default: |
- throw 'Unknown command ${command} [${data}]'; |
- } |
- }; |
- |
- done = (String command, var data) { |
- }; |
- |
- return loading; |
- } |
- |
- _css(Element element, String property, String value) { |
- // TODO(antonm): remove the last argument when CallWithDefaultValue |
- // is implemented. |
- element.style.setProperty(property, value, ''); |
- } |
- |
- HTMLElement _byId(String id) { |
- return document.getElementById(id); |
- } |
- |
- int get _suitesTotal() { |
- return _suiteControllers.length; |
- } |
-} |