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

Unified Diff: runtime/observatory/tests/service/test_helper.dart

Issue 2438613002: Provide an API to dart:developer to control the web server hosting the Service Protocol (Closed)
Patch Set: CHANGELOG.md merge and fatal error Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: runtime/observatory/tests/service/test_helper.dart
diff --git a/runtime/observatory/tests/service/test_helper.dart b/runtime/observatory/tests/service/test_helper.dart
index 63b8fc2bb97231c11cc4683971353398e2bed074..b498f4a0b8bc0c42a8e62a1391408f0910154bcd 100644
--- a/runtime/observatory/tests/service/test_helper.dart
+++ b/runtime/observatory/tests/service/test_helper.dart
@@ -91,25 +91,29 @@ class _ServiceTesteeLauncher {
bool pause_on_exit,
bool pause_on_unhandled_exceptions,
bool trace_service,
- bool trace_compiler) {
+ bool trace_compiler,
+ bool testeeControlsServer) {
assert(pause_on_start != null);
assert(pause_on_exit != null);
assert(pause_on_unhandled_exceptions != null);
assert(trace_service != null);
assert(trace_compiler != null);
+ assert(testeeControlsServer != null);
if (_shouldLaunchSkyShell()) {
return _spawnSkyProcess(pause_on_start,
pause_on_exit,
pause_on_unhandled_exceptions,
trace_service,
- trace_compiler);
+ trace_compiler,
+ testeeControlsServer);
} else {
return _spawnDartProcess(pause_on_start,
pause_on_exit,
pause_on_unhandled_exceptions,
trace_service,
- trace_compiler);
+ trace_compiler,
+ testeeControlsServer);
}
}
@@ -117,7 +121,8 @@ class _ServiceTesteeLauncher {
bool pause_on_exit,
bool pause_on_unhandled_exceptions,
bool trace_service,
- bool trace_compiler) {
+ bool trace_compiler,
+ bool testeeControlsServer) {
assert(!_shouldLaunchSkyShell());
String dartExecutable = Platform.executable;
@@ -141,7 +146,9 @@ class _ServiceTesteeLauncher {
}
fullArgs.addAll(Platform.executableArguments);
- fullArgs.add('--enable-vm-service:0');
+ if (!testeeControlsServer) {
+ fullArgs.add('--enable-vm-service:0');
+ }
fullArgs.addAll(args);
return _spawnCommon(dartExecutable, fullArgs);
@@ -179,7 +186,9 @@ class _ServiceTesteeLauncher {
dartFlags.add('--enable_mirrors=true');
fullArgs.addAll(Platform.executableArguments);
- fullArgs.add('--observatory-port=0');
+ if (!testeeControlsServer) {
+ fullArgs.add('--observatory-port=0');
+ }
fullArgs.add('--dart-flags=${dartFlags.join(' ')}');
fullArgs.addAll(args);
@@ -194,37 +203,38 @@ class _ServiceTesteeLauncher {
return Process.start(executable, arguments, environment: environment);
}
- Future<int> launch(bool pause_on_start,
+ Future<Uri> launch(bool pause_on_start,
bool pause_on_exit,
bool pause_on_unhandled_exceptions,
bool trace_service,
- bool trace_compiler) {
+ bool trace_compiler,
+ bool testeeControlsServer) {
return _spawnProcess(pause_on_start,
pause_on_exit,
pause_on_unhandled_exceptions,
trace_service,
- trace_compiler).then((p) {
- Completer completer = new Completer();
+ trace_compiler,
+ testeeControlsServer).then((p) {
+ Completer<Uri> completer = new Completer<Uri>();
process = p;
- var portNumber;
+ Uri uri;
var blank;
var first = true;
process.stdout.transform(UTF8.decoder)
.transform(new LineSplitter()).listen((line) {
- if (line.startsWith('Observatory listening on http://')) {
- RegExp portExp = new RegExp(r"\d+.\d+.\d+.\d+:(\d+)");
- var port = portExp.firstMatch(line).group(1);
- portNumber = int.parse(port);
+ const kObservatoryListening = 'Observatory listening on ';
+ if (line.startsWith(kObservatoryListening)) {
+ uri = Uri.parse(line.substring(kObservatoryListening.length));
}
if (pause_on_start || line == '') {
// Received blank line.
blank = true;
}
- if (portNumber != null && blank == true && first == true) {
- completer.complete(portNumber);
+ if ((uri != null) && (blank == true) && (first == true)) {
+ completer.complete(uri);
// Stop repeat completions.
first = false;
- print('** Signaled to run test queries on $portNumber');
+ print('** Signaled to run test queries on $uri');
}
print('>testee>out> $line');
});
@@ -250,62 +260,11 @@ class _ServiceTesteeLauncher {
}
}
-// A tester runner that doesn't spawn a process but instead connects to
-// an already running flutter application running on a device. Assumes
-// port 8100. This is only useful for debugging.
-class _FlutterDeviceServiceTesterRunner {
- void run({List<String> mainArgs,
- List<VMTest> vmTests,
- List<IsolateTest> isolateTests,
- bool pause_on_start: false,
- bool pause_on_exit: false,
- bool trace_service: false,
- bool trace_compiler: false,
- bool verbose_vm: false,
- bool pause_on_unhandled_exceptions: false}) {
- var port = 8100;
- serviceWebsocketAddress = 'ws://localhost:$port/ws';
- serviceHttpAddress = 'http://localhost:$port';
- var name = Platform.script.pathSegments.last;
- Chain.capture(() async {
- var vm =
- new WebSocketVM(new WebSocketVMTarget(serviceWebsocketAddress));
- print('Loading VM...');
- await vm.load();
- print('Done loading VM');
-
- // Run vm tests.
- if (vmTests != null) {
- var testIndex = 1;
- var totalTests = vmTests.length;
- for (var test in vmTests) {
- vm.verbose = verbose_vm;
- print('Running $name [$testIndex/$totalTests]');
- testIndex++;
- await test(vm);
- }
- }
-
- // Run isolate tests.
- if (isolateTests != null) {
- var isolate = await vm.isolates.first.load();
- var testIndex = 1;
- var totalTests = isolateTests.length;
- for (var test in isolateTests) {
- vm.verbose = verbose_vm;
- print('Running $name [$testIndex/$totalTests]');
- testIndex++;
- await test(isolate);
- }
- }
- }, onError: (error, stackTrace) {
- print('Unexpected exception in service tests: $error\n$stackTrace');
- });
- }
-}
-
-void suppressWarning() {
- new _FlutterDeviceServiceTesterRunner();
+void setupAddresses(Uri serverAddress) {
+ serviceWebsocketAddress =
+ 'ws://${serverAddress.authority}${serverAddress.path}ws';
+ serviceHttpAddress =
+ 'http://${serverAddress.authority}${serverAddress.path}';
}
class _ServiceTesterRunner {
@@ -317,19 +276,20 @@ class _ServiceTesterRunner {
bool trace_service: false,
bool trace_compiler: false,
bool verbose_vm: false,
- bool pause_on_unhandled_exceptions: false}) {
+ bool pause_on_unhandled_exceptions: false,
+ bool testeeControlsServer: false}) {
var process = new _ServiceTesteeLauncher();
process.launch(pause_on_start, pause_on_exit,
pause_on_unhandled_exceptions,
- trace_service, trace_compiler).then((port) async {
+ trace_service, trace_compiler,
+ testeeControlsServer).then((Uri serverAddress) async {
if (mainArgs.contains("--gdb")) {
var pid = process.process.pid;
var wait = new Duration(seconds: 10);
print("Testee has pid $pid, waiting $wait before continuing");
sleep(wait);
}
- serviceWebsocketAddress = 'ws://localhost:$port/ws';
- serviceHttpAddress = 'http://localhost:$port';
+ setupAddresses(serverAddress);
var name = Platform.script.pathSegments.last;
Chain.capture(() async {
var vm =
@@ -386,7 +346,8 @@ Future runIsolateTests(List<String> mainArgs,
bool trace_service: false,
bool trace_compiler: false,
bool verbose_vm: false,
- bool pause_on_unhandled_exceptions: false}) async {
+ bool pause_on_unhandled_exceptions: false,
+ bool testeeControlsServer: false}) async {
assert(!pause_on_start || testeeBefore == null);
if (_isTestee()) {
new _ServiceTesteeRunner().run(testeeBefore: testeeBefore,
@@ -402,7 +363,8 @@ Future runIsolateTests(List<String> mainArgs,
trace_service: trace_service,
trace_compiler: trace_compiler,
verbose_vm: verbose_vm,
- pause_on_unhandled_exceptions: pause_on_unhandled_exceptions);
+ pause_on_unhandled_exceptions: pause_on_unhandled_exceptions,
+ testeeControlsServer: testeeControlsServer);
}
}
« no previous file with comments | « runtime/observatory/tests/service/developer_server_control_test.dart ('k') | runtime/vm/bootstrap_natives.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698