Skip to content

Commit b4b2843

Browse files
authored
Merge pull request #718 from tnull/2025-11-avoid-port-collisions
Avoid `TcpListener` port collisions
2 parents 0a36d7f + c0b4933 commit b4b2843

File tree

1 file changed

+6
-11
lines changed

1 file changed

+6
-11
lines changed

tests/common/mod.rs

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -215,22 +215,17 @@ pub(crate) fn random_storage_path() -> PathBuf {
215215
temp_path
216216
}
217217

218-
pub(crate) fn random_port() -> u16 {
219-
let mut rng = rng();
220-
rng.random_range(5000..32768)
221-
}
222-
223218
pub(crate) fn random_listening_addresses() -> Vec<SocketAddress> {
224219
let num_addresses = 2;
225-
let mut listening_addresses = Vec::with_capacity(num_addresses);
220+
let mut listening_addresses = HashSet::new();
226221

227-
for _ in 0..num_addresses {
228-
let rand_port = random_port();
229-
let address: SocketAddress = format!("127.0.0.1:{}", rand_port).parse().unwrap();
230-
listening_addresses.push(address);
222+
while listening_addresses.len() < num_addresses {
223+
let socket = std::net::TcpListener::bind("127.0.0.1:0").unwrap();
224+
let address: SocketAddress = socket.local_addr().unwrap().into();
225+
listening_addresses.insert(address);
231226
}
232227

233-
listening_addresses
228+
listening_addresses.into_iter().collect()
234229
}
235230

236231
pub(crate) fn random_node_alias() -> Option<NodeAlias> {

0 commit comments

Comments
 (0)