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

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

Issue 16858011: dart:io | Enable multithreaded secure networking encryption. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 6 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
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 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 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. 3 // BSD-style license that can be found in the LICENSE file.
4 // 4 //
5 // VMOptions= 5 // VMOptions=
6 // VMOptions=--short_socket_read 6 // VMOptions=--short_socket_read
7 // VMOptions=--short_socket_write 7 // VMOptions=--short_socket_write
8 // VMOptions=--short_socket_read --short_socket_write 8 // VMOptions=--short_socket_read --short_socket_write
9 9
10 import "package:expect/expect.dart"; 10 import "package:expect/expect.dart";
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 Expect.isTrue(server.port > 0); 121 Expect.isTrue(server.port > 0);
122 RawSocket.connect("127.0.0.1", server.port).then((_) { 122 RawSocket.connect("127.0.0.1", server.port).then((_) {
123 server.listen((_) { 123 server.listen((_) {
124 server.close(); 124 server.close();
125 port.close(); 125 port.close();
126 }); 126 });
127 }); 127 });
128 }); 128 });
129 } 129 }
130 130
131 void testSimpleReadWrite() { 131 void testSimpleReadWrite({bool dropReads}) {
132 // This test creates a server and a client connects. The client then 132 // This test creates a server and a client connects. The client then
133 // writes and the server echos. When the server has finished its 133 // writes and the server echos. When the server has finished its
134 // echo it half-closes. When the client gets the close event is 134 // echo it half-closes. When the client gets the close event is
135 // closes fully. 135 // closes fully.
136 ReceivePort port = new ReceivePort(); 136 ReceivePort port = new ReceivePort();
137 137
138 const messageSize = 1000; 138 const messageSize = 1000;
139 int serverReadCount = 0;
140 int clientReadCount = 0;
139 141
140 List<int> createTestData() { 142 List<int> createTestData() {
141 return new List<int>.generate(messageSize, (index) => index & 0xff); 143 return new List<int>.generate(messageSize, (index) => index & 0xff);
142 } 144 }
143 145
144 void verifyTestData(List<int> data) { 146 void verifyTestData(List<int> data) {
145 Expect.equals(messageSize, data.length); 147 Expect.equals(messageSize, data.length);
146 List<int> expected = createTestData(); 148 List<int> expected = createTestData();
147 for (int i = 0; i < messageSize; i++) { 149 for (int i = 0; i < messageSize; i++) {
148 Expect.equals(expected[i], data[i]); 150 Expect.equals(expected[i], data[i]);
149 } 151 }
150 } 152 }
151 153
152 RawServerSocket.bind(InternetAddress.LOOPBACK_IP_V4, 0).then((server) { 154 RawServerSocket.bind(InternetAddress.LOOPBACK_IP_V4, 0).then((server) {
153 server.listen((client) { 155 server.listen((client) {
154 int bytesRead = 0; 156 int bytesRead = 0;
155 int bytesWritten = 0; 157 int bytesWritten = 0;
156 List<int> data = new List<int>(messageSize); 158 List<int> data = new List<int>(messageSize);
157 159
158 client.writeEventsEnabled = false; 160 client.writeEventsEnabled = false;
159 client.listen((event) { 161 client.listen((event) {
160 switch (event) { 162 switch (event) {
161 case RawSocketEvent.READ: 163 case RawSocketEvent.READ:
164 if (dropReads) {
165 if (serverReadCount != 10) {
166 serverReadCount++;
167 break;
168 } else {
169 serverReadCount = 0;
170 }
171 }
162 Expect.isTrue(bytesWritten == 0); 172 Expect.isTrue(bytesWritten == 0);
163 Expect.isTrue(client.available() > 0); 173 Expect.isTrue(client.available() > 0);
164 var buffer = client.read(); 174 var buffer = client.read(200);
165 data.setRange(bytesRead, bytesRead + buffer.length, buffer); 175 data.setRange(bytesRead, bytesRead + buffer.length, buffer);
166 bytesRead += buffer.length; 176 bytesRead += buffer.length;
167 if (bytesRead == data.length) { 177 if (bytesRead == data.length) {
168 verifyTestData(data); 178 verifyTestData(data);
169 client.writeEventsEnabled = true; 179 client.writeEventsEnabled = true;
170 } 180 }
171 break; 181 break;
172 case RawSocketEvent.WRITE: 182 case RawSocketEvent.WRITE:
173 Expect.isFalse(client.writeEventsEnabled); 183 Expect.isFalse(client.writeEventsEnabled);
174 bytesWritten += client.write( 184 bytesWritten += client.write(
(...skipping 15 matching lines...) Expand all
190 200
191 RawSocket.connect("127.0.0.1", server.port).then((socket) { 201 RawSocket.connect("127.0.0.1", server.port).then((socket) {
192 int bytesRead = 0; 202 int bytesRead = 0;
193 int bytesWritten = 0; 203 int bytesWritten = 0;
194 List<int> data = createTestData(); 204 List<int> data = createTestData();
195 205
196 socket.listen((event) { 206 socket.listen((event) {
197 switch (event) { 207 switch (event) {
198 case RawSocketEvent.READ: 208 case RawSocketEvent.READ:
199 Expect.isTrue(socket.available() > 0); 209 Expect.isTrue(socket.available() > 0);
210 if (dropReads) {
211 if (clientReadCount != 10) {
212 clientReadCount++;
213 break;
214 } else {
215 clientReadCount = 0;
216 }
217 }
200 var buffer = socket.read(); 218 var buffer = socket.read();
201 data.setRange(bytesRead, bytesRead + buffer.length, buffer); 219 data.setRange(bytesRead, bytesRead + buffer.length, buffer);
202 bytesRead += buffer.length; 220 bytesRead += buffer.length;
203 break; 221 break;
204 case RawSocketEvent.WRITE: 222 case RawSocketEvent.WRITE:
205 Expect.isTrue(bytesRead == 0); 223 Expect.isTrue(bytesRead == 0);
206 Expect.isFalse(socket.writeEventsEnabled); 224 Expect.isFalse(socket.writeEventsEnabled);
207 bytesWritten += socket.write( 225 bytesWritten += socket.write(
208 data, bytesWritten, data.length - bytesWritten); 226 data, bytesWritten, data.length - bytesWritten);
209 if (bytesWritten < data.length) { 227 if (bytesWritten < data.length) {
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 } 359 }
342 360
343 main() { 361 main() {
344 testArguments(); 362 testArguments();
345 testSimpleBind(); 363 testSimpleBind();
346 testCloseOneEnd("client"); 364 testCloseOneEnd("client");
347 testCloseOneEnd("server"); 365 testCloseOneEnd("server");
348 testInvalidBind(); 366 testInvalidBind();
349 testSimpleConnect(); 367 testSimpleConnect();
350 testServerListenAfterConnect(); 368 testServerListenAfterConnect();
351 testSimpleReadWrite(); 369 testSimpleReadWrite(dropReads: false);
370 testSimpleReadWrite(dropReads: true);
352 testPauseServerSocket(); 371 testPauseServerSocket();
353 testPauseSocket(); 372 testPauseSocket();
354 } 373 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698