1 /* SPDX-License-Identifier: GPL-2.0 */
13 #define TEST_ASSERT_VAL(text, cond) \
16 pr_debug("FAILED %s:%d %s\n", __FILE__, __LINE__, text); \
21 #define TEST_ASSERT_EQUAL(text, val, expected) \
23 if (val != expected) { \
24 pr_debug("FAILED %s:%d %s (%d != %d)\n", \
25 __FILE__, __LINE__, text, val, expected); \
32 typedef int (*test_fnptr
)(struct test_suite
*, int);
37 const char *skip_reason
;
44 struct test_case
*test_cases
;
48 #define DECLARE_SUITE(name) \
49 extern struct test_suite suite__##name;
51 #define TEST_CASE(description, _name) \
54 .desc = description, \
55 .run_case = test__##_name, \
58 #define TEST_CASE_REASON(description, _name, _reason) \
61 .desc = description, \
62 .run_case = test__##_name, \
63 .skip_reason = _reason, \
66 #define TEST_CASE_EXCLUSIVE(description, _name) \
69 .desc = description, \
70 .run_case = test__##_name, \
74 #define DEFINE_SUITE(description, _name) \
75 struct test_case tests__##_name[] = { \
76 TEST_CASE(description, _name), \
79 struct test_suite suite__##_name = { \
80 .desc = description, \
81 .test_cases = tests__##_name, \
85 DECLARE_SUITE(vmlinux_matches_kallsyms
);
86 DECLARE_SUITE(openat_syscall_event
);
87 DECLARE_SUITE(openat_syscall_event_on_all_cpus
);
88 DECLARE_SUITE(basic_mmap
);
89 DECLARE_SUITE(PERF_RECORD
);
90 DECLARE_SUITE(perf_evsel__roundtrip_name_test
);
91 DECLARE_SUITE(perf_evsel__tp_sched_test
);
92 DECLARE_SUITE(syscall_openat_tp_fields
);
94 DECLARE_SUITE(pmu_events
);
95 DECLARE_SUITE(hwmon_pmu
);
96 DECLARE_SUITE(tool_pmu
);
98 DECLARE_SUITE(dso_data
);
99 DECLARE_SUITE(dso_data_cache
);
100 DECLARE_SUITE(dso_data_reopen
);
101 DECLARE_SUITE(parse_events
);
102 DECLARE_SUITE(hists_link
);
103 DECLARE_SUITE(python_use
);
104 DECLARE_SUITE(bp_signal
);
105 DECLARE_SUITE(bp_signal_overflow
);
106 DECLARE_SUITE(bp_accounting
);
108 DECLARE_SUITE(task_exit
);
110 DECLARE_SUITE(sw_clock_freq
);
111 DECLARE_SUITE(code_reading
);
112 DECLARE_SUITE(sample_parsing
);
113 DECLARE_SUITE(keep_tracking
);
114 DECLARE_SUITE(parse_no_sample_id_all
);
115 DECLARE_SUITE(dwarf_unwind
);
117 DECLARE_SUITE(hists_filter
);
118 DECLARE_SUITE(mmap_thread_lookup
);
119 DECLARE_SUITE(thread_maps_share
);
120 DECLARE_SUITE(hists_output
);
121 DECLARE_SUITE(hists_cumulate
);
122 DECLARE_SUITE(switch_tracking
);
123 DECLARE_SUITE(fdarray__filter
);
124 DECLARE_SUITE(fdarray__add
);
125 DECLARE_SUITE(kmod_path__parse
);
126 DECLARE_SUITE(thread_map
);
128 DECLARE_SUITE(session_topology
);
129 DECLARE_SUITE(thread_map_synthesize
);
130 DECLARE_SUITE(thread_map_remove
);
131 DECLARE_SUITE(cpu_map
);
132 DECLARE_SUITE(synthesize_stat_config
);
133 DECLARE_SUITE(synthesize_stat
);
134 DECLARE_SUITE(synthesize_stat_round
);
135 DECLARE_SUITE(event_update
);
136 DECLARE_SUITE(event_times
);
137 DECLARE_SUITE(backward_ring_buffer
);
138 DECLARE_SUITE(sdt_event
);
139 DECLARE_SUITE(is_printable_array
);
140 DECLARE_SUITE(bitmap_print
);
141 DECLARE_SUITE(perf_hooks
);
142 DECLARE_SUITE(unit_number__scnprint
);
143 DECLARE_SUITE(mem2node
);
144 DECLARE_SUITE(maps__merge_in
);
145 DECLARE_SUITE(time_utils
);
146 DECLARE_SUITE(jit_write_elf
);
147 DECLARE_SUITE(api_io
);
148 DECLARE_SUITE(demangle_java
);
149 DECLARE_SUITE(demangle_ocaml
);
151 DECLARE_SUITE(parse_metric
);
152 DECLARE_SUITE(pe_file_parsing
);
153 DECLARE_SUITE(expand_cgroup_events
);
154 DECLARE_SUITE(perf_time_to_tsc
);
155 DECLARE_SUITE(dlfilter
);
156 DECLARE_SUITE(sigtrap
);
157 DECLARE_SUITE(event_groups
);
158 DECLARE_SUITE(symbols
);
162 * PowerPC and S390 do not support creation of instruction breakpoints using the
163 * perf_event interface.
165 * ARM requires explicit rounding down of the instruction pointer in Thumb mode,
166 * and then requires the single-step to be handled explicitly in the overflow
167 * handler to avoid stepping into the SIGIO handler and getting stuck on the
168 * breakpointed instruction.
170 * Since arm64 has the same issue with arm for the single-step handling, this
171 * case also gets stuck on the breakpointed instruction.
173 * Just disable the test for these architectures until these issues are
176 #if defined(__powerpc__) || defined(__s390x__) || defined(__arm__) || defined(__aarch64__)
177 #define BP_SIGNAL_IS_SUPPORTED 0
179 #define BP_SIGNAL_IS_SUPPORTED 1
182 #ifdef HAVE_DWARF_UNWIND_SUPPORT
185 int test__arch_unwind_sample(struct perf_sample
*sample
,
186 struct thread
*thread
);
190 DECLARE_SUITE(vectors_page
);
194 * Define test workloads to be used in test suites.
196 typedef int (*workload_fnptr
)(int argc
, const char **argv
);
198 struct test_workload
{
203 #define DECLARE_WORKLOAD(work) \
204 extern struct test_workload workload__##work
206 #define DEFINE_WORKLOAD(work) \
207 struct test_workload workload__##work = { \
212 /* The list of test workloads */
213 DECLARE_WORKLOAD(noploop
);
214 DECLARE_WORKLOAD(thloop
);
215 DECLARE_WORKLOAD(leafloop
);
216 DECLARE_WORKLOAD(sqrtloop
);
217 DECLARE_WORKLOAD(brstack
);
218 DECLARE_WORKLOAD(datasym
);
219 DECLARE_WORKLOAD(landlock
);
221 extern const char *dso_to_test
;
222 extern const char *test_objdump_path
;