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

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

Issue 1285643004: Allow stepping when paused at isolate start. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 4 months 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/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);
},
];

Powered by Google App Engine
This is Rietveld 408576698