perf test: Basic mmap use skip
authorIan Rogers <irogers@google.com>
Wed, 18 May 2022 04:20:23 +0000 (21:20 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 23 May 2022 13:03:39 +0000 (10:03 -0300)
If opening the event fails for basic mmap with EACCES it is more
likely permission related that a true error. Mark the test as skip
in this case and add a skip reason.

Committer testing:

Before:

  $ perf test "mmap interface"
    4: Read samples using the mmap interface           : FAILED!
  $

After:

  $ perf test "mmap interface"
    4: Read samples using the mmap interface           : 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-5-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/tests/mmap-basic.c

index c3c1760..30bbe14 100644 (file)
@@ -31,7 +31,7 @@
  */
 static int test__basic_mmap(struct test_suite *test __maybe_unused, int subtest __maybe_unused)
 {
-       int err = -1;
+       int err = TEST_FAIL;
        union perf_event *event;
        struct perf_thread_map *threads;
        struct perf_cpu_map *cpus;
@@ -83,6 +83,10 @@ static int test__basic_mmap(struct test_suite *test __maybe_unused, int subtest
                evsels[i] = evsel__newtp("syscalls", name);
                if (IS_ERR(evsels[i])) {
                        pr_debug("evsel__new(%s)\n", name);
+                       if (PTR_ERR(evsels[i]) == -EACCES) {
+                               /* Permissions failure, flag the failure as a skip. */
+                               err = TEST_SKIP;
+                       }
                        goto out_delete_evlist;
                }
 
@@ -166,4 +170,14 @@ out_free_threads:
        return err;
 }
 
-DEFINE_SUITE("Read samples using the mmap interface", basic_mmap);
+static struct test_case tests__basic_mmap[] = {
+       TEST_CASE_REASON("Read samples using the mmap interface",
+                        basic_mmap,
+                        "permissions"),
+       {       .name = NULL, }
+};
+
+struct test_suite suite__basic_mmap = {
+       .desc = "Read samples using the mmap interface",
+       .test_cases = tests__basic_mmap,
+};