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

Side by Side Diff: runtime/observatory/test/coverage_test.dart

Issue 961483002: Fix isolate lifecycle handling in service library (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 9 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 4
5 import 'package:observatory/service_io.dart'; 5 import 'package:observatory/service_io.dart';
6 import 'package:unittest/unittest.dart'; 6 import 'package:unittest/unittest.dart';
7 import 'test_helper.dart'; 7 import 'test_helper.dart';
8 import 'dart:async'; 8 import 'dart:async';
9 9
10 int globalVar = 100; 10 int globalVar = 100;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 // Set up a listener to wait for breakpoint events. 57 // Set up a listener to wait for breakpoint events.
58 Completer completer = new Completer(); 58 Completer completer = new Completer();
59 List events = []; 59 List events = [];
60 isolate.vm.events.stream.listen((ServiceEvent event) { 60 isolate.vm.events.stream.listen((ServiceEvent event) {
61 if (event.eventType == 'BreakpointReached') { 61 if (event.eventType == 'BreakpointReached') {
62 print('Breakpoint reached'); 62 print('Breakpoint reached');
63 completer.complete(); 63 completer.complete();
64 } 64 }
65 }); 65 });
66 66
67 // Add the breakpoint. 67 // Create a timer to set a breakpoint with a short delay.
68 var script = isolate.rootLib.scripts[0]; 68 new Timer(new Duration(milliseconds: 2000), () {
69 var line = 14; 69 // Add the breakpoint.
70 return isolate.addBreakpoint(script, line).then((ServiceObject bpt) { 70 print('Setting breakpoint.');
71 return completer.future; // Wait for breakpoint reached. 71 var script = isolate.rootLib.scripts[0];
72 var line = 14;
73 isolate.addBreakpoint(script, line);
72 }); 74 });
75
76 return completer.future;
73 }); 77 });
74 }, 78 },
75 79
76 // Get coverage for function, class, library, script, and isolate. 80 // Get coverage for function, class, library, script, and isolate.
77 (Isolate isolate) { 81 (Isolate isolate) {
78 return isolate.getStack().then((ServiceMap stack) { 82 return isolate.getStack().then((ServiceMap stack) {
79 // Make sure we are in the right place. 83 // Make sure we are in the right place.
80 expect(stack.type, equals('Stack')); 84 expect(stack.type, equals('Stack'));
81 expect(stack['frames'].length, greaterThanOrEqualTo(2)); 85 expect(stack['frames'].length, greaterThanOrEqualTo(2));
82 expect(stack['frames'][0]['function'].owningClass.name, equals('MyClass')) ; 86 expect(stack['frames'][0]['function'].owningClass.name, equals('MyClass')) ;
(...skipping 28 matching lines...) Expand all
111 tests.add(isolate.invokeRpcNoUpgrade('getCoverage', 115 tests.add(isolate.invokeRpcNoUpgrade('getCoverage',
112 { 'targetId': lib.id }) 116 { 'targetId': lib.id })
113 .then((Map coverage) { 117 .then((Map coverage) {
114 expect(coverage['type'], equals('CodeCoverage')); 118 expect(coverage['type'], equals('CodeCoverage'));
115 expect(coverage['coverage'].length, equals(3)); 119 expect(coverage['coverage'].length, equals(3));
116 expect(normalize(coverage['coverage'][0]['hits']), 120 expect(normalize(coverage['coverage'][0]['hits']),
117 equals([14, 1, 15, 1, 16, 0, 18, 1, 121 equals([14, 1, 15, 1, 16, 0, 18, 1,
118 23, 1, 24, 1, 26, 0])); 122 23, 1, 24, 1, 26, 0]));
119 expect(normalize(coverage['coverage'][1]['hits']).take(12), 123 expect(normalize(coverage['coverage'][1]['hits']).take(12),
120 equals([32, 0, 35, 0, 36, 0, 32, 1, 35, 1, 36, 0])); 124 equals([32, 0, 35, 0, 36, 0, 32, 1, 35, 1, 36, 0]));
121
122 })); 125 }));
123 // Script 126 // Script
124 tests.add(cls.load().then((_) { 127 tests.add(cls.load().then((_) {
125 return isolate.invokeRpcNoUpgrade('getCoverage', 128 return isolate.invokeRpcNoUpgrade('getCoverage',
126 { 'targetId': cls.script.id }) 129 { 'targetId': cls.script.id })
127 .then((Map coverage) { 130 .then((Map coverage) {
128 expect(coverage['type'], equals('CodeCoverage')); 131 expect(coverage['type'], equals('CodeCoverage'));
129 expect(coverage['coverage'].length, equals(3)); 132 expect(coverage['coverage'].length, equals(3));
130 expect(normalize(coverage['coverage'][0]['hits']), 133 expect(normalize(coverage['coverage'][0]['hits']),
131 equals([14, 1, 15, 1, 16, 0, 18, 1, 134 equals([14, 1, 15, 1, 16, 0, 18, 1,
(...skipping 10 matching lines...) Expand all
142 expect(coverage['coverage'].length, greaterThan(100)); 145 expect(coverage['coverage'].length, greaterThan(100));
143 }); 146 });
144 })); 147 }));
145 return Future.wait(tests); 148 return Future.wait(tests);
146 }); 149 });
147 }, 150 },
148 151
149 ]; 152 ];
150 153
151 main(args) => runIsolateTests(args, tests, testeeConcurrent: testFunction); 154 main(args) => runIsolateTests(args, tests, testeeConcurrent: testFunction);
OLDNEW
« no previous file with comments | « runtime/observatory/lib/src/service/object.dart ('k') | runtime/observatory/test/isolate_lifecycle_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698