Index: tools/testing/dart/browser_perf_testing/lib/browser_perf_testing.dart |
diff --git a/tools/testing/dart/browser_perf_testing/lib/browser_perf_testing.dart b/tools/testing/dart/browser_perf_testing/lib/browser_perf_testing.dart |
deleted file mode 100644 |
index 2a79ab81ab5a650bf48d9f54b2babdd0ce00d949..0000000000000000000000000000000000000000 |
--- a/tools/testing/dart/browser_perf_testing/lib/browser_perf_testing.dart |
+++ /dev/null |
@@ -1,146 +0,0 @@ |
-// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-/// Dart script to launch performance tests without WebDriver/Selenium. |
-/// |
-/// WARNING: Although this is laid out like a package, it is not really a |
-/// package since it relies on test.dart files! |
-library browser_perf_testing; |
- |
-import '../../browser_controller.dart'; |
-import '../../utils.dart'; |
-import '../../http_server.dart'; |
-import 'dart:async'; |
-import 'dart:io'; |
-import 'dart:convert'; |
-import 'package:path/path.dart' as path; |
-import 'package:args/args.dart' as args_parser; |
- |
-final String ADDRESS = '127.0.0.1'; |
- |
-/// A map that is passed to the testing framework to specify what ports the |
-/// browser controller runs on. |
-final Map SERVER_CONFIG = { |
- 'test_driver_port': 0, |
- 'test_driver_error_port': 0 |
-}; |
- |
-void main (List<String> args) { |
- var options = _parseArguments(args); |
- |
- // Start a server to serve the entire repo: the http server is available on |
- // window.location.port. |
- var servers = new TestingServers( |
- new Path('/Users/efortuna/dart-git2/dart/xcodebuild/ReleaseIA32'), |
- false, options['browser'], path.dirname(path.dirname(path.dirname( |
- path.dirname(path.dirname(path.dirname(Platform.script.path))))))); |
- servers.startServers(ADDRESS).then((_) { |
- _runPerfTests(options, servers); |
- }); |
-} |
- |
-/// Helper function to parse the arguments for this file. |
-Map _parseArguments(List<String> args) { |
- var parser = new args_parser.ArgParser(); |
- parser.addOption('browser', defaultsTo: 'chrome', help: 'Name of the browser' |
- ' to run this test with.'); |
- parser.addOption('termination_test_file', defaultsTo: |
- '/root_dart/samples/third_party/dromaeo/dromaeo_end_condition.js', |
- help: 'Path to a javascript file that contains the function ' |
- '"testIsComplete" tests whether the performance test has finished ' |
- 'running. This is in a form that can be served up by ' |
- 'http_server.dart, so it begins with /root_dart or some other server ' |
- 'understood prefix.'); |
- parser.addOption('test_path', defaultsTo: |
- '/root_dart/samples/third_party/dromaeo/index-js.html?jsANDqueryORjs' |
- 'ANDtraverseORjsANDattributes', help: 'Path to the performance test we ' |
- 'wish to run. This is in a form that can be served up by ' |
- 'http_server.dart, so it begins with /root_dart or some other server ' |
- 'understood prefix.'); |
- parser.addOption('checked', defaultsTo: false, |
- help: 'Run this test in checked mode.'); |
- parser.addFlag('help', abbr: 'h', negatable: false, callback: (help) { |
- if (help) { |
- print(parser.getUsage()); |
- exit(0); |
- }; |
- }); |
- parser.addOption('timeout', defaultsTo: 300, |
- help: 'Maximum amount of time to let a test run, in seconds.'); |
- return parser.parse(args); |
-} |
- |
-void _runPerfTests(Map options, TestingServers servers) { |
- var browserName = options['browser']; |
- |
- var testRunner = new BrowserTestRunner(SERVER_CONFIG, ADDRESS, browserName, 1, |
- checkedMode: options['checked'], |
- testingServer: new BrowserPerfTestingServer(browserName, |
- options['termination_test_file'], servers.port)); |
- |
- var url = 'http://$ADDRESS:${servers.port}${options["test_path"]}'; |
- |
- BrowserTest browserTest = new BrowserTest(url, |
- (BrowserTestOutput output) { |
- var eventQueue = JSON.decode(output.lastKnownMessage); |
- var lastEvent = eventQueue.last; |
- var lines = lastEvent['value'].split('\n'); |
- for (var line in lines) { |
- print(line); |
- } |
- testRunner.terminate(); |
- servers.stopServers(); |
- }, options['timeout']); |
- |
- testRunner.start().then((started) { |
- if (started) { |
- testRunner.queueTest(browserTest); |
- } else { |
- print("Issue starting browser test runner $started"); |
- exit(1); |
- } |
- }); |
-} |
- |
-/// Server for controlling and running performance tests. Note the tests |
-/// themselves are served on the local file system (to eliminate any additional |
-/// potential sources of lag), but we need a server to communicate when the test |
-/// is done. |
-class BrowserPerfTestingServer extends BrowserTestingServer { |
- // Path to the script containing the ending condition of the performance test, |
- // in the form of /root_dart, /root_build, or some other, as per the form of |
- // url expected from http_server.dart. |
- String endConditionScript; |
- /// Port number to access the server serving the whole Dart repository. |
- int repoPort; |
- |
- BrowserPerfTestingServer(String browserName, this.endConditionScript, |
- this.repoPort) : super(SERVER_CONFIG, ADDRESS, |
- !Browser.BROWSERS_WITH_WINDOW_SUPPORT.contains(browserName)); |
- |
- /// We create a slightly modified version of the original browser_controller |
- /// driver page. |
- String getDriverPage(String browserId) { |
- var orig = super.getDriverPage(browserId); |
- //TODO(efortuna): Hacky! |
- var insertIndex = orig.indexOf('<script type'); |
- var otherInsert = orig.indexOf('} else {', |
- orig.indexOf('if (isStatusUpdate)')); |
- var result = orig.substring(0, insertIndex) + """ |
- <!-- To create a performance test, you must write a script that provides an |
- ending condition for the particular test, in the form /root_dart/foo (or |
- whatever base from http_server). // TODO not hard code.--> |
- <script src="http://$localIp:$repoPort$endConditionScript"></script> |
-""" + orig.substring(insertIndex, otherInsert) + """ |
- if (testIsComplete(msg)) { |
- var obj = new Object(); |
- obj['message'] = msg; |
- obj['is_first_message'] = false; |
- obj['is_status_update'] = false; |
- obj['is_done'] = true; |
- window.postMessage(JSON.stringify(obj), '*'); |
- }""" + orig.substring(otherInsert); |
- return result; |
- } |
-} |