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

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

Issue 3006883002: Make service protocol respect isolate lifecycle (Closed)
Patch Set: Created 3 years, 3 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
« no previous file with comments | « no previous file | runtime/observatory/tests/service/service.status » ('j') | runtime/vm/isolate.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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=--error_on_bad_type --error_on_bad_override 4 // VMOptions=--error_on_bad_type --error_on_bad_override
5 5
6 import 'dart:async'; 6 import 'dart:async';
7 import 'dart:developer'; 7 import 'dart:developer';
8 import 'package:observatory/service_io.dart'; 8 import 'package:observatory/service_io.dart';
9 import 'package:unittest/unittest.dart'; 9 import 'package:unittest/unittest.dart';
10 import 'service_test_common.dart'; 10 import 'service_test_common.dart';
(...skipping 20 matching lines...) Expand all
31 dart.Isolate.spawn(isolate, receive.sendPort); 31 dart.Isolate.spawn(isolate, receive.sendPort);
32 } 32 }
33 33
34 var tests = [ 34 var tests = [
35 hasPausedAtStart, 35 hasPausedAtStart,
36 (Isolate isolate) async { 36 (Isolate isolate) async {
37 int step = 0; 37 int step = 0;
38 var completer = new Completer(); 38 var completer = new Completer();
39 var sub; 39 var sub;
40 final Isolate firstIsolate = isolate; 40 final Isolate firstIsolate = isolate;
41 print("First isolate is: ${firstIsolate.id}");
41 Isolate secondIsolate; 42 Isolate secondIsolate;
42 sub = await isolate.vm.listenEventStream(VM.kDebugStream, (ServiceEvent c) { 43 sub = await isolate.vm.listenEventStream(VM.kDebugStream, (ServiceEvent c) {
44 print("Event ${c.kind} on ${c.isolate.id}");
43 switch (step) { 45 switch (step) {
44 case 0: 46 case 0:
45 expect(c.kind, equals("Resume"), 47 expect(c.kind, equals(ServiceEvent.kResume),
46 reason: "First isolate should resume"); 48 reason: "First isolate should resume");
47 expect(c.isolate.id, equals(firstIsolate.id), 49 expect(c.isolate.id, equals(firstIsolate.id),
48 reason: "First isolate should resume"); 50 reason: "First isolate should resume");
49 break; 51 break;
50 case 1: 52 case 1:
51 expect(c.kind, equals("PauseStart"), 53 expect(c.kind, equals(ServiceEvent.kPauseStart),
52 reason: "Second isolate should pause on start"); 54 reason: "Second isolate should pause on start");
53 expect(c.isolate.id, equals(isolate.vm.isolates[1].id), 55 expect(c.isolate.id, equals(isolate.vm.isolates[1].id),
54 reason: "Second isolate should pause on start"); 56 reason: "Second isolate should pause on start");
55 secondIsolate = c.isolate; 57 secondIsolate = c.isolate;
58 print("Second isolate is: ${secondIsolate.id}");
59 print("Resuming second isolate");
56 secondIsolate.resume(); 60 secondIsolate.resume();
57 break; 61 break;
58 case 2: 62 case 2:
59 expect(c.kind, equals("Resume"), 63 expect(c.kind, equals(ServiceEvent.kResume),
60 reason: "Second isolate should resume"); 64 reason: "Second isolate should resume");
61 expect(c.isolate.id, equals(secondIsolate.id), 65 expect(c.isolate.id, equals(secondIsolate.id),
62 reason: "Second isolate should resume"); 66 reason: "Second isolate should resume");
63 break; 67 break;
64 case 3: 68 case 3:
65 expect(c.kind, equals("PauseBreakpoint"), 69 expect(c.kind, equals(ServiceEvent.kPauseBreakpoint),
66 reason: "First isolate should stop at debugger()"); 70 reason: "First isolate should stop at debugger()");
67 expect(c.isolate.id, equals(firstIsolate.id), 71 expect(c.isolate.id, equals(firstIsolate.id),
68 reason: "First isolate should stop at debugger()"); 72 reason: "First isolate should stop at debugger()");
73 print("Resuming first isolate");
69 firstIsolate.resume(); 74 firstIsolate.resume();
70 break; 75 break;
71 case 4: 76 case 4:
72 expect(c.kind, equals("Resume"), 77 expect(c.kind, equals(ServiceEvent.kResume),
73 reason: "First isolate should resume (1)"); 78 reason: "First isolate should resume (1)");
74 expect(c.isolate.id, equals(firstIsolate.id), 79 expect(c.isolate.id, equals(firstIsolate.id),
75 reason: "First isolate should resume (1)"); 80 reason: "First isolate should resume (1)");
76 break; 81 break;
77 case 5: 82 case 5:
78 expect(c.kind, equals("PauseBreakpoint"), 83 expect(c.kind, equals(ServiceEvent.kPauseBreakpoint),
79 reason: "First & Second isolate should stop at debugger()"); 84 reason: "First & Second isolate should stop at debugger()");
80 break; 85 break;
81 case 6: 86 case 6:
82 expect(c.kind, equals("PauseBreakpoint"), 87 expect(c.kind, equals(ServiceEvent.kPauseBreakpoint),
83 reason: "First & Second isolate should stop at debugger()"); 88 reason: "First & Second isolate should stop at debugger()");
89 print("Resuming second isolate");
84 secondIsolate.resume(); 90 secondIsolate.resume();
85 break; 91 break;
86 case 7: 92 case 7:
87 expect(c.kind, equals("Resume"), 93 expect(c.kind, equals(ServiceEvent.kResume),
88 reason: "Second isolate should resume before the exception"); 94 reason: "Second isolate should resume before the exception");
89 expect(c.isolate.id, equals(secondIsolate.id), 95 expect(c.isolate.id, equals(secondIsolate.id),
90 reason: "Second isolate should resume before the exception"); 96 reason: "Second isolate should resume before the exception");
91 break; 97 break;
92 case 8: 98 case 8:
93 expect(c.kind, equals("PauseExit"), 99 expect(c.kind, equals(ServiceEvent.kPauseExit),
94 reason: "Second isolate should exit at the exception"); 100 reason: "Second isolate should exit at the exception");
95 expect(c.isolate.id, equals(secondIsolate.id), 101 expect(c.isolate.id, equals(secondIsolate.id),
96 reason: "Second isolate should exit at the exception"); 102 reason: "Second isolate should exit at the exception");
97 firstIsolate.resume(); 103 firstIsolate.resume();
104 print("Resuming first isolate");
98 break; 105 break;
99 case 9: 106 case 9:
100 expect(c.kind, equals("Resume"), 107 expect(c.kind, equals(ServiceEvent.kResume),
101 reason: "First isolate should resume after the exception"); 108 reason: "First isolate should resume after the exception");
102 expect(c.isolate.id, equals(firstIsolate.id), 109 expect(c.isolate.id, equals(firstIsolate.id),
103 reason: "First isolate should resume after the exception"); 110 reason: "First isolate should resume after the exception");
104 break; 111 break;
105 case 10: 112 case 10:
106 expect(c.kind, equals("PauseBreakpoint"), 113 expect(c.kind, equals(ServiceEvent.kPauseBreakpoint),
107 reason: "First isolate " 114 reason: "First isolate "
108 "should stop at debugger() after exception.\n" 115 "should stop at debugger() after exception.\n"
109 "Probably the second resumed even though it was not expect " 116 "Probably the second resumed even though it was not expect "
110 "to do it."); 117 "to do it.");
111 expect(c.isolate.id, equals(firstIsolate.id), 118 expect(c.isolate.id, equals(firstIsolate.id),
112 reason: "First " 119 reason: "First "
113 "isolate should stop at debugger() after exception.\n" 120 "isolate should stop at debugger() after exception.\n"
114 "Probably the second resumed even though it was not expect " 121 "Probably the second resumed even though it was not expect "
115 "to do it."); 122 "to do it.");
siva 2017/08/30 23:56:30 Maybe we should flip these two expects, first chec
cbernaschina 2017/08/31 00:04:45 Done.
116 completer.complete(); 123 completer.complete();
117 break; 124 break;
118 default: 125 default:
119 fail("Shouldn't get here, the second isolate resumed even though it " 126 fail("Shouldn't get here, the second isolate resumed even though it "
120 "was not expect to do it"); 127 "was not expect to do it");
121 break; 128 break;
122 } 129 }
123 step++; 130 step++;
124 }); 131 });
132 print("Resuming first isolate");
125 firstIsolate.resume(); 133 firstIsolate.resume();
126 await completer.future; 134 await completer.future;
127 // We wait 1 second to account for delays in the service protocol. 135 // We wait 1 second to account for delays in the service protocol.
128 // A late message can still arrive. 136 // A late message can still arrive.
129 await new Future.delayed(const Duration(seconds: 1)); 137 await new Future.delayed(const Duration(seconds: 1));
130 // No fails, tear down the stream. 138 // No fails, tear down the stream.
131 sub.cancel(); 139 sub.cancel();
132 } 140 }
133 ]; 141 ];
134 142
135 main(args) async => runIsolateTests(args, tests, 143 main(args) async => runIsolateTests(args, tests,
136 pause_on_start: true, pause_on_exit: true, testeeConcurrent: test); 144 pause_on_start: true, pause_on_exit: true, testeeConcurrent: test);
OLDNEW
« no previous file with comments | « no previous file | runtime/observatory/tests/service/service.status » ('j') | runtime/vm/isolate.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698