OLD | NEW |
---|---|
(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 } | |
OLD | NEW |