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

Side by Side Diff: pkg/analysis_server/benchmark/perf/analysis_timing_tests.dart

Issue 1387823005: More pluggable AS benchmarks. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 2 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 | « no previous file | no next file » | 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 4
5 library server.performance.analysis.timing; 5 library server.performance.analysis.timing;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:io'; 8 import 'dart:io';
9 9
10 import 'package:analysis_server/src/protocol.dart'; 10 import 'package:analysis_server/src/protocol.dart';
(...skipping 19 matching lines...) Expand all
30 exit(1); 30 exit(1);
31 } 31 }
32 source = args[SOURCE_OPTION]; 32 source = args[SOURCE_OPTION];
33 priorityFile = args[PRIORITY_FILE_OPTION]; 33 priorityFile = args[PRIORITY_FILE_OPTION];
34 testName = args[TEST_NAME_OPTION] ?? DEFAULT_TEST; 34 testName = args[TEST_NAME_OPTION] ?? DEFAULT_TEST;
35 35
36 switch (testName) { 36 switch (testName) {
37 case 'analysis': 37 case 'analysis':
38 defineReflectiveTests(AnalysisTimingIntegrationTest); 38 defineReflectiveTests(AnalysisTimingIntegrationTest);
39 break; 39 break;
40 case 'highlighting':
41 defineReflectiveTests(HighlightingTimingIntegrationTest);
42 break;
40 case 'navigation': 43 case 'navigation':
41 defineReflectiveTests(NavigationTimingIntegrationTest); 44 defineReflectiveTests(NavigationTimingIntegrationTest);
42 break; 45 break;
46 case 'outline':
47 defineReflectiveTests(OutlineTimingIntegrationTest);
48 break;
43 default: 49 default:
44 print('unrecognized test name $testName'); 50 print('unrecognized test name $testName');
45 exit(1); 51 exit(1);
46 } 52 }
47 } 53 }
48 54
49 const DEFAULT_TEST = 'analysis'; 55 const DEFAULT_TEST = 'analysis';
50 const PRIORITY_FILE_OPTION = 'priority'; 56 const PRIORITY_FILE_OPTION = 'priority';
51 const SOURCE_OPTION = 'source'; 57 const SOURCE_OPTION = 'source';
52 const TEST_NAME_OPTION = 'test'; 58 const TEST_NAME_OPTION = 'test';
(...skipping 25 matching lines...) Expand all
78 sendAnalysisSetPriorityFiles([priorityFile]); 84 sendAnalysisSetPriorityFiles([priorityFile]);
79 } 85 }
80 return analysisFinished.then((_) { 86 return analysisFinished.then((_) {
81 print('analysis completed in ${stopwatch.elapsed}'); 87 print('analysis completed in ${stopwatch.elapsed}');
82 stopwatch.reset(); 88 stopwatch.reset();
83 }); 89 });
84 } 90 }
85 } 91 }
86 92
87 @reflectiveTest 93 @reflectiveTest
88 class NavigationTimingIntegrationTest extends AbstractTimingTest { 94 class HighlightingTimingIntegrationTest extends PriorityFileTimer {
89 Future test_detect_navigation_done() { 95 @override
90 expect(priorityFile, isNotNull); 96 String get description => 'highlighting';
97
98 @override
99 Stream get eventStream => onAnalysisHighlights;
100
101 @override
102 AnalysisService get service => AnalysisService.HIGHLIGHTS;
103 }
104
105 @reflectiveTest
106 class NavigationTimingIntegrationTest extends PriorityFileTimer {
107 @override
108 String get description => 'navigation';
109
110 @override
111 Stream get eventStream => onAnalysisNavigation;
112
113 @override
114 AnalysisService get service => AnalysisService.NAVIGATION;
115 }
116
117 @reflectiveTest
118 class OutlineTimingIntegrationTest extends PriorityFileTimer {
119 @override
120 String get description => 'outline';
121
122 @override
123 Stream get eventStream => onAnalysisOutline;
124
125 @override
126 AnalysisService get service => AnalysisService.OUTLINE;
127 }
128
129 abstract class PriorityFileTimer extends AbstractTimingTest {
130 String get description;
131 Stream get eventStream;
132 AnalysisService get service;
133
134 Future test_timing() {
135 expect(priorityFile, isNotNull,
136 reason: 'A priority file must be specified for $description testing.');
91 stopwatch.start(); 137 stopwatch.start();
92 138
93 Duration elapsed; 139 Duration elapsed;
94 onAnalysisNavigation.listen((AnalysisNavigationParams params) { 140 eventStream.listen((_) {
95 elapsed = stopwatch.elapsed; 141 elapsed = stopwatch.elapsed;
96 }); 142 });
97 143
98 setAnalysisRoot(); 144 setAnalysisRoot();
99 sendAnalysisSetSubscriptions({ 145 sendAnalysisSetSubscriptions({
100 AnalysisService.NAVIGATION: [priorityFile] 146 service: [priorityFile]
101 }); 147 });
102 148
103 sendAnalysisSetPriorityFiles([priorityFile]); 149 sendAnalysisSetPriorityFiles([priorityFile]);
104 150
105 return analysisFinished.then((_) { 151 return analysisFinished.then((_) {
106 print('navigation completed in ${elapsed}'); 152 print('$description completed in ${elapsed}');
107 stopwatch.reset(); 153 stopwatch.reset();
108 }); 154 });
109 } 155 }
110 } 156 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698