5
5
import 'dart:async' ;
6
6
import 'dart:io' ;
7
7
8
- import 'package:async_helper/async_helper.dart' ;
9
8
import 'package:expect/expect.dart' ;
10
9
11
- import 'test_utils.dart' show freeIPv4AndIPv6Port, retry ;
10
+ import 'test_utils.dart' show retry, throws ;
12
11
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 );
17
15
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 ();
28
24
}
29
25
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 );
34
29
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 ();
45
33
}
46
34
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 );
53
38
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 ();
64
44
}
65
45
66
46
Future testBindDifferentAddresses (InternetAddress addr1, InternetAddress addr2,
67
47
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 );
72
50
73
51
try {
74
52
Expect .isTrue (socket.port > 0 );
75
53
76
- var socket2 = await ServerSocket .bind (addr2, freePort ,
54
+ var socket2 = await ServerSocket .bind (addr2, socket.port ,
77
55
v6Only: addr2V6Only, shared: false );
78
56
try {
79
57
Expect .equals (socket.port, socket2.port);
@@ -85,9 +63,7 @@ Future testBindDifferentAddresses(InternetAddress addr1, InternetAddress addr2,
85
63
}
86
64
}
87
65
88
- testListenCloseListenClose (String host) async {
89
- asyncStart ();
90
-
66
+ Future testListenCloseListenClose (String host) async {
91
67
ServerSocket socket = await ServerSocket .bind (host, 0 , shared: true );
92
68
ServerSocket socket2 =
93
69
await ServerSocket .bind (host, socket.port, shared: true );
@@ -117,12 +93,9 @@ testListenCloseListenClose(String host) async {
117
93
118
94
// Close the second server socket.
119
95
await socket2.close ();
120
- asyncEnd ();
121
96
}
122
97
123
98
main () async {
124
- asyncStart ();
125
-
126
99
await retry (() async {
127
100
await testBindDifferentAddresses (
128
101
InternetAddress .anyIPv6, InternetAddress .anyIPv4, true , false );
@@ -133,16 +106,15 @@ main() async {
133
106
});
134
107
135
108
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 );
138
111
139
- negTestBindSharedMismatch (host, false );
140
- negTestBindSharedMismatch (host, true );
112
+ await negTestBindSharedMismatch (host, false );
113
+ await negTestBindSharedMismatch (host, true );
141
114
142
- negTestBindV6OnlyMismatch (host, true );
143
- negTestBindV6OnlyMismatch (host, false );
115
+ await negTestBindV6OnlyMismatch (host, true );
116
+ await negTestBindV6OnlyMismatch (host, false );
144
117
145
- testListenCloseListenClose (host);
118
+ await testListenCloseListenClose (host);
146
119
}
147
- asyncEnd ();
148
120
}
0 commit comments