use std::time::Duration; use tokio::net::TcpStream; use tokio::time; /// Check whether a given port is open or not pub async fn is_port_open(port: u16) -> bool { TcpStream::connect(("127.0.0.1", port)).await.is_ok() } /// Wait for a port to become available pub async fn wait_for_port(port: u16) { for _ in 0..50 { if is_port_open(port).await { return; } time::sleep(Duration::from_millis(10)).await; } eprintln!("Port {} did not open in time!", port); std::process::exit(2); }