Index: tests/standalone/src/io/StreamPipeTest.dart |
diff --git a/tests/standalone/src/io/StreamPipeTest.dart b/tests/standalone/src/io/StreamPipeTest.dart |
deleted file mode 100644 |
index 1c632e3fb232244b08040c7b9f35329d331cb215..0000000000000000000000000000000000000000 |
--- a/tests/standalone/src/io/StreamPipeTest.dart |
+++ /dev/null |
@@ -1,294 +0,0 @@ |
-// 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. |
-// |
-// VMOptions= |
-// VMOptions=--short_socket_read |
-// VMOptions=--short_socket_write |
-// VMOptions=--short_socket_read --short_socket_write |
- |
-#import("dart:io"); |
-#import("dart:isolate"); |
-#source("TestingServer.dart"); |
- |
-// Helper method to be able to run the test from the runtime |
-// directory, or the top directory. |
-String getDataFilename(String path) => |
- new File(path).existsSync() ? path : '../' + path; |
- |
- |
-bool compareFileContent(String fileName1, |
- String fileName2, |
- [int file1Offset = 0, |
- int file2Offset = 0, |
- int count]) { |
- var file1 = new File(fileName1).openSync(); |
- var file2 = new File(fileName2).openSync(); |
- var length1 = file1.lengthSync(); |
- var length2 = file2.lengthSync(); |
- if (file1Offset == 0 && file2Offset == 0 && count == null) { |
- if (length1 != length2) { |
- file1.closeSync(); |
- file2.closeSync(); |
- return false; |
- } |
- } |
- if (count == null) count = length1; |
- var data1 = new List<int>(count); |
- var data2 = new List<int>(count); |
- if (file1Offset != 0) file1.setPositionSync(file1Offset); |
- if (file2Offset != 0) file2.setPositionSync(file2Offset); |
- var read1 = file1.readListSync(data1, 0, count); |
- Expect.equals(count, read1); |
- var read2 = file2.readListSync(data2, 0, count); |
- Expect.equals(count, read2); |
- for (var i = 0; i < count; i++) { |
- if (data1[i] != data2[i]) { |
- file1.closeSync(); |
- file2.closeSync(); |
- return false; |
- } |
- } |
- file1.closeSync(); |
- file2.closeSync(); |
- return true; |
-} |
- |
- |
-// This test does: |
-// 1. Opens a socket to the testing server. |
-// 2. Pipes the content of a file to that sockets input stream. |
-// 3. Creates a temp file. |
-// 4. Pipes the socket output stream to the temp file. |
-// 5. Expects the original file and the temp file to be equal. |
-class PipeServerGame { |
- int count = 0; |
- |
- PipeServerGame.start() |
- : _receivePort = new ReceivePort(), |
- _sendPort = null, |
- _messages = 0 { |
- new PipeServer().spawn().then((SendPort port) { |
- _sendPort = port; |
- start(); |
- }); |
- } |
- |
- void runTest() { |
- |
- void connectHandler() { |
- String srcFileName = |
- getDataFilename("tests/standalone/src/io/readline_test1.dat"); |
- |
- SocketOutputStream socketOutput = _socket.outputStream; |
- InputStream fileInput = new File(srcFileName).openInputStream(); |
- |
- fileInput.onClosed = () { |
- SocketInputStream socketInput = _socket.inputStream; |
- var tempDir = new Directory(''); |
- tempDir.createTempSync(); |
- var dstFileName = tempDir.path + "/readline_test1.dat"; |
- var dstFile = new File(dstFileName); |
- dstFile.createSync(); |
- var fileOutput = dstFile.openOutputStream(); |
- |
- socketInput.onClosed = () { |
- // Check that the resulting file is equal to the initial |
- // file. |
- fileOutput.onClosed = () { |
- bool result = compareFileContent(srcFileName, dstFileName); |
- new File(dstFileName).deleteSync(); |
- tempDir.deleteSync(); |
- Expect.isTrue(result); |
- |
- _socket.close(); |
- |
- // Run this twice. |
- if (count++ < 2) { |
- runTest(); |
- } else { |
- shutdown(); |
- } |
- }; |
- }; |
- |
- socketInput.pipe(fileOutput); |
- }; |
- |
- fileInput.pipe(socketOutput); |
- } |
- |
- // Connect to the server. |
- _socket = new Socket(TestingServer.HOST, _port); |
- if (_socket !== null) { |
- _socket.onConnect = connectHandler; |
- } else { |
- Expect.fail("socket creation failed"); |
- } |
- } |
- |
- void start() { |
- _receivePort.receive((var message, SendPort replyTo) { |
- _port = message; |
- runTest(); |
- }); |
- _sendPort.send(TestingServer.INIT, _receivePort.toSendPort()); |
- } |
- |
- void shutdown() { |
- _sendPort.send(TestingServer.SHUTDOWN, _receivePort.toSendPort()); |
- _receivePort.close(); |
- } |
- |
- int _port; |
- ReceivePort _receivePort; |
- SendPort _sendPort; |
- Socket _socket; |
- int _messages; |
-} |
- |
- |
-// The testing server will simply pipe each connecting sockets input |
-// stream to its output stream. |
-class PipeServer extends TestingServer { |
- void onConnection(Socket connection) { |
- connection.onError = (Exception e) { Expect.fail("Socket error $e"); }; |
- connection.inputStream.pipe(connection.outputStream); |
- } |
-} |
- |
- |
-// Test piping from one file to another and closing both streams |
-// after wards. |
-testFileToFilePipe1() { |
- // Force test to timeout if one of the handlers is |
- // not called. |
- ReceivePort donePort = new ReceivePort(); |
- donePort.receive((message, ignore) { donePort.close(); }); |
- |
- String srcFileName = |
- getDataFilename("tests/standalone/src/io/readline_test1.dat"); |
- var srcStream = new File(srcFileName).openInputStream(); |
- |
- var tempDir = new Directory(''); |
- tempDir.createTempSync(); |
- String dstFileName = tempDir.path + "/readline_test1.dat"; |
- new File(dstFileName).createSync(); |
- var dstStream = new File(dstFileName).openOutputStream(); |
- |
- dstStream.onClosed = () { |
- bool result = compareFileContent(srcFileName, dstFileName); |
- new File(dstFileName).deleteSync(); |
- tempDir.deleteSync(); |
- Expect.isTrue(result); |
- donePort.toSendPort().send(null); |
- }; |
- |
- srcStream.pipe(dstStream); |
-} |
- |
- |
-// Test piping from one file to another and write additional data to |
-// the output stream after piping finished. |
-testFileToFilePipe2() { |
- // Force test to timeout if one of the handlers is |
- // not called. |
- ReceivePort donePort = new ReceivePort(); |
- donePort.receive((message, ignore) { donePort.close(); }); |
- |
- String srcFileName = |
- getDataFilename("tests/standalone/src/io/readline_test1.dat"); |
- var srcFile = new File(srcFileName); |
- var srcStream = srcFile.openInputStream(); |
- |
- var tempDir = new Directory(''); |
- tempDir.createTempSync(); |
- var dstFileName = tempDir.path + "/readline_test1.dat"; |
- var dstFile = new File(dstFileName); |
- dstFile.createSync(); |
- var dstStream = dstFile.openOutputStream(); |
- |
- srcStream.onClosed = () { |
- dstStream.write([32]); |
- dstStream.close(); |
- dstStream.onClosed = () { |
- var src = srcFile.openSync(); |
- var dst = dstFile.openSync(); |
- var srcLength = src.lengthSync(); |
- var dstLength = dst.lengthSync(); |
- Expect.equals(srcLength + 1, dstLength); |
- Expect.isTrue(compareFileContent(srcFileName, |
- dstFileName, |
- count: srcLength)); |
- dst.setPositionSync(srcLength); |
- var data = new List<int>(1); |
- var read2 = dst.readListSync(data, 0, 1); |
- Expect.equals(32, data[0]); |
- src.closeSync(); |
- dst.closeSync(); |
- dstFile.deleteSync(); |
- tempDir.deleteSync(); |
- donePort.toSendPort().send(null); |
- }; |
- }; |
- |
- srcStream.pipe(dstStream, close: false); |
-} |
- |
- |
-// Test piping two copies of one file to another. |
-testFileToFilePipe3() { |
- // Force test to timeout if one of the handlers is |
- // not called. |
- ReceivePort donePort = new ReceivePort(); |
- donePort.receive((message, ignore) { donePort.close(); }); |
- |
- String srcFileName = |
- getDataFilename("tests/standalone/src/io/readline_test1.dat"); |
- var srcFile = new File(srcFileName); |
- var srcStream = srcFile.openInputStream(); |
- |
- var tempDir = new Directory(''); |
- tempDir.createTempSync(); |
- var dstFileName = tempDir.path + "/readline_test1.dat"; |
- var dstFile = new File(dstFileName); |
- dstFile.createSync(); |
- var dstStream = dstFile.openOutputStream(); |
- |
- srcStream.onClosed = () { |
- var srcStream2 = srcFile.openInputStream(); |
- |
- dstStream.onClosed = () { |
- var src = srcFile.openSync(); |
- var dst = dstFile.openSync(); |
- var srcLength = src.lengthSync(); |
- var dstLength = dst.lengthSync(); |
- Expect.equals(srcLength * 2, dstLength); |
- Expect.isTrue(compareFileContent(srcFileName, |
- dstFileName, |
- count: srcLength)); |
- Expect.isTrue(compareFileContent(srcFileName, |
- dstFileName, |
- file2Offset: srcLength, |
- count: srcLength)); |
- src.closeSync(); |
- dst.closeSync(); |
- dstFile.deleteSync(); |
- tempDir.deleteSync(); |
- donePort.toSendPort().send(null); |
- }; |
- |
- // Pipe another copy of the source file. |
- srcStream2.pipe(dstStream); |
- }; |
- |
- srcStream.pipe(dstStream, close: false); |
-} |
- |
- |
-main() { |
- testFileToFilePipe1(); |
- testFileToFilePipe2(); |
- testFileToFilePipe3(); |
- PipeServerGame echoServerGame = new PipeServerGame.start(); |
-} |