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

Side by Side Diff: runtime/observatory/tests/service/debugging_test.dart

Issue 1217823009: Make VM event streams look like real dart streams. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: merge with master Created 5 years, 5 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 // VMOptions=--compile-all --error_on_bad_type --error_on_bad_override 4 // VMOptions=--compile-all --error_on_bad_type --error_on_bad_override
5 5
6 import 'package:observatory/service_io.dart'; 6 import 'package:observatory/service_io.dart';
7 import 'package:unittest/unittest.dart'; 7 import 'package:unittest/unittest.dart';
8 import 'test_helper.dart'; 8 import 'test_helper.dart';
9 import 'dart:async'; 9 import 'dart:async';
10 10
(...skipping 10 matching lines...) Expand all
21 21
22 void startTimer() { 22 void startTimer() {
23 new Timer.periodic(const Duration(milliseconds:10), periodicTask); 23 new Timer.periodic(const Duration(milliseconds:10), periodicTask);
24 } 24 }
25 25
26 var tests = [ 26 var tests = [
27 27
28 // Pause 28 // Pause
29 (Isolate isolate) async { 29 (Isolate isolate) async {
30 Completer completer = new Completer(); 30 Completer completer = new Completer();
31 var stream = await isolate.vm.getEventStream(VM.kDebugStream);
31 var subscription; 32 var subscription;
32 subscription = isolate.vm.events.stream.listen((ServiceEvent event) { 33 subscription = stream.listen((ServiceEvent event) {
33 if (event.kind == ServiceEvent.kPauseInterrupted) { 34 if (event.kind == ServiceEvent.kPauseInterrupted) {
34 subscription.cancel(); 35 subscription.cancel();
35 completer.complete(); 36 completer.complete();
36 } 37 }
37 }); 38 });
38 isolate.pause(); 39 isolate.pause();
39 await completer.future; 40 await completer.future;
40 }, 41 },
41 42
42 // Resume 43 // Resume
43 (Isolate isolate) async { 44 (Isolate isolate) async {
44 Completer completer = new Completer(); 45 Completer completer = new Completer();
46 var stream = await isolate.vm.getEventStream(VM.kDebugStream);
45 var subscription; 47 var subscription;
46 subscription = isolate.vm.events.stream.listen((ServiceEvent event) { 48 subscription = stream.listen((ServiceEvent event) {
47 if (event.kind == ServiceEvent.kResume) { 49 if (event.kind == ServiceEvent.kResume) {
48 subscription.cancel(); 50 subscription.cancel();
49 completer.complete(); 51 completer.complete();
50 } 52 }
51 }); 53 });
52 isolate.resume(); 54 isolate.resume();
53 await completer.future; 55 await completer.future;
54 }, 56 },
55 57
56 // Add breakpoint 58 // Add breakpoint
57 (Isolate isolate) async { 59 (Isolate isolate) async {
58 await isolate.rootLibrary.load(); 60 await isolate.rootLibrary.load();
59 61
60 // Set up a listener to wait for breakpoint events. 62 // Set up a listener to wait for breakpoint events.
61 Completer completer = new Completer(); 63 Completer completer = new Completer();
64 var stream = await isolate.vm.getEventStream(VM.kDebugStream);
62 var subscription; 65 var subscription;
63 subscription = isolate.vm.events.stream.listen((ServiceEvent event) { 66 subscription = stream.listen((ServiceEvent event) {
64 if (event.kind == ServiceEvent.kPauseBreakpoint) { 67 if (event.kind == ServiceEvent.kPauseBreakpoint) {
65 print('Breakpoint reached'); 68 print('Breakpoint reached');
66 subscription.cancel(); 69 subscription.cancel();
67 completer.complete(); 70 completer.complete();
68 } 71 }
69 }); 72 });
70 73
71 var script = isolate.rootLibrary.scripts[0]; 74 var script = isolate.rootLibrary.scripts[0];
72 await script.load(); 75 await script.load();
73 76
(...skipping 17 matching lines...) Expand all
91 94
92 Script script = stack['frames'][0].location.script; 95 Script script = stack['frames'][0].location.script;
93 expect(script.name,endsWith('debugging_test.dart')); 96 expect(script.name,endsWith('debugging_test.dart'));
94 expect(script.tokenToLine(stack['frames'][0].location.tokenPos), equals(15)); 97 expect(script.tokenToLine(stack['frames'][0].location.tokenPos), equals(15));
95 }, 98 },
96 99
97 // Stepping 100 // Stepping
98 (Isolate isolate) async { 101 (Isolate isolate) async {
99 // Set up a listener to wait for breakpoint events. 102 // Set up a listener to wait for breakpoint events.
100 Completer completer = new Completer(); 103 Completer completer = new Completer();
104 var stream = await isolate.vm.getEventStream(VM.kDebugStream);
101 var subscription; 105 var subscription;
102 subscription = isolate.vm.events.stream.listen((ServiceEvent event) { 106 subscription = stream.listen((ServiceEvent event) {
103 if (event.kind == ServiceEvent.kPauseBreakpoint) { 107 if (event.kind == ServiceEvent.kPauseBreakpoint) {
104 print('Breakpoint reached'); 108 print('Breakpoint reached');
105 subscription.cancel(); 109 subscription.cancel();
106 completer.complete(); 110 completer.complete();
107 } 111 }
108 }); 112 });
109 113
110 await isolate.stepOver(); 114 await isolate.stepOver();
111 await completer.future; // Wait for breakpoint events. 115 await completer.future; // Wait for breakpoint events.
112 }, 116 },
113 117
114 // We are now at line 16. 118 // We are now at line 16.
115 (Isolate isolate) async { 119 (Isolate isolate) async {
116 ServiceMap stack = await isolate.getStack(); 120 ServiceMap stack = await isolate.getStack();
117 expect(stack.type, equals('Stack')); 121 expect(stack.type, equals('Stack'));
118 expect(stack['frames'].length, greaterThanOrEqualTo(1)); 122 expect(stack['frames'].length, greaterThanOrEqualTo(1));
119 123
120 Script script = stack['frames'][0].location.script; 124 Script script = stack['frames'][0].location.script;
121 expect(script.name,endsWith('debugging_test.dart')); 125 expect(script.name,endsWith('debugging_test.dart'));
122 expect(script.tokenToLine(stack['frames'][0].location.tokenPos), equals(16)); 126 expect(script.tokenToLine(stack['frames'][0].location.tokenPos), equals(16));
123 }, 127 },
124 128
125 // Remove breakpoint 129 // Remove breakpoint
126 (Isolate isolate) async { 130 (Isolate isolate) async {
127 // Set up a listener to wait for breakpoint events. 131 // Set up a listener to wait for breakpoint events.
128 Completer completer = new Completer(); 132 Completer completer = new Completer();
133 var stream = await isolate.vm.getEventStream(VM.kDebugStream);
129 var subscription; 134 var subscription;
130 subscription = isolate.vm.events.stream.listen((ServiceEvent event) { 135 subscription = stream.listen((ServiceEvent event) {
131 if (event.kind == ServiceEvent.kBreakpointRemoved) { 136 if (event.kind == ServiceEvent.kBreakpointRemoved) {
132 print('Breakpoint removed'); 137 print('Breakpoint removed');
133 expect(isolate.breakpoints.length, equals(0)); 138 expect(isolate.breakpoints.length, equals(0));
134 subscription.cancel(); 139 subscription.cancel();
135 completer.complete(); 140 completer.complete();
136 } 141 }
137 }); 142 });
138 143
139 expect(isolate.breakpoints.length, equals(1)); 144 expect(isolate.breakpoints.length, equals(1));
140 var bpt = isolate.breakpoints.values.first; 145 var bpt = isolate.breakpoints.values.first;
141 await isolate.removeBreakpoint(bpt); 146 await isolate.removeBreakpoint(bpt);
142 await completer.future; 147 await completer.future;
143 }, 148 },
144 149
145 // Resume 150 // Resume
146 (Isolate isolate) async { 151 (Isolate isolate) async {
147 Completer completer = new Completer(); 152 Completer completer = new Completer();
153 var stream = await isolate.vm.getEventStream(VM.kDebugStream);
148 var subscription; 154 var subscription;
149 subscription = isolate.vm.events.stream.listen((ServiceEvent event) { 155 subscription = stream.listen((ServiceEvent event) {
150 if (event.kind == ServiceEvent.kResume) { 156 if (event.kind == ServiceEvent.kResume) {
151 subscription.cancel(); 157 subscription.cancel();
152 completer.complete(); 158 completer.complete();
153 } 159 }
154 }); 160 });
155 isolate.resume(); 161 isolate.resume();
156 await completer.future; 162 await completer.future;
157 }, 163 },
158 164
159 // Add breakpoint at function entry 165 // Add breakpoint at function entry
160 (Isolate isolate) async { 166 (Isolate isolate) async {
161 // Set up a listener to wait for breakpoint events. 167 // Set up a listener to wait for breakpoint events.
162 Completer completer = new Completer(); 168 Completer completer = new Completer();
169 var stream = await isolate.vm.getEventStream(VM.kDebugStream);
163 var subscription; 170 var subscription;
164 subscription = isolate.vm.events.stream.listen((ServiceEvent event) { 171 subscription = stream.listen((ServiceEvent event) {
165 if (event.kind == ServiceEvent.kPauseBreakpoint) { 172 if (event.kind == ServiceEvent.kPauseBreakpoint) {
166 print('Breakpoint reached'); 173 print('Breakpoint reached');
167 subscription.cancel(); 174 subscription.cancel();
168 completer.complete(); 175 completer.complete();
169 } 176 }
170 }); 177 });
171 178
172 // Find a specific function. 179 // Find a specific function.
173 ServiceFunction function = isolate.rootLibrary.functions.firstWhere( 180 ServiceFunction function = isolate.rootLibrary.functions.firstWhere(
174 (f) => f.name == 'periodicTask'); 181 (f) => f.name == 'periodicTask');
(...skipping 18 matching lines...) Expand all
193 expect(stack['frames'].length, greaterThanOrEqualTo(1)); 200 expect(stack['frames'].length, greaterThanOrEqualTo(1));
194 201
195 Script script = stack['frames'][0].location.script; 202 Script script = stack['frames'][0].location.script;
196 expect(script.name,endsWith('debugging_test.dart')); 203 expect(script.name,endsWith('debugging_test.dart'));
197 expect(script.tokenToLine(stack['frames'][0].location.tokenPos), equals(14)); 204 expect(script.tokenToLine(stack['frames'][0].location.tokenPos), equals(14));
198 }, 205 },
199 206
200 ]; 207 ];
201 208
202 main(args) => runIsolateTests(args, tests, testeeBefore: startTimer); 209 main(args) => runIsolateTests(args, tests, testeeBefore: startTimer);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698