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

Unified Diff: tests/service_tests/service_tests.dart

Issue 2035023003: Remove service-compiler related code. (Closed) Base URL: git@github.com:dartino/sdk.git@master
Patch Set: Created 4 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
« no previous file with comments | « tests/service_tests/performance/performance_test.cc ('k') | tests/servicec/camelize_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/service_tests/service_tests.dart
diff --git a/tests/service_tests/service_tests.dart b/tests/service_tests/service_tests.dart
deleted file mode 100644
index f0902aab87131aa63803ea984be3e6f0f2285712..0000000000000000000000000000000000000000
--- a/tests/service_tests/service_tests.dart
+++ /dev/null
@@ -1,649 +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.
-
-import 'dart:async' show
- Future;
-
-import 'dart:convert' show
- LineSplitter,
- UTF8;
-
-import 'dart:io' show
- Directory,
- File,
- FileSystemEntity,
- Platform,
- Process,
- ProcessResult;
-
-import 'package:expect/expect.dart' show
- Expect;
-
-import 'multiple_services/multiple_services_tests.dart' as multiple;
-import '../../samples/todomvc/todomvc_service_tests.dart' as todomvc;
-import '../../samples/simple_todo/simple_todo_service_tests.dart'
- as simple_todo;
-
-import '../dartino_compiler/run.dart' show
- export;
-
-import 'package:servicec/compiler.dart' as servicec;
-
-List<ServiceTest> SERVICE_TESTS = <ServiceTest>[]
- ..add(todomvc.serviceTest)
- ..addAll(simple_todo.serviceTests)
- ..addAll(multiple.serviceTests)
- ..addAll(buildStandardServiceTests(
- 'conformance',
- ccSources: [
- 'conformance_test.cc',
- 'conformance_test_shared.cc',
- ],
- javaSources: [
- 'java/ConformanceTest.java',
- 'java/DebugRunner.java',
- 'java/SnapshotRunner.java',
- ],
- javaMainClass: 'ConformanceTest'))
- ..addAll(buildStandardServiceTests(
- 'performance',
- ccSources: [
- 'performance_test.cc',
- ],
- javaSources: [
- 'java/PerformanceTest.java',
- 'java/SnapshotRunner.java',
- ],
- javaMainClass: 'PerformanceTest'));
-
-const String thisDirectory = 'tests/service_tests';
-
-/// Absolute path to the build directory used by test.py.
-const String buildDirectory =
- const String.fromEnvironment('test.dart.build-dir');
-
-/// Build architecture provided to test.py
-const String buildArchitecture =
- const String.fromEnvironment('test.dart.build-arch');
-
-/// Use clang as configured by test.py
-const bool buildClang =
- const bool.fromEnvironment('test.dart.build-clang');
-
-/// Host system configuration from test.py
-const String buildSystem =
- const String.fromEnvironment('test.dart.build-system');
-
-/// Use asan as configured by test.py
-const bool buildAsan =
- const bool.fromEnvironment('test.dart.build-asan');
-
-/// servicec directory as configured by test.py.
-final Uri servicecDirectory =
- new Uri(path: const String.fromEnvironment('test.dart.servicec-dir'));
-
-/// Resources directory for servicec.
-final Uri resourcesDirectory = servicecDirectory.resolve('lib/src/resources');
-
-/// Temporary directory for test output.
-const String tempTestOutputDirectory =
- const String.fromEnvironment("test.dart.temp-dir");
-
-final String generatedDirectory = '$tempTestOutputDirectory/service_tests';
-
-// TODO(zerny): Provide the below constants via configuration from test.py
-final String dartinoExecutable = '$buildDirectory/dartino';
-final String dartinoLibrary = '$buildDirectory/libdartino.a';
-
-/// Location of JDK installation. Empty if no installation was found.
-const String javaHome = const String.fromEnvironment('java-home');
-
-const bool isAsan = buildAsan;
-const bool isClang = buildClang;
-const bool isGNU = !buildClang;
-const bool isMacOS = buildSystem == 'macos';
-const bool isLinux = buildSystem == 'linux';
-
-abstract class ServiceTest {
- final String name;
- List<Rule> rules = [];
- String get outputDirectory => '$generatedDirectory/$name';
-
- ServiceTest(this.name);
-
- // Prepare the test prior to run.
- Future<Null> prepare();
-
- Future<Directory> ensureDirectory(String path) {
- return new Directory(path).create(recursive: true);
- }
-
- Future<Null> run() async {
- await ensureDirectory(outputDirectory);
- await prepare();
- for (Rule rule in rules) {
- await rule.build();
- }
- }
-}
-
-abstract class StandardServiceTest extends ServiceTest {
- final String baseName;
-
- Iterable<String> ccSources;
-
- StandardServiceTest(name, type, ccSources)
- : super('${name}_${type}'),
- baseName = name {
- this.ccSources = ccSources.map((path) => '$inputDirectory/$path').toList()
- ..add('$outputDirectory/cc/${baseName}_service.cc')
- ..add('$outputDirectory/cc/struct.cc')
- ..add('$outputDirectory/cc/unicode.cc');
- }
-
- String get inputDirectory => '$thisDirectory/$baseName';
-
- String get idlPath => '$inputDirectory/${baseName}_service.idl';
- String get serviceImpl => '${baseName}_service_impl.dart';
- String get servicePath => '$outputDirectory/$serviceImpl';
- String get snapshotPath => '$outputDirectory/${baseName}.snapshot';
- String get executablePath => '$outputDirectory/service_${baseName}_test';
-
- void prepareService() {
- rules.add(new CompileServiceRule(idlPath, outputDirectory));
- }
-
- void prepareSnapshot() {
- rules.add(new CopyRule(inputDirectory, outputDirectory, [serviceImpl]));
- rules.add(new BuildSnapshotRule(servicePath, snapshotPath));
- }
-}
-
-class StandardServiceCcTest extends StandardServiceTest {
- StandardServiceCcTest(name, ccSources)
- : super(name, 'cc', ccSources);
-
- Future<Null> prepare() async {
- prepareService();
- prepareSnapshot();
- rules.add(new CcRule(
- executable: executablePath,
- includePaths: [outputDirectory],
- sources: ccSources));
- rules.add(new RunSnapshotRule(executablePath, snapshotPath));
- }
-}
-
-class StandardServiceJavaTest extends StandardServiceTest {
- final String mainClass;
- Iterable<String> javaSources;
-
- StandardServiceJavaTest(name, this.mainClass, this.javaSources, ccSources)
- : super(name, 'java', ccSources);
-
- String get javaDirectory => '$outputDirectory/java';
- String get classesDirectory => '$outputDirectory/classes';
- String get jarFile => '$outputDirectory/$baseName.jar';
-
- Future<Null> prepare() async {
- prepareService();
- prepareSnapshot();
-
- // Complete the test here if Java home is not set.
- if (javaHome.isEmpty) return;
-
- rules.add(new CcRule(
- sharedLibrary: '$outputDirectory/libdartino',
- includePaths: [
- 'include',
- '$javaHome/include',
- '$javaHome/include/${isMacOS ? "darwin" : "linux"}',
- outputDirectory,
- ],
- sources: [
- '$javaDirectory/jni/dartino_api_wrapper.cc',
- '$javaDirectory/jni/dartino_service_api_wrapper.cc',
- '$javaDirectory/jni/${baseName}_service_wrapper.cc',
- ]..addAll(ccSources)));
-
- rules.add(new MakeDirectoryRule(classesDirectory));
-
- rules.add(new JavacRule(
- warningAsError: false,
- sources: ['$javaDirectory/dartino']
- ..addAll(javaSources.map((path) => '$inputDirectory/$path')),
- outputDirectory: classesDirectory));
-
- rules.add(new JarRule(
- jarFile,
- sources: ['.'],
- baseDirectory: classesDirectory));
-
- rules.add(new JavaRule(
- mainClass,
- arguments: [snapshotPath],
- classpath: [jarFile],
- libraryPath: outputDirectory));
- }
-}
-
-List<ServiceTest> buildStandardServiceTests(
- name,
- {ccSources: const <String>[],
- javaSources: const <String>[],
- javaMainClass}) {
- return <ServiceTest>[
- new StandardServiceCcTest(name, ccSources),
- new StandardServiceJavaTest(name, javaMainClass, javaSources, ccSources),
- ];
-}
-
-abstract class Rule {
-
- Future<Null> build();
-
- static Future<int> runCommand(
- String executable,
- List<String> arguments,
- [Map<String,String> environment]) async {
- String environmentString = '';
- if (environment != null) {
- environmentString =
- environment.keys.map((k) => '$k=${environment[k]}').join(' ');
- }
- String cmdString = "$environmentString $executable ${arguments.join(' ')}";
- print('Running: $cmdString');
-
- Process process =
- await Process.start(executable, arguments, environment: environment);
-
- Future stdout = process.stdout.transform(UTF8.decoder)
- .transform(new LineSplitter())
- .listen(printOut)
- .asFuture()
- .then((_) => print('stdout done'));
-
- Future stderr = process.stderr.transform(UTF8.decoder)
- .transform(new LineSplitter())
- .listen(printErr)
- .asFuture()
- .then((_) => print('stderr done'));
-
- process.stdin.close();
- print('stdin closed');
-
- int exitCode = await process.exitCode;
- print('$cmdString exited with $exitCode');
-
- await stdout;
- await stderr;
-
- Expect.equals(0, exitCode);
- return exitCode;
- }
-
- static void printOut(String message) {
- print("stdout: $message");
- }
-
- static void printErr(String message) {
- print("stderr: $message");
- }
-}
-
-class MakeDirectoryRule extends Rule {
- final String directory;
- final bool recursive;
-
- MakeDirectoryRule(this.directory, {this.recursive: false});
-
- Future<Null> build() async {
- await new Directory(directory).create(recursive: recursive);
- }
-}
-
-class CopyRule extends Rule {
- String src;
- String dst;
- Iterable<String> files;
-
- CopyRule(this.src, this.dst, this.files);
-
- Future<Null> build() async {
- Directory dstDir = new Directory(dst);
- if (!await dstDir.exists()) {
- await dstDir.create(recursive: true);
- }
- Uri srcUri = new Uri.directory(src);
- for (String file in files) {
- File srcFile = new File.fromUri(srcUri.resolve(file));
- if (await srcFile.exists()) {
- await srcFile.copy(dstDir.uri.resolve(file).toFilePath());
- } else {
- throw "Could not find copy-rule source file '$src'.";
- }
- }
- }
-}
-
-class JarRule extends Rule {
- final String jar = "$javaHome/bin/jar";
-
- final String jarFile;
- final Iterable<String> sources;
- final String baseDirectory;
-
- JarRule(this.jarFile, {
- this.sources: const <String>[],
- this.baseDirectory
- });
-
- Future<Null> build() async {
- List<String> arguments = <String>["cf", jarFile];
- if (baseDirectory != null) {
- arguments.addAll(['-C', baseDirectory]);
- }
- arguments.addAll(sources);
- await Rule.runCommand(jar, arguments);
- }
-}
-
-class JavacRule extends Rule {
- final String javac = "$javaHome/bin/javac";
-
- final Iterable<String> sources;
- final Iterable<String> classpath;
- final Iterable<String> sourcepath;
- final String outputDirectory;
- final bool warningAsError;
- final bool lint;
-
- JavacRule({
- this.sources: const <String>[],
- this.classpath,
- this.sourcepath,
- this.outputDirectory,
- this.warningAsError: true,
- this.lint: true
- });
-
- Future<Null> build() async {
- List<String> arguments = <String>[];
-
- if (classpath != null) {
- arguments.addAll(['-classpath', classpath.join(':')]);
- }
-
- if (sourcepath != null) {
- arguments.addAll(['-sourcepath', sourcepath.join(':')]);
- }
-
- if (outputDirectory != null) {
- arguments.addAll(['-d', outputDirectory]);
- }
-
- if (warningAsError) arguments.add('-Werror');
-
- if (lint) arguments.add('-Xlint:all');
-
- for (String src in sources) {
- if (await FileSystemEntity.isDirectory(src)) {
- arguments.addAll(await new Directory(src)
- .list(recursive: true, followLinks: false)
- .where((entity) => entity is File && entity.path.endsWith('.java'))
- .map((entity) => entity.path)
- .toList());
- } else {
- arguments.add(src);
- }
- }
-
- await Rule.runCommand(javac, arguments);
- }
-}
-
-class JavaRule extends Rule {
- final String java = "$javaHome/bin/java";
-
- final String mainClass;
- final Iterable<String> arguments;
- final Iterable<String> classpath;
- final bool enableAssertions;
- final String libraryPath;
-
- JavaRule(this.mainClass, {
- this.arguments: const <String>[],
- this.classpath,
- this.enableAssertions: true,
- this.libraryPath
- });
-
- Future<Null> build() async {
- List<String> javaArguments = <String>[];
- Map<String, String> javaEnvironment;
-
- if (buildArchitecture == 'ia32') {
- javaArguments.add('-d32');
- } else if (buildArchitecture == 'x64') {
- javaArguments.add('-d64');
- } else {
- throw "Unsupported architecture $buildArchitecture";
- }
-
- if (enableAssertions) {
- javaArguments.add('-enableassertions');
- }
-
- if (classpath != null) {
- javaArguments.addAll(['-classpath', classpath.join(':')]);
- }
-
- if (libraryPath != null) {
- javaArguments.add('-Djava.library.path=$libraryPath');
- javaEnvironment = <String, String>{ 'LD_LIBRARY_PATH': libraryPath };
- }
-
- javaArguments.add(mainClass);
-
- if (arguments != null) {
- javaArguments.addAll(arguments);
- }
-
- await Rule.runCommand(java, javaArguments, javaEnvironment);
- }
-}
-
-// TODO(zerny): Consider refactoring dartino specifics into a derived class.
-// TODO(zerny): Find a way to obtain the dartino build configuration from gyp.
-class CcRule extends Rule {
- final String language;
- final String executable;
- final String sharedLibrary;
- final Iterable<String> flags;
- final Iterable<String> sources;
- final Iterable<String> libraries;
- final Iterable<String> includePaths;
- final Iterable<String> libraryPaths;
-
- CcRule({
- this.executable,
- this.sharedLibrary,
- this.language: 'c++11',
- this.flags: const <String>[],
- this.sources: const <String>[],
- this.libraries: const <String>[],
- this.includePaths: const <String>[],
- this.libraryPaths: const <String>[]
- }) {
- if (executable == null && sharedLibrary == null) {
- throw "CcRule expects a valid output path for an executable or library";
- }
- if (executable != null && sharedLibrary != null) {
- throw "CcRule expects either an executable or a library, not both";
- }
- }
-
- String get compiler => 'tools/cxx_wrapper.py';
-
- String get output {
- if (executable != null) return executable;
- String suffix = isMacOS ? 'jnilib' : 'so';
- return '$sharedLibrary.$suffix';
- }
-
- void addBuildFlags(List<String> arguments) {
- arguments.add('-std=${language}');
- arguments.add('-DDARTINO_ENABLE_FFI');
- arguments.add('-DDARTINO_ENABLE_LIVE_CODING');
- arguments.add('-DDARTINO_ENABLE_PRINT_INTERCEPTORS');
- arguments.add('-DDARTINO_ENABLE_NATIVE_PROCESSES');
- if (sharedLibrary != null) arguments.add('-shared');
- if (buildArchitecture == 'ia32') {
- arguments.add('-m32');
- arguments.add('-DDARTINO32');
- arguments.add('-DDARTINO_TARGET_IA32');
- } else if (buildArchitecture == 'x64') {
- arguments.add('-m64');
- arguments.add('-DDARTINO64');
- arguments.add('-DDARTINO_TARGET_X64');
- if (sharedLibrary != null) arguments.add('-fPIC');
- } else {
- throw "Unsupported architecture ${buildArchitecture}";
- }
- }
-
- void addHostFlags(List<String> arguments) {
- if (isMacOS) {
- arguments.add('-DDARTINO_TARGET_OS_MACOS');
- arguments.add('-DDARTINO_TARGET_OS_POSIX');
- arguments.addAll(['-framework', 'CoreFoundation']);
- } else if (isLinux) {
- arguments.add('-DDARTINO_TARGET_OS_LINUX');
- arguments.add('-DDARTINO_TARGET_OS_POSIX');
- } else {
- throw "Unsupported host ${buildSystem}";
- }
- }
-
- void addUserFlags(List<String> arguments) {
- arguments.addAll(flags);
- }
-
- void addIncludePaths(List<String> arguments) {
- arguments.add('-I.');
- arguments.addAll(includePaths.map((path) => '-I${path}'));
- }
-
- void addLibraryPaths(List<String> arguments) {
- String arch;
- if (buildArchitecture == 'ia32') {
- arch = 'x86';
- } else if (buildArchitecture == 'x64') {
- arch = 'x64';
- } else {
- throw "Unsupported host architecture ${buildArchitecture}";
- }
- if (isMacOS) arguments.add('-Lthird_party/libs/mac/$arch');
- if (isLinux) arguments.add('-Lthird_party/libs/linux/$arch');
- arguments.addAll(libraryPaths.map((path) => '-L${path}'));
- }
-
- void addLibraries(List<String> arguments) {
- arguments.add(dartinoLibrary);
- for (String lib in libraries) {
- arguments.add(lib.endsWith('.a') ? lib : '-l$lib');
- }
- }
-
- void addHostLibraries(List<String> arguments) {
- arguments.addAll([
- '-lpthread',
- '-ldl',
- '-rdynamic',
- ]);
- }
-
- void addSources(List<String> arguments) {
- arguments.addAll(sources);
- }
-
- Future<Null> build() async {
- List<String> arguments = <String>[];
- if (isClang) arguments.add('-DDARTINO_CLANG');
- if (isAsan) {
- arguments.add('-DDARTINO_ASAN');
- arguments.add('-L/DARTINO_ASAN');
- }
- addBuildFlags(arguments);
- addHostFlags(arguments);
- addUserFlags(arguments);
- addIncludePaths(arguments);
- addLibraryPaths(arguments);
- arguments.addAll(['-o', output]);
- if (isGNU) arguments.add('-Wl,--start-group');
- addSources(arguments);
- addLibraries(arguments);
- if (isGNU) arguments.add('-Wl,--end-group');
- addHostLibraries(arguments);
- await Rule.runCommand(compiler, arguments);
- }
-}
-
-class BuildSnapshotRule extends Rule {
- final String program;
- final String snapshot;
-
- BuildSnapshotRule(this.program, this.snapshot);
-
- Future<Null> build() async {
- await export(program, snapshot);
- }
-}
-
-class RunSnapshotsRule extends Rule {
- final String executable;
- final List<String> snapshots;
-
- RunSnapshotsRule(this.executable, this.snapshots);
-
- Future<Null> build() {
- Map<String, String> env;
- if (isMacOS && isAsan) {
- env = <String, String>{'DYLD_LIBRARY_PATH': buildDirectory};
- }
- return Rule.runCommand(executable, snapshots, env);
- }
-}
-
-class RunSnapshotRule extends RunSnapshotsRule {
- String get snapshot => snapshots[0];
-
- RunSnapshotRule(String executable, String snapshot)
- : super(executable, [snapshot]);
-}
-
-class CompileServiceRule extends Rule {
- final String idlFile;
- final String outputDirectory;
-
- CompileServiceRule(this.idlFile, this.outputDirectory);
-
- Future<Null> build() async {
- bool success = await servicec.compileAndReportErrors(
- idlFile, idlFile, resourcesDirectory.path, outputDirectory);
- Expect.isTrue(success);
- }
-}
-
-// Test entry point.
-
-typedef Future NoArgFuture();
-
-Future<Map<String, NoArgFuture>> listTests() async {
- var tests = <String, NoArgFuture>{};
- for (ServiceTest test in SERVICE_TESTS) {
- tests['service_tests/${test.name}'] = () => test.run();
- }
- return tests;
-}
« no previous file with comments | « tests/service_tests/performance/performance_test.cc ('k') | tests/servicec/camelize_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698