traffic_core: продакшн-фиксы runtime и валидации
This commit is contained in:
+9
-11
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user