OLD | NEW |
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 library get_object_rpc_test; | 6 library get_object_rpc_test; |
7 | 7 |
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 | 10 |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
135 expect(result['functions'][0]['type'], equals('@Function')); | 135 expect(result['functions'][0]['type'], equals('@Function')); |
136 expect(result['classes'].length, isPositive); | 136 expect(result['classes'].length, isPositive); |
137 expect(result['classes'][0]['type'], equals('@Class')); | 137 expect(result['classes'][0]['type'], equals('@Class')); |
138 }, | 138 }, |
139 | 139 |
140 // invalid library. | 140 // invalid library. |
141 (Isolate isolate) async { | 141 (Isolate isolate) async { |
142 var params = { | 142 var params = { |
143 'objectId': 'libraries/9999999', | 143 'objectId': 'libraries/9999999', |
144 }; | 144 }; |
145 var result = await isolate.invokeRpcNoUpgrade('getObject', params); | 145 bool caughtException; |
146 expect(result['type'], equals('Error')); | 146 try { |
147 expect(result['message'], startsWith('Unrecognized object id')); | 147 await isolate.invokeRpcNoUpgrade('getObject', params); |
| 148 expect(false, isTrue, reason:'Unreachable'); |
| 149 } on ServerRpcException catch(e) { |
| 150 caughtException = true; |
| 151 expect(e.code, equals(ServerRpcException.kInvalidParams)); |
| 152 expect(e.message, |
| 153 "getObject: invalid 'objectId' parameter: libraries/9999999"); |
| 154 } |
| 155 expect(caughtException, isTrue); |
148 }, | 156 }, |
149 | 157 |
150 // script. | 158 // script. |
151 (Isolate isolate) async { | 159 (Isolate isolate) async { |
152 // Get the library first. | 160 // Get the library first. |
153 var params = { | 161 var params = { |
154 'objectId': isolate.rootLib.id, | 162 'objectId': isolate.rootLib.id, |
155 }; | 163 }; |
156 var libResult = await isolate.invokeRpcNoUpgrade('getObject', params); | 164 var libResult = await isolate.invokeRpcNoUpgrade('getObject', params); |
157 // Get the first script. | 165 // Get the first script. |
(...skipping 12 matching lines...) Expand all Loading... |
170 expect(result['tokenPosTable'][0], new isInstanceOf<List>()); | 178 expect(result['tokenPosTable'][0], new isInstanceOf<List>()); |
171 expect(result['tokenPosTable'][0].length, isPositive); | 179 expect(result['tokenPosTable'][0].length, isPositive); |
172 expect(result['tokenPosTable'][0][0], new isInstanceOf<int>()); | 180 expect(result['tokenPosTable'][0][0], new isInstanceOf<int>()); |
173 }, | 181 }, |
174 | 182 |
175 // invalid script. | 183 // invalid script. |
176 (Isolate isolate) async { | 184 (Isolate isolate) async { |
177 var params = { | 185 var params = { |
178 'objectId': 'scripts/9999999', | 186 'objectId': 'scripts/9999999', |
179 }; | 187 }; |
180 var result = await isolate.invokeRpcNoUpgrade('getObject', params); | 188 bool caughtException; |
181 expect(result['type'], equals('Error')); | 189 try { |
182 expect(result['message'], startsWith('Unrecognized object id')); | 190 await isolate.invokeRpcNoUpgrade('getObject', params); |
| 191 expect(false, isTrue, reason:'Unreachable'); |
| 192 } on ServerRpcException catch(e) { |
| 193 caughtException = true; |
| 194 expect(e.code, equals(ServerRpcException.kInvalidParams)); |
| 195 expect(e.message, |
| 196 "getObject: invalid 'objectId' parameter: scripts/9999999"); |
| 197 } |
| 198 expect(caughtException, isTrue); |
183 }, | 199 }, |
184 | 200 |
185 // class | 201 // class |
186 (Isolate isolate) async { | 202 (Isolate isolate) async { |
187 // Call eval to get a class id. | 203 // Call eval to get a class id. |
188 var evalResult = await eval(isolate, 'new _DummyClass()'); | 204 var evalResult = await eval(isolate, 'new _DummyClass()'); |
189 var params = { | 205 var params = { |
190 'objectId': evalResult['class']['id'], | 206 'objectId': evalResult['class']['id'], |
191 }; | 207 }; |
192 var result = await isolate.invokeRpcNoUpgrade('getObject', params); | 208 var result = await isolate.invokeRpcNoUpgrade('getObject', params); |
(...skipping 16 matching lines...) Expand all Loading... |
209 expect(result['functions'][0]['type'], equals('@Function')); | 225 expect(result['functions'][0]['type'], equals('@Function')); |
210 expect(result['subclasses'].length, isPositive); | 226 expect(result['subclasses'].length, isPositive); |
211 expect(result['subclasses'][0]['type'], equals('@Class')); | 227 expect(result['subclasses'][0]['type'], equals('@Class')); |
212 }, | 228 }, |
213 | 229 |
214 // invalid class. | 230 // invalid class. |
215 (Isolate isolate) async { | 231 (Isolate isolate) async { |
216 var params = { | 232 var params = { |
217 'objectId': 'classes/9999999', | 233 'objectId': 'classes/9999999', |
218 }; | 234 }; |
219 var result = await isolate.invokeRpcNoUpgrade('getObject', params); | 235 bool caughtException; |
220 expect(result['type'], equals('Error')); | 236 try { |
221 expect(result['message'], startsWith('Unrecognized object id')); | 237 await isolate.invokeRpcNoUpgrade('getObject', params); |
| 238 expect(false, isTrue, reason:'Unreachable'); |
| 239 } on ServerRpcException catch(e) { |
| 240 caughtException = true; |
| 241 expect(e.code, equals(ServerRpcException.kInvalidParams)); |
| 242 expect(e.message, |
| 243 "getObject: invalid 'objectId' parameter: classes/9999999"); |
| 244 } |
| 245 expect(caughtException, isTrue); |
222 }, | 246 }, |
223 | 247 |
224 // type. | 248 // type. |
225 (Isolate isolate) async { | 249 (Isolate isolate) async { |
226 // Call eval to get a class id. | 250 // Call eval to get a class id. |
227 var evalResult = await eval(isolate, 'new _DummyClass()'); | 251 var evalResult = await eval(isolate, 'new _DummyClass()'); |
228 var id = "${evalResult['class']['id']}/types/0"; | 252 var id = "${evalResult['class']['id']}/types/0"; |
229 var params = { | 253 var params = { |
230 'objectId': id, | 254 'objectId': id, |
231 }; | 255 }; |
232 var result = await isolate.invokeRpcNoUpgrade('getObject', params); | 256 var result = await isolate.invokeRpcNoUpgrade('getObject', params); |
233 expect(result['type'], equals('Type')); | 257 expect(result['type'], equals('Type')); |
234 expect(result['id'], equals(id)); | 258 expect(result['id'], equals(id)); |
235 expect(result['class']['type'], equals('@Class')); | 259 expect(result['class']['type'], equals('@Class')); |
236 expect(result['class']['name'], equals('_Type')); | 260 expect(result['class']['name'], equals('_Type')); |
237 expect(result['size'], isPositive); | 261 expect(result['size'], isPositive); |
238 expect(result['fields'], isEmpty); | 262 expect(result['fields'], isEmpty); |
239 expect(result['typeClass']['type'], equals('@Class')); | 263 expect(result['typeClass']['type'], equals('@Class')); |
240 expect(result['typeClass']['name'], equals('_DummyClass')); | 264 expect(result['typeClass']['name'], equals('_DummyClass')); |
241 }, | 265 }, |
242 | 266 |
243 // invalid type. | 267 // invalid type. |
244 (Isolate isolate) async { | 268 (Isolate isolate) async { |
245 var evalResult = await eval(isolate, 'new _DummyClass()'); | 269 var evalResult = await eval(isolate, 'new _DummyClass()'); |
246 var id = "${evalResult['class']['id']}/types/9999999"; | 270 var id = "${evalResult['class']['id']}/types/9999999"; |
247 var params = { | 271 var params = { |
248 'objectId': id, | 272 'objectId': id, |
249 }; | 273 }; |
250 var result = await isolate.invokeRpcNoUpgrade('getObject', params); | 274 bool caughtException; |
251 expect(result['type'], equals('Error')); | 275 try { |
252 expect(result['message'], startsWith('Unrecognized object id')); | 276 await isolate.invokeRpcNoUpgrade('getObject', params); |
| 277 expect(false, isTrue, reason:'Unreachable'); |
| 278 } on ServerRpcException catch(e) { |
| 279 caughtException = true; |
| 280 expect(e.code, equals(ServerRpcException.kInvalidParams)); |
| 281 expect(e.message, |
| 282 startsWith("getObject: invalid 'objectId' parameter: ")); |
| 283 } |
| 284 expect(caughtException, isTrue); |
253 }, | 285 }, |
254 | 286 |
255 // function. | 287 // function. |
256 (Isolate isolate) async { | 288 (Isolate isolate) async { |
257 // Call eval to get a class id. | 289 // Call eval to get a class id. |
258 var evalResult = await eval(isolate, 'new _DummyClass()'); | 290 var evalResult = await eval(isolate, 'new _DummyClass()'); |
259 var id = "${evalResult['class']['id']}/functions/dummyFunction"; | 291 var id = "${evalResult['class']['id']}/functions/dummyFunction"; |
260 var params = { | 292 var params = { |
261 'objectId': id, | 293 'objectId': id, |
262 }; | 294 }; |
(...skipping 15 matching lines...) Expand all Loading... |
278 }, | 310 }, |
279 | 311 |
280 // invalid function. | 312 // invalid function. |
281 (Isolate isolate) async { | 313 (Isolate isolate) async { |
282 // Call eval to get a class id. | 314 // Call eval to get a class id. |
283 var evalResult = await eval(isolate, 'new _DummyClass()'); | 315 var evalResult = await eval(isolate, 'new _DummyClass()'); |
284 var id = "${evalResult['class']['id']}/functions/invalid"; | 316 var id = "${evalResult['class']['id']}/functions/invalid"; |
285 var params = { | 317 var params = { |
286 'objectId': id, | 318 'objectId': id, |
287 }; | 319 }; |
288 var result = await isolate.invokeRpcNoUpgrade('getObject', params); | 320 bool caughtException; |
289 expect(result['type'], equals('Error')); | 321 try { |
290 expect(result['message'], startsWith('Unrecognized object id')); | 322 await isolate.invokeRpcNoUpgrade('getObject', params); |
| 323 expect(false, isTrue, reason:'Unreachable'); |
| 324 } on ServerRpcException catch(e) { |
| 325 caughtException = true; |
| 326 expect(e.code, equals(ServerRpcException.kInvalidParams)); |
| 327 expect(e.message, |
| 328 startsWith("getObject: invalid 'objectId' parameter: ")); |
| 329 } |
| 330 expect(caughtException, isTrue); |
291 }, | 331 }, |
292 | 332 |
293 // field | 333 // field |
294 (Isolate isolate) async { | 334 (Isolate isolate) async { |
295 // Call eval to get a class id. | 335 // Call eval to get a class id. |
296 var evalResult = await eval(isolate, 'new _DummyClass()'); | 336 var evalResult = await eval(isolate, 'new _DummyClass()'); |
297 var id = "${evalResult['class']['id']}/fields/0"; | 337 var id = "${evalResult['class']['id']}/fields/0"; |
298 var params = { | 338 var params = { |
299 'objectId': id, | 339 'objectId': id, |
300 }; | 340 }; |
(...skipping 13 matching lines...) Expand all Loading... |
314 }, | 354 }, |
315 | 355 |
316 // invalid field. | 356 // invalid field. |
317 (Isolate isolate) async { | 357 (Isolate isolate) async { |
318 // Call eval to get a class id. | 358 // Call eval to get a class id. |
319 var evalResult = await eval(isolate, 'new _DummyClass()'); | 359 var evalResult = await eval(isolate, 'new _DummyClass()'); |
320 var id = "${evalResult['class']['id']}/fields/9999"; | 360 var id = "${evalResult['class']['id']}/fields/9999"; |
321 var params = { | 361 var params = { |
322 'objectId': id, | 362 'objectId': id, |
323 }; | 363 }; |
324 var result = await isolate.invokeRpcNoUpgrade('getObject', params); | 364 bool caughtException; |
325 expect(result['type'], equals('Error')); | 365 try { |
326 expect(result['message'], startsWith('Unrecognized object id')); | 366 await isolate.invokeRpcNoUpgrade('getObject', params); |
| 367 expect(false, isTrue, reason:'Unreachable'); |
| 368 } on ServerRpcException catch(e) { |
| 369 caughtException = true; |
| 370 expect(e.code, equals(ServerRpcException.kInvalidParams)); |
| 371 expect(e.message, |
| 372 startsWith("getObject: invalid 'objectId' parameter: ")); |
| 373 } |
| 374 expect(caughtException, isTrue); |
327 }, | 375 }, |
328 | 376 |
329 // code. | 377 // code. |
330 (Isolate isolate) async { | 378 (Isolate isolate) async { |
331 // Call eval to get a class id. | 379 // Call eval to get a class id. |
332 var evalResult = await eval(isolate, 'new _DummyClass()'); | 380 var evalResult = await eval(isolate, 'new _DummyClass()'); |
333 var funcId = "${evalResult['class']['id']}/functions/dummyFunction"; | 381 var funcId = "${evalResult['class']['id']}/functions/dummyFunction"; |
334 var params = { | 382 var params = { |
335 'objectId': funcId, | 383 'objectId': funcId, |
336 }; | 384 }; |
(...skipping 12 matching lines...) Expand all Loading... |
349 expect(result['_endAddress'], new isInstanceOf<String>()); | 397 expect(result['_endAddress'], new isInstanceOf<String>()); |
350 expect(result['_objectPool'], isNotNull); | 398 expect(result['_objectPool'], isNotNull); |
351 expect(result['_disassembly'], isNotNull); | 399 expect(result['_disassembly'], isNotNull); |
352 expect(result['_descriptors'], isNotNull); | 400 expect(result['_descriptors'], isNotNull); |
353 expect(result['_inlinedFunctions'], anyOf([isNull, new isInstanceOf<List>()]
)); | 401 expect(result['_inlinedFunctions'], anyOf([isNull, new isInstanceOf<List>()]
)); |
354 expect(result['_inlinedIntervals'], anyOf([isNull, new isInstanceOf<List>()]
)); | 402 expect(result['_inlinedIntervals'], anyOf([isNull, new isInstanceOf<List>()]
)); |
355 }, | 403 }, |
356 | 404 |
357 // invalid code. | 405 // invalid code. |
358 (Isolate isolate) async { | 406 (Isolate isolate) async { |
359 // Call eval to get a class id. | |
360 var params = { | 407 var params = { |
361 'objectId': 'code/0', | 408 'objectId': 'code/0', |
362 }; | 409 }; |
363 var result = await isolate.invokeRpcNoUpgrade('getObject', params); | 410 bool caughtException; |
364 expect(result['type'], equals('Error')); | 411 try { |
365 expect(result['message'], startsWith('Unrecognized object id')); | 412 await isolate.invokeRpcNoUpgrade('getObject', params); |
| 413 expect(false, isTrue, reason:'Unreachable'); |
| 414 } on ServerRpcException catch(e) { |
| 415 caughtException = true; |
| 416 expect(e.code, equals(ServerRpcException.kInvalidParams)); |
| 417 expect(e.message, |
| 418 "getObject: invalid 'objectId' parameter: code/0"); |
| 419 } |
| 420 expect(caughtException, isTrue); |
366 }, | 421 }, |
367 ]; | 422 ]; |
368 | 423 |
369 main(args) async => runIsolateTests(args, tests, testeeBefore:warmup); | 424 main(args) async => runIsolateTests(args, tests, testeeBefore:warmup); |
OLD | NEW |