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

Side by Side Diff: components/browser_watcher/postmortem_report_collector_unittest.cc

Issue 2753573002: Remove 'global' user-data in favor of 'process' user-data. (Closed)
Patch Set: rebased Created 3 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/browser_watcher/postmortem_report_collector.h" 5 #include "components/browser_watcher/postmortem_report_collector.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <set> 10 #include <set>
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 using testing::_; 49 using testing::_;
50 using testing::Return; 50 using testing::Return;
51 using testing::SetArgPointee; 51 using testing::SetArgPointee;
52 52
53 namespace { 53 namespace {
54 54
55 const char kProductName[] = "TestProduct"; 55 const char kProductName[] = "TestProduct";
56 const char kVersionNumber[] = "TestVersionNumber"; 56 const char kVersionNumber[] = "TestVersionNumber";
57 const char kChannelName[] = "TestChannel"; 57 const char kChannelName[] = "TestChannel";
58 58
59 // The tracker creates some data entries internally.
60 const size_t kInternalProcessDatums = 1;
61
59 void ContainsKeyValue( 62 void ContainsKeyValue(
60 const google::protobuf::Map<std::string, TypedValue>& data, 63 const google::protobuf::Map<std::string, TypedValue>& data,
61 const std::string& key, 64 const std::string& key,
62 const std::string& value) { 65 const std::string& value) {
63 auto it = data.find(key); 66 auto it = data.find(key);
64 ASSERT_TRUE(it != data.end()); 67 ASSERT_TRUE(it != data.end());
65 EXPECT_EQ(TypedValue::kStringValue, it->second.value_case()); 68 EXPECT_EQ(TypedValue::kStringValue, it->second.value_case());
66 EXPECT_EQ(value, it->second.string_value()); 69 EXPECT_EQ(value, it->second.string_value());
67 } 70 }
68 71
(...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after
571 StabilityReport report; 574 StabilityReport report;
572 ASSERT_EQ(SUCCESS, collector.CollectOneReport(debug_file_path(), &report)); 575 ASSERT_EQ(SUCCESS, collector.CollectOneReport(debug_file_path(), &report));
573 576
574 // Validate the report's log content. 577 // Validate the report's log content.
575 ASSERT_EQ(2, report.log_messages_size()); 578 ASSERT_EQ(2, report.log_messages_size());
576 ASSERT_EQ("hello world", report.log_messages(0)); 579 ASSERT_EQ("hello world", report.log_messages(0));
577 ASSERT_EQ("foo bar", report.log_messages(1)); 580 ASSERT_EQ("foo bar", report.log_messages(1));
578 } 581 }
579 582
580 TEST_F(PostmortemReportCollectorCollectionFromGlobalTrackerTest, 583 TEST_F(PostmortemReportCollectorCollectionFromGlobalTrackerTest,
581 GlobalUserDataCollection) { 584 ProcessUserDataCollection) {
582 const char string1[] = "foo"; 585 const char string1[] = "foo";
583 const char string2[] = "bar"; 586 const char string2[] = "bar";
584 587
585 // Record some global user data. 588 // Record some process user data.
586 GlobalActivityTracker::CreateWithFile(debug_file_path(), kMemorySize, 0ULL, 589 GlobalActivityTracker::CreateWithFile(debug_file_path(), kMemorySize, 0ULL,
587 "", 3); 590 "", 3);
588 ActivityUserData& global_data = GlobalActivityTracker::Get()->global_data(); 591 ActivityUserData& process_data = GlobalActivityTracker::Get()->process_data();
589 global_data.Set("raw", "foo", 3); 592 ActivityUserData::Snapshot snapshot;
590 global_data.SetString("string", "bar"); 593 ASSERT_TRUE(process_data.CreateSnapshot(&snapshot));
591 global_data.SetChar("char", '9'); 594 ASSERT_EQ(kInternalProcessDatums, snapshot.size());
592 global_data.SetInt("int", -9999); 595 process_data.Set("raw", "foo", 3);
593 global_data.SetUint("uint", 9999); 596 process_data.SetString("string", "bar");
594 global_data.SetBool("bool", true); 597 process_data.SetChar("char", '9');
595 global_data.SetReference("ref", string1, strlen(string1)); 598 process_data.SetInt("int", -9999);
596 global_data.SetStringReference("sref", string2); 599 process_data.SetUint("uint", 9999);
600 process_data.SetBool("bool", true);
601 process_data.SetReference("ref", string1, strlen(string1));
602 process_data.SetStringReference("sref", string2);
597 603
598 // Collect the stability report. 604 // Collect the stability report.
599 PostmortemReportCollector collector(kProductName, kVersionNumber, 605 PostmortemReportCollector collector(kProductName, kVersionNumber,
600 kChannelName, nullptr); 606 kChannelName, nullptr);
601 StabilityReport report; 607 StabilityReport report;
602 ASSERT_EQ(SUCCESS, collector.CollectOneReport(debug_file_path(), &report)); 608 ASSERT_EQ(SUCCESS, collector.CollectOneReport(debug_file_path(), &report));
603 609
604 // Validate the report's user data. 610 // Validate the report's user data.
605 const auto& collected_data = report.global_data(); 611 const auto& collected_data = report.global_data();
606 ASSERT_EQ(12U, collected_data.size()); 612 ASSERT_EQ(kInternalProcessDatums + 12U, collected_data.size());
607 613
608 ASSERT_TRUE(base::ContainsKey(collected_data, "raw")); 614 ASSERT_TRUE(base::ContainsKey(collected_data, "raw"));
609 EXPECT_EQ(TypedValue::kBytesValue, collected_data.at("raw").value_case()); 615 EXPECT_EQ(TypedValue::kBytesValue, collected_data.at("raw").value_case());
610 EXPECT_EQ("foo", collected_data.at("raw").bytes_value()); 616 EXPECT_EQ("foo", collected_data.at("raw").bytes_value());
611 617
612 ASSERT_TRUE(base::ContainsKey(collected_data, "string")); 618 ASSERT_TRUE(base::ContainsKey(collected_data, "string"));
613 EXPECT_EQ(TypedValue::kStringValue, collected_data.at("string").value_case()); 619 EXPECT_EQ(TypedValue::kStringValue, collected_data.at("string").value_case());
614 EXPECT_EQ("bar", collected_data.at("string").string_value()); 620 EXPECT_EQ("bar", collected_data.at("string").string_value());
615 621
616 ASSERT_TRUE(base::ContainsKey(collected_data, "char")); 622 ASSERT_TRUE(base::ContainsKey(collected_data, "char"));
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
652 ContainsKeyValue(collected_data, kStabilityReporterPlatform, "Win64"); 658 ContainsKeyValue(collected_data, kStabilityReporterPlatform, "Win64");
653 #endif 659 #endif
654 ContainsKeyValue(collected_data, kStabilityReporterVersion, kVersionNumber); 660 ContainsKeyValue(collected_data, kStabilityReporterVersion, kVersionNumber);
655 } 661 }
656 662
657 TEST_F(PostmortemReportCollectorCollectionFromGlobalTrackerTest, 663 TEST_F(PostmortemReportCollectorCollectionFromGlobalTrackerTest,
658 FieldTrialCollection) { 664 FieldTrialCollection) {
659 // Record some data. 665 // Record some data.
660 GlobalActivityTracker::CreateWithFile(debug_file_path(), kMemorySize, 0ULL, 666 GlobalActivityTracker::CreateWithFile(debug_file_path(), kMemorySize, 0ULL,
661 "", 3); 667 "", 3);
662 ActivityUserData& global_data = GlobalActivityTracker::Get()->global_data(); 668 ActivityUserData& process_data = GlobalActivityTracker::Get()->process_data();
663 global_data.SetString("string", "bar"); 669 process_data.SetString("string", "bar");
664 global_data.SetString("FieldTrial.string", "bar"); 670 process_data.SetString("FieldTrial.string", "bar");
665 global_data.SetString("FieldTrial.foo", "bar"); 671 process_data.SetString("FieldTrial.foo", "bar");
666 672
667 // Collect the stability report. 673 // Collect the stability report.
668 PostmortemReportCollector collector(kProductName, kVersionNumber, 674 PostmortemReportCollector collector(kProductName, kVersionNumber,
669 kChannelName, nullptr); 675 kChannelName, nullptr);
670 StabilityReport report; 676 StabilityReport report;
671 ASSERT_EQ(SUCCESS, collector.CollectOneReport(debug_file_path(), &report)); 677 ASSERT_EQ(SUCCESS, collector.CollectOneReport(debug_file_path(), &report));
672 678
673 // Validate the report's experiment and global data. 679 // Validate the report's experiment and global data.
674 ASSERT_EQ(2, report.field_trials_size()); 680 ASSERT_EQ(2, report.field_trials_size());
675 EXPECT_NE(0U, report.field_trials(0).name_id()); 681 EXPECT_NE(0U, report.field_trials(0).name_id());
676 EXPECT_NE(0U, report.field_trials(0).group_id()); 682 EXPECT_NE(0U, report.field_trials(0).group_id());
677 EXPECT_NE(0U, report.field_trials(1).name_id()); 683 EXPECT_NE(0U, report.field_trials(1).name_id());
678 EXPECT_EQ(report.field_trials(0).group_id(), 684 EXPECT_EQ(report.field_trials(0).group_id(),
679 report.field_trials(1).group_id()); 685 report.field_trials(1).group_id());
680 686
681 // Expect 5 key/value pairs (including product details). 687 // Expect 5 key/value pairs (including product details).
682 const auto& collected_data = report.global_data(); 688 const auto& collected_data = report.global_data();
683 EXPECT_EQ(5U, collected_data.size()); 689 EXPECT_EQ(kInternalProcessDatums + 5U, collected_data.size());
684 EXPECT_TRUE(base::ContainsKey(collected_data, "string")); 690 EXPECT_TRUE(base::ContainsKey(collected_data, "string"));
685 } 691 }
686 692
687 TEST_F(PostmortemReportCollectorCollectionFromGlobalTrackerTest, 693 TEST_F(PostmortemReportCollectorCollectionFromGlobalTrackerTest,
688 ModuleCollection) { 694 ModuleCollection) {
689 // Record some module information. 695 // Record some module information.
690 GlobalActivityTracker::CreateWithFile(debug_file_path(), kMemorySize, 0ULL, 696 GlobalActivityTracker::CreateWithFile(debug_file_path(), kMemorySize, 0ULL,
691 "", 3); 697 "", 3);
692 698
693 base::debug::GlobalActivityTracker::ModuleInfo module_info = {}; 699 base::debug::GlobalActivityTracker::ModuleInfo module_info = {};
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
728 EXPECT_EQ("", collected_module.version()); 734 EXPECT_EQ("", collected_module.version());
729 EXPECT_EQ(0LL, collected_module.shrink_down_delta()); 735 EXPECT_EQ(0LL, collected_module.shrink_down_delta());
730 EXPECT_EQ(!module_info.is_loaded, collected_module.is_unloaded()); 736 EXPECT_EQ(!module_info.is_loaded, collected_module.is_unloaded());
731 } 737 }
732 738
733 TEST_F(PostmortemReportCollectorCollectionFromGlobalTrackerTest, 739 TEST_F(PostmortemReportCollectorCollectionFromGlobalTrackerTest,
734 SystemStateTest) { 740 SystemStateTest) {
735 // Setup. 741 // Setup.
736 GlobalActivityTracker::CreateWithFile(debug_file_path(), kMemorySize, 0ULL, 742 GlobalActivityTracker::CreateWithFile(debug_file_path(), kMemorySize, 0ULL,
737 "", 3); 743 "", 3);
738 ActivityUserData& global_data = GlobalActivityTracker::Get()->global_data(); 744 ActivityUserData& process_data = GlobalActivityTracker::Get()->process_data();
739 global_data.SetInt(kStabilityStartTimestamp, 12345LL); 745 process_data.SetInt(kStabilityStartTimestamp, 12345LL);
740 746
741 // Collect. 747 // Collect.
742 MockSystemSessionAnalyzer analyzer; 748 MockSystemSessionAnalyzer analyzer;
743 EXPECT_CALL(analyzer, 749 EXPECT_CALL(analyzer,
744 IsSessionUnclean(base::Time::FromInternalValue(12345LL))) 750 IsSessionUnclean(base::Time::FromInternalValue(12345LL)))
745 .Times(1) 751 .Times(1)
746 .WillOnce(Return(SystemSessionAnalyzer::CLEAN)); 752 .WillOnce(Return(SystemSessionAnalyzer::CLEAN));
747 PostmortemReportCollector collector(kProductName, kVersionNumber, 753 PostmortemReportCollector collector(kProductName, kVersionNumber,
748 kChannelName, &analyzer); 754 kChannelName, &analyzer);
749 StabilityReport report; 755 StabilityReport report;
750 ASSERT_EQ(SUCCESS, collector.CollectOneReport(debug_file_path(), &report)); 756 ASSERT_EQ(SUCCESS, collector.CollectOneReport(debug_file_path(), &report));
751 757
752 // Validate the report. 758 // Validate the report.
753 ASSERT_EQ(SystemState::CLEAN, report.system_state().session_state()); 759 ASSERT_EQ(SystemState::CLEAN, report.system_state().session_state());
754 } 760 }
755 761
756 } // namespace browser_watcher 762 } // namespace browser_watcher
OLDNEW
« no previous file with comments | « components/browser_watcher/postmortem_report_collector.h ('k') | components/browser_watcher/postmortem_report_extractor.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698