Index: tests/standalone/io/secure_socket_test.dart |
diff --git a/tests/standalone/io/secure_socket_test.dart b/tests/standalone/io/secure_socket_test.dart |
index f0104448ec8cfe86871babcd2179483014a05178..fec1115ec17b4d3f205d3d2bef65181716e2a793 100644 |
--- a/tests/standalone/io/secure_socket_test.dart |
+++ b/tests/standalone/io/secure_socket_test.dart |
@@ -4,57 +4,29 @@ |
// |
// VMOptions= |
// VMOptions=--short_socket_read |
-// The --short_socket_write option does not work with external server |
-// www.google.dk. Add this to the test when we have secure server sockets. |
-// See TODO below. |
+// VMOptions=--short_socket_write |
+// VMOptions=--short_socket_read --short_socket_write |
import "dart:isolate"; |
import "dart:io"; |
-void WriteAndClose(Socket socket, String message) { |
- var data = message.charCodes; |
- int written = 0; |
- void write() { |
- written += socket.writeList(data, written, data.length - written); |
- if (written < data.length) { |
- socket.onWrite = write; |
- } else { |
- socket.close(true); |
- } |
- } |
- write(); |
-} |
- |
void main() { |
ReceivePort keepAlive = new ReceivePort(); |
SecureSocket.initialize(); |
- // TODO(3593): Use a Dart HTTPS server for this test. |
- // When we use a Dart HTTPS server, allow --short_socket_write. The flag |
- // causes fragmentation of the client hello message, which doesn't seem to |
- // work with www.google.dk. |
- var secure = new SecureSocket("www.google.dk", 443); |
List<String> chunks = <String>[]; |
- secure.onConnect = () { |
- WriteAndClose(secure, "GET / HTTP/1.0\r\nHost: www.google.dk\r\n\r\n"); |
- }; |
- var useReadList; // Mutually recursive onData callbacks. |
- void useRead() { |
- var data = secure.read(); |
- var received = new String.fromCharCodes(data); |
- chunks.add(received); |
- secure.onData = useReadList; |
- } |
- useReadList = () { |
- var buffer = new List.fixedLength(2000); |
- int len = secure.readList(buffer, 0, 2000); |
- var received = new String.fromCharCodes(buffer.getRange(0, len)); |
- chunks.add(received); |
- secure.onData = useRead; |
- }; |
- secure.onData = useRead; |
- secure.onClosed = () { |
- String fullPage = chunks.join(); |
- Expect.isTrue(fullPage.contains('</body></html>')); |
- keepAlive.close(); |
- }; |
+ SecureSocket.connect("www.google.dk", 443).then((socket) { |
+ socket.add("GET / HTTP/1.0\r\nHost: www.google.dk\r\n\r\n".charCodes); |
+ socket.close(); |
+ socket.listen( |
+ (List<int> data) { |
+ var received = new String.fromCharCodes(data); |
+ chunks.add(received); |
+ }, |
+ onDone: () { |
+ String fullPage = chunks.join(); |
+ Expect.isTrue(fullPage.contains('</body></html>')); |
+ keepAlive.close(); |
+ }, |
+ onError: (e) => Expect.fail("Unexpected error $e")); |
+ }); |
} |