mod common; use common::*; use xy_protocol::ServerState; #[tokio::test] async fn uptime_grows_while_a_server_stays_running() { let xy = xy_bin(); let sleeper = sleep_server_bin(); let mut h = Harness::new(); h.write_server("alpha", sleeper.to_str().unwrap(), 19_101, "always"); h.start_daemon(&xy).await; for _ in 0..40 { let rows = h.list_rpc().await; if rows .iter() .any(|r| r.name == "alpha" && r.state == ServerState::Running) { break; } tokio::time::sleep(std::time::Duration::from_millis(100)).await; } tokio::time::sleep(std::time::Duration::from_millis(1_200)).await; let rows = h.list_rpc().await; let alpha = rows .iter() .find(|r| r.name == "alpha") .unwrap_or_else(|| panic!("no alpha row in: {rows:?}")); assert!( alpha.uptime_secs.is_some_and(|secs| secs >= 1), "a server running for over a second must report at least 1s of uptime; row: {alpha:?}" ); }