OLD | NEW |
---|---|
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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:convert'; | 7 import 'dart:convert'; |
8 import 'package:observatory/models.dart' as M; | 8 import 'package:observatory/models.dart' as M; |
9 import 'package:observatory/service_io.dart'; | 9 import 'package:observatory/service_io.dart'; |
10 import 'package:unittest/unittest.dart'; | 10 import 'package:unittest/unittest.dart'; |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
112 } | 112 } |
113 | 113 |
114 // Spawn the script with no arguments or message and make sure | 114 // Spawn the script with no arguments or message and make sure |
115 // that we are notified. | 115 // that we are notified. |
116 Completer completer = new Completer(); | 116 Completer completer = new Completer(); |
117 var sub; | 117 var sub; |
118 sub = await vm.listenEventStream(VM.kIsolateStream, (ServiceEvent event) { | 118 sub = await vm.listenEventStream(VM.kIsolateStream, (ServiceEvent event) { |
119 if (event.kind == ServiceEvent.kIsolateSpawn) { | 119 if (event.kind == ServiceEvent.kIsolateSpawn) { |
120 expect(event.spawnToken, equals('mySpawnToken0')); | 120 expect(event.spawnToken, equals('mySpawnToken0')); |
121 expect(event.isolate, isNotNull); | 121 expect(event.isolate, isNotNull); |
122 expect(event.isolate.name, equals('devfs_file0.dart\$main')); | 122 expect(event.isolate.name, equals('devfs_file0.dart:main()')); |
123 completer.complete(event.isolate); | 123 completer.complete(event.isolate); |
124 sub.cancel(); | 124 sub.cancel(); |
125 } | 125 } |
126 }); | 126 }); |
127 result = await vm.invokeRpcNoUpgrade('_spawnUri', { | 127 result = await vm.invokeRpcNoUpgrade('_spawnUri', { |
128 'token': 'mySpawnToken0', | 128 'token': 'mySpawnToken0', |
129 'uri': '${fsUri}${filePaths[0]}', | 129 'uri': '${fsUri}${filePaths[0]}', |
130 }); | 130 }); |
131 expect(result['type'], equals('Success')); | 131 expect(result['type'], equals('Success')); |
132 var spawnedIsolate = await completer.future; | 132 var spawnedIsolate = await completer.future; |
133 | 133 |
134 // Wait for the spawned isolate to hit a breakpoint. | 134 // Wait for the spawned isolate to hit a breakpoint. |
135 await spawnedIsolate.load(); | 135 await spawnedIsolate.load(); |
136 await hasStoppedAtBreakpoint(spawnedIsolate); | 136 await hasStoppedAtBreakpoint(spawnedIsolate); |
137 | 137 |
138 // Make sure that we are running code from the spawned isolate. | 138 // Make sure that we are running code from the spawned isolate. |
139 result = await spawnedIsolate.rootLibrary.evaluate('proofOfLife()'); | 139 result = await spawnedIsolate.rootLibrary.evaluate('proofOfLife()'); |
140 expect(result.type, equals('Instance')); | 140 expect(result.type, equals('Instance')); |
141 expect(result.kind, equals(M.InstanceKind.string)); | 141 expect(result.kind, equals(M.InstanceKind.string)); |
142 expect(result.valueAsString, equals('I live!')); | 142 expect(result.valueAsString, equals('I live!')); |
143 | 143 |
144 // Spawn the script with arguments. | 144 // Spawn the script with arguments. |
145 completer = new Completer(); | 145 completer = new Completer(); |
146 sub = await vm.listenEventStream(VM.kIsolateStream, (ServiceEvent event) { | 146 sub = await vm.listenEventStream(VM.kIsolateStream, (ServiceEvent event) { |
147 if (event.kind == ServiceEvent.kIsolateSpawn) { | 147 if (event.kind == ServiceEvent.kIsolateSpawn) { |
148 expect(event.spawnToken, equals('mySpawnToken1')); | 148 expect(event.spawnToken, equals('mySpawnToken1')); |
149 expect(event.isolate, isNotNull); | 149 expect(event.isolate, isNotNull); |
150 expect(event.isolate.name, equals('devfs_file1.dart\$main')); | 150 expect(event.isolate.name, equals('devfs_file1.dart:main()')); |
151 completer.complete(event.isolate); | 151 completer.complete(event.isolate); |
152 sub.cancel(); | 152 sub.cancel(); |
153 } | 153 } |
154 }); | 154 }); |
155 result = await vm.invokeRpcNoUpgrade('_spawnUri', { | 155 result = await vm.invokeRpcNoUpgrade('_spawnUri', { |
156 'token': 'mySpawnToken1', | 156 'token': 'mySpawnToken1', |
157 'uri': '${fsUri}${filePaths[1]}', | 157 'uri': '${fsUri}${filePaths[1]}', |
158 'args': ['one', 'two', 'three'] | 158 'args': ['one', 'two', 'three'] |
159 }); | 159 }); |
160 expect(result['type'], equals('Success')); | 160 expect(result['type'], equals('Success')); |
161 spawnedIsolate = await completer.future; | 161 spawnedIsolate = await completer.future; |
162 | 162 |
163 // Wait for the spawned isolate to hit a breakpoint. | 163 // Wait for the spawned isolate to hit a breakpoint. |
164 await spawnedIsolate.load(); | 164 await spawnedIsolate.load(); |
165 await hasStoppedAtBreakpoint(spawnedIsolate); | 165 await hasStoppedAtBreakpoint(spawnedIsolate); |
166 | 166 |
167 // Make sure that we are running code from the spawned isolate. | 167 // Make sure that we are running code from the spawned isolate. |
168 result = await spawnedIsolate.rootLibrary.evaluate('proofOfLife()'); | 168 result = await spawnedIsolate.rootLibrary.evaluate('proofOfLife()'); |
169 expect(result.type, equals('Instance')); | 169 expect(result.type, equals('Instance')); |
170 expect(result.kind, equals(M.InstanceKind.string)); | 170 expect(result.kind, equals(M.InstanceKind.string)); |
171 expect(result.valueAsString, equals('I live, [one, two, three]!')); | 171 expect(result.valueAsString, equals('I live, [one, two, three]!')); |
172 | 172 |
173 // Spawn the script with arguments and message | 173 // Spawn the script with arguments and message |
174 completer = new Completer(); | 174 completer = new Completer(); |
175 sub = await vm.listenEventStream(VM.kIsolateStream, (ServiceEvent event) { | 175 sub = await vm.listenEventStream(VM.kIsolateStream, (ServiceEvent event) { |
176 if (event.kind == ServiceEvent.kIsolateSpawn) { | 176 if (event.kind == ServiceEvent.kIsolateSpawn) { |
177 expect(event.spawnToken, equals('mySpawnToken2')); | 177 expect(event.spawnToken, equals('mySpawnToken2')); |
178 expect(event.isolate, isNotNull); | 178 expect(event.isolate, isNotNull); |
179 expect(event.isolate.name, equals('devfs_file2.dart\$main')); | 179 expect(event.isolate.name, equals('devfs_file2.dart\:main()')); |
rmacnak
2017/08/24 19:00:19
The colon doesn't need to be escaped.
cbernaschina
2017/08/24 20:19:33
Done.
| |
180 completer.complete(event.isolate); | 180 completer.complete(event.isolate); |
181 sub.cancel(); | 181 sub.cancel(); |
182 } | 182 } |
183 }); | 183 }); |
184 result = await vm.invokeRpcNoUpgrade('_spawnUri', { | 184 result = await vm.invokeRpcNoUpgrade('_spawnUri', { |
185 'token': 'mySpawnToken2', | 185 'token': 'mySpawnToken2', |
186 'uri': '${fsUri}${filePaths[2]}', | 186 'uri': '${fsUri}${filePaths[2]}', |
187 'args': ['A', 'B', 'C'], | 187 'args': ['A', 'B', 'C'], |
188 'message': 'test' | 188 'message': 'test' |
189 }); | 189 }); |
(...skipping 12 matching lines...) Expand all Loading... | |
202 | 202 |
203 // Delete the fs. | 203 // Delete the fs. |
204 result = await vm.invokeRpcNoUpgrade('_deleteDevFS', { | 204 result = await vm.invokeRpcNoUpgrade('_deleteDevFS', { |
205 'fsName': fsName, | 205 'fsName': fsName, |
206 }); | 206 }); |
207 expect(result['type'], equals('Success')); | 207 expect(result['type'], equals('Success')); |
208 }, | 208 }, |
209 ]; | 209 ]; |
210 | 210 |
211 main(args) async => runVMTests(args, tests); | 211 main(args) async => runVMTests(args, tests); |
OLD | NEW |