1*67424342SJiri Olsa #include <linux/compiler.h> 2*67424342SJiri Olsa #include "event.h" 3*67424342SJiri Olsa #include "tests.h" 4*67424342SJiri Olsa #include "stat.h" 5*67424342SJiri Olsa #include "debug.h" 6*67424342SJiri Olsa 7*67424342SJiri Olsa static bool has_term(struct stat_config_event *config, 8*67424342SJiri Olsa u64 tag, u64 val) 9*67424342SJiri Olsa { 10*67424342SJiri Olsa unsigned i; 11*67424342SJiri Olsa 12*67424342SJiri Olsa for (i = 0; i < config->nr; i++) { 13*67424342SJiri Olsa if ((config->data[i].tag == tag) && 14*67424342SJiri Olsa (config->data[i].val == val)) 15*67424342SJiri Olsa return true; 16*67424342SJiri Olsa } 17*67424342SJiri Olsa 18*67424342SJiri Olsa return false; 19*67424342SJiri Olsa } 20*67424342SJiri Olsa 21*67424342SJiri Olsa static int process_event(struct perf_tool *tool __maybe_unused, 22*67424342SJiri Olsa union perf_event *event, 23*67424342SJiri Olsa struct perf_sample *sample __maybe_unused, 24*67424342SJiri Olsa struct machine *machine __maybe_unused) 25*67424342SJiri Olsa { 26*67424342SJiri Olsa struct stat_config_event *config = &event->stat_config; 27*67424342SJiri Olsa 28*67424342SJiri Olsa #define HAS(term, val) \ 29*67424342SJiri Olsa has_term(config, PERF_STAT_CONFIG_TERM__##term, val) 30*67424342SJiri Olsa 31*67424342SJiri Olsa TEST_ASSERT_VAL("wrong nr", config->nr == PERF_STAT_CONFIG_TERM__MAX); 32*67424342SJiri Olsa TEST_ASSERT_VAL("wrong aggr_mode", HAS(AGGR_MODE, AGGR_CORE)); 33*67424342SJiri Olsa TEST_ASSERT_VAL("wrong scale", HAS(SCALE, 1)); 34*67424342SJiri Olsa TEST_ASSERT_VAL("wrong interval", HAS(INTERVAL, 1)); 35*67424342SJiri Olsa 36*67424342SJiri Olsa #undef HAS 37*67424342SJiri Olsa 38*67424342SJiri Olsa return 0; 39*67424342SJiri Olsa } 40*67424342SJiri Olsa 41*67424342SJiri Olsa int test__synthesize_stat_config(int subtest __maybe_unused) 42*67424342SJiri Olsa { 43*67424342SJiri Olsa struct perf_stat_config stat_config = { 44*67424342SJiri Olsa .aggr_mode = AGGR_CORE, 45*67424342SJiri Olsa .scale = 1, 46*67424342SJiri Olsa .interval = 1, 47*67424342SJiri Olsa }; 48*67424342SJiri Olsa 49*67424342SJiri Olsa TEST_ASSERT_VAL("failed to synthesize stat_config", 50*67424342SJiri Olsa !perf_event__synthesize_stat_config(NULL, &stat_config, process_event, NULL)); 51*67424342SJiri Olsa 52*67424342SJiri Olsa return 0; 53*67424342SJiri Olsa } 54