Skip to content

Commit

Permalink
selftests: mptcp: explicitly tests aggregate counters
Browse files Browse the repository at this point in the history
Update the existing sockopt test-case to do some basic checks
on the newly added counters.

Link: #385
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Matthieu Baerts <matthieu.baerts@tessares.net>
  • Loading branch information
Paolo Abeni authored and jenkins-tessares committed Jun 22, 2023
1 parent a1b396c commit a026840
Showing 1 changed file with 26 additions and 1 deletion.
27 changes: 26 additions & 1 deletion tools/testing/selftests/net/mptcp/mptcp_sockopt.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,11 @@ struct mptcp_info {
__u8 mptcpi_local_addr_used;
__u8 mptcpi_local_addr_max;
__u8 mptcpi_csum_enabled;
__u32 mptcpi_retransmits;
__u64 mptcpi_bytes_retrans;
__u64 mptcpi_bytes_sent;
__u64 mptcpi_bytes_received;
__u64 mptcpi_bytes_acked;
};

struct mptcp_subflow_data {
Expand Down Expand Up @@ -83,8 +88,10 @@ struct mptcp_subflow_addrs {

struct so_state {
struct mptcp_info mi;
struct mptcp_info last_sample;
uint64_t mptcpi_rcv_delta;
uint64_t tcpi_rcv_delta;
bool pkt_stats_avail;
};

#ifndef MIN
Expand Down Expand Up @@ -322,8 +329,9 @@ static void do_getsockopt_mptcp_info(struct so_state *s, int fd, size_t w)
if (ret < 0)
die_perror("getsockopt MPTCP_INFO");

assert(olen == sizeof(i));
s->pkt_stats_avail = olen >= sizeof(i);

s->last_sample = i;
if (s->mi.mptcpi_write_seq == 0)
s->mi = i;

Expand Down Expand Up @@ -562,6 +570,23 @@ static void process_one_client(int fd, int pipefd)
do_getsockopts(&s, fd, ret, ret2);
if (s.mptcpi_rcv_delta != (uint64_t)ret + 1)
xerror("mptcpi_rcv_delta %" PRIu64 ", expect %" PRIu64, s.mptcpi_rcv_delta, ret + 1, s.mptcpi_rcv_delta - ret);

/* 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,
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,
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,
s.last_sample.mptcpi_bytes_acked, ret2,
s.last_sample.mptcpi_bytes_acked - ret2);
}

close(fd);
}

Expand Down

0 comments on commit a026840

Please sign in to comment.