| Index: utils/testrunner/client_server_task.dart
|
| ===================================================================
|
| --- utils/testrunner/client_server_task.dart (revision 0)
|
| +++ utils/testrunner/client_server_task.dart (revision 0)
|
| @@ -0,0 +1,38 @@
|
| +// Copyright (c) 2012, 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.
|
| +
|
| +/**
|
| + * A RunClientServerTask is like a regular RunProcessTask except it starts
|
| + * an HTTP server before the task and stops it afterwards, so the task
|
| + * would typically be making HTTP client requests.
|
| + */
|
| +class RunClientServerTask extends RunProcessTask {
|
| + RunProcessTask serverTask;
|
| + Process serverProcess;
|
| +
|
| + RunClientServerTask(String commandTemplate, List argumentTemplates,
|
| + int timeout) : super(commandTemplate, argumentTemplates, timeout) {
|
| + serverTask = new RunProcessTask(
|
| + config.dartPath,
|
| + ['$runnerDirectory${Platform.pathSeparator}'
|
| + 'http_server_test_runner.dart',
|
| + '--port=${config.port}',
|
| + '--root=${config.staticRoot}'],
|
| + 1000 * timeout);
|
| + }
|
| +
|
| + execute(Path testfile, List stdout, List stderr,
|
| + bool logging, Function exitHandler) {
|
| + serverProcess = serverTask.execute(testfile, stdout, stderr, logging,
|
| + (e) { serverProcess = null; });
|
| + super.execute(testfile, stdout, stderr, logging, exitHandler);
|
| + }
|
| +
|
| + void cleanup(Path testfile, List stdout, List stderr,
|
| + bool verboseLogging, bool keepTestFiles) {
|
| + if (serverProcess != null) {
|
| + serverProcess.kill();
|
| + }
|
| + }
|
| +}
|
|
|