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

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

Issue 2231313002: Avoid to list internal Arrays in _GetRetainingPath api (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Fixed comment Created 4 years, 4 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 | « runtime/observatory/lib/src/elements/object_common.html ('k') | runtime/vm/object_graph.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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=--error_on_bad_type --error_on_bad_override 4 // VMOptions=--error_on_bad_type --error_on_bad_override
5 5
6 import 'package:observatory/service_io.dart'; 6 import 'package:observatory/service_io.dart';
7 import 'package:unittest/unittest.dart'; 7 import 'package:unittest/unittest.dart';
8 8
9 import 'test_helper.dart'; 9 import 'test_helper.dart';
10 10
11 class _TestClass { 11 class _TestClass {
12 _TestClass(this.x, this.y); 12 _TestClass();
13 var x; 13 var x;
14 var y; 14 var y;
15 } 15 }
16 16
17 var target1; 17 var target1 = new _TestClass();
18 var target2; 18 var target2 = new _TestClass();
19 var target3; 19 var target3 = new _TestClass();
20 var globalObject; 20 var target4 = new _TestClass();
21 var globalList; 21 var target5 = new _TestClass();
22 var globalObject = new _TestClass();
23 var globalList = new List(100);
24 var globalMap1 = new Map();
25 var globalMap2 = new Map();
22 26
23 void warmup() { 27 void warmup() {
24 target1 = new _TestClass(null, null); 28 globalObject.x = target1;
25 target2 = new _TestClass(null, null); 29 globalObject.y = target2;
26 globalObject = new _TestClass(target1, target2);
27
28 target3 = new _TestClass(null, null);
29 globalList = new List(100);
30 globalList[12] = target3; 30 globalList[12] = target3;
31 globalMap1['key'] = target4;
32 globalMap2[target5] = 'value';
31 } 33 }
32 34
33 eval(Isolate isolate, String expression) async { 35 eval(Isolate isolate, String expression) async {
34 Map params = { 36 Map params = {
35 'targetId': isolate.rootLibrary.id, 37 'targetId': isolate.rootLibrary.id,
36 'expression': expression, 38 'expression': expression,
37 }; 39 };
38 return await isolate.invokeRpcNoUpgrade('evaluate', params); 40 return await isolate.invokeRpcNoUpgrade('evaluate', params);
39 } 41 }
40 42
41 var tests = [ 43 var tests = [
42 // simple path 44 // simple path
43 (Isolate isolate) async { 45 (Isolate isolate) async {
44 var obj = await eval(isolate, 'globalObject'); 46 var obj = await eval(isolate, 'globalObject');
45 var params = { 47 var params = {
46 'targetId': obj['id'], 48 'targetId': obj['id'],
47 'limit': 4, 49 'limit': 100,
48 }; 50 };
49 var result = await isolate.invokeRpcNoUpgrade('_getRetainingPath', params); 51 var result = await isolate.invokeRpcNoUpgrade('_getRetainingPath', params);
52 expect(result['elements'].length, equals(2));
50 expect(result['elements'][1]['value']['name'], equals('globalObject')); 53 expect(result['elements'][1]['value']['name'], equals('globalObject'));
51 }, 54 },
52 55
53 // missing limit. 56 // missing limit.
54 (Isolate isolate) async { 57 (Isolate isolate) async {
55 var obj = await eval(isolate, 'globalObject'); 58 var obj = await eval(isolate, 'globalObject');
56 var params = { 59 var params = {
57 'targetId': obj['id'], 60 'targetId': obj['id'],
58 }; 61 };
59 bool caughtException; 62 bool caughtException;
60 try { 63 try {
61 await isolate.invokeRpcNoUpgrade('_getRetainingPath', params); 64 await isolate.invokeRpcNoUpgrade('_getRetainingPath', params);
62 expect(false, isTrue, reason:'Unreachable'); 65 expect(false, isTrue, reason:'Unreachable');
63 } on ServerRpcException catch (e) { 66 } on ServerRpcException catch (e) {
64 caughtException = true; 67 caughtException = true;
65 expect(e.code, equals(ServerRpcException.kInvalidParams)); 68 expect(e.code, equals(ServerRpcException.kInvalidParams));
66 expect(e.data['details'], 69 expect(e.data['details'],
67 "_getRetainingPath expects the \'limit\' parameter"); 70 "_getRetainingPath expects the \'limit\' parameter");
68 } 71 }
69 expect(caughtException, isTrue); 72 expect(caughtException, isTrue);
70 }, 73 },
71 74
72 (Isolate isolate) async { 75 (Isolate isolate) async {
73 var target1 = await eval( 76 var target1 = await eval(
74 isolate, '() { var tmp = target1; target1 = null; return tmp;} ()'); 77 isolate, '() { var tmp = target1; target1 = null; return tmp;} ()');
75 var params = { 78 var params = {
76 'targetId': target1['id'], 79 'targetId': target1['id'],
77 'limit': 4, 80 'limit': 100,
78 }; 81 };
79 var result = await isolate.invokeRpcNoUpgrade('_getRetainingPath', params); 82 var result = await isolate.invokeRpcNoUpgrade('_getRetainingPath', params);
80 expect(result['type'], equals('RetainingPath')); 83 expect(result['type'], equals('RetainingPath'));
84 expect(result['elements'].length, equals(3));
81 expect(result['elements'][1]['parentField']['name'], equals('x')); 85 expect(result['elements'][1]['parentField']['name'], equals('x'));
82 expect(result['elements'][2]['value']['name'], equals('globalObject')); 86 expect(result['elements'][2]['value']['name'], equals('globalObject'));
83 }, 87 },
84 88
85 (Isolate isolate) async { 89 (Isolate isolate) async {
86 var target2 = await eval( 90 var target2 = await eval(
87 isolate, '() { var tmp = target2; target2 = null; return tmp;} ()'); 91 isolate, '() { var tmp = target2; target2 = null; return tmp;} ()');
88 var params = { 92 var params = {
89 'targetId': target2['id'], 93 'targetId': target2['id'],
90 'limit': 4, 94 'limit': 100,
91 }; 95 };
92 var result = await isolate.invokeRpcNoUpgrade('_getRetainingPath', params); 96 var result = await isolate.invokeRpcNoUpgrade('_getRetainingPath', params);
93 expect(result['type'], equals('RetainingPath')); 97 expect(result['type'], equals('RetainingPath'));
98 expect(result['elements'].length, equals(3));
94 expect(result['elements'][1]['parentField']['name'], equals('y')); 99 expect(result['elements'][1]['parentField']['name'], equals('y'));
95 expect(result['elements'][2]['value']['name'], equals('globalObject')); 100 expect(result['elements'][2]['value']['name'], equals('globalObject'));
96 }, 101 },
97 102
98 (Isolate isolate) async { 103 (Isolate isolate) async {
99 var target3 = await eval( 104 var target3 = await eval(
100 isolate, '() { var tmp = target3; target3 = null; return tmp;} ()'); 105 isolate, '() { var tmp = target3; target3 = null; return tmp;} ()');
101 var params = { 106 var params = {
102 'targetId': target3['id'], 107 'targetId': target3['id'],
103 'limit': 4, 108 'limit': 100,
104 }; 109 };
105 var result = await isolate.invokeRpcNoUpgrade('_getRetainingPath', params); 110 var result = await isolate.invokeRpcNoUpgrade('_getRetainingPath', params);
106 expect(result['type'], equals('RetainingPath')); 111 expect(result['type'], equals('RetainingPath'));
112 expect(result['elements'].length, equals(3));
107 expect(result['elements'][1]['parentListIndex'], equals(12)); 113 expect(result['elements'][1]['parentListIndex'], equals(12));
108 expect(result['elements'][2]['value']['name'], equals('globalList')); 114 expect(result['elements'][2]['value']['name'], equals('globalList'));
109 }, 115 },
116
117 (Isolate isolate) async {
118 var target4 = await eval(
119 isolate, '() { var tmp = target4; target4 = null; return tmp;} ()');
120 var params = {
121 'targetId': target4['id'],
122 'limit': 100,
123 };
124 var result = await isolate.invokeRpcNoUpgrade('_getRetainingPath', params);
125 expect(result['type'], equals('RetainingPath'));
126 expect(result['elements'].length, equals(3));
127 expect(result['elements'][1]['parentMapKey']['valueAsString'],
128 equals('key'));
129 expect(result['elements'][2]['value']['name'], equals('globalMap1'));
130 },
131
132 (Isolate isolate) async {
133 var target5 = await eval(
134 isolate, '() { var tmp = target5; target5 = null; return tmp;} ()');
135 var params = {
136 'targetId': target5['id'],
137 'limit': 100,
138 };
139 var result = await isolate.invokeRpcNoUpgrade('_getRetainingPath', params);
140 expect(result['type'], equals('RetainingPath'));
141 expect(result['elements'].length, equals(3));
142 expect(result['elements'][1]['parentMapKey']['class']['name'],
143 equals('_TestClass'));
144 expect(result['elements'][2]['value']['name'], equals('globalMap2'));
145 }
110 ]; 146 ];
111 147
112 main(args) async => runIsolateTests(args, tests, testeeBefore:warmup); 148 main(args) async => runIsolateTests(args, tests, testeeBefore:warmup);
OLDNEW
« no previous file with comments | « runtime/observatory/lib/src/elements/object_common.html ('k') | runtime/vm/object_graph.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698