#include <gtest/gtest.h>
#include "command.h"
+#include "event_selection_set.h"
static std::unique_ptr<Command> RecordCmd() {
return CreateCommandInstance("record");
static void SetUpTestCase() {
ASSERT_TRUE(RecordCmd()->Run({"-a", "sleep", "1"}));
ASSERT_TRUE(RecordCmd()->Run({"-a", "-o", "perf2.data", "sleep", "1"}));
- ASSERT_TRUE(RecordCmd()->Run({"-g", "-o", "perf_g.data", "sleep", "1"}));
+ ASSERT_TRUE(RecordCmd()->Run({"--call-graph", "fp", "-o", "perf_g.data", "sleep", "1"}));
}
};
TEST_F(ReportCommandTest, callgraph_option) {
ASSERT_TRUE(ReportCmd()->Run({"-g", "-i", "perf_g.data"}));
+ ASSERT_TRUE(ReportCmd()->Run({"-g", "callee", "-i", "perf_g.data"}));
+ ASSERT_TRUE(ReportCmd()->Run({"-g", "caller", "-i", "perf_g.data"}));
}
-extern bool IsBranchSamplingSupported();
+TEST_F(ReportCommandTest, pid_filter_option) {
+ ASSERT_TRUE(ReportCmd()->Run({"--pids", "0"}));
+ ASSERT_TRUE(ReportCmd()->Run({"--pids", "0,1"}));
+}
+
+TEST_F(ReportCommandTest, tid_filter_option) {
+ ASSERT_TRUE(ReportCmd()->Run({"--tids", "0"}));
+ ASSERT_TRUE(ReportCmd()->Run({"--tids", "0,1"}));
+}
+
+TEST_F(ReportCommandTest, comm_filter_option) {
+ ASSERT_TRUE(ReportCmd()->Run({"--comms", "swapper"}));
+ ASSERT_TRUE(ReportCmd()->Run({"--comms", "swapper,simpleperf"}));
+}
+
+TEST_F(ReportCommandTest, dso_filter_option) {
+ ASSERT_TRUE(ReportCmd()->Run({"--dsos", "[kernel.kallsyms]"}));
+ ASSERT_TRUE(ReportCmd()->Run({"--dsos", "[kernel.kallsyms],/init"}));
+}
TEST(report_cmd, use_branch_address) {
if (IsBranchSamplingSupported()) {
<< "This test does nothing as branch stack sampling is not supported on this device.";
}
}
+
+TEST(report_cmd, dwarf_callgraph) {
+ if (IsDwarfCallChainSamplingSupported()) {
+ ASSERT_TRUE(RecordCmd()->Run({"-g", "-o", "perf_dwarf.data", "sleep", "1"}));
+ ASSERT_TRUE(ReportCmd()->Run({"-g", "-i", "perf_dwarf.data"}));
+ } else {
+ GTEST_LOG_(INFO)
+ << "This test does nothing as dwarf callchain sampling is not supported on this device.";
+ }
+}