[PATCH mptcp-next v14 03/12] selftests: mptcp: sockopt: add check_stat_equal helper
Geliang Tang <[email protected]> Thu, 30 Jul 2026 11:15:14 +0800
| Newsgroups | dev.linux.lists.mptcp |
|---|---|
| Message-ID | <b28a7c36a33ece04214fbaf0bdd2d3a8ab910532.1785380422.git.tanggeliang@kylinos.cn> |
From: Geliang Tang <[email protected]> Add check_stat_equal() helper to reduce repetitive error reporting code when validating MPTCP statistics values in process_one_client(). Also fix bytes_acked validation: compare it against the amount of data written (ret2) instead of the amount read (ret), as bytes_acked tracks sent and acknowledged data. Signed-off-by: Geliang Tang <[email protected]> --- .../selftests/net/mptcp/mptcp_sockopt.c | 39 ++++++++++--------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.c b/tools/testing/selftests/net/mptcp/mptcp_sockopt.c index 469384823dc6..a68fbe13b096 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.c +++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.c @@ -638,6 +638,16 @@ static void connect_one_server(int fd, int pipefd) close(fd); } +static void check_stat_equal(const char *name, uint64_t actual, + uint64_t expected) +{ + if (actual == expected) + return; + + xerror("%s %" PRIu64 ", expect %" PRIu64 ", diff %" PRId64, + name, actual, expected, (int64_t)(actual - expected)); +} + static void process_one_client(int fd, int pipefd) { ssize_t ret, ret2, ret3; @@ -669,27 +679,20 @@ static void process_one_client(int fd, int pipefd) xerror("expected EOF, got %lu", ret3); do_getsockopts(&s, fd, ret, ret2); - if (s.mptcpi_rcv_delta != (uint64_t)ret + 1) - xerror("mptcpi_rcv_delta %" PRIu64 ", expect %" PRIu64 ", diff %" PRId64, - s.mptcpi_rcv_delta, ret + 1, s.mptcpi_rcv_delta - (ret + 1)); + check_stat_equal("mptcpi_rcv_delta", s.mptcpi_rcv_delta, + (uint64_t)ret + 1); /* +1 for FIN */ /* be nice when running on top of older kernel */ if (s.pkt_stats_avail) { - if (s.last_sample.mptcpi_bytes_sent != ret2) - xerror("mptcpi_bytes_sent %" PRIu64 ", expect %" PRIu64 - ", diff %" PRId64, - s.last_sample.mptcpi_bytes_sent, ret2, - s.last_sample.mptcpi_bytes_sent - ret2); - if (s.last_sample.mptcpi_bytes_received != ret) - xerror("mptcpi_bytes_received %" PRIu64 ", expect %" PRIu64 - ", diff %" PRId64, - s.last_sample.mptcpi_bytes_received, ret, - s.last_sample.mptcpi_bytes_received - ret); - if (s.last_sample.mptcpi_bytes_acked != ret) - xerror("mptcpi_bytes_acked %" PRIu64 ", expect %" PRIu64 - ", diff %" PRId64, - s.last_sample.mptcpi_bytes_acked, ret, - s.last_sample.mptcpi_bytes_acked - ret); + check_stat_equal("mptcpi_bytes_sent", + s.last_sample.mptcpi_bytes_sent, + (uint64_t)ret2); + check_stat_equal("mptcpi_bytes_received", + s.last_sample.mptcpi_bytes_received, + (uint64_t)ret); + check_stat_equal("mptcpi_bytes_acked", + s.last_sample.mptcpi_bytes_acked, + (uint64_t)ret2); } close(fd); -- 2.53.0