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

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

Issue 2985253002: [corelib] dart:developer timeline flow events (Closed)
Patch Set: Update changelog Created 3 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/lib/timeline.dart ('k') | runtime/vm/bootstrap_natives.h » ('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 --complete_timeline 4 // VMOptions=--error_on_bad_type --error_on_bad_override --complete_timeline
5 5
6 import 'dart:developer'; 6 import 'dart:developer';
7 import 'package:observatory/service_io.dart'; 7 import 'package:observatory/service_io.dart';
8 import 'package:unittest/unittest.dart'; 8 import 'package:unittest/unittest.dart';
9 9
10 import 'test_helper.dart'; 10 import 'test_helper.dart';
11 11
12 primeTimeline() { 12 primeTimeline() {
13 Timeline.startSync('apple'); 13 Timeline.startSync('apple');
14 Timeline.instantSync('ISYNC', arguments: {'fruit': 'banana'}); 14 Timeline.instantSync('ISYNC', arguments: {'fruit': 'banana'});
15 Timeline.finishSync(); 15 Timeline.finishSync();
16 TimelineTask task = new TimelineTask(); 16 TimelineTask task = new TimelineTask();
17 task.start('TASK1'); 17 task.start('TASK1');
18 task.instant('ITASK'); 18 task.instant('ITASK');
19 task.finish(); 19 task.finish();
20
21 Flow flow = Flow.begin();
22 Timeline.startSync('peach', flow: flow);
23 Timeline.finishSync();
24 Timeline.startSync('watermelon', flow: Flow.step(flow.id));
25 Timeline.finishSync();
26 Timeline.startSync('pear', flow: Flow.end(flow.id));
27 Timeline.finishSync();
20 } 28 }
21 29
22 List<Map> filterForDartEvents(List<Map> events) { 30 List<Map> filterForDartEvents(List<Map> events) {
23 return events.where((event) => event['cat'] == 'Dart').toList(); 31 return events.where((event) => event['cat'] == 'Dart').toList();
24 } 32 }
25 33
26 bool eventsContains(List<Map> events, String phase, String name) { 34 bool eventsContains(List<Map> events, String phase, String name) {
27 for (Map event in events) { 35 for (Map event in events) {
28 if ((event['ph'] == phase) && (event['name'] == name)) { 36 if ((event['ph'] == phase) && (event['name'] == name)) {
29 return true; 37 return true;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 } 93 }
86 } 94 }
87 95
88 var tests = [ 96 var tests = [
89 (VM vm) async { 97 (VM vm) async {
90 Map result = await vm.invokeRpcNoUpgrade('_getVMTimeline', {}); 98 Map result = await vm.invokeRpcNoUpgrade('_getVMTimeline', {});
91 expect(result['type'], equals('_Timeline')); 99 expect(result['type'], equals('_Timeline'));
92 expect(result['traceEvents'], new isInstanceOf<List>()); 100 expect(result['traceEvents'], new isInstanceOf<List>());
93 final int numEvents = result['traceEvents'].length; 101 final int numEvents = result['traceEvents'].length;
94 List<Map> dartEvents = filterForDartEvents(result['traceEvents']); 102 List<Map> dartEvents = filterForDartEvents(result['traceEvents']);
95 expect(dartEvents.length, equals(5)); 103 expect(dartEvents.length, equals(11));
96 allEventsHaveIsolateNumber(dartEvents); 104 allEventsHaveIsolateNumber(dartEvents);
97 allEventsHaveIsolateNumber(result['traceEvents']); 105 allEventsHaveIsolateNumber(result['traceEvents']);
98 expect(eventsContains(dartEvents, 'I', 'ISYNC'), isTrue); 106 expect(eventsContains(dartEvents, 'I', 'ISYNC'), isTrue);
99 expect(eventsContains(dartEvents, 'X', 'apple'), isTrue); 107 expect(eventsContains(dartEvents, 'X', 'apple'), isTrue);
100 expect(eventsContains(dartEvents, 'b', 'TASK1'), isTrue); 108 expect(eventsContains(dartEvents, 'b', 'TASK1'), isTrue);
101 expect(eventsContains(dartEvents, 'e', 'TASK1'), isTrue); 109 expect(eventsContains(dartEvents, 'e', 'TASK1'), isTrue);
102 expect(eventsContains(dartEvents, 'n', 'ITASK'), isTrue); 110 expect(eventsContains(dartEvents, 'n', 'ITASK'), isTrue);
103 expect(eventsContains(dartEvents, 'q', 'ITASK'), isFalse); 111 expect(eventsContains(dartEvents, 'q', 'ITASK'), isFalse);
112 expect(eventsContains(dartEvents, 's', 'peach'), isTrue);
113 expect(eventsContains(dartEvents, 't', 'watermelon'), isTrue);
114 expect(eventsContains(dartEvents, 'f', 'pear'), isTrue);
104 // Calculate the time Window of Dart events. 115 // Calculate the time Window of Dart events.
105 int origin = timeOrigin(dartEvents); 116 int origin = timeOrigin(dartEvents);
106 int extent = timeDuration(dartEvents, origin); 117 int extent = timeDuration(dartEvents, origin);
107 // Query for the timeline with the time window for Dart events. 118 // Query for the timeline with the time window for Dart events.
108 result = await vm.invokeRpcNoUpgrade('_getVMTimeline', 119 result = await vm.invokeRpcNoUpgrade('_getVMTimeline',
109 {'timeOriginMicros': origin, 'timeExtentMicros': extent}); 120 {'timeOriginMicros': origin, 'timeExtentMicros': extent});
110 // Verify that we received fewer events than before. 121 // Verify that we received fewer events than before.
111 expect(result['traceEvents'].length, lessThan(numEvents)); 122 expect(result['traceEvents'].length, lessThan(numEvents));
112 // Verify that we have the same number of Dart events. 123 // Verify that we have the same number of Dart events.
113 List<Map> dartEvents2 = filterForDartEvents(result['traceEvents']); 124 List<Map> dartEvents2 = filterForDartEvents(result['traceEvents']);
114 expect(dartEvents2.length, dartEvents.length); 125 expect(dartEvents2.length, dartEvents.length);
115 }, 126 },
116 ]; 127 ];
117 128
118 main(args) async => runVMTests(args, tests, testeeBefore: primeTimeline); 129 main(args) async => runVMTests(args, tests, testeeBefore: primeTimeline);
OLDNEW
« no previous file with comments | « runtime/lib/timeline.dart ('k') | runtime/vm/bootstrap_natives.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698