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

Unified Diff: third_party/crashpad/crashpad/client/crash_report_database_test.cc

Issue 2293113002: Update Crashpad to b35ee1fca18956f3c27ba124d6dc456a723c7670 (Closed)
Patch Set: Created 4 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: third_party/crashpad/crashpad/client/crash_report_database_test.cc
diff --git a/third_party/crashpad/crashpad/client/crash_report_database_test.cc b/third_party/crashpad/crashpad/client/crash_report_database_test.cc
index 90a95aa4cb72eb71d9ae0ea4a3f29b248e403476..200619d2fa618037fe1aa989bd081b2822a6b4ee 100644
--- a/third_party/crashpad/crashpad/client/crash_report_database_test.cc
+++ b/third_party/crashpad/crashpad/client/crash_report_database_test.cc
@@ -94,6 +94,7 @@ class CrashReportDatabaseTest : public testing::Test {
EXPECT_FALSE(report.uploaded);
EXPECT_EQ(0, report.last_upload_attempt_time);
EXPECT_EQ(0, report.upload_attempts);
+ EXPECT_FALSE(report.upload_explicitly_requested);
}
void RelocateDatabase() {
@@ -102,6 +103,16 @@ class CrashReportDatabaseTest : public testing::Test {
SetUp();
}
+ CrashReportDatabase::OperationStatus RequestUpload(const UUID& uuid) {
+ CrashReportDatabase::OperationStatus os = db()->RequestUpload(uuid);
+
+ CrashReportDatabase::Report report;
+ EXPECT_EQ(CrashReportDatabase::kNoError,
+ db_->LookUpCrashReport(uuid, &report));
+
+ return os;
+ }
+
private:
ScopedTempDir temp_dir_;
std::unique_ptr<CrashReportDatabase> db_;
@@ -220,6 +231,7 @@ TEST_F(CrashReportDatabaseTest, LookUpCrashReport) {
EXPECT_FALSE(report.uploaded);
EXPECT_EQ(0, report.last_upload_attempt_time);
EXPECT_EQ(0, report.upload_attempts);
+ EXPECT_FALSE(report.upload_explicitly_requested);
}
UploadReport(uuid, true, "test");
@@ -234,6 +246,7 @@ TEST_F(CrashReportDatabaseTest, LookUpCrashReport) {
EXPECT_TRUE(report.uploaded);
EXPECT_NE(0, report.last_upload_attempt_time);
EXPECT_EQ(1, report.upload_attempts);
+ EXPECT_FALSE(report.upload_explicitly_requested);
}
}
@@ -585,6 +598,72 @@ TEST_F(CrashReportDatabaseTest, ReadEmptyDatabase) {
CreateCrashReport(&report2);
}
+TEST_F(CrashReportDatabaseTest, RequestUpload) {
+ std::vector<CrashReportDatabase::Report> reports(2);
+ CreateCrashReport(&reports[0]);
+ CreateCrashReport(&reports[1]);
+
+ const UUID& report_0_uuid = reports[0].uuid;
+ const UUID& report_1_uuid = reports[1].uuid;
+
+ // Skipped report gets back to pending state after RequestUpload is called.
+ EXPECT_EQ(CrashReportDatabase::kNoError,
+ db()->SkipReportUpload(report_1_uuid));
+
+ std::vector<CrashReportDatabase::Report> pending_reports;
+ CrashReportDatabase::OperationStatus os =
+ db()->GetPendingReports(&pending_reports);
+ EXPECT_EQ(CrashReportDatabase::kNoError, os);
+ ASSERT_EQ(1u, pending_reports.size());
+ EXPECT_EQ(pending_reports[0].uuid, report_0_uuid);
+
+ pending_reports.clear();
+ EXPECT_EQ(CrashReportDatabase::kNoError, RequestUpload(report_1_uuid));
+ os = db()->GetPendingReports(&pending_reports);
+ EXPECT_EQ(CrashReportDatabase::kNoError, os);
+ ASSERT_EQ(2u, pending_reports.size());
+
+ // Check individual reports.
+ const CrashReportDatabase::Report* expicitly_requested_report;
+ const CrashReportDatabase::Report* pending_report;
+ if (pending_reports[0].uuid == report_0_uuid) {
+ pending_report = &pending_reports[0];
+ expicitly_requested_report = &pending_reports[1];
+ } else {
+ pending_report = &pending_reports[1];
+ expicitly_requested_report = &pending_reports[0];
+ }
+
+ EXPECT_EQ(report_0_uuid, pending_report->uuid);
+ EXPECT_FALSE(pending_report->upload_explicitly_requested);
+
+ EXPECT_EQ(report_1_uuid, expicitly_requested_report->uuid);
+ EXPECT_TRUE(expicitly_requested_report->upload_explicitly_requested);
+
+ // Explicitly requested reports will not have upload_explicitly_requested bit
+ // after getting skipped.
+ EXPECT_EQ(CrashReportDatabase::kNoError,
+ db()->SkipReportUpload(report_1_uuid));
+ CrashReportDatabase::Report report;
+ EXPECT_EQ(CrashReportDatabase::kNoError,
+ db()->LookUpCrashReport(report_1_uuid, &report));
+ EXPECT_FALSE(report.upload_explicitly_requested);
+
+ // Pending report gets correctly affected after RequestUpload is called.
+ pending_reports.clear();
+ EXPECT_EQ(CrashReportDatabase::kNoError, RequestUpload(report_0_uuid));
+ os = db()->GetPendingReports(&pending_reports);
+ EXPECT_EQ(CrashReportDatabase::kNoError, os);
+ EXPECT_EQ(1u, pending_reports.size());
+ EXPECT_EQ(pending_reports[0].uuid, report_0_uuid);
+ EXPECT_TRUE(pending_reports[0].upload_explicitly_requested);
+
+ // Already uploaded report cannot be requested for the new upload.
+ UploadReport(report_0_uuid, true, "1");
+ EXPECT_EQ(CrashReportDatabase::kCannotRequestUpload,
+ RequestUpload(report_0_uuid));
+}
+
} // namespace
} // namespace test
} // namespace crashpad

Powered by Google App Engine
This is Rietveld 408576698