selftests/bpf: Fix perf_buffer test on system with offline cpus
authorJiri Olsa <jolsa@redhat.com>
Thu, 21 Oct 2021 11:41:30 +0000 (13:41 +0200)
committerAndrii Nakryiko <andrii@kernel.org>
Thu, 21 Oct 2021 22:59:20 +0000 (15:59 -0700)
The perf_buffer fails on system with offline cpus:

  # test_progs -t perf_buffer
  test_perf_buffer:PASS:nr_cpus 0 nsec
  test_perf_buffer:PASS:nr_on_cpus 0 nsec
  test_perf_buffer:PASS:skel_load 0 nsec
  test_perf_buffer:PASS:attach_kprobe 0 nsec
  test_perf_buffer:PASS:perf_buf__new 0 nsec
  test_perf_buffer:PASS:epoll_fd 0 nsec
  skipping offline CPU #24
  skipping offline CPU #25
  skipping offline CPU #26
  skipping offline CPU #27
  skipping offline CPU #28
  skipping offline CPU #29
  skipping offline CPU #30
  skipping offline CPU #31
  test_perf_buffer:PASS:perf_buffer__poll 0 nsec
  test_perf_buffer:PASS:seen_cpu_cnt 0 nsec
  test_perf_buffer:FAIL:buf_cnt got 24, expected 32
  Summary: 0/0 PASSED, 0 SKIPPED, 1 FAILED

Changing the test to check online cpus instead of possible.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: John Fastabend <john.fastabend@gmail.com>
Link: https://lore.kernel.org/bpf/20211021114132.8196-2-jolsa@kernel.org
tools/testing/selftests/bpf/prog_tests/perf_buffer.c

index 6979aff..8776003 100644 (file)
@@ -107,8 +107,8 @@ void serial_test_perf_buffer(void)
                  "expect %d, seen %d\n", nr_on_cpus, CPU_COUNT(&cpu_seen)))
                goto out_free_pb;
 
-       if (CHECK(perf_buffer__buffer_cnt(pb) != nr_cpus, "buf_cnt",
-                 "got %zu, expected %d\n", perf_buffer__buffer_cnt(pb), nr_cpus))
+       if (CHECK(perf_buffer__buffer_cnt(pb) != nr_on_cpus, "buf_cnt",
+                 "got %zu, expected %d\n", perf_buffer__buffer_cnt(pb), nr_on_cpus))
                goto out_close;
 
        for (i = 0; i < nr_cpus; i++) {