| 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 |