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); |
}, |
]; |