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 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
157 } | 157 } |
158 } | 158 } |
159 | 159 |
160 | 160 |
161 Future<Isolate> hasStoppedAtBreakpoint(Isolate isolate) { | 161 Future<Isolate> hasStoppedAtBreakpoint(Isolate isolate) { |
162 // Set up a listener to wait for breakpoint events. | 162 // Set up a listener to wait for breakpoint events. |
163 Completer completer = new Completer(); | 163 Completer completer = new Completer(); |
164 isolate.vm.getEventStream(VM.kDebugStream).then((stream) { | 164 isolate.vm.getEventStream(VM.kDebugStream).then((stream) { |
165 var subscription; | 165 var subscription; |
166 subscription = stream.listen((ServiceEvent event) { | 166 subscription = stream.listen((ServiceEvent event) { |
167 print("Event: $event"); | |
168 if (event.kind == ServiceEvent.kPauseBreakpoint) { | 167 if (event.kind == ServiceEvent.kPauseBreakpoint) { |
169 print('Breakpoint reached'); | 168 print('Breakpoint reached'); |
170 subscription.cancel(); | 169 subscription.cancel(); |
171 if (completer != null) { | 170 if (completer != null) { |
172 // Reload to update isolate.pauseEvent. | 171 // Reload to update isolate.pauseEvent. |
173 completer.complete(isolate.reload()); | 172 completer.complete(isolate.reload()); |
174 completer = null; | 173 completer = null; |
175 } | 174 } |
176 } | 175 } |
177 }); | 176 }); |
(...skipping 10 matching lines...) Expand all Loading... |
188 completer = null; | 187 completer = null; |
189 } | 188 } |
190 } | 189 } |
191 }); | 190 }); |
192 }); | 191 }); |
193 | 192 |
194 return completer.future; // Will complete when breakpoint hit. | 193 return completer.future; // Will complete when breakpoint hit. |
195 } | 194 } |
196 | 195 |
197 | 196 |
| 197 Future<Isolate> hasPausedAtStart(Isolate isolate) { |
| 198 // Set up a listener to wait for breakpoint events. |
| 199 Completer completer = new Completer(); |
| 200 isolate.vm.getEventStream(VM.kDebugStream).then((stream) { |
| 201 var subscription; |
| 202 subscription = stream.listen((ServiceEvent event) { |
| 203 if (event.kind == ServiceEvent.kPauseStart) { |
| 204 print('Paused at isolate start'); |
| 205 subscription.cancel(); |
| 206 if (completer != null) { |
| 207 // Reload to update isolate.pauseEvent. |
| 208 completer.complete(isolate.reload()); |
| 209 completer = null; |
| 210 } |
| 211 } |
| 212 }); |
| 213 |
| 214 // Pause may have happened before we subscribed. |
| 215 isolate.reload().then((_) { |
| 216 if ((isolate.pauseEvent != null) && |
| 217 (isolate.pauseEvent.kind == ServiceEvent.kPauseStart)) { |
| 218 print('Paused at isolate start'); |
| 219 subscription.cancel(); |
| 220 if (completer != null) { |
| 221 completer.complete(isolate); |
| 222 completer = null; |
| 223 } |
| 224 } |
| 225 }); |
| 226 }); |
| 227 |
| 228 return completer.future; |
| 229 } |
| 230 |
| 231 |
198 // Currying is your friend. | 232 // Currying is your friend. |
199 IsolateTest setBreakpointAtLine(int line) { | 233 IsolateTest setBreakpointAtLine(int line) { |
200 return (Isolate isolate) async { | 234 return (Isolate isolate) async { |
201 print("Setting breakpoint for line $line"); | 235 print("Setting breakpoint for line $line"); |
202 Library lib = await isolate.rootLibrary.load(); | 236 Library lib = await isolate.rootLibrary.load(); |
203 Script script = lib.scripts.single; | 237 Script script = lib.scripts.single; |
204 | 238 |
205 Breakpoint bpt = await isolate.addBreakpoint(script, line); | 239 Breakpoint bpt = await isolate.addBreakpoint(script, line); |
206 print("Breakpoint is $bpt"); | 240 print("Breakpoint is $bpt"); |
207 expect(bpt, isNotNull); | 241 expect(bpt, isNotNull); |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
327 }, onError: (e, st) { | 361 }, onError: (e, st) { |
328 process.requestExit(); | 362 process.requestExit(); |
329 if (!_isWebSocketDisconnect(e)) { | 363 if (!_isWebSocketDisconnect(e)) { |
330 print('Unexpected exception in service tests: $e $st'); | 364 print('Unexpected exception in service tests: $e $st'); |
331 throw e; | 365 throw e; |
332 } | 366 } |
333 }); | 367 }); |
334 }); | 368 }); |
335 } | 369 } |
336 } | 370 } |
OLD | NEW |