OLD | NEW |
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 // Tests socket exceptions. | 5 // Tests socket exceptions. |
6 | 6 |
7 import "package:expect/expect.dart"; | 7 import "package:expect/expect.dart"; |
8 import "dart:async"; | 8 import "dart:async"; |
9 import "dart:isolate"; | 9 import "dart:isolate"; |
10 import "dart:io"; | 10 import "dart:io"; |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
82 } on SocketIOException catch(ex) { | 82 } on SocketIOException catch(ex) { |
83 exceptionCaught = true; | 83 exceptionCaught = true; |
84 } catch (ex) { | 84 } catch (ex) { |
85 print(ex); | 85 print(ex); |
86 wrongExceptionCaught = true; | 86 wrongExceptionCaught = true; |
87 } | 87 } |
88 Expect.isFalse(exceptionCaught); | 88 Expect.isFalse(exceptionCaught); |
89 Expect.isFalse(wrongExceptionCaught); | 89 Expect.isFalse(wrongExceptionCaught); |
90 try { | 90 try { |
91 List<int> buffer = new List<int>(10); | 91 List<int> buffer = new List<int>(10); |
92 client.writeBytes(buffer); | 92 client.add(buffer); |
93 } on StateError catch (ex) { | 93 } on StateError catch (ex) { |
94 exceptionCaught = true; | 94 exceptionCaught = true; |
95 } catch (ex) { | 95 } catch (ex) { |
96 wrongExceptionCaught = true; | 96 wrongExceptionCaught = true; |
97 } | 97 } |
98 Expect.isTrue(exceptionCaught); | 98 Expect.isTrue(exceptionCaught); |
99 Expect.isFalse(wrongExceptionCaught); | 99 Expect.isFalse(wrongExceptionCaught); |
100 | 100 |
101 server.close(); | 101 server.close(); |
102 }); | 102 }); |
(...skipping 12 matching lines...) Expand all Loading... |
115 }); | 115 }); |
116 } | 116 } |
117 | 117 |
118 static void clientSocketAddDestroyNoErrorTest() { | 118 static void clientSocketAddDestroyNoErrorTest() { |
119 ServerSocket.bind().then((server) { | 119 ServerSocket.bind().then((server) { |
120 server.listen((socket) { | 120 server.listen((socket) { |
121 // Passive block data by not sobscribing to socket. | 121 // Passive block data by not sobscribing to socket. |
122 }); | 122 }); |
123 Socket.connect("127.0.0.1", server.port).then((client) { | 123 Socket.connect("127.0.0.1", server.port).then((client) { |
124 client.listen((data) {}, onDone: server.close); | 124 client.listen((data) {}, onDone: server.close); |
125 client.writeBytes(new List.filled(1024 * 1024, 0)); | 125 client.add(new List.filled(1024 * 1024, 0)); |
126 client.destroy(); | 126 client.destroy(); |
127 }); | 127 }); |
128 }); | 128 }); |
129 } | 129 } |
130 | 130 |
131 static void clientSocketAddCloseNoErrorTest() { | 131 static void clientSocketAddCloseNoErrorTest() { |
132 ServerSocket.bind().then((server) { | 132 ServerSocket.bind().then((server) { |
133 var completer = new Completer(); | 133 var completer = new Completer(); |
134 server.listen((socket) { | 134 server.listen((socket) { |
135 // The socket is 'paused' until the future completes. | 135 // The socket is 'paused' until the future completes. |
136 completer.future.then((_) => socket.pipe(socket)); | 136 completer.future.then((_) => socket.pipe(socket)); |
137 }); | 137 }); |
138 Socket.connect("127.0.0.1", server.port).then((client) { | 138 Socket.connect("127.0.0.1", server.port).then((client) { |
139 const int SIZE = 1024 * 1024; | 139 const int SIZE = 1024 * 1024; |
140 int count = 0; | 140 int count = 0; |
141 client.listen( | 141 client.listen( |
142 (data) => count += data.length, | 142 (data) => count += data.length, |
143 onDone: () { | 143 onDone: () { |
144 Expect.equals(SIZE, count); | 144 Expect.equals(SIZE, count); |
145 server.close(); | 145 server.close(); |
146 }); | 146 }); |
147 client.writeBytes(new List.filled(SIZE, 0)); | 147 client.add(new List.filled(SIZE, 0)); |
148 client.close(); | 148 client.close(); |
149 // Start piping now. | 149 // Start piping now. |
150 completer.complete(null); | 150 completer.complete(null); |
151 }); | 151 }); |
152 }); | 152 }); |
153 } | 153 } |
154 | 154 |
155 static void clientSocketAddCloseErrorTest() { | 155 static void clientSocketAddCloseErrorTest() { |
156 ServerSocket.bind().then((server) { | 156 ServerSocket.bind().then((server) { |
157 var completer = new Completer(); | 157 var completer = new Completer(); |
(...skipping 10 matching lines...) Expand all Loading... |
168 errors++; | 168 errors++; |
169 }, | 169 }, |
170 onDone: () { | 170 onDone: () { |
171 // We get either a close or an error followed by a close | 171 // We get either a close or an error followed by a close |
172 // on the socket. Whether we get both depends on | 172 // on the socket. Whether we get both depends on |
173 // whether the system notices the error for the read | 173 // whether the system notices the error for the read |
174 // event or only for the write event. | 174 // event or only for the write event. |
175 Expect.isTrue(errors <= 1); | 175 Expect.isTrue(errors <= 1); |
176 server.close(); | 176 server.close(); |
177 }); | 177 }); |
178 client.writeBytes(new List.filled(SIZE, 0)); | 178 client.add(new List.filled(SIZE, 0)); |
179 // Destroy other socket now. | 179 // Destroy other socket now. |
180 completer.complete(null); | 180 completer.complete(null); |
181 var port = new ReceivePort(); | 181 var port = new ReceivePort(); |
182 client.done.then( | 182 client.done.then( |
183 (_) { | 183 (_) { |
184 Expect.fail("Expected error"); | 184 Expect.fail("Expected error"); |
185 }, | 185 }, |
186 onError: (error) { | 186 onError: (error) { |
187 Expect.isTrue(error.error is SocketIOException); | 187 Expect.isTrue(error.error is SocketIOException); |
188 port.close(); | 188 port.close(); |
189 }); | 189 }); |
190 }); | 190 }); |
191 }); | 191 }); |
192 } | 192 } |
193 | 193 |
194 static void clientSocketAddCloseResultErrorTest() { | 194 static void clientSocketAddCloseResultErrorTest() { |
195 ServerSocket.bind().then((server) { | 195 ServerSocket.bind().then((server) { |
196 var completer = new Completer(); | 196 var completer = new Completer(); |
197 server.listen((socket) { | 197 server.listen((socket) { |
198 completer.future.then((_) => socket.destroy()); | 198 completer.future.then((_) => socket.destroy()); |
199 }); | 199 }); |
200 Socket.connect("127.0.0.1", server.port).then((client) { | 200 Socket.connect("127.0.0.1", server.port).then((client) { |
201 const int SIZE = 1024 * 1024; | 201 const int SIZE = 1024 * 1024; |
202 int errors = 0; | 202 int errors = 0; |
203 client.writeBytes(new List.filled(SIZE, 0)); | 203 client.add(new List.filled(SIZE, 0)); |
204 client.close(); | 204 client.close(); |
205 client.done.catchError((error) { | 205 client.done.catchError((error) { |
206 server.close(); | 206 server.close(); |
207 }); | 207 }); |
208 // Destroy other socket now. | 208 // Destroy other socket now. |
209 completer.complete(null); | 209 completer.complete(null); |
210 }); | 210 }); |
211 }); | 211 }); |
212 } | 212 } |
213 | 213 |
(...skipping 19 matching lines...) Expand all Loading... |
233 clientSocketAddCloseErrorTest(); | 233 clientSocketAddCloseErrorTest(); |
234 clientSocketAddCloseResultErrorTest(); | 234 clientSocketAddCloseResultErrorTest(); |
235 unknownHostTest(); | 235 unknownHostTest(); |
236 } | 236 } |
237 } | 237 } |
238 | 238 |
239 main() { | 239 main() { |
240 SocketExceptionTest.testMain(); | 240 SocketExceptionTest.testMain(); |
241 } | 241 } |
242 | 242 |
OLD | NEW |