traffic_core: продакшн-фиксы runtime и валидации

This commit is contained in:
2026-05-10 21:29:52 +05:00
parent a4bb7adb4f
commit d4cd6a4e43
9 changed files with 353 additions and 52 deletions
+9 -11
View File
@@ -36,11 +36,10 @@ pub fn discover_peers_with_transport(
transport: &dyn NsTransport,
peer_cidr: &str,
) -> anyhow::Result<Vec<Peer>> {
let primary = transport
.run(&["wg", "show", "all", "allowed-ips"])
.map_err(|e| anyhow::anyhow!("wg show all allowed-ips failed: {e}"))?;
let mut peers = parse_allowed_ips(&primary, peer_cidr)?;
let mut peers = match transport.run(&["wg", "show", "all", "allowed-ips"]) {
Ok(primary) => parse_allowed_ips(&primary, peer_cidr)?,
Err(_) => Vec::new(),
};
if peers.is_empty() {
let fallback = transport
.run(&["wg", "show"])
@@ -261,16 +260,15 @@ mod tests {
}
#[test]
fn command_failure_is_propagated() {
fn primary_failure_falls_back_to_wg_show() {
let transport = TestTransport::new(vec![(
"wg show all allowed-ips",
Err(anyhow::anyhow!("wg broken")),
)]);
), ("wg show", Ok("allowed ips: 10.8.1.4/32"))]);
let err = discover_peers_with_transport(&transport, "10.8.1.0/24").err();
assert!(err.is_some());
let msg = err.expect("err").to_string();
assert!(msg.contains("wg show all allowed-ips failed"));
let peers = discover_peers_with_transport(&transport, "10.8.1.0/24").expect("peers");
assert_eq!(peers.len(), 1);
assert_eq!(peers[0].ipv4.to_string(), "10.8.1.4");
}
#[test]