| Index: crash_collector_test.cc
|
| diff --git a/crash_collector_test.cc b/crash_collector_test.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..48b7fa03c677526d2ba0613b8c3e8629ab234f72
|
| --- /dev/null
|
| +++ b/crash_collector_test.cc
|
| @@ -0,0 +1,105 @@
|
| +// Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include <unistd.h>
|
| +
|
| +#include "base/file_util.h"
|
| +#include "crash-reporter/crash_collector.h"
|
| +#include "crash-reporter/system_logging_mock.h"
|
| +#include "gflags/gflags.h"
|
| +#include "gtest/gtest.h"
|
| +
|
| +void CountCrash() {
|
| + ADD_FAILURE();
|
| +}
|
| +
|
| +bool IsMetrics() {
|
| + ADD_FAILURE();
|
| + return false;
|
| +}
|
| +
|
| +class CrashCollectorTest : public ::testing::Test {
|
| + void SetUp() {
|
| + collector_.Initialize(CountCrash,
|
| + IsMetrics,
|
| + &logging_);
|
| + }
|
| + protected:
|
| + SystemLoggingMock logging_;
|
| + CrashCollector collector_;
|
| + pid_t pid_;
|
| +};
|
| +
|
| +TEST_F(CrashCollectorTest, Initialize) {
|
| + ASSERT_TRUE(CountCrash == collector_.count_crash_function_);
|
| + ASSERT_TRUE(IsMetrics == collector_.is_feedback_allowed_function_);
|
| + ASSERT_TRUE(&logging_ == collector_.logger_);
|
| +}
|
| +
|
| +TEST_F(CrashCollectorTest, GetCrashDirectoryInfo) {
|
| + FilePath path;
|
| + const int kRootUid = 0;
|
| + const int kRootGid = 0;
|
| + const int kNtpUid = 5;
|
| + const int kChronosUid = 1000;
|
| + const int kChronosGid = 1001;
|
| + const mode_t kExpectedSystemMode = 01755;
|
| + const mode_t kExpectedUserMode = 0755;
|
| +
|
| + mode_t directory_mode;
|
| + uid_t directory_owner;
|
| + gid_t directory_group;
|
| +
|
| + path = collector_.GetCrashDirectoryInfo(kRootUid,
|
| + kChronosUid,
|
| + kChronosGid,
|
| + &directory_mode,
|
| + &directory_owner,
|
| + &directory_group);
|
| + EXPECT_EQ("/var/spool/crash", path.value());
|
| + EXPECT_EQ(kExpectedSystemMode, directory_mode);
|
| + EXPECT_EQ(kRootUid, directory_owner);
|
| + EXPECT_EQ(kRootGid, directory_group);
|
| +
|
| + path = collector_.GetCrashDirectoryInfo(kNtpUid,
|
| + kChronosUid,
|
| + kChronosGid,
|
| + &directory_mode,
|
| + &directory_owner,
|
| + &directory_group);
|
| + EXPECT_EQ("/var/spool/crash", path.value());
|
| + EXPECT_EQ(kExpectedSystemMode, directory_mode);
|
| + EXPECT_EQ(kRootUid, directory_owner);
|
| + EXPECT_EQ(kRootGid, directory_group);
|
| +
|
| + path = collector_.GetCrashDirectoryInfo(kChronosUid,
|
| + kChronosUid,
|
| + kChronosGid,
|
| + &directory_mode,
|
| + &directory_owner,
|
| + &directory_group);
|
| + EXPECT_EQ("/home/chronos/user/crash", path.value());
|
| + EXPECT_EQ(kExpectedUserMode, directory_mode);
|
| + EXPECT_EQ(kChronosUid, directory_owner);
|
| + EXPECT_EQ(kChronosGid, directory_group);
|
| +}
|
| +
|
| +TEST_F(CrashCollectorTest, FormatDumpBasename) {
|
| + struct tm tm = {0};
|
| + tm.tm_sec = 15;
|
| + tm.tm_min = 50;
|
| + tm.tm_hour = 13;
|
| + tm.tm_mday = 23;
|
| + tm.tm_mon = 4;
|
| + tm.tm_year = 110;
|
| + tm.tm_isdst = -1;
|
| + std::string basename =
|
| + collector_.FormatDumpBasename("foo", mktime(&tm), 100);
|
| + ASSERT_EQ("foo.20100523.135015.100", basename);
|
| +}
|
| +
|
| +int main(int argc, char **argv) {
|
| + ::testing::InitGoogleTest(&argc, argv);
|
| + return RUN_ALL_TESTS();
|
| +}
|
|
|