| Index: runtime/observatory/tests/service/isolate_lifecycle_test.dart
|
| diff --git a/runtime/observatory/tests/service/isolate_lifecycle_test.dart b/runtime/observatory/tests/service/isolate_lifecycle_test.dart
|
| index dbacef87ea403cc3d13fbb1c5eb333ad4174591e..2160d0c78f414b058a34c24420c91bbec76c1511 100644
|
| --- a/runtime/observatory/tests/service/isolate_lifecycle_test.dart
|
| +++ b/runtime/observatory/tests/service/isolate_lifecycle_test.dart
|
| @@ -40,29 +40,21 @@ int numPaused(vm) {
|
| return paused;
|
| }
|
|
|
| -int numRunning(vm) {
|
| - int running = 0;
|
| - for (var isolate in vm.isolates) {
|
| - if (!isolate.paused) {
|
| - running++;
|
| - }
|
| - }
|
| - return running;
|
| -}
|
| -
|
| var tests = [
|
| (VM vm) async {
|
| - // Wait for the testee to start all of the isolates.
|
| - if (vm.isolates.length != spawnCount + 1) {
|
| - await processServiceEvents(vm, VM.kIsolateStream,
|
| - (event, sub, completer) {
|
| + Completer completer = new Completer();
|
| + var stream = await vm.getEventStream(VM.kIsolateStream);
|
| + if (vm.isolates.length < spawnCount + 1) {
|
| + var subscription;
|
| + subscription = stream.listen((ServiceEvent event) {
|
| if (event.kind == ServiceEvent.kIsolateStart) {
|
| - if (vm.isolates.length == spawnCount + 1) {
|
| - sub.cancel();
|
| + if (vm.isolates.length == (spawnCount + 1)) {
|
| + subscription.cancel();
|
| completer.complete(null);
|
| }
|
| }
|
| });
|
| + await completer.future;
|
| }
|
| expect(vm.isolates.length, spawnCount + 1);
|
| },
|
| @@ -75,35 +67,40 @@ var tests = [
|
| },
|
|
|
| (VM vm) async {
|
| - // Wait for all spawned isolates to hit pause-at-exit.
|
| - if (numPaused(vm) != spawnCount) {
|
| - await processServiceEvents(vm, VM.kDebugStream,
|
| - (event, sub, completer) {
|
| + Completer completer = new Completer();
|
| + var stream = await vm.getEventStream(VM.kDebugStream);
|
| + if (numPaused(vm) < spawnCount) {
|
| + var subscription;
|
| + subscription = stream.listen((ServiceEvent event) {
|
| if (event.kind == ServiceEvent.kPauseExit) {
|
| - if (numPaused(vm) == spawnCount) {
|
| - sub.cancel();
|
| + if (numPaused(vm) == (spawnCount + 1)) {
|
| + subscription.cancel();
|
| completer.complete(null);
|
| }
|
| }
|
| });
|
| + await completer.future;
|
| }
|
| - expect(numPaused(vm), spawnCount);
|
| - expect(numRunning(vm), 1);
|
| + expect(numPaused(vm), spawnCount + 1);
|
| },
|
|
|
|
|
| (VM vm) async {
|
| var resumedReceived = 0;
|
| - var eventsDone = processServiceEvents(vm, VM.kIsolateStream,
|
| - (event, sub, completer) {
|
| + Completer completer = new Completer();
|
| + var stream = await vm.getEventStream(VM.kIsolateStream);
|
| + var subscription;
|
| + subscription = stream.listen((ServiceEvent event) {
|
| if (event.kind == ServiceEvent.kIsolateExit) {
|
| resumedReceived++;
|
| - if (resumedReceived == resumeCount) {
|
| - sub.cancel();
|
| + if (resumedReceived >= resumeCount) {
|
| + subscription.cancel();
|
| completer.complete(null);
|
| }
|
| }
|
| });
|
| +
|
| + // Resume a subset of the isolates.
|
| var resumesIssued = 0;
|
| var isolateList = vm.isolates.toList();
|
| for (var isolate in isolateList) {
|
| @@ -118,12 +115,11 @@ var tests = [
|
| break;
|
| }
|
| }
|
| - return eventsDone;
|
| + await completer.future;
|
| },
|
|
|
| (VM vm) async {
|
| - expect(numPaused(vm), spawnCount - resumeCount);
|
| - expect(numRunning(vm), 1);
|
| + expect(numPaused(vm), spawnCount + 1 - resumeCount);
|
| },
|
| ];
|
|
|
|
|