diff options
| author | Jiri Olsa <jolsa@redhat.com> | 2013-02-04 04:56:43 -0500 |
|---|---|---|
| committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2013-02-06 16:09:28 -0500 |
| commit | 5a30a99fb4bb4c9374ea122a2a7c9cd9d26ecdd6 (patch) | |
| tree | 3225069a2e763df48601d9b48e56ced3d99e2d19 | |
| parent | 89bb67ff935d461544fed87174bb13dcc4bac673 (diff) | |
perf tests: Adding automated parsing tests for group :GH modifiers
The ':GH' group modifier handling was just recently fixed, adding some
autommated tests to keep it that way. Adding tests for following events:
"{cycles,cache-misses:G}:H"
"{cycles,cache-misses:H}:G"
"{cycles:G,cache-misses:H}:u"
"{cycles:G,cache-misses:H}:uG"
Plus fixing test__group2 test.
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1359971803-2343-3-git-send-email-jolsa@redhat.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
| -rw-r--r-- | tools/perf/tests/parse-events.c | 178 |
1 files changed, 177 insertions, 1 deletions
diff --git a/tools/perf/tests/parse-events.c b/tools/perf/tests/parse-events.c index 80a8daf54a63..c5636f36fe31 100644 --- a/tools/perf/tests/parse-events.c +++ b/tools/perf/tests/parse-events.c | |||
| @@ -577,7 +577,7 @@ static int test__group2(struct perf_evlist *evlist) | |||
| 577 | TEST_ASSERT_VAL("wrong exclude_user", !evsel->attr.exclude_user); | 577 | TEST_ASSERT_VAL("wrong exclude_user", !evsel->attr.exclude_user); |
| 578 | TEST_ASSERT_VAL("wrong exclude_kernel", evsel->attr.exclude_kernel); | 578 | TEST_ASSERT_VAL("wrong exclude_kernel", evsel->attr.exclude_kernel); |
| 579 | TEST_ASSERT_VAL("wrong exclude_hv", evsel->attr.exclude_hv); | 579 | TEST_ASSERT_VAL("wrong exclude_hv", evsel->attr.exclude_hv); |
| 580 | TEST_ASSERT_VAL("wrong exclude guest", !evsel->attr.exclude_guest); | 580 | TEST_ASSERT_VAL("wrong exclude guest", evsel->attr.exclude_guest); |
| 581 | TEST_ASSERT_VAL("wrong exclude host", !evsel->attr.exclude_host); | 581 | TEST_ASSERT_VAL("wrong exclude host", !evsel->attr.exclude_host); |
| 582 | TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip); | 582 | TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip); |
| 583 | TEST_ASSERT_VAL("wrong leader", evsel->leader == leader); | 583 | TEST_ASSERT_VAL("wrong leader", evsel->leader == leader); |
| @@ -811,6 +811,166 @@ static int test__group5(struct perf_evlist *evlist __maybe_unused) | |||
| 811 | return 0; | 811 | return 0; |
| 812 | } | 812 | } |
| 813 | 813 | ||
| 814 | static int test__group_gh1(struct perf_evlist *evlist) | ||
| 815 | { | ||
| 816 | struct perf_evsel *evsel, *leader; | ||
| 817 | |||
| 818 | TEST_ASSERT_VAL("wrong number of entries", 2 == evlist->nr_entries); | ||
| 819 | TEST_ASSERT_VAL("wrong number of groups", 1 == evlist->nr_groups); | ||
| 820 | |||
| 821 | /* cycles + :H group modifier */ | ||
| 822 | evsel = leader = perf_evlist__first(evlist); | ||
| 823 | TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->attr.type); | ||
| 824 | TEST_ASSERT_VAL("wrong config", | ||
| 825 | PERF_COUNT_HW_CPU_CYCLES == evsel->attr.config); | ||
| 826 | TEST_ASSERT_VAL("wrong exclude_user", !evsel->attr.exclude_user); | ||
| 827 | TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->attr.exclude_kernel); | ||
| 828 | TEST_ASSERT_VAL("wrong exclude_hv", !evsel->attr.exclude_hv); | ||
| 829 | TEST_ASSERT_VAL("wrong exclude guest", evsel->attr.exclude_guest); | ||
| 830 | TEST_ASSERT_VAL("wrong exclude host", !evsel->attr.exclude_host); | ||
| 831 | TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip); | ||
| 832 | TEST_ASSERT_VAL("wrong group name", !evsel->group_name); | ||
| 833 | TEST_ASSERT_VAL("wrong leader", perf_evsel__is_group_leader(evsel)); | ||
| 834 | TEST_ASSERT_VAL("wrong nr_members", evsel->nr_members == 2); | ||
| 835 | TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 0); | ||
| 836 | |||
| 837 | /* cache-misses:G + :H group modifier */ | ||
| 838 | evsel = perf_evsel__next(evsel); | ||
| 839 | TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->attr.type); | ||
| 840 | TEST_ASSERT_VAL("wrong config", | ||
| 841 | PERF_COUNT_HW_CACHE_MISSES == evsel->attr.config); | ||
| 842 | TEST_ASSERT_VAL("wrong exclude_user", !evsel->attr.exclude_user); | ||
| 843 | TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->attr.exclude_kernel); | ||
| 844 | TEST_ASSERT_VAL("wrong exclude_hv", !evsel->attr.exclude_hv); | ||
| 845 | TEST_ASSERT_VAL("wrong exclude guest", !evsel->attr.exclude_guest); | ||
| 846 | TEST_ASSERT_VAL("wrong exclude host", !evsel->attr.exclude_host); | ||
| 847 | TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip); | ||
| 848 | TEST_ASSERT_VAL("wrong leader", evsel->leader == leader); | ||
| 849 | TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 1); | ||
| 850 | |||
| 851 | return 0; | ||
| 852 | } | ||
| 853 | |||
| 854 | static int test__group_gh2(struct perf_evlist *evlist) | ||
| 855 | { | ||
| 856 | struct perf_evsel *evsel, *leader; | ||
| 857 | |||
| 858 | TEST_ASSERT_VAL("wrong number of entries", 2 == evlist->nr_entries); | ||
| 859 | TEST_ASSERT_VAL("wrong number of groups", 1 == evlist->nr_groups); | ||
| 860 | |||
| 861 | /* cycles + :G group modifier */ | ||
| 862 | evsel = leader = perf_evlist__first(evlist); | ||
| 863 | TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->attr.type); | ||
| 864 | TEST_ASSERT_VAL("wrong config", | ||
| 865 | PERF_COUNT_HW_CPU_CYCLES == evsel->attr.config); | ||
| 866 | TEST_ASSERT_VAL("wrong exclude_user", !evsel->attr.exclude_user); | ||
| 867 | TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->attr.exclude_kernel); | ||
| 868 | TEST_ASSERT_VAL("wrong exclude_hv", !evsel->attr.exclude_hv); | ||
| 869 | TEST_ASSERT_VAL("wrong exclude guest", !evsel->attr.exclude_guest); | ||
| 870 | TEST_ASSERT_VAL("wrong exclude host", evsel->attr.exclude_host); | ||
| 871 | TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip); | ||
| 872 | TEST_ASSERT_VAL("wrong group name", !evsel->group_name); | ||
| 873 | TEST_ASSERT_VAL("wrong leader", perf_evsel__is_group_leader(evsel)); | ||
| 874 | TEST_ASSERT_VAL("wrong nr_members", evsel->nr_members == 2); | ||
| 875 | TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 0); | ||
| 876 | |||
| 877 | /* cache-misses:H + :G group modifier */ | ||
| 878 | evsel = perf_evsel__next(evsel); | ||
| 879 | TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->attr.type); | ||
| 880 | TEST_ASSERT_VAL("wrong config", | ||
| 881 | PERF_COUNT_HW_CACHE_MISSES == evsel->attr.config); | ||
| 882 | TEST_ASSERT_VAL("wrong exclude_user", !evsel->attr.exclude_user); | ||
| 883 | TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->attr.exclude_kernel); | ||
| 884 | TEST_ASSERT_VAL("wrong exclude_hv", !evsel->attr.exclude_hv); | ||
| 885 | TEST_ASSERT_VAL("wrong exclude guest", !evsel->attr.exclude_guest); | ||
| 886 | TEST_ASSERT_VAL("wrong exclude host", !evsel->attr.exclude_host); | ||
| 887 | TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip); | ||
| 888 | TEST_ASSERT_VAL("wrong leader", evsel->leader == leader); | ||
| 889 | TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 1); | ||
| 890 | |||
| 891 | return 0; | ||
| 892 | } | ||
| 893 | |||
| 894 | static int test__group_gh3(struct perf_evlist *evlist) | ||
| 895 | { | ||
| 896 | struct perf_evsel *evsel, *leader; | ||
| 897 | |||
| 898 | TEST_ASSERT_VAL("wrong number of entries", 2 == evlist->nr_entries); | ||
| 899 | TEST_ASSERT_VAL("wrong number of groups", 1 == evlist->nr_groups); | ||
| 900 | |||
| 901 | /* cycles:G + :u group modifier */ | ||
| 902 | evsel = leader = perf_evlist__first(evlist); | ||
| 903 | TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->attr.type); | ||
| 904 | TEST_ASSERT_VAL("wrong config", | ||
| 905 | PERF_COUNT_HW_CPU_CYCLES == evsel->attr.config); | ||
| 906 | TEST_ASSERT_VAL("wrong exclude_user", !evsel->attr.exclude_user); | ||
| 907 | TEST_ASSERT_VAL("wrong exclude_kernel", evsel->attr.exclude_kernel); | ||
| 908 | TEST_ASSERT_VAL("wrong exclude_hv", evsel->attr.exclude_hv); | ||
| 909 | TEST_ASSERT_VAL("wrong exclude guest", !evsel->attr.exclude_guest); | ||
| 910 | TEST_ASSERT_VAL("wrong exclude host", evsel->attr.exclude_host); | ||
| 911 | TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip); | ||
| 912 | TEST_ASSERT_VAL("wrong group name", !evsel->group_name); | ||
| 913 | TEST_ASSERT_VAL("wrong leader", perf_evsel__is_group_leader(evsel)); | ||
| 914 | TEST_ASSERT_VAL("wrong nr_members", evsel->nr_members == 2); | ||
| 915 | TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 0); | ||
| 916 | |||
| 917 | /* cache-misses:H + :u group modifier */ | ||
| 918 | evsel = perf_evsel__next(evsel); | ||
| 919 | TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->attr.type); | ||
| 920 | TEST_ASSERT_VAL("wrong config", | ||
| 921 | PERF_COUNT_HW_CACHE_MISSES == evsel->attr.config); | ||
| 922 | TEST_ASSERT_VAL("wrong exclude_user", !evsel->attr.exclude_user); | ||
| 923 | TEST_ASSERT_VAL("wrong exclude_kernel", evsel->attr.exclude_kernel); | ||
| 924 | TEST_ASSERT_VAL("wrong exclude_hv", evsel->attr.exclude_hv); | ||
| 925 | TEST_ASSERT_VAL("wrong exclude guest", evsel->attr.exclude_guest); | ||
| 926 | TEST_ASSERT_VAL("wrong exclude host", !evsel->attr.exclude_host); | ||
| 927 | TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip); | ||
| 928 | TEST_ASSERT_VAL("wrong leader", evsel->leader == leader); | ||
| 929 | TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 1); | ||
| 930 | |||
| 931 | return 0; | ||
| 932 | } | ||
| 933 | |||
| 934 | static int test__group_gh4(struct perf_evlist *evlist) | ||
| 935 | { | ||
| 936 | struct perf_evsel *evsel, *leader; | ||
| 937 | |||
| 938 | TEST_ASSERT_VAL("wrong number of entries", 2 == evlist->nr_entries); | ||
| 939 | TEST_ASSERT_VAL("wrong number of groups", 1 == evlist->nr_groups); | ||
| 940 | |||
| 941 | /* cycles:G + :uG group modifier */ | ||
| 942 | evsel = leader = perf_evlist__first(evlist); | ||
| 943 | TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->attr.type); | ||
| 944 | TEST_ASSERT_VAL("wrong config", | ||
| 945 | PERF_COUNT_HW_CPU_CYCLES == evsel->attr.config); | ||
| 946 | TEST_ASSERT_VAL("wrong exclude_user", !evsel->attr.exclude_user); | ||
| 947 | TEST_ASSERT_VAL("wrong exclude_kernel", evsel->attr.exclude_kernel); | ||
| 948 | TEST_ASSERT_VAL("wrong exclude_hv", evsel->attr.exclude_hv); | ||
| 949 | TEST_ASSERT_VAL("wrong exclude guest", !evsel->attr.exclude_guest); | ||
| 950 | TEST_ASSERT_VAL("wrong exclude host", evsel->attr.exclude_host); | ||
| 951 | TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip); | ||
| 952 | TEST_ASSERT_VAL("wrong group name", !evsel->group_name); | ||
| 953 | TEST_ASSERT_VAL("wrong leader", perf_evsel__is_group_leader(evsel)); | ||
| 954 | TEST_ASSERT_VAL("wrong nr_members", evsel->nr_members == 2); | ||
| 955 | TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 0); | ||
| 956 | |||
| 957 | /* cache-misses:H + :uG group modifier */ | ||
| 958 | evsel = perf_evsel__next(evsel); | ||
| 959 | TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->attr.type); | ||
| 960 | TEST_ASSERT_VAL("wrong config", | ||
| 961 | PERF_COUNT_HW_CACHE_MISSES == evsel->attr.config); | ||
| 962 | TEST_ASSERT_VAL("wrong exclude_user", !evsel->attr.exclude_user); | ||
| 963 | TEST_ASSERT_VAL("wrong exclude_kernel", evsel->attr.exclude_kernel); | ||
| 964 | TEST_ASSERT_VAL("wrong exclude_hv", evsel->attr.exclude_hv); | ||
| 965 | TEST_ASSERT_VAL("wrong exclude guest", !evsel->attr.exclude_guest); | ||
| 966 | TEST_ASSERT_VAL("wrong exclude host", !evsel->attr.exclude_host); | ||
| 967 | TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip); | ||
| 968 | TEST_ASSERT_VAL("wrong leader", evsel->leader == leader); | ||
| 969 | TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 1); | ||
| 970 | |||
| 971 | return 0; | ||
| 972 | } | ||
| 973 | |||
| 814 | static int count_tracepoints(void) | 974 | static int count_tracepoints(void) |
| 815 | { | 975 | { |
| 816 | char events_path[PATH_MAX]; | 976 | char events_path[PATH_MAX]; |
| @@ -1011,6 +1171,22 @@ static struct evlist_test test__events[] = { | |||
| 1011 | .name = "*:*", | 1171 | .name = "*:*", |
| 1012 | .check = test__all_tracepoints, | 1172 | .check = test__all_tracepoints, |
| 1013 | }, | 1173 | }, |
| 1174 | [34] = { | ||
| 1175 | .name = "{cycles,cache-misses:G}:H", | ||
| 1176 | .check = test__group_gh1, | ||
| 1177 | }, | ||
| 1178 | [35] = { | ||
| 1179 | .name = "{cycles,cache-misses:H}:G", | ||
| 1180 | .check = test__group_gh2, | ||
| 1181 | }, | ||
| 1182 | [36] = { | ||
| 1183 | .name = "{cycles:G,cache-misses:H}:u", | ||
| 1184 | .check = test__group_gh3, | ||
| 1185 | }, | ||
| 1186 | [37] = { | ||
| 1187 | .name = "{cycles:G,cache-misses:H}:uG", | ||
| 1188 | .check = test__group_gh4, | ||
| 1189 | }, | ||
| 1014 | }; | 1190 | }; |
| 1015 | 1191 | ||
| 1016 | static struct evlist_test test__events_pmu[] = { | 1192 | static struct evlist_test test__events_pmu[] = { |
