All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ian Rogers <irogers@google.com>
To: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@kernel.org>,
	Jin Yao <yao.jin@linux.intel.com>,
	John Garry <john.garry@huawei.com>,
	"Paul A . Clarke" <pc@us.ibm.com>,
	linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org,
	Brendan Higgins <brendanhiggins@google.com>,
	Daniel Latypov <dlatypov@google.com>,
	David Gow <davidgow@google.com>,
	Sohaib Mohamed <sohaib.amhmd@gmail.com>
Cc: eranian@google.com, Ian Rogers <irogers@google.com>
Subject: [PATCH v3 02/22] perf test: Use macro for "suite" definitions
Date: Wed,  3 Nov 2021 23:41:48 -0700	[thread overview]
Message-ID: <20211104064208.3156807-3-irogers@google.com> (raw)
In-Reply-To: <20211104064208.3156807-1-irogers@google.com>

Add a macro to simplify later refactoring. No functional change.

Signed-off-by: Ian Rogers <irogers@google.com>
---
 tools/perf/tests/builtin-test.c | 479 ++++++++++----------------------
 1 file changed, 149 insertions(+), 330 deletions(-)

diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-test.c
index da7dc5e45d0c..820fc1ae2210 100644
--- a/tools/perf/tests/builtin-test.c
+++ b/tools/perf/tests/builtin-test.c
@@ -36,337 +36,156 @@ struct test __weak arch_tests[] = {
 	},
 };
 
-static struct test generic_tests[] = {
-	{
-		.desc = "vmlinux symtab matches kallsyms",
-		.func = test__vmlinux_matches_kallsyms,
-	},
-	{
-		.desc = "Detect openat syscall event",
-		.func = test__openat_syscall_event,
-	},
-	{
-		.desc = "Detect openat syscall event on all cpus",
-		.func = test__openat_syscall_event_on_all_cpus,
-	},
-	{
-		.desc = "Read samples using the mmap interface",
-		.func = test__basic_mmap,
-	},
-	{
-		.desc = "Test data source output",
-		.func = test__mem,
-	},
-	{
-		.desc = "Parse event definition strings",
-		.func = test__parse_events,
-	},
-	{
-		.desc = "Simple expression parser",
-		.func = test__expr,
-	},
-	{
-		.desc = "PERF_RECORD_* events & perf_sample fields",
-		.func = test__PERF_RECORD,
-	},
-	{
-		.desc = "Parse perf pmu format",
-		.func = test__pmu,
-	},
-	{
-		.desc = "PMU events",
-		.func = test__pmu_events,
-		.subtest = {
-			.skip_if_fail	= false,
-			.get_nr		= test__pmu_events_subtest_get_nr,
-			.get_desc	= test__pmu_events_subtest_get_desc,
-			.skip_reason	= test__pmu_events_subtest_skip_reason,
-		},
-
-	},
-	{
-		.desc = "DSO data read",
-		.func = test__dso_data,
-	},
-	{
-		.desc = "DSO data cache",
-		.func = test__dso_data_cache,
-	},
-	{
-		.desc = "DSO data reopen",
-		.func = test__dso_data_reopen,
-	},
-	{
-		.desc = "Roundtrip evsel->name",
-		.func = test__perf_evsel__roundtrip_name_test,
-	},
-	{
-		.desc = "Parse sched tracepoints fields",
-		.func = test__perf_evsel__tp_sched_test,
-	},
-	{
-		.desc = "syscalls:sys_enter_openat event fields",
-		.func = test__syscall_openat_tp_fields,
-	},
-	{
-		.desc = "Setup struct perf_event_attr",
-		.func = test__attr,
-	},
-	{
-		.desc = "Match and link multiple hists",
-		.func = test__hists_link,
-	},
-	{
-		.desc = "'import perf' in python",
-		.func = test__python_use,
-	},
-	{
-		.desc = "Breakpoint overflow signal handler",
-		.func = test__bp_signal,
-		.is_supported = test__bp_signal_is_supported,
-	},
-	{
-		.desc = "Breakpoint overflow sampling",
-		.func = test__bp_signal_overflow,
-		.is_supported = test__bp_signal_is_supported,
-	},
-	{
-		.desc = "Breakpoint accounting",
-		.func = test__bp_accounting,
-		.is_supported = test__bp_account_is_supported,
-	},
-	{
-		.desc = "Watchpoint",
-		.func = test__wp,
-		.is_supported = test__wp_is_supported,
-		.subtest = {
-			.skip_if_fail	= false,
-			.get_nr		= test__wp_subtest_get_nr,
-			.get_desc	= test__wp_subtest_get_desc,
-			.skip_reason    = test__wp_subtest_skip_reason,
-		},
-	},
-	{
-		.desc = "Number of exit events of a simple workload",
-		.func = test__task_exit,
-	},
-	{
-		.desc = "Software clock events period values",
-		.func = test__sw_clock_freq,
-	},
-	{
-		.desc = "Object code reading",
-		.func = test__code_reading,
-	},
-	{
-		.desc = "Sample parsing",
-		.func = test__sample_parsing,
-	},
-	{
-		.desc = "Use a dummy software event to keep tracking",
-		.func = test__keep_tracking,
-	},
-	{
-		.desc = "Parse with no sample_id_all bit set",
-		.func = test__parse_no_sample_id_all,
-	},
-	{
-		.desc = "Filter hist entries",
-		.func = test__hists_filter,
-	},
-	{
-		.desc = "Lookup mmap thread",
-		.func = test__mmap_thread_lookup,
-	},
-	{
-		.desc = "Share thread maps",
-		.func = test__thread_maps_share,
-	},
-	{
-		.desc = "Sort output of hist entries",
-		.func = test__hists_output,
-	},
-	{
-		.desc = "Cumulate child hist entries",
-		.func = test__hists_cumulate,
-	},
-	{
-		.desc = "Track with sched_switch",
-		.func = test__switch_tracking,
-	},
-	{
-		.desc = "Filter fds with revents mask in a fdarray",
-		.func = test__fdarray__filter,
-	},
-	{
-		.desc = "Add fd to a fdarray, making it autogrow",
-		.func = test__fdarray__add,
-	},
-	{
-		.desc = "kmod_path__parse",
-		.func = test__kmod_path__parse,
-	},
-	{
-		.desc = "Thread map",
-		.func = test__thread_map,
-	},
-	{
-		.desc = "LLVM search and compile",
-		.func = test__llvm,
-		.subtest = {
-			.skip_if_fail	= true,
-			.get_nr		= test__llvm_subtest_get_nr,
-			.get_desc	= test__llvm_subtest_get_desc,
-		},
-	},
-	{
-		.desc = "Session topology",
-		.func = test__session_topology,
-	},
-	{
-		.desc = "BPF filter",
-		.func = test__bpf,
-		.subtest = {
-			.skip_if_fail	= true,
-			.get_nr		= test__bpf_subtest_get_nr,
-			.get_desc	= test__bpf_subtest_get_desc,
-		},
-	},
-	{
-		.desc = "Synthesize thread map",
-		.func = test__thread_map_synthesize,
-	},
-	{
-		.desc = "Remove thread map",
-		.func = test__thread_map_remove,
-	},
-	{
-		.desc = "Synthesize cpu map",
-		.func = test__cpu_map_synthesize,
-	},
-	{
-		.desc = "Synthesize stat config",
-		.func = test__synthesize_stat_config,
-	},
-	{
-		.desc = "Synthesize stat",
-		.func = test__synthesize_stat,
-	},
-	{
-		.desc = "Synthesize stat round",
-		.func = test__synthesize_stat_round,
-	},
-	{
-		.desc = "Synthesize attr update",
-		.func = test__event_update,
-	},
-	{
-		.desc = "Event times",
-		.func = test__event_times,
-	},
-	{
-		.desc = "Read backward ring buffer",
-		.func = test__backward_ring_buffer,
-	},
-	{
-		.desc = "Print cpu map",
-		.func = test__cpu_map_print,
-	},
-	{
-		.desc = "Merge cpu map",
-		.func = test__cpu_map_merge,
-	},
+#define DEFINE_SUITE(description, name)		\
+	{					\
+		.desc = description,		\
+		.func = test__##name,		\
+	}
 
-	{
-		.desc = "Probe SDT events",
-		.func = test__sdt_event,
-	},
-	{
-		.desc = "is_printable_array",
-		.func = test__is_printable_array,
-	},
-	{
-		.desc = "Print bitmap",
-		.func = test__bitmap_print,
-	},
-	{
-		.desc = "perf hooks",
-		.func = test__perf_hooks,
-	},
-	{
-		.desc = "builtin clang support",
-		.func = test__clang,
-		.subtest = {
-			.skip_if_fail	= true,
-			.get_nr		= test__clang_subtest_get_nr,
-			.get_desc	= test__clang_subtest_get_desc,
-		}
-	},
-	{
-		.desc = "unit_number__scnprintf",
-		.func = test__unit_number__scnprint,
-	},
-	{
-		.desc = "mem2node",
-		.func = test__mem2node,
-	},
-	{
-		.desc = "time utils",
-		.func = test__time_utils,
-	},
-	{
-		.desc = "Test jit_write_elf",
-		.func = test__jit_write_elf,
-	},
-	{
-		.desc = "Test libpfm4 support",
-		.func = test__pfm,
-		.subtest = {
-			.skip_if_fail	= true,
-			.get_nr		= test__pfm_subtest_get_nr,
-			.get_desc	= test__pfm_subtest_get_desc,
-		}
-	},
-	{
-		.desc = "Test api io",
-		.func = test__api_io,
-	},
-	{
-		.desc = "maps__merge_in",
-		.func = test__maps__merge_in,
-	},
-	{
-		.desc = "Demangle Java",
-		.func = test__demangle_java,
-	},
-	{
-		.desc = "Demangle OCaml",
-		.func = test__demangle_ocaml,
-	},
-	{
-		.desc = "Parse and process metrics",
-		.func = test__parse_metric,
-	},
-	{
-		.desc = "PE file support",
-		.func = test__pe_file_parsing,
-	},
-	{
-		.desc = "Event expansion for cgroups",
-		.func = test__expand_cgroup_events,
-	},
-	{
-		.desc = "Convert perf time to TSC",
-		.func = test__perf_time_to_tsc,
-		.is_supported = test__tsc_is_supported,
-	},
-	{
-		.desc = "dlfilter C API",
-		.func = test__dlfilter,
-	},
-	{
-		.func = NULL,
-	},
+static struct test generic_tests[] = {
+DEFINE_SUITE("vmlinux symtab matches kallsyms", vmlinux_matches_kallsyms),
+DEFINE_SUITE("Detect openat syscall event", openat_syscall_event),
+DEFINE_SUITE("Detect openat syscall event on all cpus", openat_syscall_event_on_all_cpus),
+DEFINE_SUITE("Read samples using the mmap interface", basic_mmap),
+DEFINE_SUITE("Test data source output", mem),
+DEFINE_SUITE("Parse event definition strings", parse_events),
+DEFINE_SUITE("Simple expression parser", expr),
+DEFINE_SUITE("PERF_RECORD_* events & perf_sample fields", PERF_RECORD),
+DEFINE_SUITE("Parse perf pmu format", pmu),
+{
+	.desc = "PMU events",
+	.func = test__pmu_events,
+	.subtest = {
+		.skip_if_fail	= false,
+		.get_nr		= test__pmu_events_subtest_get_nr,
+		.get_desc	= test__pmu_events_subtest_get_desc,
+		.skip_reason	= test__pmu_events_subtest_skip_reason,
+	},
+
+},
+DEFINE_SUITE("DSO data read", dso_data),
+DEFINE_SUITE("DSO data cache", dso_data_cache),
+DEFINE_SUITE("DSO data reopen", dso_data_reopen),
+DEFINE_SUITE("Roundtrip evsel->name", perf_evsel__roundtrip_name_test),
+DEFINE_SUITE("Parse sched tracepoints fields", perf_evsel__tp_sched_test),
+DEFINE_SUITE("syscalls:sys_enter_openat event fields", syscall_openat_tp_fields),
+DEFINE_SUITE("Setup struct perf_event_attr", attr),
+DEFINE_SUITE("Match and link multiple hists", hists_link),
+DEFINE_SUITE("'import perf' in python", python_use),
+{
+	.desc = "Breakpoint overflow signal handler",
+	.func = test__bp_signal,
+	.is_supported = test__bp_signal_is_supported,
+},
+{
+	.desc = "Breakpoint overflow sampling",
+	.func = test__bp_signal_overflow,
+	.is_supported = test__bp_signal_is_supported,
+},
+{
+	.desc = "Breakpoint accounting",
+	.func = test__bp_accounting,
+	.is_supported = test__bp_account_is_supported,
+},
+{
+	.desc = "Watchpoint",
+	.func = test__wp,
+	.is_supported = test__wp_is_supported,
+	.subtest = {
+		.skip_if_fail	= false,
+		.get_nr		= test__wp_subtest_get_nr,
+		.get_desc	= test__wp_subtest_get_desc,
+		.skip_reason    = test__wp_subtest_skip_reason,
+	},
+},
+DEFINE_SUITE("Number of exit events of a simple workload", task_exit),
+DEFINE_SUITE("Software clock events period values", sw_clock_freq),
+DEFINE_SUITE("Object code reading", code_reading),
+DEFINE_SUITE("Sample parsing", sample_parsing),
+DEFINE_SUITE("Use a dummy software event to keep tracking", keep_tracking),
+DEFINE_SUITE("Parse with no sample_id_all bit set", parse_no_sample_id_all),
+DEFINE_SUITE("Filter hist entries", hists_filter),
+DEFINE_SUITE("Lookup mmap thread", mmap_thread_lookup),
+DEFINE_SUITE("Share thread maps", thread_maps_share),
+DEFINE_SUITE("Sort output of hist entries", hists_output),
+DEFINE_SUITE("Cumulate child hist entries", hists_cumulate),
+DEFINE_SUITE("Track with sched_switch", switch_tracking),
+DEFINE_SUITE("Filter fds with revents mask in a fdarray", fdarray__filter),
+DEFINE_SUITE("Add fd to a fdarray, making it autogrow", fdarray__add),
+DEFINE_SUITE("kmod_path__parse", kmod_path__parse),
+DEFINE_SUITE("Thread map", thread_map),
+{
+	.desc = "LLVM search and compile",
+	.func = test__llvm,
+	.subtest = {
+		.skip_if_fail	= true,
+		.get_nr		= test__llvm_subtest_get_nr,
+		.get_desc	= test__llvm_subtest_get_desc,
+	},
+},
+DEFINE_SUITE("Session topology", session_topology),
+{
+	.desc = "BPF filter",
+	.func = test__bpf,
+	.subtest = {
+		.skip_if_fail	= true,
+		.get_nr		= test__bpf_subtest_get_nr,
+		.get_desc	= test__bpf_subtest_get_desc,
+	},
+},
+DEFINE_SUITE("Synthesize thread map", thread_map_synthesize),
+DEFINE_SUITE("Remove thread map", thread_map_remove),
+DEFINE_SUITE("Synthesize cpu map", cpu_map_synthesize),
+DEFINE_SUITE("Synthesize stat config", synthesize_stat_config),
+DEFINE_SUITE("Synthesize stat", synthesize_stat),
+DEFINE_SUITE("Synthesize stat round", synthesize_stat_round),
+DEFINE_SUITE("Synthesize attr update", event_update),
+DEFINE_SUITE("Event times", event_times),
+DEFINE_SUITE("Read backward ring buffer", backward_ring_buffer),
+DEFINE_SUITE("Print cpu map", cpu_map_print),
+DEFINE_SUITE("Merge cpu map", cpu_map_merge),
+DEFINE_SUITE("Probe SDT events", sdt_event),
+DEFINE_SUITE("is_printable_array", is_printable_array),
+DEFINE_SUITE("Print bitmap", bitmap_print),
+DEFINE_SUITE("perf hooks", perf_hooks),
+{
+	.desc = "builtin clang support",
+	.func = test__clang,
+	.subtest = {
+		.skip_if_fail	= true,
+		.get_nr		= test__clang_subtest_get_nr,
+		.get_desc	= test__clang_subtest_get_desc,
+	}
+},
+DEFINE_SUITE("unit_number__scnprintf", unit_number__scnprint),
+DEFINE_SUITE("mem2node", mem2node),
+DEFINE_SUITE("time utils", time_utils),
+DEFINE_SUITE("Test jit_write_elf", jit_write_elf),
+{
+	.desc = "Test libpfm4 support",
+	.func = test__pfm,
+	.subtest = {
+		.skip_if_fail	= true,
+		.get_nr		= test__pfm_subtest_get_nr,
+		.get_desc	= test__pfm_subtest_get_desc,
+	}
+},
+DEFINE_SUITE("Test api io", api_io),
+DEFINE_SUITE("maps__merge_in", maps__merge_in),
+DEFINE_SUITE("Demangle Java", demangle_java),
+DEFINE_SUITE("Demangle OCaml", demangle_ocaml),
+DEFINE_SUITE("Parse and process metrics", parse_metric),
+DEFINE_SUITE("PE file support", pe_file_parsing),
+DEFINE_SUITE("Event expansion for cgroups", expand_cgroup_events),
+{
+	.desc = "Convert perf time to TSC",
+	.func = test__perf_time_to_tsc,
+	.is_supported = test__tsc_is_supported,
+},
+DEFINE_SUITE("dlfilter C API", dlfilter),
+{
+	.func = NULL,
+},
 };
 
 static struct test *tests[] = {
-- 
2.33.1.1089.g2158813163f-goog


  parent reply	other threads:[~2021-11-04  6:42 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-04  6:41 [PATCH v3 00/22] Start aligning perf test with kunit style Ian Rogers
2021-11-04  6:41 ` [PATCH v3 01/22] perf test: Use macro for "suite" declarations Ian Rogers
2021-11-04  6:41 ` Ian Rogers [this message]
2021-11-04  6:41 ` [PATCH v3 03/22] perf test: Make each test/suite its own struct Ian Rogers
2021-11-13 13:06   ` Arnaldo Carvalho de Melo
2021-11-13 13:29     ` Arnaldo Carvalho de Melo
2021-11-04  6:41 ` [PATCH v3 04/22] perf test: Move each test suite struct to its test Ian Rogers
2021-11-04  6:41 ` [PATCH v3 05/22] perf test: Rename struct test to test_suite Ian Rogers
2021-11-04  6:41 ` [PATCH v3 06/22] perf test: Add helper functions for abstraction Ian Rogers
2021-11-04  6:41 ` [PATCH v3 07/22] perf test: Add test case struct Ian Rogers
2021-11-04  6:41 ` [PATCH v3 08/22] perf test: Add skip reason to test case Ian Rogers
2021-11-04  6:41 ` [PATCH v3 09/22] perf test: Convert pfm tests to use test cases Ian Rogers
2021-11-04  6:41 ` [PATCH v3 10/22] perf test: Convert pmu event tests to " Ian Rogers
2021-11-04  6:41 ` [PATCH v3 11/22] perf test: Convert watch point " Ian Rogers
2021-11-04  6:41 ` [PATCH v3 12/22] perf test: Convert clang " Ian Rogers
2021-11-04  6:41 ` [PATCH v3 13/22] perf test: Convert bpf " Ian Rogers
2021-11-04  6:42 ` [PATCH v3 14/22] perf test: Convert llvm " Ian Rogers
2021-11-04  6:42 ` [PATCH v3 15/22] perf test: Remove now unused subtest helpers Ian Rogers
2021-11-04  6:42 ` [PATCH v3 16/22] perf test: bp tests use test case Ian Rogers
2021-11-04  6:42 ` [PATCH v3 17/22] perf test: Convert time to tsc test to " Ian Rogers
2021-11-04  6:42 ` [PATCH v3 18/22] perf test: Remove non test case style support Ian Rogers
2021-11-04  6:42 ` [PATCH v3 19/22] perf test: BP tests, remove is_supported use Ian Rogers
2021-11-04  6:42 ` [PATCH v3 20/22] perf test: TSC test, " Ian Rogers
2021-11-04  6:42 ` [PATCH v3 21/22] perf test: Remove is_supported function Ian Rogers
2021-11-04  6:42 ` [PATCH v3 22/22] perf test: Remove skip_if_fail Ian Rogers
2021-11-04 13:51   ` Sohaib Mohamed
2021-11-09 14:32     ` Arnaldo Carvalho de Melo
2021-11-10 15:44       ` Sohaib Mohamed
2021-11-09 11:08 ` [PATCH v3 00/22] Start aligning perf test with kunit style Jiri Olsa
2021-11-10 12:20 ` Arnaldo Carvalho de Melo
2021-11-10 16:12 ` Sohaib Mohamed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211104064208.3156807-3-irogers@google.com \
    --to=irogers@google.com \
    --cc=acme@kernel.org \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=brendanhiggins@google.com \
    --cc=davidgow@google.com \
    --cc=dlatypov@google.com \
    --cc=eranian@google.com \
    --cc=john.garry@huawei.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=pc@us.ibm.com \
    --cc=peterz@infradead.org \
    --cc=sohaib.amhmd@gmail.com \
    --cc=yao.jin@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.