| Index: components/browser_watcher/postmortem_report_collector_unittest.cc
|
| diff --git a/components/browser_watcher/postmortem_report_collector_unittest.cc b/components/browser_watcher/postmortem_report_collector_unittest.cc
|
| index ae241e37a5d4ab882d00f94882933a0ab6779318..b29272e5c9eda0091c82305dd867e67c4f266038 100644
|
| --- a/components/browser_watcher/postmortem_report_collector_unittest.cc
|
| +++ b/components/browser_watcher/postmortem_report_collector_unittest.cc
|
| @@ -111,7 +111,10 @@ class MockCrashReportDatabase : public CrashReportDatabase {
|
| class MockPostmortemReportCollector : public PostmortemReportCollector {
|
| public:
|
| MockPostmortemReportCollector()
|
| - : PostmortemReportCollector(kProductName, kVersionNumber, kChannelName) {}
|
| + : PostmortemReportCollector(kProductName,
|
| + kVersionNumber,
|
| + kChannelName,
|
| + nullptr) {}
|
|
|
| // A function that returns a unique_ptr cannot be mocked, so mock a function
|
| // that returns a raw pointer instead.
|
| @@ -135,6 +138,12 @@ class MockPostmortemReportCollector : public PostmortemReportCollector {
|
| base::PlatformFile minidump_file));
|
| };
|
|
|
| +class MockSystemSessionAnalyzer : public SystemSessionAnalyzer {
|
| + public:
|
| + MockSystemSessionAnalyzer() : SystemSessionAnalyzer(nullptr) {}
|
| + MOCK_METHOD1(IsSessionUnclean, Status(base::Time timestamp));
|
| +};
|
| +
|
| // Checks if two proto messages are the same based on their serializations. Note
|
| // this only works if serialization is deterministic, which is not guaranteed.
|
| // In practice, serialization is deterministic (even for protocol buffers with
|
| @@ -285,7 +294,7 @@ TEST(PostmortemReportCollectorTest, GetDebugStateFilePaths) {
|
| }
|
|
|
| PostmortemReportCollector collector(kProductName, kVersionNumber,
|
| - kChannelName);
|
| + kChannelName, nullptr);
|
| EXPECT_THAT(
|
| collector.GetDebugStateFilePaths(
|
| temp_dir.GetPath(), FILE_PATH_LITERAL("foo*.pma"), excluded_paths),
|
| @@ -305,7 +314,7 @@ TEST(PostmortemReportCollectorTest, CollectEmptyFile) {
|
|
|
| // Validate collection: an empty file cannot suppport an analyzer.
|
| PostmortemReportCollector collector(kProductName, kVersionNumber,
|
| - kChannelName);
|
| + kChannelName, nullptr);
|
| std::unique_ptr<StabilityReport> report;
|
| ASSERT_EQ(PostmortemReportCollector::ANALYZER_CREATION_FAILED,
|
| collector.Collect(file_path, &report));
|
| @@ -332,7 +341,7 @@ TEST(PostmortemReportCollectorTest, CollectRandomFile) {
|
| // Validate collection: random content appears as though there is not
|
| // stability data.
|
| PostmortemReportCollector collector(kProductName, kVersionNumber,
|
| - kChannelName);
|
| + kChannelName, nullptr);
|
| std::unique_ptr<StabilityReport> report;
|
| ASSERT_EQ(PostmortemReportCollector::DEBUG_FILE_NO_DATA,
|
| collector.Collect(file_path, &report));
|
| @@ -459,7 +468,7 @@ TEST_F(PostmortemReportCollectorCollectionTest, CollectSuccess) {
|
|
|
| // Validate collection returns the expected report.
|
| PostmortemReportCollector collector(kProductName, kVersionNumber,
|
| - kChannelName);
|
| + kChannelName, nullptr);
|
| std::unique_ptr<StabilityReport> report;
|
| ASSERT_EQ(PostmortemReportCollector::SUCCESS,
|
| collector.Collect(debug_file_path(), &report));
|
| @@ -558,7 +567,7 @@ TEST_F(PostmortemReportCollectorCollectionFromGlobalTrackerTest,
|
|
|
| // Collect the stability report.
|
| PostmortemReportCollector collector(kProductName, kVersionNumber,
|
| - kChannelName);
|
| + kChannelName, nullptr);
|
| std::unique_ptr<StabilityReport> report;
|
| ASSERT_EQ(PostmortemReportCollector::SUCCESS,
|
| collector.Collect(debug_file_path(), &report));
|
| @@ -590,7 +599,7 @@ TEST_F(PostmortemReportCollectorCollectionFromGlobalTrackerTest,
|
|
|
| // Collect the stability report.
|
| PostmortemReportCollector collector(kProductName, kVersionNumber,
|
| - kChannelName);
|
| + kChannelName, nullptr);
|
| std::unique_ptr<StabilityReport> report;
|
| ASSERT_EQ(PostmortemReportCollector::SUCCESS,
|
| collector.Collect(debug_file_path(), &report));
|
| @@ -661,7 +670,7 @@ TEST_F(PostmortemReportCollectorCollectionFromGlobalTrackerTest,
|
|
|
| // Collect the stability report.
|
| PostmortemReportCollector collector(kProductName, kVersionNumber,
|
| - kChannelName);
|
| + kChannelName, nullptr);
|
| std::unique_ptr<StabilityReport> report;
|
| ASSERT_EQ(PostmortemReportCollector::SUCCESS,
|
| collector.Collect(debug_file_path(), &report));
|
| @@ -704,7 +713,7 @@ TEST_F(PostmortemReportCollectorCollectionFromGlobalTrackerTest,
|
|
|
| // Collect the stability report.
|
| PostmortemReportCollector collector(kProductName, kVersionNumber,
|
| - kChannelName);
|
| + kChannelName, nullptr);
|
| std::unique_ptr<StabilityReport> report;
|
| ASSERT_EQ(PostmortemReportCollector::SUCCESS,
|
| collector.Collect(debug_file_path(), &report));
|
| @@ -729,4 +738,30 @@ TEST_F(PostmortemReportCollectorCollectionFromGlobalTrackerTest,
|
| EXPECT_EQ(!module_info.is_loaded, collected_module.is_unloaded());
|
| }
|
|
|
| +TEST_F(PostmortemReportCollectorCollectionFromGlobalTrackerTest,
|
| + SystemStateTest) {
|
| + // Setup.
|
| + GlobalActivityTracker::CreateWithFile(debug_file_path(), kMemorySize, 0ULL,
|
| + "", 3);
|
| + ActivityUserData& global_data = GlobalActivityTracker::Get()->global_data();
|
| + global_data.SetInt(kStabilityStartTimestamp, 12345LL);
|
| +
|
| + // Collect.
|
| + std::unique_ptr<MockSystemSessionAnalyzer> analyzer(
|
| + new MockSystemSessionAnalyzer());
|
| + EXPECT_CALL(*analyzer,
|
| + IsSessionUnclean(base::Time::FromInternalValue(12345LL)))
|
| + .Times(1)
|
| + .WillOnce(Return(SystemSessionAnalyzer::CLEAN));
|
| + PostmortemReportCollector collector(kProductName, kVersionNumber,
|
| + kChannelName, std::move(analyzer));
|
| + std::unique_ptr<StabilityReport> report;
|
| + ASSERT_EQ(PostmortemReportCollector::SUCCESS,
|
| + collector.Collect(debug_file_path(), &report));
|
| + ASSERT_NE(nullptr, report);
|
| +
|
| + // Validate the report.
|
| + ASSERT_EQ(SystemState::CLEAN, report->system_state().session_state());
|
| +}
|
| +
|
| } // namespace browser_watcher
|
|
|