test: run node-level mesh tests over an in-process loopback transport

Add a Loopback variant to TransportHandle backed by an unbounded
in-process channel and a shared address-to-receiver registry, so
node-level multi-node tests deliver packets directly between nodes
instead of over real localhost UDP sockets. This removes the kernel
UDP receive-buffer overflow that dropped handshake packets when many
tests ran in parallel under CPU contention, and lets the large-network
convergence tests run reliably in the default suite again (their
parallel-load ignore markers are removed).

The new transport and its enum variant are cfg(test)-gated, so the
daemon build is unaffected.
This commit is contained in:
Johnathan Corgan
2026-06-05 03:32:57 +00:00
parent 4af3730be6
commit de327e4527
11 changed files with 303 additions and 41 deletions
+2 -2
View File
@@ -63,7 +63,7 @@ async fn make_test_node_ble(node_num: u8) -> TestNode {
TestNode {
node,
transport_id,
packet_rx,
packet_rx: spanning_tree::bridge_to_unbounded(packet_rx),
addr: ta,
}
}
@@ -303,7 +303,7 @@ async fn test_ble_discovery() {
let mut nodes = vec![TestNode {
node,
transport_id,
packet_rx,
packet_rx: spanning_tree::bridge_to_unbounded(packet_rx),
addr: ta,
}];
cleanup_nodes(&mut nodes).await;