@@ -603,6 +603,7 @@ pub fn bind_more_with_config(
603
603
mod tests {
604
604
use {
605
605
super :: * ,
606
+ crate :: sockets:: unique_port_range_for_tests,
606
607
ip_echo_server:: IpEchoServerResponse ,
607
608
itertools:: Itertools ,
608
609
std:: { net:: Ipv4Addr , time:: Duration } ,
@@ -748,14 +749,16 @@ mod tests {
748
749
#[ test]
749
750
fn test_bind_in_range_nil ( ) {
750
751
let ip_addr = IpAddr :: V4 ( Ipv4Addr :: UNSPECIFIED ) ;
751
- bind_in_range ( ip_addr, ( 2000 , 2000 ) ) . unwrap_err ( ) ;
752
- bind_in_range ( ip_addr, ( 2000 , 1999 ) ) . unwrap_err ( ) ;
752
+ let range = sockets:: unique_port_range_for_tests ( 2 ) ;
753
+ bind_in_range ( ip_addr, ( range. end , range. end ) ) . unwrap_err ( ) ;
754
+ bind_in_range ( ip_addr, ( range. end , range. start ) ) . unwrap_err ( ) ;
753
755
}
754
756
755
757
#[ test]
756
758
fn test_find_available_port_in_range ( ) {
757
759
let ip_addr = IpAddr :: V4 ( Ipv4Addr :: LOCALHOST ) ;
758
- let ( pr_s, pr_e) = sockets:: localhost_port_range_for_tests ( ) ;
760
+ let range = sockets:: unique_port_range_for_tests ( 4 ) ;
761
+ let ( pr_s, pr_e) = ( range. start , range. end ) ;
759
762
assert_eq ! (
760
763
find_available_port_in_range( ip_addr, ( pr_s, pr_s + 1 ) ) . unwrap( ) ,
761
764
pr_s
@@ -784,12 +787,11 @@ mod tests {
784
787
#[ test]
785
788
fn test_bind_common_in_range ( ) {
786
789
let ip_addr = IpAddr :: V4 ( Ipv4Addr :: LOCALHOST ) ;
787
- let ( pr_s , pr_e ) = sockets:: localhost_port_range_for_tests ( ) ;
790
+ let range = sockets:: unique_port_range_for_tests ( 5 ) ;
788
791
let config = SocketConfig :: default ( ) ;
789
792
let ( port, _sockets) =
790
- bind_common_in_range_with_config ( ip_addr, ( pr_s, pr_e) , config) . unwrap ( ) ;
791
- assert ! ( ( pr_s..pr_e) . contains( & port) ) ;
792
-
793
+ bind_common_in_range_with_config ( ip_addr, ( range. start , range. end ) , config) . unwrap ( ) ;
794
+ assert ! ( range. contains( & port) ) ;
793
795
bind_common_in_range_with_config ( ip_addr, ( port, port + 1 ) , config) . unwrap_err ( ) ;
794
796
}
795
797
@@ -889,16 +891,18 @@ mod tests {
889
891
fn test_verify_ports_udp_unreachable ( ) {
890
892
solana_logger:: setup ( ) ;
891
893
let ip_addr = IpAddr :: V4 ( Ipv4Addr :: LOCALHOST ) ;
892
- let port_range = sockets :: localhost_port_range_for_tests ( ) ;
894
+ let port_range = unique_port_range_for_tests ( 2 ) ;
893
895
let config = SocketConfig :: default ( ) ;
894
896
let ( _server_port, ( server_udp_socket, _server_tcp_listener) ) =
895
- bind_common_in_range_with_config ( ip_addr, port_range, config) . unwrap ( ) ;
897
+ bind_common_in_range_with_config ( ip_addr, ( port_range. start , port_range. end ) , config)
898
+ . unwrap ( ) ;
896
899
897
900
// make the socket unreachable by not running the ip echo server!
898
901
let server_ip_echo_addr = server_udp_socket. local_addr ( ) . unwrap ( ) ;
899
902
900
903
let ( _correct_client_port, ( client_udp_socket, _client_tcp_listener) ) =
901
- bind_common_in_range_with_config ( ip_addr, port_range, config) . unwrap ( ) ;
904
+ bind_common_in_range_with_config ( ip_addr, ( port_range. start , port_range. end ) , config)
905
+ . unwrap ( ) ;
902
906
903
907
let rt = runtime ( ) ;
904
908
assert ! ( !rt. block_on( ip_echo_client:: verify_all_reachable_udp(
@@ -917,13 +921,16 @@ mod tests {
917
921
let mut tcp_listeners = vec ! [ ] ;
918
922
let mut udp_sockets = vec ! [ ] ;
919
923
924
+ let port_range = unique_port_range_for_tests ( 1 ) ;
920
925
let ( _server_port, ( _, server_tcp_listener) ) =
921
- bind_common_in_range_with_config ( ip_addr, ( 2200 , 2300 ) , config) . unwrap ( ) ;
926
+ bind_common_in_range_with_config ( ip_addr, ( port_range. start , port_range. end ) , config)
927
+ . unwrap ( ) ;
922
928
for _ in 0 ..MAX_PORT_VERIFY_THREADS * 2 {
929
+ let port_range = unique_port_range_for_tests ( 1 ) ;
923
930
let ( _client_port, ( client_udp_socket, client_tcp_listener) ) =
924
931
bind_common_in_range_with_config (
925
932
ip_addr,
926
- ( 2300 , 2300 + ( MAX_PORT_VERIFY_THREADS * 3 ) as u16 ) ,
933
+ ( port_range . start , port_range . end ) ,
927
934
config,
928
935
)
929
936
. unwrap ( ) ;
@@ -961,26 +968,34 @@ mod tests {
961
968
solana_logger:: setup ( ) ;
962
969
let ip_addr = IpAddr :: V4 ( Ipv4Addr :: UNSPECIFIED ) ;
963
970
let offset = 6 ;
971
+ let port_range = unique_port_range_for_tests ( 10 ) ;
964
972
if let Ok ( ( ( port1, _) , ( port2, _) ) ) =
965
- bind_two_in_range_with_offset ( ip_addr, ( 1024 , 65535 ) , offset)
973
+ bind_two_in_range_with_offset ( ip_addr, ( port_range . start , port_range . end ) , offset)
966
974
{
967
975
assert ! ( port2 == port1 + offset) ;
968
976
}
969
- let offset = 42 ;
977
+ let offset = 7 ;
970
978
if let Ok ( ( ( port1, _) , ( port2, _) ) ) =
971
- bind_two_in_range_with_offset ( ip_addr, ( 1024 , 65535 ) , offset)
979
+ bind_two_in_range_with_offset ( ip_addr, ( port_range . start , port_range . end ) , offset)
972
980
{
973
981
assert ! ( port2 == port1 + offset) ;
974
982
}
975
- assert ! ( bind_two_in_range_with_offset( ip_addr, ( 1024 , 1044 ) , offset) . is_err( ) ) ;
983
+ assert ! ( bind_two_in_range_with_offset(
984
+ ip_addr,
985
+ ( port_range. start, port_range. start + 5 ) ,
986
+ offset
987
+ )
988
+ . is_err( ) ) ;
976
989
}
977
990
978
991
#[ test]
979
992
fn test_multi_bind_in_range_with_config_reuseport_disabled ( ) {
980
993
let ip_addr: IpAddr = IpAddr :: V4 ( Ipv4Addr :: LOCALHOST ) ;
981
994
let config = SocketConfig :: default ( ) ; //reuseport is false by default
982
995
983
- let result = multi_bind_in_range_with_config ( ip_addr, ( 2010 , 2110 ) , config, 2 ) ;
996
+ let port_range = unique_port_range_for_tests ( 3 ) ;
997
+ let result =
998
+ multi_bind_in_range_with_config ( ip_addr, ( port_range. start , port_range. end ) , config, 2 ) ;
984
999
985
1000
assert ! (
986
1001
result. is_err( ) ,
@@ -995,9 +1010,10 @@ mod tests {
995
1010
let ip_a = IpAddr :: V4 ( Ipv4Addr :: LOCALHOST ) ;
996
1011
let ip_b = IpAddr :: V4 ( Ipv4Addr :: new ( 127 , 0 , 0 , 2 ) ) ;
997
1012
998
- let server_ports = sockets:: localhost_port_range_for_tests ( ) ;
1013
+ let port_range = sockets:: localhost_port_range_for_tests ( ) ;
1014
+
999
1015
let ( _srv_udp_port, ( srv_udp_sock, srv_tcp_listener) ) =
1000
- bind_common_in_range_with_config ( ip_a, server_ports , config) . unwrap ( ) ;
1016
+ bind_common_in_range_with_config ( ip_a, port_range , config) . unwrap ( ) ;
1001
1017
1002
1018
let ip_echo_server_addr = srv_udp_sock. local_addr ( ) . unwrap ( ) ;
1003
1019
let _runtime = ip_echo_server (
@@ -1007,18 +1023,10 @@ mod tests {
1007
1023
) ;
1008
1024
1009
1025
let mut udp_sockets = Vec :: new ( ) ;
1010
- let ( _p1, ( sock_a, _tl_a) ) = bind_common_in_range_with_config (
1011
- ip_a,
1012
- sockets:: localhost_port_range_for_tests ( ) ,
1013
- config,
1014
- )
1015
- . unwrap ( ) ;
1016
- let ( _p2, ( sock_b, _tl_b) ) = bind_common_in_range_with_config (
1017
- ip_b,
1018
- sockets:: localhost_port_range_for_tests ( ) ,
1019
- config,
1020
- )
1021
- . unwrap ( ) ;
1026
+ let ( _p1, ( sock_a, _tl_a) ) =
1027
+ bind_common_in_range_with_config ( ip_a, port_range, config) . unwrap ( ) ;
1028
+ let ( _p2, ( sock_b, _tl_b) ) =
1029
+ bind_common_in_range_with_config ( ip_b, port_range, config) . unwrap ( ) ;
1022
1030
1023
1031
udp_sockets. push ( sock_a) ;
1024
1032
udp_sockets. push ( sock_b) ;
0 commit comments