use beamr::scheduler::ReadinessError;
use super::readiness_refusal::{ReadinessCall, readiness_refusal};
use crate::ServerError;
const CALLS: [(ReadinessCall, &str); 2] = [
(ReadinessCall::Register, "register"),
(ReadinessCall::Rearm, "rearm"),
];
#[test]
fn the_teardown_refusal_names_the_servers_stop() {
for (call, _) in CALLS {
let mapped = readiness_refusal(7, call, &ReadinessError::TeardownInProgress);
assert!(
matches!(mapped, ServerError::ReadinessClosedByStop { pid: 7 }),
"{call:?}: {mapped:?}"
);
}
}
#[test]
fn every_other_refusal_keeps_its_listener_accept_message() -> Result<(), String> {
let others = [
ReadinessError::Disabled,
ReadinessError::Register { errno: 9 },
ReadinessError::UnknownToken,
ReadinessError::ServiceFailed,
];
for error in others {
for (call, verb) in CALLS {
let ServerError::ListenerAccept { message } = readiness_refusal(7, call, &error) else {
return Err(format!("{call:?} {error:?} left ListenerAccept"));
};
assert_eq!(
message,
format!("failed to {verb} connection readiness: {error}")
);
}
}
Ok(())
}