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

Side by Side Diff: pkg/analysis_server/test/performance/main.dart

Issue 1201263002: performance measurement: add explicit temp source directory argument (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: merge Created 5 years, 6 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 | « pkg/analysis_server/test/performance/log_file_input_converter.dart ('k') | 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; 5 library server.performance;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:convert'; 8 import 'dart:convert';
9 import 'dart:io'; 9 import 'dart:io';
10 10
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 results.printResults(); 54 results.printResults();
55 }).whenComplete(() { 55 }).whenComplete(() {
56 return subscription.cancel(); 56 return subscription.cancel();
57 }); 57 });
58 } 58 }
59 59
60 const HELP_CMDLINE_OPTION = 'help'; 60 const HELP_CMDLINE_OPTION = 'help';
61 const INPUT_CMDLINE_OPTION = 'input'; 61 const INPUT_CMDLINE_OPTION = 'input';
62 const MAP_FROM_OPTION = 'mapFrom'; 62 const MAP_FROM_OPTION = 'mapFrom';
63 const MAP_TO_OPTION = 'mapTo'; 63 const MAP_TO_OPTION = 'mapTo';
64 const TMP_SRC_DIR_OPTION = 'tmpSrcDir';
64 const VERBOSE_CMDLINE_OPTION = 'verbose'; 65 const VERBOSE_CMDLINE_OPTION = 'verbose';
65 const VERY_VERBOSE_CMDLINE_OPTION = 'vv'; 66 const VERY_VERBOSE_CMDLINE_OPTION = 'vv';
66 67
67 /** 68 /**
68 * Open and return the input stream specifying how this client 69 * Open and return the input stream specifying how this client
69 * should interact with the analysis server. 70 * should interact with the analysis server.
70 */ 71 */
71 Stream<Operation> openInput(ArgResults args) { 72 Stream<Operation> openInput(ArgResults args) {
73 var logger = new Logger('openInput');
72 Stream<List<int>> inputRaw; 74 Stream<List<int>> inputRaw;
73 String inputPath = args[INPUT_CMDLINE_OPTION]; 75 String inputPath = args[INPUT_CMDLINE_OPTION];
74 if (inputPath == null) { 76 if (inputPath == null) {
75 return null; 77 return null;
76 } 78 }
77 if (inputPath == 'stdin') { 79 if (inputPath == 'stdin') {
78 inputRaw = stdin; 80 inputRaw = stdin;
79 } else { 81 } else {
80 inputRaw = new File(inputPath).openRead(); 82 inputRaw = new File(inputPath).openRead();
81 } 83 }
82 Map<String, String> srcPathMap = new Map<String, String>(); 84 Map<String, String> srcPathMap = new Map<String, String>();
83 String mapFrom = args[MAP_FROM_OPTION]; 85 String mapFrom = args[MAP_FROM_OPTION];
84 if (mapFrom != null && mapFrom.isNotEmpty) { 86 if (mapFrom != null && mapFrom.isNotEmpty) {
85 String mapTo = args[MAP_TO_OPTION]; 87 String mapTo = args[MAP_TO_OPTION];
86 srcPathMap[mapFrom] = mapTo; 88 srcPathMap[mapFrom] = mapTo;
87 new Logger('openInput').log( 89 logger.log(
88 Level.INFO, 'mapping source paths\n from $mapFrom\n to $mapTo'); 90 Level.INFO, 'mapping source paths\n from $mapFrom\n to $mapTo');
89 } 91 }
92 String tmpSrcDirPath = args[TMP_SRC_DIR_OPTION];
93 logger.log(Level.INFO, 'tmpSrcDir: $tmpSrcDirPath');
90 return inputRaw 94 return inputRaw
91 .transform(SYSTEM_ENCODING.decoder) 95 .transform(SYSTEM_ENCODING.decoder)
92 .transform(new LineSplitter()) 96 .transform(new LineSplitter())
93 .transform(new InputConverter(srcPathMap)); 97 .transform(new InputConverter(tmpSrcDirPath, srcPathMap));
94 } 98 }
95 99
96 /** 100 /**
97 * Parse the command line arguments. 101 * Parse the command line arguments.
98 */ 102 */
99 ArgResults parseArgs(List<String> rawArgs) { 103 ArgResults parseArgs(List<String> rawArgs) {
100 ArgParser parser = new ArgParser(); 104 ArgParser parser = new ArgParser();
101 105
102 parser.addOption(INPUT_CMDLINE_OPTION, 106 parser.addOption(INPUT_CMDLINE_OPTION, abbr: 'i', help: '<filePath>\n'
103 abbr: 'i', 107 'The input file specifying how this client should interact with the server .\n'
104 help: 'The input file specifying how this client should interact ' 108 'If the input file name is "stdin", then the instructions are read from st andard input.');
105 'with the server. If the input file name is "stdin", '
106 'then the instructions are read from standard input.');
107 parser.addOption(MAP_FROM_OPTION, 109 parser.addOption(MAP_FROM_OPTION,
108 help: 'The original source directory when the instrumentation ' 110 help: 'The original source directory when the instrumentation '
109 'or log file was generated.'); 111 'or log file was generated.');
110 parser.addOption(MAP_TO_OPTION, 112 parser.addOption(MAP_TO_OPTION,
111 help: 'The target source directory used during performance testing. ' 113 help: 'The target source directory used during performance testing. '
112 'WARNING: The contents of this directory will be modified'); 114 'WARNING: The contents of this directory will be modified');
115 parser.addOption(TMP_SRC_DIR_OPTION, abbr: 't', help: '<dirPath>\n'
116 'The temporary directory containing source used during performance measure ment.\n'
117 'WARNING: The contents of the target directory will be modified');
113 parser.addFlag(VERBOSE_CMDLINE_OPTION, 118 parser.addFlag(VERBOSE_CMDLINE_OPTION,
114 abbr: 'v', help: 'Verbose logging', negatable: false); 119 abbr: 'v', help: 'Verbose logging', negatable: false);
115 parser.addFlag(VERY_VERBOSE_CMDLINE_OPTION, 120 parser.addFlag(VERY_VERBOSE_CMDLINE_OPTION,
116 help: 'Extra verbose logging', negatable: false); 121 help: 'Extra verbose logging', negatable: false);
117 parser.addFlag(HELP_CMDLINE_OPTION, 122 parser.addFlag(HELP_CMDLINE_OPTION,
118 abbr: 'h', help: 'Print this help information', negatable: false); 123 abbr: 'h', help: 'Print this help information', negatable: false);
119 124
120 ArgResults args; 125 ArgResults args;
121 try { 126 try {
122 args = parser.parse(rawArgs); 127 args = parser.parse(rawArgs);
123 } on Exception catch (e) { 128 } on Exception catch (e) {
124 print(e); 129 print(e);
125 printHelp(parser); 130 printHelp(parser);
126 exit(1); 131 exit(1);
127 } 132 }
128 133
129 bool showHelp = args[HELP_CMDLINE_OPTION] || args.rest.isNotEmpty; 134 bool showHelp = args[HELP_CMDLINE_OPTION] || args.rest.isNotEmpty;
130 135
131 bool isMissing(key) => args[key] == null || args[key].isEmpty; 136 bool isMissing(key) => args[key] == null || args[key].isEmpty;
132 137
133 if (isMissing(INPUT_CMDLINE_OPTION)) { 138 if (isMissing(INPUT_CMDLINE_OPTION)) {
134 print('missing "input" argument'); 139 print('missing $INPUT_CMDLINE_OPTION argument');
135 showHelp = true; 140 showHelp = true;
136 } 141 }
137 142
138 if (isMissing(MAP_FROM_OPTION) != isMissing(MAP_TO_OPTION)) { 143 if (isMissing(MAP_FROM_OPTION) != isMissing(MAP_TO_OPTION)) {
139 print('must specifiy both $MAP_FROM_OPTION and $MAP_TO_OPTION'); 144 print('must specifiy both $MAP_FROM_OPTION and $MAP_TO_OPTION');
140 showHelp = true; 145 showHelp = true;
141 } 146 }
142 147
148 if (isMissing(TMP_SRC_DIR_OPTION)) {
149 print('missing $TMP_SRC_DIR_OPTION argument');
150 showHelp = true;
151 }
152
143 if (args[VERY_VERBOSE_CMDLINE_OPTION] || rawArgs.contains('-vv')) { 153 if (args[VERY_VERBOSE_CMDLINE_OPTION] || rawArgs.contains('-vv')) {
144 Logger.root.level = Level.FINE; 154 Logger.root.level = Level.FINE;
145 } else if (args[VERBOSE_CMDLINE_OPTION]) { 155 } else if (args[VERBOSE_CMDLINE_OPTION]) {
146 Logger.root.level = Level.INFO; 156 Logger.root.level = Level.INFO;
147 } else { 157 } else {
148 Logger.root.level = Level.WARNING; 158 Logger.root.level = Level.WARNING;
149 } 159 }
150 160
151 if (showHelp) { 161 if (showHelp) {
152 printHelp(parser); 162 printHelp(parser);
153 exit(1); 163 exit(1);
154 } 164 }
155 165
156 return args; 166 return args;
157 } 167 }
158 168
159 void printHelp(ArgParser parser) { 169 void printHelp(ArgParser parser) {
160 print(''); 170 print('');
161 print('Launch and interact with the AnalysisServer'); 171 print('Launch and interact with the AnalysisServer');
172 print('');
162 print(parser.usage); 173 print(parser.usage);
163 } 174 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/test/performance/log_file_input_converter.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698