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
View File
@@ -670,7 +670,6 @@ fn simulate_forwarding(
/// forwarding between every pair of nodes. Every packet must be delivered
/// without loops.
#[tokio::test]
#[ignore = "parallel-load flake class — re-enable when fixed (run solo with --ignored or --test-threads=1 in the meantime)"]
async fn test_routing_reachability_100_nodes() {
let _guard = lock_large_network_test().await;
@@ -991,7 +990,6 @@ async fn test_routing_bloom_only_transit() {
/// routing needs dest_coords at each hop for loop-free forwarding through
/// non-adjacent nodes. Direct peer adjacency handles the last hop.
#[tokio::test]
#[ignore = "parallel-load flake class — re-enable when fixed (run solo with --ignored or --test-threads=1 in the meantime)"]
async fn test_routing_source_only_coords_100_nodes() {
let _guard = lock_large_network_test().await;