Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3915)

Unified Diff: chrome/browser/metrics/perf/perf_provider_chromeos_unittest.cc

Issue 1395273002: PerfProvider: Run a randomly selected perf command (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@collection_params
Patch Set: Address comments on PS2 Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/metrics/perf/perf_provider_chromeos.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/metrics/perf/perf_provider_chromeos_unittest.cc
diff --git a/chrome/browser/metrics/perf/perf_provider_chromeos_unittest.cc b/chrome/browser/metrics/perf/perf_provider_chromeos_unittest.cc
index 3874bfd5cebea365364de260e7e69c1beb3547d9..7bf1be53007c1e6760479a793cca410a275f6eee 100644
--- a/chrome/browser/metrics/perf/perf_provider_chromeos_unittest.cc
+++ b/chrome/browser/metrics/perf/perf_provider_chromeos_unittest.cc
@@ -25,6 +25,18 @@ namespace {
const int kPerfSuccess = 0;
const int kPerfFailure = 1;
+const char kPerfRecordCyclesCmd[] =
+ "perf record -a -e cycles -c 1000003";
+const char kPerfRecordCallgraphCmd[] =
+ "perf record -a -e cycles -g -c 4000037";
+const char kPerfRecordLBRCmd[] =
+ "perf record -a -e r2c4 -b -c 20011";
+const char kPerfStatMemoryBandwidthCmd[] =
+ "perf stat -a -e cycles -e instructions "
+ "-e uncore_imc/data_reads/ -e uncore_imc/data_writes/ "
+ "-e cpu/event=0xD0,umask=0x11,name=MEM_UOPS_RETIRED-STLB_MISS_LOADS/ "
+ "-e cpu/event=0xD0,umask=0x12,name=MEM_UOPS_RETIRED-STLB_MISS_STORES/";
+
// Converts a protobuf to serialized format as a byte vector.
std::vector<uint8_t> SerializeMessageToVector(
const google::protobuf::MessageLite& message) {
@@ -459,4 +471,115 @@ TEST_F(PerfProviderTest, IncognitoWindowOpened) {
SerializeMessageToVector(profile3.perf_data()));
}
+TEST_F(PerfProviderTest, DefaultCommandsBasedOnUarch_IvyBridge) {
+ CPUIdentity cpuid;
+ cpuid.arch = "x86_64";
+ cpuid.vendor = "GenuineIntel";
+ cpuid.family = 0x06;
+ cpuid.model = 0x3a; // IvyBridge
+ cpuid.model_name = "";
+ std::vector<RandomSelector::WeightAndValue> cmds =
+ internal::GetDefaultCommandsForCpu(cpuid);
+ ASSERT_GE(cmds.size(), 2UL);
+ EXPECT_EQ(cmds[0].value, kPerfRecordCyclesCmd);
+ EXPECT_EQ(cmds[1].value, kPerfRecordCallgraphCmd);
+ auto found = std::find_if(
+ cmds.begin(), cmds.end(),
+ [](const RandomSelector::WeightAndValue& cmd) -> bool {
+ return cmd.value == kPerfStatMemoryBandwidthCmd;
+ });
+ EXPECT_NE(cmds.end(), found);
+ found = std::find_if(
+ cmds.begin(), cmds.end(),
+ [](const RandomSelector::WeightAndValue& cmd) -> bool {
+ return cmd.value == kPerfRecordLBRCmd;
+ });
+ EXPECT_NE(cmds.end(), found);
+}
+
+TEST_F(PerfProviderTest, DefaultCommandsBasedOnUarch_SandyBridge) {
+ CPUIdentity cpuid;
+ cpuid.arch = "x86_64";
+ cpuid.vendor = "GenuineIntel";
+ cpuid.family = 0x06;
+ cpuid.model = 0x2a; // SandyBridge
+ cpuid.model_name = "";
+ std::vector<RandomSelector::WeightAndValue> cmds =
+ internal::GetDefaultCommandsForCpu(cpuid);
+ ASSERT_GE(cmds.size(), 2UL);
+ EXPECT_EQ(cmds[0].value, kPerfRecordCyclesCmd);
+ EXPECT_EQ(cmds[1].value, kPerfRecordCallgraphCmd);
+ auto found = std::find_if(
+ cmds.begin(), cmds.end(),
+ [](const RandomSelector::WeightAndValue& cmd) -> bool {
+ return cmd.value == kPerfStatMemoryBandwidthCmd;
+ });
+ EXPECT_EQ(cmds.end(), found) << "SandyBridge does not support this command";
+ found = std::find_if(
+ cmds.begin(), cmds.end(),
+ [](const RandomSelector::WeightAndValue& cmd) -> bool {
+ return cmd.value == kPerfRecordLBRCmd;
+ });
+ EXPECT_NE(cmds.end(), found);
+}
+
+TEST_F(PerfProviderTest, DefaultCommandsBasedOnArch_Arm) {
+ CPUIdentity cpuid;
+ cpuid.arch = "armv7l";
+ cpuid.vendor = "";
+ cpuid.family = 0;
+ cpuid.model = 0;
+ cpuid.model_name = "";
+ std::vector<RandomSelector::WeightAndValue> cmds =
+ internal::GetDefaultCommandsForCpu(cpuid);
+ ASSERT_GE(cmds.size(), 2UL);
+ EXPECT_EQ(cmds[0].value, kPerfRecordCyclesCmd);
+ EXPECT_EQ(cmds[1].value, kPerfRecordCallgraphCmd);
+ const auto found = std::find_if(
+ cmds.begin(), cmds.end(),
+ [](const RandomSelector::WeightAndValue& cmd) -> bool {
+ return cmd.value == kPerfRecordLBRCmd;
+ });
+ EXPECT_EQ(cmds.end(), found) << "ARM does not support this command";
+}
+
+TEST_F(PerfProviderTest, DefaultCommandsBasedOnArch_x86_32) {
+ CPUIdentity cpuid;
+ cpuid.arch = "x86";
+ cpuid.vendor = "GenuineIntel";
+ cpuid.family = 0x06;
+ cpuid.model = 0x2f; // Westmere
+ cpuid.model_name = "";
+ std::vector<RandomSelector::WeightAndValue> cmds =
+ internal::GetDefaultCommandsForCpu(cpuid);
+ ASSERT_GE(cmds.size(), 2UL);
+ EXPECT_EQ(cmds[0].value, kPerfRecordCyclesCmd);
+ EXPECT_EQ(cmds[1].value, kPerfRecordCallgraphCmd);
+ auto found = std::find_if(
+ cmds.begin(), cmds.end(),
+ [](const RandomSelector::WeightAndValue& cmd) -> bool {
+ return cmd.value == kPerfStatMemoryBandwidthCmd;
+ });
+ EXPECT_EQ(cmds.end(), found) << "x86_32 does not support this command";
+ found = std::find_if(
+ cmds.begin(), cmds.end(),
+ [](const RandomSelector::WeightAndValue& cmd) -> bool {
+ return cmd.value == kPerfRecordLBRCmd;
+ });
+ EXPECT_EQ(cmds.end(), found) << "x86_32 does not support this command";
+}
+
+TEST_F(PerfProviderTest, DefaultCommandsBasedOnArch_Unknown) {
+ CPUIdentity cpuid;
+ cpuid.arch = "nonsense";
+ cpuid.vendor = "";
+ cpuid.family = 0;
+ cpuid.model = 0;
+ cpuid.model_name = "";
+ std::vector<RandomSelector::WeightAndValue> cmds =
+ internal::GetDefaultCommandsForCpu(cpuid);
+ EXPECT_EQ(1UL, cmds.size());
+ EXPECT_EQ(cmds[0].value, kPerfRecordCyclesCmd);
+}
+
} // namespace metrics
« no previous file with comments | « chrome/browser/metrics/perf/perf_provider_chromeos.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698