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

Unified Diff: pkg/analysis_server/test/performance/main.dart

Issue 1219023006: move performance measurement to benchmark/integration (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 side-by-side diff with in-line comments
Download patch
Index: pkg/analysis_server/test/performance/main.dart
diff --git a/pkg/analysis_server/test/performance/main.dart b/pkg/analysis_server/test/performance/main.dart
deleted file mode 100644
index 793110de50c1a6e99db76ef0cbcc248aed2f1ab5..0000000000000000000000000000000000000000
--- a/pkg/analysis_server/test/performance/main.dart
+++ /dev/null
@@ -1,240 +0,0 @@
-// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library server.performance;
-
-import 'dart:async';
-import 'dart:convert';
-import 'dart:io';
-
-import 'package:args/args.dart';
-import 'package:logging/logging.dart';
-import 'package:path/path.dart' as path;
-
-import 'driver.dart';
-import 'input_converter.dart';
-import 'operation.dart';
-
-/**
- * Launch and interact with the analysis server.
- */
-main(List<String> rawArgs) {
- Logger logger = new Logger('Performance Measurement Client');
- logger.onRecord.listen((LogRecord rec) {
- print(rec.message);
- });
- PerfArgs args = parseArgs(rawArgs);
-
- Driver driver = new Driver(logger);
- Stream<Operation> stream = openInput(args);
- StreamSubscription<Operation> subscription;
- subscription = stream.listen((Operation op) {
- Future future = driver.perform(op);
- if (future != null) {
- logger.log(Level.FINE, 'pausing operations for ${op.runtimeType}');
- subscription.pause(future.then((_) {
- logger.log(Level.FINE, 'resuming operations');
- }));
- }
- }, onDone: () {
- subscription.cancel();
- driver.stopServer(SHUTDOWN_TIMEOUT);
- }, onError: (e, s) {
- subscription.cancel();
- logger.log(Level.SEVERE, '$e\n$s');
- driver.stopServer(SHUTDOWN_TIMEOUT);
- });
- driver.runComplete.then((Results results) {
- results.printResults();
- }).whenComplete(() {
- return subscription.cancel();
- });
-}
-
-const DIAGNOSTIC_PORT_OPTION = 'diagnosticPort';
-const HELP_CMDLINE_OPTION = 'help';
-const INPUT_CMDLINE_OPTION = 'input';
-const MAP_OPTION = 'map';
-
-/**
- * The amount of time to give the server to respond to a shutdown request
- * before forcibly terminating it.
- */
-const Duration SHUTDOWN_TIMEOUT = const Duration(seconds: 25);
-
-const TMP_SRC_DIR_OPTION = 'tmpSrcDir';
-const VERBOSE_CMDLINE_OPTION = 'verbose';
-const VERY_VERBOSE_CMDLINE_OPTION = 'vv';
-
-/**
- * Open and return the input stream specifying how this client
- * should interact with the analysis server.
- */
-Stream<Operation> openInput(PerfArgs args) {
- var logger = new Logger('openInput');
- Stream<List<int>> inputRaw;
- if (args.inputPath == 'stdin') {
- inputRaw = stdin;
- } else {
- inputRaw = new File(args.inputPath).openRead();
- }
- args.srcPathMap.forEach((oldPath, newPath) {
- logger.log(
- Level.INFO, 'mapping source path\n from $oldPath\n to $newPath');
- });
- logger.log(Level.INFO, 'tmpSrcDir: ${args.tmpSrcDirPath}');
- return inputRaw
- .transform(SYSTEM_ENCODING.decoder)
- .transform(new LineSplitter())
- .transform(new InputConverter(args.tmpSrcDirPath, args.srcPathMap,
- diagnosticPort: args.diagnosticPort));
-}
-
-/**
- * Parse the command line arguments.
- */
-PerfArgs parseArgs(List<String> rawArgs) {
- ArgParser parser = new ArgParser();
-
- parser.addOption(INPUT_CMDLINE_OPTION, abbr: 'i', help: '<filePath>\n'
- 'The input file specifying how this client should interact with the server.\n'
- 'If the input file name is "stdin", then the instructions are read from standard input.');
- parser.addOption(MAP_OPTION,
- abbr: 'm',
- allowMultiple: true,
- splitCommas: false,
- help: '<oldSrcPath>,<newSrcPath>\n'
- 'This option defines a mapping from the original source directory <oldSrcPath>\n'
- 'when the instrumentation or log file was generated\n'
- 'to the target source directory <newSrcPath> used during performance testing.\n'
- 'Multiple mappings can be specified.\n'
- 'WARNING: The contents of the target directory will be modified');
- parser.addOption(TMP_SRC_DIR_OPTION, abbr: 't', help: '<dirPath>\n'
- 'The temporary directory containing source used during performance measurement.\n'
- 'WARNING: The contents of the target directory will be modified');
- parser.addOption(DIAGNOSTIC_PORT_OPTION,
- abbr: 'd',
- help: 'localhost port on which server will provide diagnostic web pages');
- parser.addFlag(VERBOSE_CMDLINE_OPTION,
- abbr: 'v', help: 'Verbose logging', negatable: false);
- parser.addFlag(VERY_VERBOSE_CMDLINE_OPTION,
- help: 'Extra verbose logging', negatable: false);
- parser.addFlag(HELP_CMDLINE_OPTION,
- abbr: 'h', help: 'Print this help information', negatable: false);
-
- ArgResults args;
- PerfArgs perfArgs = new PerfArgs();
- try {
- args = parser.parse(rawArgs);
- } on Exception catch (e) {
- print(e);
- printHelp(parser);
- exit(1);
- }
-
- bool showHelp = args[HELP_CMDLINE_OPTION] || args.rest.isNotEmpty;
-
- bool isMissing(key) => args[key] == null || args[key].isEmpty;
-
- perfArgs.inputPath = args[INPUT_CMDLINE_OPTION];
- if (isMissing(INPUT_CMDLINE_OPTION)) {
- print('missing $INPUT_CMDLINE_OPTION argument');
- showHelp = true;
- }
-
- perfArgs.srcPathMap = <String, String>{};
- for (String pair in args[MAP_OPTION]) {
- if (pair is String) {
- int index = pair.indexOf(',');
- if (index != -1 && pair.indexOf(',', index + 1) == -1) {
- String oldSrcPath = _withTrailingSeparator(pair.substring(0, index));
- String newSrcPath = _withTrailingSeparator(pair.substring(index + 1));
- if (new Directory(newSrcPath).existsSync()) {
- perfArgs.srcPathMap[oldSrcPath] = newSrcPath;
- continue;
- }
- }
- }
- print('must specifiy $MAP_OPTION <oldSrcPath>,<newSrcPath>');
- showHelp = true;
- }
-
- perfArgs.tmpSrcDirPath = _withTrailingSeparator(args[TMP_SRC_DIR_OPTION]);
- if (isMissing(TMP_SRC_DIR_OPTION)) {
- print('missing $TMP_SRC_DIR_OPTION argument');
- showHelp = true;
- }
-
- String portText = args[DIAGNOSTIC_PORT_OPTION];
- if (portText != null) {
- perfArgs.diagnosticPort = int.parse(portText, onError: (s) {
- print('invalid $DIAGNOSTIC_PORT_OPTION: $s');
- showHelp = true;
- });
- }
-
- if (args[VERY_VERBOSE_CMDLINE_OPTION] || rawArgs.contains('-vv')) {
- Logger.root.level = Level.FINE;
- } else if (args[VERBOSE_CMDLINE_OPTION]) {
- Logger.root.level = Level.INFO;
- } else {
- Logger.root.level = Level.WARNING;
- }
-
- if (showHelp) {
- printHelp(parser);
- exit(1);
- }
-
- return perfArgs;
-}
-
-void printHelp(ArgParser parser) {
- print('');
- print('Launch and interact with the AnalysisServer');
- print('');
- print(parser.usage);
-}
-
-/**
- * Ensure that the given path has a trailing separator
- */
-String _withTrailingSeparator(String dirPath) {
- if (dirPath != null && dirPath.length > 4) {
- if (!dirPath.endsWith(path.separator)) {
- return '$dirPath${path.separator}';
- }
- }
- return dirPath;
-}
-
-/**
- * The performance measurement arguments specified on the command line.
- */
-class PerfArgs {
-
- /**
- * The file path of the instrumentation or log file
- * used to drive performance measurement,
- * or 'stdin' if this information should be read from standard input.
- */
- String inputPath;
-
- /**
- * A mapping from the original source directory
- * when the instrumentation or log file was generated
- * to the target source directory used during performance testing.
- */
- Map<String, String> srcPathMap;
-
- /**
- * The temporary directory containing source used during performance measurement.
- */
- String tmpSrcDirPath;
-
- /**
- * The diagnostic port for Analysis Server or `null` if none.
- */
- int diagnosticPort;
-}

Powered by Google App Engine
This is Rietveld 408576698