Skip to content

Commit 77889c1

Browse files
sjindel-googlecommit-bot@chromium.org
authored andcommitted
[vm] Fix unmatched asyncLevel with retry() helper in socket tests.
Change-Id: Ia2cba787ff02e1b3d26b8fbab9cc4057842bd4cc Reviewed-on: https://dart-review.googlesource.com/c/87067 Commit-Queue: Samir Jindel <[email protected]> Reviewed-by: Martin Kustermann <[email protected]> Auto-Submit: Samir Jindel <[email protected]>
1 parent 5c916af commit 77889c1

File tree

3 files changed

+60
-118
lines changed

3 files changed

+60
-118
lines changed

tests/standalone_2/io/socket_bind_test.dart

Lines changed: 37 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -5,75 +5,53 @@
55
import 'dart:async';
66
import 'dart:io';
77

8-
import 'package:async_helper/async_helper.dart';
98
import 'package:expect/expect.dart';
109

11-
import 'test_utils.dart' show freeIPv4AndIPv6Port, retry;
10+
import 'test_utils.dart' show retry, throws;
1211

13-
testBindShared(String host, bool v6Only) {
14-
asyncStart();
15-
ServerSocket.bind(host, 0, v6Only: v6Only, shared: true).then((socket) {
16-
Expect.isTrue(socket.port > 0);
12+
Future testBindShared(String host, bool v6Only) async {
13+
final socket = await ServerSocket.bind(host, 0, v6Only: v6Only, shared: true);
14+
Expect.isTrue(socket.port > 0);
1715

18-
asyncStart();
19-
return ServerSocket
20-
.bind(host, socket.port, v6Only: v6Only, shared: true)
21-
.then((socket2) {
22-
Expect.equals(socket.address.address, socket2.address.address);
23-
Expect.equals(socket.port, socket2.port);
24-
socket.close().whenComplete(asyncEnd);
25-
socket2.close().whenComplete(asyncEnd);
26-
});
27-
});
16+
final socket2 =
17+
await ServerSocket.bind(host, socket.port, v6Only: v6Only, shared: true);
18+
19+
Expect.equals(socket.address.address, socket2.address.address);
20+
Expect.equals(socket.port, socket2.port);
21+
22+
await socket.close();
23+
await socket2.close();
2824
}
2925

30-
negTestBindSharedMismatch(String host, bool v6Only) {
31-
asyncStart();
32-
ServerSocket.bind(host, 0, v6Only: v6Only).then((ServerSocket socket) {
33-
Expect.isTrue(socket.port > 0);
26+
Future negTestBindSharedMismatch(String host, bool v6Only) async {
27+
final socket = await ServerSocket.bind(host, 0, v6Only: v6Only);
28+
Expect.isTrue(socket.port > 0);
3429

35-
asyncStart();
36-
return ServerSocket
37-
.bind(host, socket.port, v6Only: v6Only)
38-
.catchError((error) {
39-
Expect.isTrue(error is SocketException);
40-
Expect.isTrue('$error'.contains('shared flag'));
41-
socket.close().whenComplete(asyncEnd);
42-
asyncEnd();
43-
});
44-
});
30+
await throws(() => ServerSocket.bind(host, socket.port, v6Only: v6Only),
31+
(error) => error is SocketException && '$error'.contains('shared flag'));
32+
await socket.close();
4533
}
4634

47-
negTestBindV6OnlyMismatch(String host, bool v6Only) {
48-
asyncStart();
49-
ServerSocket
50-
.bind(host, 0, v6Only: v6Only, shared: true)
51-
.then((ServerSocket socket) {
52-
Expect.isTrue(socket.port > 0);
35+
Future negTestBindV6OnlyMismatch(String host, bool v6Only) async {
36+
final socket = await ServerSocket.bind(host, 0, v6Only: v6Only, shared: true);
37+
Expect.isTrue(socket.port > 0);
5338

54-
asyncStart();
55-
return ServerSocket
56-
.bind(host, socket.port, v6Only: !v6Only, shared: true)
57-
.catchError((error) {
58-
Expect.isTrue(error is SocketException);
59-
Expect.isTrue('$error'.contains('v6Only flag'));
60-
socket.close().whenComplete(asyncEnd);
61-
asyncEnd();
62-
});
63-
});
39+
await throws(
40+
() => ServerSocket.bind(host, socket.port, v6Only: !v6Only, shared: true),
41+
(error) => error is SocketException && '$error'.contains('v6Only flag'));
42+
43+
await socket.close();
6444
}
6545

6646
Future testBindDifferentAddresses(InternetAddress addr1, InternetAddress addr2,
6747
bool addr1V6Only, bool addr2V6Only) async {
68-
int freePort = await freeIPv4AndIPv6Port();
69-
70-
var socket = await ServerSocket.bind(addr1, freePort,
71-
v6Only: addr1V6Only, shared: false);
48+
var socket =
49+
await ServerSocket.bind(addr1, 0, v6Only: addr1V6Only, shared: false);
7250

7351
try {
7452
Expect.isTrue(socket.port > 0);
7553

76-
var socket2 = await ServerSocket.bind(addr2, freePort,
54+
var socket2 = await ServerSocket.bind(addr2, socket.port,
7755
v6Only: addr2V6Only, shared: false);
7856
try {
7957
Expect.equals(socket.port, socket2.port);
@@ -85,9 +63,7 @@ Future testBindDifferentAddresses(InternetAddress addr1, InternetAddress addr2,
8563
}
8664
}
8765

88-
testListenCloseListenClose(String host) async {
89-
asyncStart();
90-
66+
Future testListenCloseListenClose(String host) async {
9167
ServerSocket socket = await ServerSocket.bind(host, 0, shared: true);
9268
ServerSocket socket2 =
9369
await ServerSocket.bind(host, socket.port, shared: true);
@@ -117,12 +93,9 @@ testListenCloseListenClose(String host) async {
11793

11894
// Close the second server socket.
11995
await socket2.close();
120-
asyncEnd();
12196
}
12297

12398
main() async {
124-
asyncStart();
125-
12699
await retry(() async {
127100
await testBindDifferentAddresses(
128101
InternetAddress.anyIPv6, InternetAddress.anyIPv4, true, false);
@@ -133,16 +106,15 @@ main() async {
133106
});
134107

135108
for (var host in ['127.0.0.1', '::1']) {
136-
testBindShared(host, false);
137-
testBindShared(host, true);
109+
await testBindShared(host, false);
110+
await testBindShared(host, true);
138111

139-
negTestBindSharedMismatch(host, false);
140-
negTestBindSharedMismatch(host, true);
112+
await negTestBindSharedMismatch(host, false);
113+
await negTestBindSharedMismatch(host, true);
141114

142-
negTestBindV6OnlyMismatch(host, true);
143-
negTestBindV6OnlyMismatch(host, false);
115+
await negTestBindV6OnlyMismatch(host, true);
116+
await negTestBindV6OnlyMismatch(host, false);
144117

145-
testListenCloseListenClose(host);
118+
await testListenCloseListenClose(host);
146119
}
147-
asyncEnd();
148120
}

tests/standalone_2/io/socket_source_address_test.dart

Lines changed: 10 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -6,44 +6,19 @@
66
import "dart:async";
77
import "dart:io";
88

9-
import "package:async_helper/async_helper.dart";
10-
import "package:expect/expect.dart";
11-
12-
import 'test_utils.dart' show freeIPv4AndIPv6Port, retry;
13-
14-
Future throws(Function f, Function check) async {
15-
try {
16-
await f();
17-
Expect.fail('Did not throw');
18-
} catch (e) {
19-
if (check != null) {
20-
if (!check(e)) {
21-
Expect.fail('Unexpected: $e');
22-
}
23-
}
24-
}
25-
}
9+
import 'test_utils.dart' show retry, throws;
2610

2711
Future testArguments(connectFunction) async {
28-
int freePort = await freeIPv4AndIPv6Port();
29-
3012
var sourceAddress;
31-
asyncStart();
32-
var server;
33-
try {
34-
server = await ServerSocket.bind(InternetAddress.loopbackIPv4, freePort);
35-
} catch (e) {
36-
asyncEnd();
37-
rethrow;
38-
}
13+
final server = await ServerSocket.bind(InternetAddress.loopbackIPv4, 0);
3914
server.listen((_) {
4015
throw 'Unexpected connection from address $sourceAddress';
41-
}, onDone: () => asyncEnd());
16+
});
4217

43-
asyncStart();
4418
// Illegal type for sourceAddress.
4519
for (sourceAddress in ['www.google.com', 'abc']) {
46-
await throws(() => connectFunction('127.0.0.1', server.port,
20+
await throws(
21+
() => connectFunction('127.0.0.1', server.port,
4722
sourceAddress: sourceAddress),
4823
(e) => e is ArgumentError);
4924
}
@@ -63,8 +38,7 @@ Future testArguments(connectFunction) async {
6338
sourceAddress: sourceAddress),
6439
(e) => e is SocketException);
6540
}
66-
asyncEnd();
67-
server.close();
41+
await server.close();
6842
}
6943

7044
// IPv4 addresses to use as source address when connecting locally.
@@ -85,8 +59,6 @@ var ipV6SourceAddresses = [
8559

8660
Future testConnect(InternetAddress bindAddress, bool v6Only,
8761
Function connectFunction, Function closeDestroyFunction) async {
88-
int freePort = await freeIPv4AndIPv6Port();
89-
9062
var successCount = 0;
9163
if (!v6Only) successCount += ipV4SourceAddresses.length;
9264
if (bindAddress.type == InternetAddressType.IPv6) {
@@ -96,17 +68,14 @@ Future testConnect(InternetAddress bindAddress, bool v6Only,
9668
var allConnected = new Completer();
9769
if (successCount == 0) allConnected.complete();
9870

99-
asyncStart();
100-
var server = await ServerSocket.bind(bindAddress, freePort, v6Only: v6Only);
71+
var server = await ServerSocket.bind(bindAddress, 0, v6Only: v6Only);
10172
server.listen((s) {
10273
s.destroy();
10374
count++;
10475
if (count == successCount) allConnected.complete();
105-
}, onDone: () => asyncEnd());
106-
107-
asyncStart();
76+
});
10877

109-
// Connect with IPv4 source addesses.
78+
// Connect with IPv4 source addresses.
11079
for (var sourceAddress in ipV4SourceAddresses) {
11180
if (!v6Only) {
11281
var s = await connectFunction(InternetAddress.loopbackIPv4, server.port,
@@ -122,7 +91,7 @@ Future testConnect(InternetAddress bindAddress, bool v6Only,
12291
}
12392
}
12493

125-
// Connect with IPv6 source addesses.
94+
// Connect with IPv6 source addresses.
12695
for (var sourceAddress in ipV6SourceAddresses) {
12796
if (bindAddress.type == InternetAddressType.IPv6) {
12897
var s = await connectFunction(InternetAddress.loopbackIPv6, server.port,
@@ -139,12 +108,9 @@ Future testConnect(InternetAddress bindAddress, bool v6Only,
139108

140109
await allConnected.future;
141110
await server.close();
142-
asyncEnd();
143111
}
144112

145113
main() async {
146-
asyncStart();
147-
148114
await retry(() async {
149115
await testArguments(RawSocket.connect);
150116
});
@@ -176,6 +142,4 @@ main() async {
176142
await testConnect(
177143
InternetAddress.anyIPv6, true, Socket.connect, (s) => s.destroy());
178144
});
179-
180-
asyncEnd();
181145
}

tests/standalone_2/io/test_utils.dart

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,7 @@
55
import 'dart:async';
66
import 'dart:io';
77

8-
Future<int> freeIPv4AndIPv6Port() async {
9-
var socket =
10-
await ServerSocket.bind(InternetAddress.anyIPv6, 0, v6Only: false);
11-
int port = socket.port;
12-
await socket.close();
13-
return port;
14-
}
8+
import "package:expect/expect.dart";
159

1610
int lastRetryId = 0;
1711

@@ -31,3 +25,15 @@ Future retry(Future fun(), {int maxCount: 10}) async {
3125
}
3226
return await fun();
3327
}
28+
29+
Future throws(Function f, bool check(Object exception)) async {
30+
try {
31+
await f();
32+
} catch (e) {
33+
if (!check(e)) {
34+
Expect.fail('Unexpected: $e');
35+
}
36+
return;
37+
}
38+
Expect.fail('Did not throw');
39+
}

0 commit comments

Comments
 (0)