@@ -24,65 +24,21 @@ mod test_utils {
24
24
use self :: server:: Server ;
25
25
26
26
use super :: * ;
27
- static PORTS_BASE : u16 = 5000 ;
28
- static PORT_ACTIVE_BASE : Mutex < u16 > = Mutex :: new ( PORTS_BASE ) ;
29
-
30
- fn addr_in_use ( addr : SocketAddr ) -> bool {
31
- use std:: net:: TcpListener ;
32
- TcpListener :: bind ( addr) . is_err ( )
33
- }
34
-
35
- pub ( super ) fn get_socket_addr ( ) -> SocketAddr {
36
- let mut port = * PORT_ACTIVE_BASE . lock ( ) . unwrap ( ) ;
37
- let addr = SocketAddr :: new ( IpAddr :: V4 ( Ipv4Addr :: LOCALHOST ) , port) ;
38
- while addr_in_use ( addr) {
39
- debug ! ( "Port {} is in use, trying next port." , port) ;
40
- port += 1 ;
41
- }
42
- * PORT_ACTIVE_BASE . lock ( ) . unwrap ( ) = port + 1 ;
43
- addr
44
- }
45
27
46
28
/// Creates a client and server pair.
47
29
/// (client, server)
48
30
pub ( super ) fn make_client_server_pair ( ) -> ( Client , Client ) {
49
31
use std:: net:: TcpListener ;
50
- let server = TcpListener :: bind ( ( Ipv4Addr :: LOCALHOST , * PORT_ACTIVE_BASE . lock ( ) . unwrap ( ) ) ) ;
51
-
52
- * PORT_ACTIVE_BASE . lock ( ) . unwrap ( ) += 1 ;
53
-
54
- if let Err ( e) = server {
55
- // If the port is in use, try again.
56
- if e. kind ( ) == std:: io:: ErrorKind :: AddrInUse {
57
- return make_client_server_pair ( ) ;
58
- } else {
59
- panic ! ( "Failed to bind server: {}" , e) ;
60
- }
61
- }
62
-
63
- let server = server. unwrap ( ) ;
32
+ let server = TcpListener :: bind ( ( Ipv4Addr :: LOCALHOST , 0 ) ) . expect ( "Failed to create server!" ) ;
64
33
65
34
let client = Client :: connect ( server. local_addr ( ) . unwrap ( ) ) . unwrap ( ) ;
66
35
let server = server. accept ( ) . unwrap ( ) . 0 ;
67
36
68
37
( client, Client :: from_stream ( server) )
69
38
}
70
-
39
+ /// Creates a Server. Expects the OS to assign a port.
71
40
pub ( super ) fn make_server ( ) -> Server {
72
- let server = Server :: new ( ( Ipv4Addr :: LOCALHOST , * PORT_ACTIVE_BASE . lock ( ) . unwrap ( ) ) ) ;
73
-
74
- if let Err ( e) = server {
75
- // If the port is in use, try again.
76
- if e. kind ( ) == std:: io:: ErrorKind :: AddrInUse {
77
- return make_server ( ) ;
78
- } else {
79
- panic ! ( "Failed to bind server: {}" , e) ;
80
- }
81
- }
82
-
83
- * PORT_ACTIVE_BASE . lock ( ) . unwrap ( ) += 1 ;
84
-
85
- server. unwrap ( )
41
+ Server :: new ( ( Ipv4Addr :: LOCALHOST , 0 ) ) . expect ( "Failed to create server!" )
86
42
}
87
43
88
44
/// Tests sending and receiving data. Convenience function for testing.
0 commit comments