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

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

Issue 2014893002: Fix a flaky failure in socket_bind_test. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 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
« no previous file with comments | « no previous file | 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
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 import 'dart:async'; 5 import 'dart:async';
6 import 'dart:io'; 6 import 'dart:io';
7 import 'dart:convert'; 7 import 'dart:convert';
8 8
9 import 'package:async_helper/async_helper.dart'; 9 import 'package:async_helper/async_helper.dart';
10 import 'package:expect/expect.dart'; 10 import 'package:expect/expect.dart';
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 Expect.isTrue('$error'.contains('v6Only flag')); 56 Expect.isTrue('$error'.contains('v6Only flag'));
57 socket.close().whenComplete(asyncEnd); 57 socket.close().whenComplete(asyncEnd);
58 asyncEnd(); 58 asyncEnd();
59 }); 59 });
60 }); 60 });
61 } 61 }
62 62
63 Future testBindDifferentAddresses(InternetAddress addr1, 63 Future testBindDifferentAddresses(InternetAddress addr1,
64 InternetAddress addr2, 64 InternetAddress addr2,
65 bool addr1V6Only, 65 bool addr1V6Only,
66 bool addr2V6Only) { 66 bool addr2V6Only) async {
67 int freePort = await freeIPv4AndIPv6Port();
68
67 asyncStart(); 69 asyncStart();
68 return ServerSocket.bind( 70 return ServerSocket.bind(
69 addr1, 0, v6Only: addr1V6Only, shared: false).then((socket) { 71 addr1, freePort, v6Only: addr1V6Only, shared: false).then((socket) {
70 Expect.isTrue(socket.port > 0); 72 Expect.isTrue(socket.port > 0);
71 73
72 asyncStart(); 74 asyncStart();
73 return ServerSocket.bind( 75 return ServerSocket.bind(
74 addr2, socket.port, v6Only: addr2V6Only, shared: false).then((socket2) { 76 addr2, freePort, v6Only: addr2V6Only, shared: false).then((socket2) {
75 Expect.equals(socket.port, socket2.port); 77 Expect.equals(socket.port, socket2.port);
76 78
77 return Future.wait([ 79 return Future.wait([
78 socket.close().whenComplete(asyncEnd), 80 socket.close().whenComplete(asyncEnd),
79 socket2.close().whenComplete(asyncEnd), 81 socket2.close().whenComplete(asyncEnd),
80 ]); 82 ]);
81 }); 83 });
82 }); 84 });
83 } 85 }
84 86
(...skipping 18 matching lines...) Expand all
103 asyncEnd(); 105 asyncEnd();
104 }); 106 });
105 107
106 Socket client = await Socket.connect(host, socket2.port); 108 Socket client = await Socket.connect(host, socket2.port);
107 await client.close(); 109 await client.close();
108 await client.drain(); 110 await client.drain();
109 111
110 asyncEnd(); 112 asyncEnd();
111 } 113 }
112 114
113 void main() { 115 Future<int> freeIPv4AndIPv6Port() async {
116 var socket = await ServerSocket.bind(InternetAddress.ANY_IP_V6, 0, v6Only: fal se);
kustermann 2016/05/26 16:56:27 long line
117 int port = socket.port;
118 await socket.close();
119 return port;
120 }
121
122 void main() async {
123 asyncStart();
124 await testBindDifferentAddresses(InternetAddress.ANY_IP_V6,
125 InternetAddress.ANY_IP_V4,
126 true,
127 false);
128 await testBindDifferentAddresses(InternetAddress.ANY_IP_V4,
129 InternetAddress.ANY_IP_V6,
130 false,
131 true);
132
114 for (var host in ['127.0.0.1', '::1']) { 133 for (var host in ['127.0.0.1', '::1']) {
115 testBindShared(host, false); 134 testBindShared(host, false);
116 testBindShared(host, true); 135 testBindShared(host, true);
117 136
118 negTestBindSharedMismatch(host, false); 137 negTestBindSharedMismatch(host, false);
119 negTestBindSharedMismatch(host, true); 138 negTestBindSharedMismatch(host, true);
120 139
121 negTestBindV6OnlyMismatch(host, true); 140 negTestBindV6OnlyMismatch(host, true);
122 negTestBindV6OnlyMismatch(host, false); 141 negTestBindV6OnlyMismatch(host, false);
123 142
124 testListenCloseListenClose(host); 143 testListenCloseListenClose(host);
125 } 144 }
126 145 asyncEnd();
127 asyncStart();
128 testBindDifferentAddresses(InternetAddress.ANY_IP_V6,
129 InternetAddress.ANY_IP_V4,
130 true,
131 false).then((_) {
132 testBindDifferentAddresses(InternetAddress.ANY_IP_V4,
133 InternetAddress.ANY_IP_V6,
134 false,
135 true);
136 asyncEnd();
137 });
138 } 146 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698