| Index: mojo/dart/http_load_test/tester.dart
|
| diff --git a/mojo/dart/http_load_test/tester.dart b/mojo/dart/http_load_test/tester.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..70eb61bc1fb285a826f3cf59a4a3df697ae334e2
|
| --- /dev/null
|
| +++ b/mojo/dart/http_load_test/tester.dart
|
| @@ -0,0 +1,70 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +library http_load_test;
|
| +
|
| +import 'dart:async';
|
| +import 'dart:convert';
|
| +import 'dart:io';
|
| +
|
| +class Launcher {
|
| + /// Launch [executable] with [arguments]. Returns a [String] containing
|
| + /// the standard output from the launched executable.
|
| + static Future<String> launch(String executable,
|
| + List<String> arguments) async {
|
| + var process = await Process.start(executable, arguments);
|
| +
|
| + // Completer completes once the child process exits.
|
| + var completer = new Completer();
|
| + String stdout = '';
|
| + process.stdout.transform(UTF8.decoder)
|
| + .transform(new LineSplitter()).listen((line) {
|
| + stdout = '$stdout\n$line';
|
| + print(line);
|
| + });
|
| + process.stderr.transform(UTF8.decoder)
|
| + .transform(new LineSplitter()).listen((line) {
|
| + print(line);
|
| + });
|
| + process.exitCode.then((ec) {
|
| + stdout = '$stdout\nEXIT_CODE=$ec\n';
|
| + completer.complete(stdout);
|
| + });
|
| + return completer.future;
|
| + }
|
| +}
|
| +
|
| +main(List<String> args) async {
|
| + var mojo_shell_executable = args[0];
|
| + var directory = args[1];
|
| +
|
| + HttpServer server = await HttpServer.bind('127.0.0.1', 0);
|
| +
|
| + server.listen((HttpRequest request) async {
|
| + final String path = request.uri.toFilePath();
|
| + final File file = new File('${directory}/${path}');
|
| + if (await file.exists()) {
|
| + try {
|
| + await file.openRead().pipe(request.response);
|
| + } catch (e) {
|
| + print(e);
|
| + }
|
| + } else {
|
| + request.response.statusCode = HttpStatus.NOT_FOUND;
|
| + request.response.close();
|
| + }
|
| + });
|
| +
|
| + var launchUrl = 'http://127.0.0.1:${server.port}/main.dart';
|
| + var stdout = await Launcher.launch(mojo_shell_executable, [launchUrl]);
|
| +
|
| + server.close();
|
| +
|
| + if (!stdout.contains("\nPASS")) {
|
| + throw "Test failed.";
|
| + }
|
| + if (!stdout.contains("\nEXIT_CODE=0\n")) {
|
| + throw "Test failed.";
|
| + }
|
| +}
|
|
|