perf test: Use skip in openat syscall
authorIan Rogers <irogers@google.com>
Wed, 18 May 2022 04:20:22 +0000 (21:20 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 23 May 2022 13:01:57 +0000 (10:01 -0300)
Failures to open the tracepoint cause this test to fail, however,
typically such failures are permission related. Lower the failure to
just skipping the test in those cases and add a skip reason.

Committer testing:

Before:

  $ perf test "openat syscall"
    2: Detect openat syscall event                        : FAILED!
    3: Detect openat syscall event on all cpus            : FAILED!
  $

After:

  $ perf test "openat syscall"
    2: Detect openat syscall event                        : Skip (permissions)
    3: Detect openat syscall event on all cpus            : Skip (permissions)
  $

Signed-off-by: Ian Rogers <irogers@google.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Carsten Haitzler <carsten.haitzler@arm.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: John Garry <john.garry@huawei.com>
Cc: Marco Elver <elver@google.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Michael Petlan <mpetlan@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Riccardo Mancini <rickyman7@gmail.com>
Cc: Sohaib Mohamed <sohaib.amhmd@gmail.com>
Cc: Stephane Eranian <eranian@google.com>
Link: https://lore.kernel.org/r/20220518042027.836799-4-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/tests/openat-syscall-all-cpus.c
tools/perf/tests/openat-syscall.c

index 1ab362323d25adeb111c69635b6c9d4b766f1444..90828ae03ef51e94207b206a139ac20df1555a88 100644 (file)
@@ -22,7 +22,7 @@
 static int test__openat_syscall_event_on_all_cpus(struct test_suite *test __maybe_unused,
                                                  int subtest __maybe_unused)
 {
-       int err = -1, fd, idx;
+       int err = TEST_FAIL, fd, idx;
        struct perf_cpu cpu;
        struct perf_cpu_map *cpus;
        struct evsel *evsel;
@@ -49,6 +49,7 @@ static int test__openat_syscall_event_on_all_cpus(struct test_suite *test __mayb
        if (IS_ERR(evsel)) {
                tracing_path__strerror_open_tp(errno, errbuf, sizeof(errbuf), "syscalls", "sys_enter_openat");
                pr_debug("%s\n", errbuf);
+               err = TEST_SKIP;
                goto out_cpu_map_delete;
        }
 
@@ -56,6 +57,7 @@ static int test__openat_syscall_event_on_all_cpus(struct test_suite *test __mayb
                pr_debug("failed to open counter: %s, "
                         "tweak /proc/sys/kernel/perf_event_paranoid?\n",
                         str_error_r(errno, sbuf, sizeof(sbuf)));
+               err = TEST_SKIP;
                goto out_evsel_delete;
        }
 
@@ -88,7 +90,7 @@ static int test__openat_syscall_event_on_all_cpus(struct test_suite *test __mayb
 
        evsel->core.cpus = perf_cpu_map__get(cpus);
 
-       err = 0;
+       err = TEST_OK;
 
        perf_cpu_map__for_each_cpu(cpu, idx, cpus) {
                unsigned int expected;
@@ -98,7 +100,7 @@ static int test__openat_syscall_event_on_all_cpus(struct test_suite *test __mayb
 
                if (evsel__read_on_cpu(evsel, idx, 0) < 0) {
                        pr_debug("evsel__read_on_cpu\n");
-                       err = -1;
+                       err = TEST_FAIL;
                        break;
                }
 
@@ -106,7 +108,7 @@ static int test__openat_syscall_event_on_all_cpus(struct test_suite *test __mayb
                if (perf_counts(evsel->counts, idx, 0)->val != expected) {
                        pr_debug("evsel__read_on_cpu: expected to intercept %d calls on cpu %d, got %" PRIu64 "\n",
                                 expected, cpu.cpu, perf_counts(evsel->counts, idx, 0)->val);
-                       err = -1;
+                       err = TEST_FAIL;
                }
        }
 
@@ -122,4 +124,15 @@ out_thread_map_delete:
        return err;
 }
 
-DEFINE_SUITE("Detect openat syscall event on all cpus", openat_syscall_event_on_all_cpus);
+
+static struct test_case tests__openat_syscall_event_on_all_cpus[] = {
+       TEST_CASE_REASON("Detect openat syscall event on all cpus",
+                        openat_syscall_event_on_all_cpus,
+                        "permissions"),
+       {       .name = NULL, }
+};
+
+struct test_suite suite__openat_syscall_event_on_all_cpus = {
+       .desc = "Detect openat syscall event on all cpus",
+       .test_cases = tests__openat_syscall_event_on_all_cpus,
+};
index 7f4c13c4b14d068445668c773d548c543646218a..7e05b8b5cc95ff1322b298e3e9e23cac2a1a10e6 100644 (file)
@@ -16,7 +16,7 @@
 static int test__openat_syscall_event(struct test_suite *test __maybe_unused,
                                      int subtest __maybe_unused)
 {
-       int err = -1, fd;
+       int err = TEST_FAIL, fd;
        struct evsel *evsel;
        unsigned int nr_openat_calls = 111, i;
        struct perf_thread_map *threads = thread_map__new(-1, getpid(), UINT_MAX);
@@ -25,13 +25,14 @@ static int test__openat_syscall_event(struct test_suite *test __maybe_unused,
 
        if (threads == NULL) {
                pr_debug("thread_map__new\n");
-               return -1;
+               return TEST_FAIL;
        }
 
        evsel = evsel__newtp("syscalls", "sys_enter_openat");
        if (IS_ERR(evsel)) {
                tracing_path__strerror_open_tp(errno, errbuf, sizeof(errbuf), "syscalls", "sys_enter_openat");
                pr_debug("%s\n", errbuf);
+               err = TEST_SKIP;
                goto out_thread_map_delete;
        }
 
@@ -39,6 +40,7 @@ static int test__openat_syscall_event(struct test_suite *test __maybe_unused,
                pr_debug("failed to open counter: %s, "
                         "tweak /proc/sys/kernel/perf_event_paranoid?\n",
                         str_error_r(errno, sbuf, sizeof(sbuf)));
+               err = TEST_SKIP;
                goto out_evsel_delete;
        }
 
@@ -58,7 +60,7 @@ static int test__openat_syscall_event(struct test_suite *test __maybe_unused,
                goto out_close_fd;
        }
 
-       err = 0;
+       err = TEST_OK;
 out_close_fd:
        perf_evsel__close_fd(&evsel->core);
 out_evsel_delete:
@@ -68,4 +70,14 @@ out_thread_map_delete:
        return err;
 }
 
-DEFINE_SUITE("Detect openat syscall event", openat_syscall_event);
+static struct test_case tests__openat_syscall_event[] = {
+       TEST_CASE_REASON("Detect openat syscall event",
+                        openat_syscall_event,
+                        "permissions"),
+       {       .name = NULL, }
+};
+
+struct test_suite suite__openat_syscall_event = {
+       .desc = "Detect openat syscall event",
+       .test_cases = tests__openat_syscall_event,
+};