From c9ba018a0d91723a3e1bae3bcba1b65028b84630 Mon Sep 17 00:00:00 2001 From: evgeny Date: Thu, 22 Oct 2026 23:37:24 +0200 Subject: [PATCH] Bound fault steady goodput by newly received unique DATA --- tests/test_etcp_multipath.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/test_etcp_multipath.c b/tests/test_etcp_multipath.c index ed751aab..824063f9 100644 --- a/tests/test_etcp_multipath.c +++ b/tests/test_etcp_multipath.c @@ -346,12 +346,18 @@ static void stalled(const struct profile* settings, unsigned count, unsigned bro uint64_t before = ep[1].bytes; run_for(duration_ms > 1000 ? 1000 : duration_ms, 1, "fault-transition"); uint64_t steady_bytes = ep[1].bytes, steady_start = get_time_us(); + uint64_t steady_unique = 0; + for (unsigned p = 0; p < count; p++) steady_unique += traffic[0][p].rx_unique; if (duration_ms > 1000) run_for(duration_ms - 1000, 1, "fault-steady"); uint64_t now = get_time_us(), tail_gap = now - ep[1].last_delivery; if (tail_gap > ep[1].max_gap) ep[1].max_gap = tail_gap; uint64_t capacity = 0; for (unsigned p = 0; p < count; p++) if (!(broken & (1u << p))) capacity += settings[p].kbps; uint64_t rate = now > steady_start ? (ep[1].bytes-steady_bytes) * 8000 / (now-steady_start) : 0; + uint64_t unique_now = 0; + for (unsigned p = 0; p < count; p++) unique_now += traffic[0][p].rx_unique; + uint64_t fresh_rate = now > steady_start ? (unique_now-steady_unique) * 8000 / (now-steady_start) : 0; + if (fresh_rate < rate) rate = fresh_rate; DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "FAULT result %s delivered=%llu gap_us=%llu p50=%llu p95=%llu p99=%llu max_latency_us=%llu " "steady_kbps=%llu healthy_capacity=%llu missing_seq=%u first_rx_us=%llu attempts=%u", case_name, (unsigned long long)(ep[1].bytes-before), (unsigned long long)ep[1].max_gap,