| Index: pkg/analysis_server/test/benchmarks_test.dart
|
| diff --git a/pkg/analysis_server/test/benchmarks_test.dart b/pkg/analysis_server/test/benchmarks_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..370c088c05c8f347772ef4feffb89a83c151ee61
|
| --- /dev/null
|
| +++ b/pkg/analysis_server/test/benchmarks_test.dart
|
| @@ -0,0 +1,59 @@
|
| +// Copyright (c) 2014, 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.=> defineTests();
|
| +
|
| +/// This tests the benchmarks in benchmark/benchmark.test, and ensures that our
|
| +/// benchmarks can run.
|
| +
|
| +import 'dart:convert';
|
| +import 'dart:io';
|
| +
|
| +import 'package:path/path.dart' as path;
|
| +import 'package:test/test.dart';
|
| +
|
| +void main() => defineTests();
|
| +
|
| +void defineTests() {
|
| + group('benchmarks', () {
|
| + final List<String> benchmarks = _listBenchmarks();
|
| +
|
| + test('can list', () {
|
| + expect(benchmarks, isNotEmpty);
|
| + });
|
| +
|
| + for (String benchmarkId in benchmarks) {
|
| + test(benchmarkId, () {
|
| + ProcessResult r = Process.runSync(
|
| + Platform.resolvedExecutable,
|
| + [
|
| + path.join('benchmark', 'benchmarks.dart'),
|
| + 'run',
|
| + '--repeat=1',
|
| + '--quick',
|
| + benchmarkId
|
| + ],
|
| + workingDirectory: _serverSourcePath,
|
| + );
|
| + expect(r.exitCode, 0,
|
| + reason: 'exit: ${r.exitCode}\n${r.stdout}\n${r.stderr}');
|
| + });
|
| + }
|
| + });
|
| +}
|
| +
|
| +List<String> _listBenchmarks() {
|
| + ProcessResult result = Process.runSync(
|
| + Platform.resolvedExecutable,
|
| + [path.join('benchmark', 'benchmarks.dart'), 'list', '--machine'],
|
| + workingDirectory: _serverSourcePath,
|
| + );
|
| + Map m = JSON.decode(result.stdout);
|
| + List benchmarks = m['benchmarks'];
|
| + return benchmarks.map((b) => b['id']).toList();
|
| +}
|
| +
|
| +String get _serverSourcePath {
|
| + String script = Platform.script.toFilePath(windows: Platform.isWindows);
|
| + String pkgPath = path.normalize(path.join(path.dirname(script), '..', '..'));
|
| + return path.join(pkgPath, 'analysis_server');
|
| +}
|
|
|