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

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

Issue 908873002: Add support to specify the source address for socket connect (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Windows fix Created 5 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
« runtime/bin/socket.h ('K') | « sdk/lib/io/socket.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
kustermann 2015/02/10 10:06:54 You're not transfering any data between sockets, s
Søren Gjesse 2015/02/10 11:13:33 Done.
9
10 import "dart:async";
11 import "dart:io";
12
13 import "package:async_helper/async_helper.dart";
14 import "package:expect/expect.dart";
15
16 Future throws(Function f, Function check) async {
17 try {
18 await f();
19 Expect.fail('Did not throw');
20 } catch (e) {
21 if (check != null) {
22 if (!check(e)) {
23 Expect.fail('Unexpected: $e');
24 }
25 }
26 }
27 }
28
29 Future testArgumentsRawSocket() async {
30 asyncStart();
31 var server = await ServerSocket.bind(InternetAddress.LOOPBACK_IP_V4, 0);
32 server.listen((_) { throw 'Connection unexpected'; },
33 onDone: () => asyncEnd());
34
35 asyncStart();
36 // Illegal type for sourceAddress.
37 for (var sourceAddress in ['www.google.com', 'abc']) {
38 await throws(() => RawSocket.connect('127.0.0.1',
39 server.port,
40 sourceAddress: sourceAddress),
41 (e) => e is ArgumentError);
42 }
43 // Unsupported local address.
44 for (var sourceAddress in ['8.8.8.8', new InternetAddress('8.8.8.8')]) {
45 await throws(() => RawSocket.connect('127.0.0.1',
46 server.port,
47 sourceAddress: sourceAddress),
48 (e) => e is SocketException);
49 }
50 // Address family mismatch.
51 for (var sourceAddress in ['::1', InternetAddress.LOOPBACK_IP_V6]) {
52 await throws(() => RawSocket.connect('127.0.0.1',
53 server.port,
54 sourceAddress: sourceAddress),
55 (e) => e is SocketException);
56 }
57 asyncEnd();
58 server.close();
59 }
60
61 Future testArgumentsSocket() async {
62 asyncStart();
63 var server = await ServerSocket.bind(InternetAddress.LOOPBACK_IP_V4, 0);
64 server.listen((_) { throw 'Connection unexpected'; },
65 onDone: () => asyncEnd());
66
67 asyncStart();
68 // Illegal type for sourceAddress.
69 for (var sourceAddress in ['www.google.com', 'abc']) {
70 await throws(() => Socket.connect('127.0.0.1',
71 server.port,
72 sourceAddress: sourceAddress),
73 (e) => e is ArgumentError);
74 }
75 // Unsupported local address.
76 for (var sourceAddress in ['8.8.8.8', new InternetAddress('8.8.8.8')]) {
77 await throws(() => Socket.connect('127.0.0.1',
78 server.port,
79 sourceAddress: sourceAddress),
80 (e) => e is SocketException);
81 }
82 // Address family mismatch.
83 for (var sourceAddress in ['::1', InternetAddress.LOOPBACK_IP_V6]) {
84 await throws(() => Socket.connect('127.0.0.1',
85 server.port,
86 sourceAddress: sourceAddress),
87 (e) => e is SocketException);
88 }
89 asyncEnd();
90 server.close();
91 }
92
93 Future testConnectRawSocket() async {
94 asyncStart();
95 var server = await ServerSocket.bind(InternetAddress.LOOPBACK_IP_V4, 0);
96 var port = server.port;
97 server.listen((s) {
98 s.destroy();
99 }, onDone: () => asyncEnd());
100
101 asyncStart();
102 for (var sourceAddress in [InternetAddress.LOOPBACK_IP_V4,
103 InternetAddress.ANY_IP_V4,
104 '127.0.0.1',
105 '0.0.0.0']) {
106 RawSocket raw;
107 raw = await RawSocket.connect(InternetAddress.LOOPBACK_IP_V4,
108 port,
109 sourceAddress: sourceAddress);
110 raw.close();
111 }
112 server.close();
113 asyncEnd();
114 }
115
116 Future testConnectSocket() async {
117 asyncStart();
118 var server = await ServerSocket.bind(InternetAddress.LOOPBACK_IP_V4, 0);
119 var port = server.port;
120 server.listen((s) {
121 s.destroy();
122 }, onDone: () => asyncEnd());
123
124 asyncStart();
125 for (var sourceAddress in [InternetAddress.LOOPBACK_IP_V4,
126 InternetAddress.ANY_IP_V4,
127 '127.0.0.1',
128 '0.0.0.0']) {
129 Socket s;
130 s = await Socket.connect(InternetAddress.LOOPBACK_IP_V4,
131 port,
132 sourceAddress: sourceAddress);
133 s.destroy();
134 }
135 server.close();
136 asyncEnd();
137 }
138
139 Future testConnectRawSocketIPv6() async {
140 asyncStart();
141 var server = await ServerSocket.bind(InternetAddress.ANY_IP_V6, 0);
142 var port = server.port;
143 server.listen((s) {
144 s.destroy();
145 }, onDone: () => asyncEnd());
146
147 asyncStart();
148 for (var sourceAddress in [InternetAddress.LOOPBACK_IP_V4,
149 InternetAddress.ANY_IP_V4,
150 '127.0.0.1',
151 '0.0.0.0']) {
152 RawSocket raw;
153 raw = await RawSocket.connect(InternetAddress.LOOPBACK_IP_V4,
154 port,
155 sourceAddress: sourceAddress);
156 raw.close();
157 }
158 for (var sourceAddress in [InternetAddress.LOOPBACK_IP_V6,
159 InternetAddress.ANY_IP_V6,
160 '::1',
161 '::']) {
162 RawSocket raw;
163 raw = await RawSocket.connect(InternetAddress.LOOPBACK_IP_V6,
164 port,
165 sourceAddress: sourceAddress);
166 raw.close();
167 }
168 server.close();
169 asyncEnd();
170 }
171
172 Future testConnectSocketIPv6() async {
173 asyncStart();
174 var server = await ServerSocket.bind(InternetAddress.ANY_IP_V6, 0);
175 var port = server.port;
176 server.listen((s) {
177 s.destroy();
178 }, onDone: () => asyncEnd());
179
180 asyncStart();
181 for (var sourceAddress in [InternetAddress.LOOPBACK_IP_V4,
182 InternetAddress.ANY_IP_V4,
183 '127.0.0.1',
184 '0.0.0.0']) {
185 Socket s;
186 s = await Socket.connect(InternetAddress.LOOPBACK_IP_V4,
187 port,
188 sourceAddress: sourceAddress);
189 s.destroy();
190 }
191 for (var sourceAddress in [InternetAddress.LOOPBACK_IP_V6,
192 InternetAddress.ANY_IP_V6,
193 '::1',
194 '::']) {
195 Socket s;
196 s = await Socket.connect(InternetAddress.LOOPBACK_IP_V6,
197 port,
198 sourceAddress: sourceAddress);
199 s.destroy();
200 }
201 server.close();
202 asyncEnd();
203 }
204
205 main() {
206 testArgumentsRawSocket();
207 testArgumentsSocket();
208 testConnectRawSocket();
209 testConnectSocket();
210 testConnectRawSocketIPv6();
211 testConnectSocketIPv6();
212 }
OLDNEW
« runtime/bin/socket.h ('K') | « sdk/lib/io/socket.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698