@@ -12,9 +12,11 @@ use cb_common::{
1212} ;
1313use cb_pbs:: { DefaultBuilderApi , PbsService , PbsState } ;
1414use cb_tests:: {
15- mock_relay:: { MockRelayState , start_mock_relay_service } ,
15+ mock_relay:: { MockRelayState , start_mock_relay_service_with_listener } ,
1616 mock_validator:: MockValidator ,
17- utils:: { generate_mock_relay, get_pbs_config, setup_test_env, to_pbs_config} ,
17+ utils:: {
18+ generate_mock_relay, get_free_listener, get_pbs_config, setup_test_env, to_pbs_config,
19+ } ,
1820} ;
1921use eyre:: Result ;
2022use lh_types:: ForkName ;
@@ -32,20 +34,23 @@ async fn test_cfg_file_update() -> Result<()> {
3234 let pubkey = signer. public_key ( ) ;
3335
3436 let chain = Chain :: Hoodi ;
35- let pbs_port = 3730 ;
37+ let pbs_listener = get_free_listener ( ) . await ;
38+ let relay1_listener = get_free_listener ( ) . await ;
39+ let relay2_listener = get_free_listener ( ) . await ;
40+ let pbs_port = pbs_listener. local_addr ( ) . unwrap ( ) . port ( ) ;
41+ let relay1_port = relay1_listener. local_addr ( ) . unwrap ( ) . port ( ) ;
42+ let relay2_port = relay2_listener. local_addr ( ) . unwrap ( ) . port ( ) ;
3643
3744 // Start relay 1
38- let relay1_port = pbs_port + 1 ;
3945 let relay1 = generate_mock_relay ( relay1_port, pubkey. clone ( ) ) ?;
4046 let relay1_state = Arc :: new ( MockRelayState :: new ( chain, signer. clone ( ) ) ) ;
41- tokio:: spawn ( start_mock_relay_service ( relay1_state. clone ( ) , relay1_port ) ) ;
47+ tokio:: spawn ( start_mock_relay_service_with_listener ( relay1_state. clone ( ) , relay1_listener ) ) ;
4248
4349 // Start relay 2
44- let relay2_port = relay1_port + 1 ;
4550 let relay2 = generate_mock_relay ( relay2_port, pubkey. clone ( ) ) ?;
4651 let relay2_id = relay2. id . clone ( ) . to_string ( ) ;
4752 let relay2_state = Arc :: new ( MockRelayState :: new ( chain, signer) ) ;
48- tokio:: spawn ( start_mock_relay_service ( relay2_state. clone ( ) , relay2_port ) ) ;
53+ tokio:: spawn ( start_mock_relay_service_with_listener ( relay2_state. clone ( ) , relay2_listener ) ) ;
4954
5055 // Make a config with relay 1 only
5156 let pbs_config = PbsConfig {
@@ -109,6 +114,7 @@ async fn test_cfg_file_update() -> Result<()> {
109114 // Run the PBS service
110115 let config = to_pbs_config ( chain, get_pbs_config ( pbs_port) , vec ! [ relay1. clone( ) ] ) ;
111116 let state = PbsState :: new ( config, config_path. clone ( ) ) ;
117+ drop ( pbs_listener) ;
112118 tokio:: spawn ( PbsService :: run :: < ( ) , DefaultBuilderApi > ( state) ) ;
113119
114120 // leave some time to start servers - extra time for the file watcher
0 commit comments