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

Side by Side Diff: lib/src/runner/engine.dart

Issue 1248073003: Add a --pause-after-load flag for debugging. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: Created 5 years, 5 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library test.runner.engine; 5 library test.runner.engine;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:collection'; 8 import 'dart:collection';
9 9
10 import 'package:async/async.dart' hide Result; 10 import 'package:async/async.dart' hide Result;
11 import 'package:collection/collection.dart'; 11 import 'package:collection/collection.dart';
12 import 'package:pool/pool.dart'; 12 import 'package:pool/pool.dart';
13 13
14 import '../backend/live_test.dart'; 14 import '../backend/live_test.dart';
15 import '../backend/live_test_controller.dart'; 15 import '../backend/live_test_controller.dart';
16 import '../backend/state.dart'; 16 import '../backend/state.dart';
17 import '../backend/suite.dart'; 17 import '../backend/suite.dart';
18 import '../backend/test.dart'; 18 import '../backend/test.dart';
19 import '../util/delegating_sink.dart';
20 import 'load_suite.dart'; 19 import 'load_suite.dart';
21 20
22 /// An [Engine] manages a run that encompasses multiple test suites. 21 /// An [Engine] manages a run that encompasses multiple test suites.
23 /// 22 ///
24 /// Test suites are provided by passing them into [suiteSink]. Once all suites 23 /// Test suites are provided by passing them into [suiteSink]. Once all suites
25 /// have been provided, the user should close [suiteSink] to indicate this. 24 /// have been provided, the user should close [suiteSink] to indicate this.
26 /// [run] won't terminate until [suiteSink] is closed. Suites will be run in the 25 /// [run] won't terminate until [suiteSink] is closed. Suites will be run in the
27 /// order they're provided to [suiteSink]. Tests within those suites will 26 /// order they're provided to [suiteSink]. Tests within those suites will
28 /// likewise be run in the order of [Suite.tests]. 27 /// likewise be run in the order of [Suite.tests].
29 /// 28 ///
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 /// The tests that are still running, in the order they begain running. 128 /// The tests that are still running, in the order they begain running.
130 List<LiveTest> get active => new UnmodifiableListView(_active); 129 List<LiveTest> get active => new UnmodifiableListView(_active);
131 final _active = new QueueList<LiveTest>(); 130 final _active = new QueueList<LiveTest>();
132 131
133 /// The tests from [LoadSuite]s that are still running, in the order they 132 /// The tests from [LoadSuite]s that are still running, in the order they
134 /// began running. 133 /// began running.
135 /// 134 ///
136 /// This is separate from [active] because load tests aren't always surfaced. 135 /// This is separate from [active] because load tests aren't always surfaced.
137 final _activeLoadTests = new List<LiveTest>(); 136 final _activeLoadTests = new List<LiveTest>();
138 137
138 /// Whether this engine is idle—that is, not currently executing a test.
139 bool get isIdle => _group.isIdle;
140
141 /// A broadcast stream that fires an event whenever [isIdle] switches from
142 /// `false` to `true`.
143 Stream get onIdle => _group.onIdle;
144
139 /// Creates an [Engine] that will run all tests provided via [suiteSink]. 145 /// Creates an [Engine] that will run all tests provided via [suiteSink].
140 /// 146 ///
141 /// [concurrency] controls how many suites are run at once, and defaults to 1. 147 /// [concurrency] controls how many suites are run at once, and defaults to 1.
142 /// [maxSuites] controls how many suites are *loaded* at once, and defaults to 148 /// [maxSuites] controls how many suites are *loaded* at once, and defaults to
143 /// four times [concurrency]. 149 /// four times [concurrency].
144 Engine({int concurrency, int maxSuites}) 150 Engine({int concurrency, int maxSuites})
145 : _runPool = new Pool(concurrency == null ? 1 : concurrency), 151 : _runPool = new Pool(concurrency == null ? 1 : concurrency),
146 _loadPool = new Pool(maxSuites == null 152 _loadPool = new Pool(maxSuites == null
147 ? (concurrency == null ? 2 : concurrency * 2) 153 ? (concurrency == null ? 2 : concurrency * 2)
148 : maxSuites) { 154 : maxSuites) {
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 325
320 // Close the running tests first so that we're sure to wait for them to 326 // Close the running tests first so that we're sure to wait for them to
321 // finish before we close their suites and cause them to become unloaded. 327 // finish before we close their suites and cause them to become unloaded.
322 var allLiveTests = liveTests.toSet()..addAll(_activeLoadTests); 328 var allLiveTests = liveTests.toSet()..addAll(_activeLoadTests);
323 await Future.wait(allLiveTests.map((liveTest) => liveTest.close())); 329 await Future.wait(allLiveTests.map((liveTest) => liveTest.close()));
324 330
325 var allSuites = allLiveTests.map((liveTest) => liveTest.suite).toSet(); 331 var allSuites = allLiveTests.map((liveTest) => liveTest.suite).toSet();
326 await Future.wait(allSuites.map((suite) => suite.close())); 332 await Future.wait(allSuites.map((suite) => suite.close()));
327 } 333 }
328 } 334 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698