Index: pkg/analysis_server/test/performance/instrumentation_input_converter.dart |
diff --git a/pkg/analysis_server/test/performance/instrumentation_input_converter.dart b/pkg/analysis_server/test/performance/instrumentation_input_converter.dart |
deleted file mode 100644 |
index 11e2f9ae3cd458407dc705b3c8845069f19b6621..0000000000000000000000000000000000000000 |
--- a/pkg/analysis_server/test/performance/instrumentation_input_converter.dart |
+++ /dev/null |
@@ -1,150 +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 input.transformer.instrumentation; |
- |
-import 'dart:convert'; |
- |
-import 'package:analyzer/src/generated/java_engine.dart'; |
-import 'package:analyzer/instrumentation/instrumentation.dart'; |
-import 'package:logging/logging.dart'; |
- |
-import 'input_converter.dart'; |
-import 'operation.dart'; |
- |
-final int COLON = ':'.codeUnitAt(0); |
- |
-/** |
- * [InstrumentationInputConverter] converts an instrumentation stream |
- * into a series of operations to be sent to the analysis server. |
- */ |
-class InstrumentationInputConverter extends CommonInputConverter { |
- final Set<String> codesSeen = new Set<String>(); |
- |
- /** |
- * [readBuffer] holds the contents of the file being read from disk |
- * as recorded in the instrumentation log |
- * or `null` if not converting a "Read" entry. |
- */ |
- StringBuffer readBuffer = null; |
- |
- InstrumentationInputConverter( |
- String tmpSrcDirPath, Map<String, String> srcPathMap, |
- {int diagnosticPort}) |
- : super(tmpSrcDirPath, srcPathMap, diagnosticPort: diagnosticPort); |
- |
- @override |
- Operation convert(String line) { |
- List<String> fields; |
- try { |
- fields = _parseFields(line); |
- if (fields.length < 2) { |
- if (readBuffer != null) { |
- readBuffer.writeln(fields.length == 1 ? fields[0] : ''); |
- return null; |
- } |
- throw 'Failed to process line:\n$line'; |
- } |
- if (readBuffer != null) { |
- readBuffer = null; |
- } |
- } catch (e, s) { |
- throw new AnalysisException( |
- 'Failed to parse line\n$line', new CaughtException(e, s)); |
- } |
- // int timeStamp = int.parse(fields[0], onError: (_) => -1); |
- String opCode = fields[1]; |
- if (opCode == InstrumentationService.TAG_NOTIFICATION) { |
- return convertNotification(decodeJson(line, fields[2])); |
- } else if (opCode == 'Read') { |
- // 1434096943209:Read:/some/file/path:1434095535000:<file content> |
- //String filePath = fields[2]; |
- readBuffer = new StringBuffer(fields.length > 4 ? fields[4] : ''); |
- return null; |
- } else if (opCode == InstrumentationService.TAG_REQUEST) { |
- return convertRequest(decodeJson(line, fields[2])); |
- } else if (opCode == InstrumentationService.TAG_RESPONSE) { |
- // 1434096937454:Res:{"id"::"0","result"::{"version"::"1.7.0"}} |
- return convertResponse(decodeJson(line, fields[2])); |
- } else if (opCode == InstrumentationService.TAG_ANALYSIS_TASK) { |
- // 1434096943208:Task:/Users/ |
- return null; |
- } else if (opCode == InstrumentationService.TAG_LOG_ENTRY) { |
- // 1434096937454:Res:{"id"::"0","result"::{"version"::"1.7.0"}} |
- return null; |
- } else if (opCode == InstrumentationService.TAG_PERFORMANCE) { |
- //1434096960092:Perf:analysis_full:16884:context_id=0 |
- return null; |
- } else if (opCode == InstrumentationService.TAG_SUBPROCESS_START) { |
- // 1434096938634:SPStart:0:/Users/da |
- return null; |
- } else if (opCode == InstrumentationService.TAG_SUBPROCESS_RESULT) { |
- // 1434096939068:SPResult:0:0:"{\"packages\"::{\"rpi_lidar\"::\"/Users |
- return null; |
- } else if (opCode == InstrumentationService.TAG_VERSION) { |
- // 1434096937358:Ver:1421765742287333878467:org.dartlang.dartplugin |
- return null; |
- } else if (opCode == InstrumentationService.TAG_WATCH_EVENT) { |
- // 1434097460414:Watch:/some/file/path |
- return null; |
- } |
- if (codesSeen.add(opCode)) { |
- logger.log( |
- Level.WARNING, 'Ignored instrumentation op code: $opCode\n $line'); |
- } |
- return null; |
- } |
- |
- Map<String, dynamic> decodeJson(String line, String text) { |
- try { |
- return JSON.decode(text); |
- } catch (e, s) { |
- throw new AnalysisException( |
- 'Failed to decode JSON: $text\n$line', new CaughtException(e, s)); |
- } |
- } |
- |
- /** |
- * Determine if the given line is from an instrumentation file. |
- * For example: |
- * `1433175833005:Ver:1421765742287333878467:org.dartlang.dartplugin:0.0.0:1.6.2:1.11.0-edge.131698` |
- */ |
- static bool isFormat(String line) { |
- List<String> fields = _parseFields(line); |
- if (fields.length < 2) return false; |
- int timeStamp = int.parse(fields[0], onError: (_) => -1); |
- String opCode = fields[1]; |
- return timeStamp > 0 && opCode == 'Ver'; |
- } |
- |
- /** |
- * Extract fields from the given [line]. |
- */ |
- static List<String> _parseFields(String line) { |
- List<String> fields = new List<String>(); |
- int index = 0; |
- StringBuffer sb = new StringBuffer(); |
- while (index < line.length) { |
- int code = line.codeUnitAt(index); |
- if (code == COLON) { |
- // Embedded colons are doubled |
- int next = index + 1; |
- if (next < line.length && line.codeUnitAt(next) == COLON) { |
- sb.write(':'); |
- ++index; |
- } else { |
- fields.add(sb.toString()); |
- sb.clear(); |
- } |
- } else { |
- sb.writeCharCode(code); |
- } |
- ++index; |
- } |
- if (sb.isNotEmpty) { |
- fields.add(sb.toString()); |
- } |
- return fields; |
- } |
-} |