diff options
author | Stanislav Fomichev <sdf@google.com> | 2019-12-04 11:09:55 -0800 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2019-12-04 18:01:05 -0800 |
commit | ef8c84effce3c7a0b8196fcda8f430c815ab511c (patch) | |
tree | 10cc86cc9c2f54f8bf93c7e8f6da1ccfafa6c719 /tools/testing/selftests/bpf/progs/test_tcpbpf_kern.c | |
parent | 6bf6affe18dafea6ef12036001162ac7f2dbf738 (diff) | |
download | linux-ef8c84effce3c7a0b8196fcda8f430c815ab511c.tar.gz linux-ef8c84effce3c7a0b8196fcda8f430c815ab511c.tar.bz2 linux-ef8c84effce3c7a0b8196fcda8f430c815ab511c.zip |
selftests/bpf: De-flake test_tcpbpf
It looks like BPF program that handles BPF_SOCK_OPS_STATE_CB state
can race with the bpf_map_lookup_elem("global_map"); I sometimes
see the failures in this test and re-running helps.
Since we know that we expect the callback to be called 3 times (one
time for listener socket, two times for both ends of the connection),
let's export this number and add simple retry logic around that.
Also, let's make EXPECT_EQ() not return on failure, but continue
evaluating all conditions; that should make potential debugging
easier.
With this fix in place I don't observe the flakiness anymore.
Signed-off-by: Stanislav Fomichev <sdf@google.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Cc: Lawrence Brakmo <brakmo@fb.com>
Link: https://lore.kernel.org/bpf/20191204190955.170934-1-sdf@google.com
Diffstat (limited to 'tools/testing/selftests/bpf/progs/test_tcpbpf_kern.c')
-rw-r--r-- | tools/testing/selftests/bpf/progs/test_tcpbpf_kern.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/tools/testing/selftests/bpf/progs/test_tcpbpf_kern.c b/tools/testing/selftests/bpf/progs/test_tcpbpf_kern.c index 2e233613d1fc..7fa4595d2b66 100644 --- a/tools/testing/selftests/bpf/progs/test_tcpbpf_kern.c +++ b/tools/testing/selftests/bpf/progs/test_tcpbpf_kern.c @@ -131,6 +131,7 @@ int bpf_testcb(struct bpf_sock_ops *skops) g.bytes_received = skops->bytes_received; g.bytes_acked = skops->bytes_acked; } + g.num_close_events++; bpf_map_update_elem(&global_map, &key, &g, BPF_ANY); } |