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

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

Issue 1120133002: Rework error handling in the service protocol and in Observatory. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 7 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 | Annotate | Revision Log
OLDNEW
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
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
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
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
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
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
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);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698