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

Unified Diff: lib/src/runner/loader.dart

Issue 1206033004: Only load a certain number of test suites at once. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: 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: lib/src/runner/loader.dart
diff --git a/lib/src/runner/loader.dart b/lib/src/runner/loader.dart
index 4929792f3c8145a34c6ed42f61288fd3007661f2..56123f2353d3437fdf17fbac691f270b79306f93 100644
--- a/lib/src/runner/loader.dart
+++ b/lib/src/runner/loader.dart
@@ -19,7 +19,6 @@ import '../backend/test_platform.dart';
import '../util/async_thunk.dart';
import '../util/dart.dart' as dart;
import '../util/io.dart';
-import '../util/isolate_wrapper.dart';
import '../util/remote_exception.dart';
import '../utils.dart';
import 'browser/server.dart';
@@ -54,8 +53,8 @@ class Loader {
/// This is `null` if tests should be loaded from the filesystem.
final Uri _pubServeUrl;
- /// All isolates that have been spun up by the loader.
- final _isolates = new Set<IsolateWrapper>();
+ /// All suites that have been created by the loader.
+ final _suites = new Set<Suite>();
/// The server that serves browser test pages.
///
@@ -240,18 +239,18 @@ void main(_, Map message) {
await new Future.error(new LoadException(path, error), stackTrace);
}
- _isolates.add(isolate);
-
var completer = new Completer();
var subscription = receivePort.listen((response) {
if (response["type"] == "print") {
print(response["line"]);
} else if (response["type"] == "loadException") {
+ isolate.kill();
completer.completeError(
new LoadException(path, response["message"]),
new Trace.current());
} else if (response["type"] == "error") {
+ isolate.kill();
var asyncError = RemoteException.deserialize(response["error"]);
completer.completeError(
new LoadException(path, asyncError.error),
@@ -263,10 +262,16 @@ void main(_, Map message) {
});
try {
- return new Suite((await completer.future).map((test) {
+ var suite = new Suite((await completer.future).map((test) {
var testMetadata = new Metadata.deserialize(test['metadata']);
return new IsolateTest(test['name'], testMetadata, test['sendPort']);
- }), metadata: metadata, path: path, platform: "VM");
+ }),
+ metadata: metadata,
+ path: path,
+ platform: "VM",
+ onClose: isolate.kill);
+ _suites.add(suite);
+ return suite;
} finally {
subscription.cancel();
}
@@ -275,10 +280,8 @@ void main(_, Map message) {
/// Closes the loader and releases all resources allocated by it.
Future close() {
return _closeThunk.run(() async {
- for (var isolate in _isolates) {
- isolate.kill();
- }
- _isolates.clear();
+ await Future.wait(_suites.map((suite) => suite.close()));
+ _suites.clear();
if (!_browserServerThunk.hasRun) return;
await (await _browserServer).close();
« no previous file with comments | « lib/src/runner/load_suite.dart ('k') | pubspec.yaml » ('j') | test/runner/signal_test.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698