1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef TESTS_H 3 #define TESTS_H 4 5 #include <stdbool.h> 6 7 #define TEST_ASSERT_VAL(text, cond) \ 8 do { \ 9 if (!(cond)) { \ 10 pr_debug("FAILED %s:%d %s\n", __FILE__, __LINE__, text); \ 11 return -1; \ 12 } \ 13 } while (0) 14 15 #define TEST_ASSERT_EQUAL(text, val, expected) \ 16 do { \ 17 if (val != expected) { \ 18 pr_debug("FAILED %s:%d %s (%d != %d)\n", \ 19 __FILE__, __LINE__, text, val, expected); \ 20 return -1; \ 21 } \ 22 } while (0) 23 24 enum { 25 TEST_OK = 0, 26 TEST_FAIL = -1, 27 TEST_SKIP = -2, 28 }; 29 30 struct test { 31 const char *desc; 32 int (*func)(struct test *test, int subtest); 33 struct { 34 bool skip_if_fail; 35 int (*get_nr)(void); 36 const char *(*get_desc)(int subtest); 37 const char *(*skip_reason)(int subtest); 38 } subtest; 39 bool (*is_supported)(void); 40 void *priv; 41 }; 42 43 /* Tests */ 44 int test__vmlinux_matches_kallsyms(struct test *test, int subtest); 45 int test__openat_syscall_event(struct test *test, int subtest); 46 int test__openat_syscall_event_on_all_cpus(struct test *test, int subtest); 47 int test__basic_mmap(struct test *test, int subtest); 48 int test__PERF_RECORD(struct test *test, int subtest); 49 int test__perf_evsel__roundtrip_name_test(struct test *test, int subtest); 50 int test__perf_evsel__tp_sched_test(struct test *test, int subtest); 51 int test__syscall_openat_tp_fields(struct test *test, int subtest); 52 int test__pmu(struct test *test, int subtest); 53 int test__pmu_events(struct test *test, int subtest); 54 const char *test__pmu_events_subtest_get_desc(int subtest); 55 const char *test__pmu_events_subtest_skip_reason(int subtest); 56 int test__pmu_events_subtest_get_nr(void); 57 int test__attr(struct test *test, int subtest); 58 int test__dso_data(struct test *test, int subtest); 59 int test__dso_data_cache(struct test *test, int subtest); 60 int test__dso_data_reopen(struct test *test, int subtest); 61 int test__parse_events(struct test *test, int subtest); 62 int test__hists_link(struct test *test, int subtest); 63 int test__python_use(struct test *test, int subtest); 64 int test__bp_signal(struct test *test, int subtest); 65 int test__bp_signal_overflow(struct test *test, int subtest); 66 int test__bp_accounting(struct test *test, int subtest); 67 int test__wp(struct test *test, int subtest); 68 const char *test__wp_subtest_get_desc(int subtest); 69 const char *test__wp_subtest_skip_reason(int subtest); 70 int test__wp_subtest_get_nr(void); 71 int test__task_exit(struct test *test, int subtest); 72 int test__mem(struct test *test, int subtest); 73 int test__sw_clock_freq(struct test *test, int subtest); 74 int test__code_reading(struct test *test, int subtest); 75 int test__sample_parsing(struct test *test, int subtest); 76 int test__keep_tracking(struct test *test, int subtest); 77 int test__parse_no_sample_id_all(struct test *test, int subtest); 78 int test__dwarf_unwind(struct test *test, int subtest); 79 int test__expr(struct test *test, int subtest); 80 int test__hists_filter(struct test *test, int subtest); 81 int test__mmap_thread_lookup(struct test *test, int subtest); 82 int test__thread_maps_share(struct test *test, int subtest); 83 int test__hists_output(struct test *test, int subtest); 84 int test__hists_cumulate(struct test *test, int subtest); 85 int test__switch_tracking(struct test *test, int subtest); 86 int test__fdarray__filter(struct test *test, int subtest); 87 int test__fdarray__add(struct test *test, int subtest); 88 int test__kmod_path__parse(struct test *test, int subtest); 89 int test__thread_map(struct test *test, int subtest); 90 int test__llvm(struct test *test, int subtest); 91 const char *test__llvm_subtest_get_desc(int subtest); 92 int test__llvm_subtest_get_nr(void); 93 int test__bpf(struct test *test, int subtest); 94 const char *test__bpf_subtest_get_desc(int subtest); 95 int test__bpf_subtest_get_nr(void); 96 int test__session_topology(struct test *test, int subtest); 97 int test__thread_map_synthesize(struct test *test, int subtest); 98 int test__thread_map_remove(struct test *test, int subtest); 99 int test__cpu_map_synthesize(struct test *test, int subtest); 100 int test__synthesize_stat_config(struct test *test, int subtest); 101 int test__synthesize_stat(struct test *test, int subtest); 102 int test__synthesize_stat_round(struct test *test, int subtest); 103 int test__event_update(struct test *test, int subtest); 104 int test__event_times(struct test *test, int subtest); 105 int test__backward_ring_buffer(struct test *test, int subtest); 106 int test__cpu_map_print(struct test *test, int subtest); 107 int test__cpu_map_merge(struct test *test, int subtest); 108 int test__sdt_event(struct test *test, int subtest); 109 int test__is_printable_array(struct test *test, int subtest); 110 int test__bitmap_print(struct test *test, int subtest); 111 int test__perf_hooks(struct test *test, int subtest); 112 int test__clang(struct test *test, int subtest); 113 const char *test__clang_subtest_get_desc(int subtest); 114 int test__clang_subtest_get_nr(void); 115 int test__unit_number__scnprint(struct test *test, int subtest); 116 int test__mem2node(struct test *t, int subtest); 117 int test__maps__merge_in(struct test *t, int subtest); 118 int test__time_utils(struct test *t, int subtest); 119 int test__jit_write_elf(struct test *test, int subtest); 120 int test__api_io(struct test *test, int subtest); 121 int test__demangle_java(struct test *test, int subtest); 122 int test__pfm(struct test *test, int subtest); 123 const char *test__pfm_subtest_get_desc(int subtest); 124 int test__pfm_subtest_get_nr(void); 125 int test__parse_metric(struct test *test, int subtest); 126 int test__pe_file_parsing(struct test *test, int subtest); 127 int test__expand_cgroup_events(struct test *test, int subtest); 128 int test__perf_time_to_tsc(struct test *test, int subtest); 129 130 bool test__bp_signal_is_supported(void); 131 bool test__bp_account_is_supported(void); 132 bool test__wp_is_supported(void); 133 bool test__tsc_is_supported(void); 134 135 #if defined(__arm__) || defined(__aarch64__) 136 #ifdef HAVE_DWARF_UNWIND_SUPPORT 137 struct thread; 138 struct perf_sample; 139 int test__arch_unwind_sample(struct perf_sample *sample, 140 struct thread *thread); 141 #endif 142 #endif 143 144 #if defined(__arm__) 145 int test__vectors_page(struct test *test, int subtest); 146 #endif 147 148 #endif /* TESTS_H */ 149