| // Copyright 2023 The ChromiumOS Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "libbrillo/brillo/cpuinfo.h" | |
| #include <string> | |
| #include <gtest/gtest.h> | |
| #include "base/strings/stringprintf.h" | |
| namespace brillo { | |
| TEST(CpuInfoTest, SingleEmptyRecord) { | |
| auto c = | |
| CpuInfo::Create(base::FilePath("testdata/cpuinfo/SingleEmptyRecord.txt")); | |
| ASSERT_TRUE(c.has_value()); | |
| ASSERT_EQ(c->NumProcRecords(), 1); | |
| ASSERT_TRUE(c->LookUp(0, "a").has_value()); | |
| EXPECT_EQ(c->LookUp(0, "a").value(), ""); | |
| } | |
| TEST(CpuInfoTest, SingleRecord) { | |
| auto c = CpuInfo::Create(base::FilePath("testdata/cpuinfo/SingleRecord.txt")); | |
| ASSERT_TRUE(c.has_value()); | |
| ASSERT_EQ(c->NumProcRecords(), 1); | |
| ASSERT_TRUE(c->LookUp(0, "a").has_value()); | |
| EXPECT_EQ(c->LookUp(0, "a").value(), "0x42"); | |
| } | |
| TEST(CpuInfoTest, SingleMixedRecord) { | |
| auto c = | |
| CpuInfo::Create(base::FilePath("testdata/cpuinfo/SingleMixedRecord.txt")); | |
| ASSERT_TRUE(c.has_value()); | |
| ASSERT_EQ(c->NumProcRecords(), 1); | |
| ASSERT_TRUE(c->LookUp(0, "a").has_value()); | |
| EXPECT_EQ(c->LookUp(0, "a").value(), "0x42"); | |
| ASSERT_TRUE(c->LookUp(0, "bb").has_value()); | |
| EXPECT_EQ(c->LookUp(0, "bb").value(), "42"); | |
| ASSERT_TRUE(c->LookUp(0, "ccc").has_value()); | |
| EXPECT_EQ(c->LookUp(0, "ccc").value(), "41.99"); | |
| ASSERT_TRUE(c->LookUp(0, "dddddddd").has_value()); | |
| EXPECT_EQ(c->LookUp(0, "dddddddd").value(), "foo bar"); | |
| ASSERT_TRUE(c->LookUp(0, "e").has_value()); | |
| EXPECT_EQ(c->LookUp(0, "e").value(), ""); | |
| } | |
| TEST(CpuInfoTest, TwoRecords) { | |
| auto c = CpuInfo::Create(base::FilePath("testdata/cpuinfo/TwoRecords.txt")); | |
| ASSERT_TRUE(c.has_value()); | |
| ASSERT_EQ(c->NumProcRecords(), 2); | |
| ASSERT_TRUE(c->LookUp(0, "a").has_value()); | |
| EXPECT_EQ(c->LookUp(0, "a").value(), "0x42"); | |
| ASSERT_TRUE(c->LookUp(1, "a").has_value()); | |
| EXPECT_EQ(c->LookUp(1, "a").value(), "0x24"); | |
| } | |
| TEST(CpuInfoTest, BadProcNum) { | |
| auto c = CpuInfo::Create(base::FilePath("testdata/cpuinfo/BadProcNum.txt")); | |
| ASSERT_TRUE(c.has_value()); | |
| EXPECT_FALSE(c->LookUp(2, "a").has_value()); | |
| } | |
| TEST(CpuInfoTest, Badkey) { | |
| auto c = CpuInfo::Create(base::FilePath("testdata/cpuinfo/BadKey.txt")); | |
| ASSERT_TRUE(c.has_value()); | |
| EXPECT_FALSE(c->LookUp(1, "b").has_value()); | |
| } | |
| TEST(CpuInfoTest, NotKeyValuePair) { | |
| auto c = | |
| CpuInfo::Create(base::FilePath("testdata/cpuinfo/NotKeyValuePair.txt")); | |
| EXPECT_FALSE(c.has_value()); | |
| } | |
| TEST(CpuInfoTest, EmptyKey) { | |
| auto c = CpuInfo::Create(base::FilePath("testdata/cpuinfo/EmptyKey.txt")); | |
| EXPECT_FALSE(c.has_value()); | |
| } | |
| TEST(CpuInfoTest, RealX86) { | |
| auto c = CpuInfo::Create(base::FilePath("testdata/cpuinfo/RealX86.txt")); | |
| ASSERT_TRUE(c.has_value()); | |
| ASSERT_EQ(c->NumProcRecords(), 2); | |
| for (int i = 0; i < c->NumProcRecords(); i++) { | |
| ASSERT_TRUE(c->LookUp(i, "processor").has_value()); | |
| EXPECT_EQ(c->LookUp(i, "processor").value(), base::StringPrintf("%d", i)); | |
| ASSERT_TRUE(c->LookUp(i, "microcode").has_value()); | |
| EXPECT_EQ(c->LookUp(i, "microcode").value(), "0x38"); | |
| ASSERT_TRUE(c->LookUp(i, "cpu MHz").has_value()); | |
| EXPECT_EQ(c->LookUp(i, "cpu MHz").value(), | |
| i == 0 ? "1601.569" : "2347.164"); | |
| ASSERT_TRUE(c->LookUp(i, "model name").has_value()); | |
| EXPECT_EQ(c->LookUp(i, "model name").value(), | |
| "Intel(R) Celeron(R) N4000 CPU @ 1.10GHz"); | |
| ASSERT_TRUE(c->LookUp(i, "bogomips").has_value()); | |
| EXPECT_EQ(c->LookUp(i, "bogomips").value(), "2188.80"); | |
| ASSERT_TRUE(c->LookUp(i, "power management").has_value()); | |
| EXPECT_EQ(c->LookUp(i, "power management").value(), ""); | |
| } | |
| } | |
| } // namespace brillo |