OSDN Git Service

Merge "Simpleperf: add separate cpu_hotplug_test."
[android-x86/system-extras.git] / simpleperf / cmd_report_test.cpp
index 8281a15..4feac19 100644 (file)
@@ -17,6 +17,7 @@
 #include <gtest/gtest.h>
 
 #include "command.h"
+#include "event_selection_set.h"
 
 static std::unique_ptr<Command> RecordCmd() {
   return CreateCommandInstance("record");
@@ -31,6 +32,7 @@ class ReportCommandTest : public ::testing::Test {
   static void SetUpTestCase() {
     ASSERT_TRUE(RecordCmd()->Run({"-a", "sleep", "1"}));
     ASSERT_TRUE(RecordCmd()->Run({"-a", "-o", "perf2.data", "sleep", "1"}));
+    ASSERT_TRUE(RecordCmd()->Run({"--call-graph", "fp", "-o", "perf_g.data", "sleep", "1"}));
   }
 };
 
@@ -49,3 +51,54 @@ TEST_F(ReportCommandTest, sort_option_pid) {
 TEST_F(ReportCommandTest, sort_option_all) {
   ASSERT_TRUE(ReportCmd()->Run({"--sort", "comm,pid,dso,symbol"}));
 }
+
+TEST_F(ReportCommandTest, children_option) {
+  ASSERT_TRUE(ReportCmd()->Run({"--children", "-i", "perf_g.data"}));
+}
+
+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"}));
+}
+
+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()) {
+    ASSERT_TRUE(RecordCmd()->Run({"-b", "sleep", "1"}));
+    ASSERT_TRUE(
+        ReportCmd()->Run({"-b", "--sort", "comm,pid,dso_from,symbol_from,dso_to,symbol_to"}));
+  } else {
+    GTEST_LOG_(INFO)
+        << "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.";
+  }
+}