| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library test_helper; | 5 library test_helper; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:convert'; | 8 import 'dart:convert'; |
| 9 import 'dart:io'; | 9 import 'dart:io'; |
| 10 import 'package:observatory/service_io.dart'; | 10 import 'package:observatory/service_io.dart'; |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 274 List<String> extraArgs, | 274 List<String> extraArgs, |
| 275 List<VMTest> vmTests, | 275 List<VMTest> vmTests, |
| 276 List<IsolateTest> isolateTests, | 276 List<IsolateTest> isolateTests, |
| 277 bool pause_on_start: false, | 277 bool pause_on_start: false, |
| 278 bool pause_on_exit: false, | 278 bool pause_on_exit: false, |
| 279 bool verbose_vm: false, | 279 bool verbose_vm: false, |
| 280 bool pause_on_unhandled_exceptions: false, | 280 bool pause_on_unhandled_exceptions: false, |
| 281 bool testeeControlsServer: false, | 281 bool testeeControlsServer: false, |
| 282 bool useAuthToken: false}) { | 282 bool useAuthToken: false}) { |
| 283 var process = new _ServiceTesteeLauncher(); | 283 var process = new _ServiceTesteeLauncher(); |
| 284 bool testsDone = false; |
| 284 process.launch(pause_on_start, pause_on_exit, | 285 process.launch(pause_on_start, pause_on_exit, |
| 285 pause_on_unhandled_exceptions, | 286 pause_on_unhandled_exceptions, |
| 286 testeeControlsServer, | 287 testeeControlsServer, |
| 287 useAuthToken, extraArgs).then((Uri serverAddress) async { | 288 useAuthToken, extraArgs).then((Uri serverAddress) async { |
| 288 if (mainArgs.contains("--gdb")) { | 289 if (mainArgs.contains("--gdb")) { |
| 289 var pid = process.process.pid; | 290 var pid = process.process.pid; |
| 290 var wait = new Duration(seconds: 10); | 291 var wait = new Duration(seconds: 10); |
| 291 print("Testee has pid $pid, waiting $wait before continuing"); | 292 print("Testee has pid $pid, waiting $wait before continuing"); |
| 292 sleep(wait); | 293 sleep(wait); |
| 293 } | 294 } |
| (...skipping 24 matching lines...) Expand all Loading... |
| 318 var testIndex = 1; | 319 var testIndex = 1; |
| 319 var totalTests = isolateTests.length; | 320 var totalTests = isolateTests.length; |
| 320 for (var test in isolateTests) { | 321 for (var test in isolateTests) { |
| 321 vm.verbose = verbose_vm; | 322 vm.verbose = verbose_vm; |
| 322 print('Running $name [$testIndex/$totalTests]'); | 323 print('Running $name [$testIndex/$totalTests]'); |
| 323 testIndex++; | 324 testIndex++; |
| 324 await test(isolate); | 325 await test(isolate); |
| 325 } | 326 } |
| 326 } | 327 } |
| 327 | 328 |
| 329 print('All service tests completed successfully.'); |
| 330 testsDone = true; |
| 328 await process.requestExit(); | 331 await process.requestExit(); |
| 329 }, onError: (error, stackTrace) { | 332 }, onError: (error, stackTrace) { |
| 330 process.requestExit(); | 333 if (testsDone) { |
| 331 print('Unexpected exception in service tests: $error\n$stackTrace'); | 334 print('Ignoring late exception during process exit:\n' |
| 332 throw error; | 335 '$error\n#stackTrace'); |
| 336 } else { |
| 337 process.requestExit(); |
| 338 print('Unexpected exception in service tests: $error\n$stackTrace'); |
| 339 throw error; |
| 340 } |
| 333 }); | 341 }); |
| 334 }); | 342 }); |
| 335 } | 343 } |
| 336 } | 344 } |
| 337 | 345 |
| 338 /// Runs [tests] in sequence, each of which should take an [Isolate] and | 346 /// Runs [tests] in sequence, each of which should take an [Isolate] and |
| 339 /// return a [Future]. Code for setting up state can run before and/or | 347 /// return a [Future]. Code for setting up state can run before and/or |
| 340 /// concurrently with the tests. Uses [mainArgs] to determine whether | 348 /// concurrently with the tests. Uses [mainArgs] to determine whether |
| 341 /// to run tests or testee in this invokation of the script. | 349 /// to run tests or testee in this invokation of the script. |
| 342 Future runIsolateTests(List<String> mainArgs, | 350 Future runIsolateTests(List<String> mainArgs, |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 429 new _ServiceTesterRunner().run( | 437 new _ServiceTesterRunner().run( |
| 430 mainArgs: mainArgs, | 438 mainArgs: mainArgs, |
| 431 extraArgs: extraArgs, | 439 extraArgs: extraArgs, |
| 432 vmTests: tests, | 440 vmTests: tests, |
| 433 pause_on_start: pause_on_start, | 441 pause_on_start: pause_on_start, |
| 434 pause_on_exit: pause_on_exit, | 442 pause_on_exit: pause_on_exit, |
| 435 verbose_vm: verbose_vm, | 443 verbose_vm: verbose_vm, |
| 436 pause_on_unhandled_exceptions: pause_on_unhandled_exceptions); | 444 pause_on_unhandled_exceptions: pause_on_unhandled_exceptions); |
| 437 } | 445 } |
| 438 } | 446 } |
| OLD | NEW |