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
;
43 struct test_case
*test_cases
;
47 #define DECLARE_SUITE(name) \
48 extern struct test_suite suite__##name;
50 #define TEST_CASE(description, _name) \
53 .desc = description, \
54 .run_case = test__##_name, \
57 #define TEST_CASE_REASON(description, _name, _reason) \
60 .desc = description, \
61 .run_case = test__##_name, \
62 .skip_reason = _reason, \
65 #define DEFINE_SUITE(description, _name) \
66 struct test_case tests__##_name[] = { \
67 TEST_CASE(description, _name), \
70 struct test_suite suite__##_name = { \
71 .desc = description, \
72 .test_cases = tests__##_name, \
76 DECLARE_SUITE(vmlinux_matches_kallsyms
);
77 DECLARE_SUITE(openat_syscall_event
);
78 DECLARE_SUITE(openat_syscall_event_on_all_cpus
);
79 DECLARE_SUITE(basic_mmap
);
80 DECLARE_SUITE(PERF_RECORD
);
81 DECLARE_SUITE(perf_evsel__roundtrip_name_test
);
82 DECLARE_SUITE(perf_evsel__tp_sched_test
);
83 DECLARE_SUITE(syscall_openat_tp_fields
);
85 DECLARE_SUITE(pmu_events
);
87 DECLARE_SUITE(dso_data
);
88 DECLARE_SUITE(dso_data_cache
);
89 DECLARE_SUITE(dso_data_reopen
);
90 DECLARE_SUITE(parse_events
);
91 DECLARE_SUITE(hists_link
);
92 DECLARE_SUITE(python_use
);
93 DECLARE_SUITE(bp_signal
);
94 DECLARE_SUITE(bp_signal_overflow
);
95 DECLARE_SUITE(bp_accounting
);
97 DECLARE_SUITE(task_exit
);
99 DECLARE_SUITE(sw_clock_freq
);
100 DECLARE_SUITE(code_reading
);
101 DECLARE_SUITE(sample_parsing
);
102 DECLARE_SUITE(keep_tracking
);
103 DECLARE_SUITE(parse_no_sample_id_all
);
104 DECLARE_SUITE(dwarf_unwind
);
106 DECLARE_SUITE(hists_filter
);
107 DECLARE_SUITE(mmap_thread_lookup
);
108 DECLARE_SUITE(thread_maps_share
);
109 DECLARE_SUITE(hists_output
);
110 DECLARE_SUITE(hists_cumulate
);
111 DECLARE_SUITE(switch_tracking
);
112 DECLARE_SUITE(fdarray__filter
);
113 DECLARE_SUITE(fdarray__add
);
114 DECLARE_SUITE(kmod_path__parse
);
115 DECLARE_SUITE(thread_map
);
117 DECLARE_SUITE(session_topology
);
118 DECLARE_SUITE(thread_map_synthesize
);
119 DECLARE_SUITE(thread_map_remove
);
120 DECLARE_SUITE(cpu_map
);
121 DECLARE_SUITE(synthesize_stat_config
);
122 DECLARE_SUITE(synthesize_stat
);
123 DECLARE_SUITE(synthesize_stat_round
);
124 DECLARE_SUITE(event_update
);
125 DECLARE_SUITE(event_times
);
126 DECLARE_SUITE(backward_ring_buffer
);
127 DECLARE_SUITE(sdt_event
);
128 DECLARE_SUITE(is_printable_array
);
129 DECLARE_SUITE(bitmap_print
);
130 DECLARE_SUITE(perf_hooks
);
131 DECLARE_SUITE(unit_number__scnprint
);
132 DECLARE_SUITE(mem2node
);
133 DECLARE_SUITE(maps__merge_in
);
134 DECLARE_SUITE(time_utils
);
135 DECLARE_SUITE(jit_write_elf
);
136 DECLARE_SUITE(api_io
);
137 DECLARE_SUITE(demangle_java
);
138 DECLARE_SUITE(demangle_ocaml
);
140 DECLARE_SUITE(parse_metric
);
141 DECLARE_SUITE(pe_file_parsing
);
142 DECLARE_SUITE(expand_cgroup_events
);
143 DECLARE_SUITE(perf_time_to_tsc
);
144 DECLARE_SUITE(dlfilter
);
145 DECLARE_SUITE(sigtrap
);
146 DECLARE_SUITE(event_groups
);
147 DECLARE_SUITE(symbols
);
151 * PowerPC and S390 do not support creation of instruction breakpoints using the
152 * perf_event interface.
154 * ARM requires explicit rounding down of the instruction pointer in Thumb mode,
155 * and then requires the single-step to be handled explicitly in the overflow
156 * handler to avoid stepping into the SIGIO handler and getting stuck on the
157 * breakpointed instruction.
159 * Since arm64 has the same issue with arm for the single-step handling, this
160 * case also gets stuck on the breakpointed instruction.
162 * Just disable the test for these architectures until these issues are
165 #if defined(__powerpc__) || defined(__s390x__) || defined(__arm__) || defined(__aarch64__)
166 #define BP_SIGNAL_IS_SUPPORTED 0
168 #define BP_SIGNAL_IS_SUPPORTED 1
171 #ifdef HAVE_DWARF_UNWIND_SUPPORT
174 int test__arch_unwind_sample(struct perf_sample
*sample
,
175 struct thread
*thread
);
179 DECLARE_SUITE(vectors_page
);
183 * Define test workloads to be used in test suites.
185 typedef int (*workload_fnptr
)(int argc
, const char **argv
);
187 struct test_workload
{
192 #define DECLARE_WORKLOAD(work) \
193 extern struct test_workload workload__##work
195 #define DEFINE_WORKLOAD(work) \
196 struct test_workload workload__##work = { \
201 /* The list of test workloads */
202 DECLARE_WORKLOAD(noploop
);
203 DECLARE_WORKLOAD(thloop
);
204 DECLARE_WORKLOAD(leafloop
);
205 DECLARE_WORKLOAD(sqrtloop
);
206 DECLARE_WORKLOAD(brstack
);
207 DECLARE_WORKLOAD(datasym
);
208 DECLARE_WORKLOAD(landlock
);
210 extern const char *dso_to_test
;
211 extern const char *test_objdump_path
;