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

Side by Side Diff: tests/standalone/io/secure_client_raw_server_test.dart

Issue 12328037: Add missing files from previous commit (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 10 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
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.
4 //
5 // VMOptions=
6 // VMOptions=--short_socket_read
7 // VMOptions=--short_socket_write
8 // VMOptions=--short_socket_read --short_socket_write
9
10 import "dart:async";
11 import "dart:io";
12 import "dart:isolate";
13
14 const SERVER_ADDRESS = "127.0.0.1";
15 const HOST_NAME = "localhost";
16 const CERTIFICATE = "localhost_cert";
17 Future<RawSecureServerSocket> startEchoServer() {
18 return RawSecureServerSocket.bind(SERVER_ADDRESS,
19 0,
20 5,
21 CERTIFICATE).then((server) {
22 server.listen((RawSecureSocket client) {
23 List<List<int>> readChunks = <List<int>>[];
24 List<int> dataToWrite = null;
25 int bytesWritten = 0;
26 client.writeEventsEnabled = false;
27 client.listen((event) {
28 switch (event) {
29 case RawSocketEvent.READ:
30 Expect.isTrue(bytesWritten == 0);
31 Expect.isTrue(client.available() > 0);
32 readChunks.add(client.read());
33 break;
34 case RawSocketEvent.WRITE:
35 Expect.isFalse(client.writeEventsEnabled);
36 Expect.isNotNull(dataToWrite);
37 bytesWritten += client.write(
38 dataToWrite, bytesWritten, dataToWrite.length - bytesWritten);
39 if (bytesWritten < dataToWrite.length) {
40 client.writeEventsEnabled = true;
41 }
42 if (bytesWritten == dataToWrite.length) {
43 client.shutdown(SocketDirection.SEND);
44 }
45 break;
46 case RawSocketEvent.READ_CLOSED:
47 dataToWrite = readChunks.reduce(<int>[], (list, x) {
48 list.addAll(x);
49 return list;
50 });
51 client.writeEventsEnabled = true;
52 break;
53 }
54 });
55 });
56 return server;
57 });
58 }
59
60 Future testClient(server) {
61 Completer success = new Completer();
62 List<String> chunks = <String>[];
63 SecureSocket.connect(HOST_NAME, server.port).then((socket) {
64 socket.add("Hello server.".charCodes);
65 socket.close();
66 socket.listen(
67 (List<int> data) {
68 var received = new String.fromCharCodes(data);
69 chunks.add(received);
70 },
71 onDone: () {
72 String reply = chunks.join();
73 Expect.equals("Hello server.", reply);
74 success.complete(server);
75 });
76 });
77 return success.future;
78 }
79
80 void main() {
81 Path scriptDir = new Path(new Options().script).directoryPath;
82 Path certificateDatabase = scriptDir.append('pkcert');
83 SecureSocket.initialize(database: certificateDatabase.toNativePath(),
84 password: 'dartdart');
85
86 startEchoServer()
87 .then(testClient)
88 .then((server) {
89 server.close();
90 });
91 }
OLDNEW
« no previous file with comments | « tests/standalone/io/raw_socket_write_destroy_test.dart ('k') | tests/standalone/io/secure_client_server_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698