Fix KernelCollector code and unit tests.
This CL fixes the KernelCollectorTest.LoadPreservedDump test due to
KernelCollector::records_ not being initialized. It also updates
KernelCollectorTest.CollectPreservedFileMissing and
KernelCollectorTest.CollectNoCrash.
BUG=chromium-os:27126
TEST=Tested the following:
1. emerge-{x86,amd64,arm}-generic crash-reporter
2. FEATURES="test" emerge-{x86,amd64,arm}-generic crash-reporter
Change-Id: If5a773fa77a2e66e539d204410140d1b4e66d062
Reviewed-on: https://gerrit.chromium.org/gerrit/17125
Reviewed-by: Kees Cook <keescook@chromium.org>
Commit-Ready: Ben Chan <benchan@chromium.org>
Tested-by: Ben Chan <benchan@chromium.org>
diff --git a/crash_reporter/kernel_collector.cc b/crash_reporter/kernel_collector.cc
index 6f2855a..d23c595 100644
--- a/crash_reporter/kernel_collector.cc
+++ b/crash_reporter/kernel_collector.cc
@@ -48,7 +48,8 @@
KernelCollector::KernelCollector()
: is_enabled_(false),
- ramoops_dump_path_(kDumpPath) {
+ ramoops_dump_path_(kDumpPath),
+ records_(0) {
// We expect crash dumps in the format of the architecture we are built for.
arch_ = GetCompilerArch();
}
diff --git a/crash_reporter/kernel_collector_test.cc b/crash_reporter/kernel_collector_test.cc
index 87c6f3d..873a5a7 100644
--- a/crash_reporter/kernel_collector_test.cc
+++ b/crash_reporter/kernel_collector_test.cc
@@ -28,14 +28,6 @@
return s_metrics;
}
-class TKernelCollector : public KernelCollector {
- bool LoadParameters() {
- // Since we don't have /sys/module/ramoops/parameters on our system just
- // return true instead of getting the parameters from the files.
- return true;
- }
-};
-
class KernelCollectorTest : public ::testing::Test {
void SetUp() {
s_crashes = 0;
@@ -61,13 +53,13 @@
void SetUpSuccessfulCollect();
void ComputeKernelStackSignatureCommon();
- TKernelCollector collector_;
+ KernelCollector collector_;
FilePath test_kcrash_;
};
TEST_F(KernelCollectorTest, ComputeKernelStackSignatureBase) {
// Make sure the normal build architecture is detected
- EXPECT_TRUE(collector_.GetArch() != TKernelCollector::archUnknown);
+ EXPECT_TRUE(collector_.GetArch() != KernelCollector::archUnknown);
}
TEST_F(KernelCollectorTest, LoadPreservedDump) {
@@ -76,10 +68,12 @@
dump.clear();
WriteStringToFile(test_kcrash_, "emptydata");
+ ASSERT_TRUE(collector_.LoadParameters());
ASSERT_FALSE(collector_.LoadPreservedDump(&dump));
ASSERT_EQ("", dump);
WriteStringToFile(test_kcrash_, "====1.1\nsomething");
+ ASSERT_TRUE(collector_.LoadParameters());
ASSERT_TRUE(collector_.LoadPreservedDump(&dump));
ASSERT_EQ("something", dump);
}
@@ -219,15 +213,15 @@
TEST_F(KernelCollectorTest, CollectPreservedFileMissing) {
ASSERT_FALSE(collector_.Collect());
- ASSERT_TRUE(FindLog("Unable to open"));
- ASSERT_TRUE(FindLog("No valid records found"));
+ ASSERT_FALSE(FindLog("Stored kcrash to "));
ASSERT_EQ(0, s_crashes);
}
TEST_F(KernelCollectorTest, CollectNoCrash) {
WriteStringToFile(test_kcrash_, "");
ASSERT_FALSE(collector_.Collect());
- ASSERT_FALSE(FindLog("Collected kernel crash"));
+ ASSERT_TRUE(FindLog("No valid records found"));
+ ASSERT_FALSE(FindLog("Stored kcrash to "));
ASSERT_EQ(0, s_crashes);
}
@@ -353,7 +347,7 @@
"[<c017bfe0>] (proc_reg_write+0x88/0x9c)\n";
std::string signature;
- collector_.SetArch(TKernelCollector::archArm);
+ collector_.SetArch(KernelCollector::archArm);
EXPECT_TRUE(
collector_.ComputeKernelStackSignature(kBugToPanic, &signature, false));
EXPECT_EQ("kernel-write_breakme-97D3E92F", signature);