Commit 615b8f99 authored by Alexander Yarygin's avatar Alexander Yarygin Committed by Jiri Olsa

perf tests: Add numeric identifier to evlist_test

In tests/parse-events.c test cases are declared in evlist_test[]
arrays. Elements of arrays are initialized in following pattern:
	[i] = {
 		.name  = ...,
 		.check = ...,
 	},

When perf-test is running with '-v' option, 'i' variable will be
printed for every existing test.

However, we can't add any arch specific tests inside #ifdefs, because it
will create collision between the element number inside #ifdef and the
next one outside.

This patch adds 'id' field in evlist_test, uses it as a test
identifier and removes explicit numbering of array elements. This helps
to number tests with gaps.
Signed-off-by: default avatarAlexander Yarygin <yarygin@linux.vnet.ibm.com>
Link: http://lkml.kernel.org/r/1398440047-6641-3-git-send-email-yarygin@linux.vnet.ibm.comSigned-off-by: default avatarJiri Olsa <jolsa@kernel.org>
parent 2b9032e0
...@@ -1174,188 +1174,233 @@ static int test__all_tracepoints(struct perf_evlist *evlist) ...@@ -1174,188 +1174,233 @@ static int test__all_tracepoints(struct perf_evlist *evlist)
struct evlist_test { struct evlist_test {
const char *name; const char *name;
__u32 type; __u32 type;
const int id;
int (*check)(struct perf_evlist *evlist); int (*check)(struct perf_evlist *evlist);
}; };
static struct evlist_test test__events[] = { static struct evlist_test test__events[] = {
[0] = { {
.name = "syscalls:sys_enter_open", .name = "syscalls:sys_enter_open",
.check = test__checkevent_tracepoint, .check = test__checkevent_tracepoint,
.id = 0,
}, },
[1] = { {
.name = "syscalls:*", .name = "syscalls:*",
.check = test__checkevent_tracepoint_multi, .check = test__checkevent_tracepoint_multi,
.id = 1,
}, },
[2] = { {
.name = "r1a", .name = "r1a",
.check = test__checkevent_raw, .check = test__checkevent_raw,
.id = 2,
}, },
[3] = { {
.name = "1:1", .name = "1:1",
.check = test__checkevent_numeric, .check = test__checkevent_numeric,
.id = 3,
}, },
[4] = { {
.name = "instructions", .name = "instructions",
.check = test__checkevent_symbolic_name, .check = test__checkevent_symbolic_name,
.id = 4,
}, },
[5] = { {
.name = "cycles/period=100000,config2/", .name = "cycles/period=100000,config2/",
.check = test__checkevent_symbolic_name_config, .check = test__checkevent_symbolic_name_config,
.id = 5,
}, },
[6] = { {
.name = "faults", .name = "faults",
.check = test__checkevent_symbolic_alias, .check = test__checkevent_symbolic_alias,
.id = 6,
}, },
[7] = { {
.name = "L1-dcache-load-miss", .name = "L1-dcache-load-miss",
.check = test__checkevent_genhw, .check = test__checkevent_genhw,
.id = 7,
}, },
[8] = { {
.name = "mem:0", .name = "mem:0",
.check = test__checkevent_breakpoint, .check = test__checkevent_breakpoint,
.id = 8,
}, },
[9] = { {
.name = "mem:0:x", .name = "mem:0:x",
.check = test__checkevent_breakpoint_x, .check = test__checkevent_breakpoint_x,
.id = 9,
}, },
[10] = { {
.name = "mem:0:r", .name = "mem:0:r",
.check = test__checkevent_breakpoint_r, .check = test__checkevent_breakpoint_r,
.id = 10,
}, },
[11] = { {
.name = "mem:0:w", .name = "mem:0:w",
.check = test__checkevent_breakpoint_w, .check = test__checkevent_breakpoint_w,
.id = 11,
}, },
[12] = { {
.name = "syscalls:sys_enter_open:k", .name = "syscalls:sys_enter_open:k",
.check = test__checkevent_tracepoint_modifier, .check = test__checkevent_tracepoint_modifier,
.id = 12,
}, },
[13] = { {
.name = "syscalls:*:u", .name = "syscalls:*:u",
.check = test__checkevent_tracepoint_multi_modifier, .check = test__checkevent_tracepoint_multi_modifier,
.id = 13,
}, },
[14] = { {
.name = "r1a:kp", .name = "r1a:kp",
.check = test__checkevent_raw_modifier, .check = test__checkevent_raw_modifier,
.id = 14,
}, },
[15] = { {
.name = "1:1:hp", .name = "1:1:hp",
.check = test__checkevent_numeric_modifier, .check = test__checkevent_numeric_modifier,
.id = 15,
}, },
[16] = { {
.name = "instructions:h", .name = "instructions:h",
.check = test__checkevent_symbolic_name_modifier, .check = test__checkevent_symbolic_name_modifier,
.id = 16,
}, },
[17] = { {
.name = "faults:u", .name = "faults:u",
.check = test__checkevent_symbolic_alias_modifier, .check = test__checkevent_symbolic_alias_modifier,
.id = 17,
}, },
[18] = { {
.name = "L1-dcache-load-miss:kp", .name = "L1-dcache-load-miss:kp",
.check = test__checkevent_genhw_modifier, .check = test__checkevent_genhw_modifier,
.id = 18,
}, },
[19] = { {
.name = "mem:0:u", .name = "mem:0:u",
.check = test__checkevent_breakpoint_modifier, .check = test__checkevent_breakpoint_modifier,
.id = 19,
}, },
[20] = { {
.name = "mem:0:x:k", .name = "mem:0:x:k",
.check = test__checkevent_breakpoint_x_modifier, .check = test__checkevent_breakpoint_x_modifier,
.id = 20,
}, },
[21] = { {
.name = "mem:0:r:hp", .name = "mem:0:r:hp",
.check = test__checkevent_breakpoint_r_modifier, .check = test__checkevent_breakpoint_r_modifier,
.id = 21,
}, },
[22] = { {
.name = "mem:0:w:up", .name = "mem:0:w:up",
.check = test__checkevent_breakpoint_w_modifier, .check = test__checkevent_breakpoint_w_modifier,
.id = 22,
}, },
[23] = { {
.name = "r1,syscalls:sys_enter_open:k,1:1:hp", .name = "r1,syscalls:sys_enter_open:k,1:1:hp",
.check = test__checkevent_list, .check = test__checkevent_list,
.id = 23,
}, },
[24] = { {
.name = "instructions:G", .name = "instructions:G",
.check = test__checkevent_exclude_host_modifier, .check = test__checkevent_exclude_host_modifier,
.id = 24,
}, },
[25] = { {
.name = "instructions:H", .name = "instructions:H",
.check = test__checkevent_exclude_guest_modifier, .check = test__checkevent_exclude_guest_modifier,
.id = 25,
}, },
[26] = { {
.name = "mem:0:rw", .name = "mem:0:rw",
.check = test__checkevent_breakpoint_rw, .check = test__checkevent_breakpoint_rw,
.id = 26,
}, },
[27] = { {
.name = "mem:0:rw:kp", .name = "mem:0:rw:kp",
.check = test__checkevent_breakpoint_rw_modifier, .check = test__checkevent_breakpoint_rw_modifier,
.id = 27,
}, },
[28] = { {
.name = "{instructions:k,cycles:upp}", .name = "{instructions:k,cycles:upp}",
.check = test__group1, .check = test__group1,
.id = 28,
}, },
[29] = { {
.name = "{faults:k,cache-references}:u,cycles:k", .name = "{faults:k,cache-references}:u,cycles:k",
.check = test__group2, .check = test__group2,
.id = 29,
}, },
[30] = { {
.name = "group1{syscalls:sys_enter_open:H,cycles:kppp},group2{cycles,1:3}:G,instructions:u", .name = "group1{syscalls:sys_enter_open:H,cycles:kppp},group2{cycles,1:3}:G,instructions:u",
.check = test__group3, .check = test__group3,
.id = 30,
}, },
[31] = { {
.name = "{cycles:u,instructions:kp}:p", .name = "{cycles:u,instructions:kp}:p",
.check = test__group4, .check = test__group4,
.id = 31,
}, },
[32] = { {
.name = "{cycles,instructions}:G,{cycles:G,instructions:G},cycles", .name = "{cycles,instructions}:G,{cycles:G,instructions:G},cycles",
.check = test__group5, .check = test__group5,
.id = 32,
}, },
[33] = { {
.name = "*:*", .name = "*:*",
.check = test__all_tracepoints, .check = test__all_tracepoints,
.id = 33,
}, },
[34] = { {
.name = "{cycles,cache-misses:G}:H", .name = "{cycles,cache-misses:G}:H",
.check = test__group_gh1, .check = test__group_gh1,
.id = 34,
}, },
[35] = { {
.name = "{cycles,cache-misses:H}:G", .name = "{cycles,cache-misses:H}:G",
.check = test__group_gh2, .check = test__group_gh2,
.id = 35,
}, },
[36] = { {
.name = "{cycles:G,cache-misses:H}:u", .name = "{cycles:G,cache-misses:H}:u",
.check = test__group_gh3, .check = test__group_gh3,
.id = 36,
}, },
[37] = { {
.name = "{cycles:G,cache-misses:H}:uG", .name = "{cycles:G,cache-misses:H}:uG",
.check = test__group_gh4, .check = test__group_gh4,
.id = 37,
}, },
[38] = { {
.name = "{cycles,cache-misses,branch-misses}:S", .name = "{cycles,cache-misses,branch-misses}:S",
.check = test__leader_sample1, .check = test__leader_sample1,
.id = 38,
}, },
[39] = { {
.name = "{instructions,branch-misses}:Su", .name = "{instructions,branch-misses}:Su",
.check = test__leader_sample2, .check = test__leader_sample2,
.id = 39,
}, },
[40] = { {
.name = "instructions:uDp", .name = "instructions:uDp",
.check = test__checkevent_pinned_modifier, .check = test__checkevent_pinned_modifier,
.id = 40,
}, },
[41] = { {
.name = "{cycles,cache-misses,branch-misses}:D", .name = "{cycles,cache-misses,branch-misses}:D",
.check = test__pinned_group, .check = test__pinned_group,
.id = 41,
}, },
}; };
static struct evlist_test test__events_pmu[] = { static struct evlist_test test__events_pmu[] = {
[0] = { {
.name = "cpu/config=10,config1,config2=3,period=1000/u", .name = "cpu/config=10,config1,config2=3,period=1000/u",
.check = test__checkevent_pmu, .check = test__checkevent_pmu,
.id = 0,
}, },
[1] = { {
.name = "cpu/config=1,name=krava/u,cpu/config=2/u", .name = "cpu/config=1,name=krava/u,cpu/config=2/u",
.check = test__checkevent_pmu_name, .check = test__checkevent_pmu_name,
.id = 1,
}, },
}; };
...@@ -1402,7 +1447,7 @@ static int test_events(struct evlist_test *events, unsigned cnt) ...@@ -1402,7 +1447,7 @@ static int test_events(struct evlist_test *events, unsigned cnt)
for (i = 0; i < cnt; i++) { for (i = 0; i < cnt; i++) {
struct evlist_test *e = &events[i]; struct evlist_test *e = &events[i];
pr_debug("running test %d '%s'\n", i, e->name); pr_debug("running test %d '%s'\n", e->id, e->name);
ret1 = test_event(e); ret1 = test_event(e);
if (ret1) if (ret1)
ret2 = ret1; ret2 = ret1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment