aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Olsa <jolsa@redhat.com>2013-02-01 14:37:11 -0500
committerArnaldo Carvalho de Melo <acme@redhat.com>2013-08-07 16:35:23 -0400
commita9f93f97424c64f8d5d94b653a2133e491498680 (patch)
tree2a2465004843fd1a85bc4036ae06d5dcee85d5fc
parent8404db63461af62025f32f8368861fb33604e62f (diff)
perf tests: Add parse events tests for leader sampling
Adding 2 more tests to the automated parse events suite for following event config: '{cycles,cache-misses,branch-misses}:S' '{instructions,branch-misses}:Su' Signed-off-by: Jiri Olsa <jolsa@redhat.com> Acked-by: Namhyung Kim <namhyung@kernel.org> Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> 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/n/tip-tmcy0ir7i8id2t54qg5ifbio@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r--tools/perf/tests/parse-events.c115
1 files changed, 115 insertions, 0 deletions
diff --git a/tools/perf/tests/parse-events.c b/tools/perf/tests/parse-events.c
index 344c844ffc1e..b46379c82872 100644
--- a/tools/perf/tests/parse-events.c
+++ b/tools/perf/tests/parse-events.c
@@ -520,6 +520,7 @@ static int test__group1(struct perf_evlist *evlist)
520 TEST_ASSERT_VAL("wrong leader", perf_evsel__is_group_leader(evsel)); 520 TEST_ASSERT_VAL("wrong leader", perf_evsel__is_group_leader(evsel));
521 TEST_ASSERT_VAL("wrong nr_members", evsel->nr_members == 2); 521 TEST_ASSERT_VAL("wrong nr_members", evsel->nr_members == 2);
522 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 0); 522 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 0);
523 TEST_ASSERT_VAL("wrong sample_read", !evsel->sample_read);
523 524
524 /* cycles:upp */ 525 /* cycles:upp */
525 evsel = perf_evsel__next(evsel); 526 evsel = perf_evsel__next(evsel);
@@ -535,6 +536,7 @@ static int test__group1(struct perf_evlist *evlist)
535 TEST_ASSERT_VAL("wrong precise_ip", evsel->attr.precise_ip == 2); 536 TEST_ASSERT_VAL("wrong precise_ip", evsel->attr.precise_ip == 2);
536 TEST_ASSERT_VAL("wrong leader", evsel->leader == leader); 537 TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
537 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 1); 538 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 1);
539 TEST_ASSERT_VAL("wrong sample_read", !evsel->sample_read);
538 540
539 return 0; 541 return 0;
540} 542}
@@ -560,6 +562,7 @@ static int test__group2(struct perf_evlist *evlist)
560 TEST_ASSERT_VAL("wrong leader", perf_evsel__is_group_leader(evsel)); 562 TEST_ASSERT_VAL("wrong leader", perf_evsel__is_group_leader(evsel));
561 TEST_ASSERT_VAL("wrong nr_members", evsel->nr_members == 2); 563 TEST_ASSERT_VAL("wrong nr_members", evsel->nr_members == 2);
562 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 0); 564 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 0);
565 TEST_ASSERT_VAL("wrong sample_read", !evsel->sample_read);
563 566
564 /* cache-references + :u modifier */ 567 /* cache-references + :u modifier */
565 evsel = perf_evsel__next(evsel); 568 evsel = perf_evsel__next(evsel);
@@ -574,6 +577,7 @@ static int test__group2(struct perf_evlist *evlist)
574 TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip); 577 TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip);
575 TEST_ASSERT_VAL("wrong leader", evsel->leader == leader); 578 TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
576 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 1); 579 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 1);
580 TEST_ASSERT_VAL("wrong sample_read", !evsel->sample_read);
577 581
578 /* cycles:k */ 582 /* cycles:k */
579 evsel = perf_evsel__next(evsel); 583 evsel = perf_evsel__next(evsel);
@@ -587,6 +591,7 @@ static int test__group2(struct perf_evlist *evlist)
587 TEST_ASSERT_VAL("wrong exclude host", !evsel->attr.exclude_host); 591 TEST_ASSERT_VAL("wrong exclude host", !evsel->attr.exclude_host);
588 TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip); 592 TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip);
589 TEST_ASSERT_VAL("wrong leader", perf_evsel__is_group_leader(evsel)); 593 TEST_ASSERT_VAL("wrong leader", perf_evsel__is_group_leader(evsel));
594 TEST_ASSERT_VAL("wrong sample_read", !evsel->sample_read);
590 595
591 return 0; 596 return 0;
592} 597}
@@ -615,6 +620,7 @@ static int test__group3(struct perf_evlist *evlist __maybe_unused)
615 !strcmp(leader->group_name, "group1")); 620 !strcmp(leader->group_name, "group1"));
616 TEST_ASSERT_VAL("wrong nr_members", evsel->nr_members == 2); 621 TEST_ASSERT_VAL("wrong nr_members", evsel->nr_members == 2);
617 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 0); 622 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 0);
623 TEST_ASSERT_VAL("wrong sample_read", !evsel->sample_read);
618 624
619 /* group1 cycles:kppp */ 625 /* group1 cycles:kppp */
620 evsel = perf_evsel__next(evsel); 626 evsel = perf_evsel__next(evsel);
@@ -631,6 +637,7 @@ static int test__group3(struct perf_evlist *evlist __maybe_unused)
631 TEST_ASSERT_VAL("wrong leader", evsel->leader == leader); 637 TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
632 TEST_ASSERT_VAL("wrong group name", !evsel->group_name); 638 TEST_ASSERT_VAL("wrong group name", !evsel->group_name);
633 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 1); 639 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 1);
640 TEST_ASSERT_VAL("wrong sample_read", !evsel->sample_read);
634 641
635 /* group2 cycles + G modifier */ 642 /* group2 cycles + G modifier */
636 evsel = leader = perf_evsel__next(evsel); 643 evsel = leader = perf_evsel__next(evsel);
@@ -648,6 +655,7 @@ static int test__group3(struct perf_evlist *evlist __maybe_unused)
648 !strcmp(leader->group_name, "group2")); 655 !strcmp(leader->group_name, "group2"));
649 TEST_ASSERT_VAL("wrong nr_members", evsel->nr_members == 2); 656 TEST_ASSERT_VAL("wrong nr_members", evsel->nr_members == 2);
650 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 0); 657 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 0);
658 TEST_ASSERT_VAL("wrong sample_read", !evsel->sample_read);
651 659
652 /* group2 1:3 + G modifier */ 660 /* group2 1:3 + G modifier */
653 evsel = perf_evsel__next(evsel); 661 evsel = perf_evsel__next(evsel);
@@ -661,6 +669,7 @@ static int test__group3(struct perf_evlist *evlist __maybe_unused)
661 TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip); 669 TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip);
662 TEST_ASSERT_VAL("wrong leader", evsel->leader == leader); 670 TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
663 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 1); 671 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 1);
672 TEST_ASSERT_VAL("wrong sample_read", !evsel->sample_read);
664 673
665 /* instructions:u */ 674 /* instructions:u */
666 evsel = perf_evsel__next(evsel); 675 evsel = perf_evsel__next(evsel);
@@ -674,6 +683,7 @@ static int test__group3(struct perf_evlist *evlist __maybe_unused)
674 TEST_ASSERT_VAL("wrong exclude host", !evsel->attr.exclude_host); 683 TEST_ASSERT_VAL("wrong exclude host", !evsel->attr.exclude_host);
675 TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip); 684 TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip);
676 TEST_ASSERT_VAL("wrong leader", perf_evsel__is_group_leader(evsel)); 685 TEST_ASSERT_VAL("wrong leader", perf_evsel__is_group_leader(evsel));
686 TEST_ASSERT_VAL("wrong sample_read", !evsel->sample_read);
677 687
678 return 0; 688 return 0;
679} 689}
@@ -701,6 +711,7 @@ static int test__group4(struct perf_evlist *evlist __maybe_unused)
701 TEST_ASSERT_VAL("wrong leader", perf_evsel__is_group_leader(evsel)); 711 TEST_ASSERT_VAL("wrong leader", perf_evsel__is_group_leader(evsel));
702 TEST_ASSERT_VAL("wrong nr_members", evsel->nr_members == 2); 712 TEST_ASSERT_VAL("wrong nr_members", evsel->nr_members == 2);
703 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 0); 713 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 0);
714 TEST_ASSERT_VAL("wrong sample_read", !evsel->sample_read);
704 715
705 /* instructions:kp + p */ 716 /* instructions:kp + p */
706 evsel = perf_evsel__next(evsel); 717 evsel = perf_evsel__next(evsel);
@@ -716,6 +727,7 @@ static int test__group4(struct perf_evlist *evlist __maybe_unused)
716 TEST_ASSERT_VAL("wrong precise_ip", evsel->attr.precise_ip == 2); 727 TEST_ASSERT_VAL("wrong precise_ip", evsel->attr.precise_ip == 2);
717 TEST_ASSERT_VAL("wrong leader", evsel->leader == leader); 728 TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
718 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 1); 729 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 1);
730 TEST_ASSERT_VAL("wrong sample_read", !evsel->sample_read);
719 731
720 return 0; 732 return 0;
721} 733}
@@ -742,6 +754,7 @@ static int test__group5(struct perf_evlist *evlist __maybe_unused)
742 TEST_ASSERT_VAL("wrong leader", perf_evsel__is_group_leader(evsel)); 754 TEST_ASSERT_VAL("wrong leader", perf_evsel__is_group_leader(evsel));
743 TEST_ASSERT_VAL("wrong nr_members", evsel->nr_members == 2); 755 TEST_ASSERT_VAL("wrong nr_members", evsel->nr_members == 2);
744 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 0); 756 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 0);
757 TEST_ASSERT_VAL("wrong sample_read", !evsel->sample_read);
745 758
746 /* instructions + G */ 759 /* instructions + G */
747 evsel = perf_evsel__next(evsel); 760 evsel = perf_evsel__next(evsel);
@@ -756,6 +769,7 @@ static int test__group5(struct perf_evlist *evlist __maybe_unused)
756 TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip); 769 TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip);
757 TEST_ASSERT_VAL("wrong leader", evsel->leader == leader); 770 TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
758 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 1); 771 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 1);
772 TEST_ASSERT_VAL("wrong sample_read", !evsel->sample_read);
759 773
760 /* cycles:G */ 774 /* cycles:G */
761 evsel = leader = perf_evsel__next(evsel); 775 evsel = leader = perf_evsel__next(evsel);
@@ -772,6 +786,7 @@ static int test__group5(struct perf_evlist *evlist __maybe_unused)
772 TEST_ASSERT_VAL("wrong leader", perf_evsel__is_group_leader(evsel)); 786 TEST_ASSERT_VAL("wrong leader", perf_evsel__is_group_leader(evsel));
773 TEST_ASSERT_VAL("wrong nr_members", evsel->nr_members == 2); 787 TEST_ASSERT_VAL("wrong nr_members", evsel->nr_members == 2);
774 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 0); 788 TEST_ASSERT_VAL("wrong group_idx", perf_evsel__group_idx(evsel) == 0);
789 TEST_ASSERT_VAL("wrong sample_read", !evsel->sample_read);
775 790
776 /* instructions:G */ 791 /* instructions:G */
777 evsel = perf_evsel__next(evsel); 792 evsel = perf_evsel__next(evsel);
@@ -963,6 +978,98 @@ static int test__group_gh4(struct perf_evlist *evlist)
963 return 0; 978 return 0;
964} 979}
965 980
981static int test__leader_sample1(struct perf_evlist *evlist)
982{
983 struct perf_evsel *evsel, *leader;
984
985 TEST_ASSERT_VAL("wrong number of entries", 3 == evlist->nr_entries);
986
987 /* cycles - sampling group leader */
988 evsel = leader = perf_evlist__first(evlist);
989 TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->attr.type);
990 TEST_ASSERT_VAL("wrong config",
991 PERF_COUNT_HW_CPU_CYCLES == evsel->attr.config);
992 TEST_ASSERT_VAL("wrong exclude_user", !evsel->attr.exclude_user);
993 TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->attr.exclude_kernel);
994 TEST_ASSERT_VAL("wrong exclude_hv", !evsel->attr.exclude_hv);
995 TEST_ASSERT_VAL("wrong exclude guest", evsel->attr.exclude_guest);
996 TEST_ASSERT_VAL("wrong exclude host", !evsel->attr.exclude_host);
997 TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip);
998 TEST_ASSERT_VAL("wrong group name", !evsel->group_name);
999 TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
1000 TEST_ASSERT_VAL("wrong sample_read", evsel->sample_read);
1001
1002 /* cache-misses - not sampling */
1003 evsel = perf_evsel__next(evsel);
1004 TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->attr.type);
1005 TEST_ASSERT_VAL("wrong config",
1006 PERF_COUNT_HW_CACHE_MISSES == evsel->attr.config);
1007 TEST_ASSERT_VAL("wrong exclude_user", !evsel->attr.exclude_user);
1008 TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->attr.exclude_kernel);
1009 TEST_ASSERT_VAL("wrong exclude_hv", !evsel->attr.exclude_hv);
1010 TEST_ASSERT_VAL("wrong exclude guest", evsel->attr.exclude_guest);
1011 TEST_ASSERT_VAL("wrong exclude host", !evsel->attr.exclude_host);
1012 TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip);
1013 TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
1014 TEST_ASSERT_VAL("wrong sample_read", evsel->sample_read);
1015
1016 /* branch-misses - not sampling */
1017 evsel = perf_evsel__next(evsel);
1018 TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->attr.type);
1019 TEST_ASSERT_VAL("wrong config",
1020 PERF_COUNT_HW_BRANCH_MISSES == evsel->attr.config);
1021 TEST_ASSERT_VAL("wrong exclude_user", !evsel->attr.exclude_user);
1022 TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->attr.exclude_kernel);
1023 TEST_ASSERT_VAL("wrong exclude_hv", !evsel->attr.exclude_hv);
1024 TEST_ASSERT_VAL("wrong exclude guest", evsel->attr.exclude_guest);
1025 TEST_ASSERT_VAL("wrong exclude host", !evsel->attr.exclude_host);
1026 TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip);
1027 TEST_ASSERT_VAL("wrong group name", !evsel->group_name);
1028 TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
1029 TEST_ASSERT_VAL("wrong sample_read", evsel->sample_read);
1030
1031 return 0;
1032}
1033
1034static int test__leader_sample2(struct perf_evlist *evlist __maybe_unused)
1035{
1036 struct perf_evsel *evsel, *leader;
1037
1038 TEST_ASSERT_VAL("wrong number of entries", 2 == evlist->nr_entries);
1039
1040 /* instructions - sampling group leader */
1041 evsel = leader = perf_evlist__first(evlist);
1042 TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->attr.type);
1043 TEST_ASSERT_VAL("wrong config",
1044 PERF_COUNT_HW_INSTRUCTIONS == evsel->attr.config);
1045 TEST_ASSERT_VAL("wrong exclude_user", !evsel->attr.exclude_user);
1046 TEST_ASSERT_VAL("wrong exclude_kernel", evsel->attr.exclude_kernel);
1047 TEST_ASSERT_VAL("wrong exclude_hv", evsel->attr.exclude_hv);
1048 TEST_ASSERT_VAL("wrong exclude guest", evsel->attr.exclude_guest);
1049 TEST_ASSERT_VAL("wrong exclude host", !evsel->attr.exclude_host);
1050 TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip);
1051 TEST_ASSERT_VAL("wrong group name", !evsel->group_name);
1052 TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
1053 TEST_ASSERT_VAL("wrong sample_read", evsel->sample_read);
1054
1055 /* branch-misses - not sampling */
1056 evsel = perf_evsel__next(evsel);
1057 TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->attr.type);
1058 TEST_ASSERT_VAL("wrong config",
1059 PERF_COUNT_HW_BRANCH_MISSES == evsel->attr.config);
1060 TEST_ASSERT_VAL("wrong exclude_user", !evsel->attr.exclude_user);
1061 TEST_ASSERT_VAL("wrong exclude_kernel", evsel->attr.exclude_kernel);
1062 TEST_ASSERT_VAL("wrong exclude_hv", evsel->attr.exclude_hv);
1063 TEST_ASSERT_VAL("wrong exclude guest", evsel->attr.exclude_guest);
1064 TEST_ASSERT_VAL("wrong exclude host", !evsel->attr.exclude_host);
1065 TEST_ASSERT_VAL("wrong precise_ip", !evsel->attr.precise_ip);
1066 TEST_ASSERT_VAL("wrong group name", !evsel->group_name);
1067 TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
1068 TEST_ASSERT_VAL("wrong sample_read", evsel->sample_read);
1069
1070 return 0;
1071}
1072
966static int count_tracepoints(void) 1073static int count_tracepoints(void)
967{ 1074{
968 char events_path[PATH_MAX]; 1075 char events_path[PATH_MAX];
@@ -1179,6 +1286,14 @@ static struct evlist_test test__events[] = {
1179 .name = "{cycles:G,cache-misses:H}:uG", 1286 .name = "{cycles:G,cache-misses:H}:uG",
1180 .check = test__group_gh4, 1287 .check = test__group_gh4,
1181 }, 1288 },
1289 [38] = {
1290 .name = "{cycles,cache-misses,branch-misses}:S",
1291 .check = test__leader_sample1,
1292 },
1293 [39] = {
1294 .name = "{instructions,branch-misses}:Su",
1295 .check = test__leader_sample2,
1296 },
1182}; 1297};
1183 1298
1184static struct evlist_test test__events_pmu[] = { 1299static struct evlist_test test__events_pmu[] = {