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

Unified Diff: chrome/browser/feedback/feedback_uploader_unittest.cc

Issue 141433011: Cache feedback reports to disk in case of send failure. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 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: chrome/browser/feedback/feedback_uploader_unittest.cc
diff --git a/chrome/browser/feedback/feedback_uploader_unittest.cc b/chrome/browser/feedback/feedback_uploader_unittest.cc
index 407a286c0e3fc347f3398ad0d63f7011792e7bc3..4e6bf55d462dd31c28159f5876efa3ea6c1108a7 100644
--- a/chrome/browser/feedback/feedback_uploader_unittest.cc
+++ b/chrome/browser/feedback/feedback_uploader_unittest.cc
@@ -4,6 +4,8 @@
#include "chrome/browser/feedback/feedback_uploader.h"
+#include <set>
+
#include "base/bind.h"
#include "base/message_loop/message_loop.h"
#include "base/run_loop.h"
@@ -37,6 +39,7 @@ class FeedbackUploaderTest : public testing::Test {
FeedbackUploaderTest()
: ui_thread_(content::BrowserThread::UI, &message_loop_),
profile_(new TestingProfile()),
+ dispatched_reports_count_(0),
expected_reports_(0) {
FeedbackUploaderFactory::GetInstance()->SetTestingFactory(
profile_.get(), &CreateFeedbackUploaderService);
@@ -54,27 +57,40 @@ class FeedbackUploaderTest : public testing::Test {
}
void QueueReport(const std::string& data) {
- uploader_->QueueReport(make_scoped_ptr(new std::string(data)));
+ uploader_->QueueReport(data);
}
void ReportFailure(const std::string& data) {
- uploader_->RetryReport(make_scoped_ptr(new std::string(data)));
+ uploader_->RetryReport(data);
}
- void MockDispatchReport(scoped_ptr<std::string> report_data) {
- dispatched_reports_.push_back(*report_data.get());
+ void MockDispatchReport(const std::string& report_data) {
+ if (dispatched_reports_.count(report_data) == 0) {
Lei Zhang 2014/02/03 22:29:41 if (ContainsKey(dispatched_reports_, report_data))
rkc 2014/02/03 22:41:27 Done.
+ dispatched_reports_[report_data] = 1;
+ } else {
+ dispatched_reports_[report_data]++;
+ }
+ dispatched_reports_count_++;
// Dispatch will always update the timer, whether successful or not,
// simulate the same behavior.
uploader_->UpdateUploadTimer();
- if (dispatched_reports_.size() >= expected_reports_) {
+ if (ProcessingComplete()) {
if (run_loop_.get())
run_loop_->Quit();
}
}
+ bool ProcessingComplete() {
+ if (dispatched_reports_count_ >= expected_reports_)
Lei Zhang 2014/02/03 22:29:41 return (dispatched_reports_count_ >= expected_repo
rkc 2014/02/03 22:41:27 Done.
+ return true;
+ return false;
+ }
+
void RunMessageLoop() {
+ if (ProcessingComplete())
+ return;
run_loop_.reset(new base::RunLoop());
run_loop_->Run();
}
@@ -86,11 +102,18 @@ class FeedbackUploaderTest : public testing::Test {
FeedbackUploader* uploader_;
- std::vector<std::string> dispatched_reports_;
+ std::map<std::string, unsigned int> dispatched_reports_;
+ size_t dispatched_reports_count_;
size_t expected_reports_;
};
-TEST_F(FeedbackUploaderTest, QueueMultiple) {
+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MACOSX)
+#define MAYBE_QueueMultiple QueueMultiple
+#else
+// crbug.com/330547
+#define MAYBE_QueueMultiple DISABLED_QueueMultiple
+#endif
+TEST_F(FeedbackUploaderTest, MAYBE_QueueMultiple) {
dispatched_reports_.clear();
QueueReport(kReportOne);
QueueReport(kReportTwo);
@@ -98,20 +121,21 @@ TEST_F(FeedbackUploaderTest, QueueMultiple) {
QueueReport(kReportFour);
EXPECT_EQ(dispatched_reports_.size(), 4u);
- EXPECT_EQ(dispatched_reports_[0], kReportOne);
- EXPECT_EQ(dispatched_reports_[1], kReportTwo);
- EXPECT_EQ(dispatched_reports_[2], kReportThree);
- EXPECT_EQ(dispatched_reports_[3], kReportFour);
+ EXPECT_EQ(dispatched_reports_[kReportOne], 1u);
+ EXPECT_EQ(dispatched_reports_[kReportTwo], 1u);
+ EXPECT_EQ(dispatched_reports_[kReportThree], 1u);
+ EXPECT_EQ(dispatched_reports_[kReportFour], 1u);
}
-#if defined(OS_WIN)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_MACOSX)
+#define MAYBE_QueueMultipleWithFailures QueueMultipleWithFailures
+#else
// crbug.com/330547
#define MAYBE_QueueMultipleWithFailures DISABLED_QueueMultipleWithFailures
-#else
-#define MAYBE_QueueMultipleWithFailures QueueMultipleWithFailures
#endif
TEST_F(FeedbackUploaderTest, MAYBE_QueueMultipleWithFailures) {
dispatched_reports_.clear();
+
QueueReport(kReportOne);
QueueReport(kReportTwo);
QueueReport(kReportThree);
@@ -124,14 +148,12 @@ TEST_F(FeedbackUploaderTest, MAYBE_QueueMultipleWithFailures) {
expected_reports_ = 7;
RunMessageLoop();
- EXPECT_EQ(dispatched_reports_.size(), 7u);
- EXPECT_EQ(dispatched_reports_[0], kReportOne);
- EXPECT_EQ(dispatched_reports_[1], kReportTwo);
- EXPECT_EQ(dispatched_reports_[2], kReportThree);
- EXPECT_EQ(dispatched_reports_[3], kReportFour);
- EXPECT_EQ(dispatched_reports_[4], kReportFive);
- EXPECT_EQ(dispatched_reports_[5], kReportThree);
- EXPECT_EQ(dispatched_reports_[6], kReportTwo);
+ EXPECT_EQ(dispatched_reports_.size(), 5u);
+ EXPECT_EQ(dispatched_reports_[kReportOne], 1u);
+ EXPECT_EQ(dispatched_reports_[kReportTwo], 2u);
+ EXPECT_EQ(dispatched_reports_[kReportThree], 2u);
+ EXPECT_EQ(dispatched_reports_[kReportFour], 1u);
+ EXPECT_EQ(dispatched_reports_[kReportFive], 1u);
}
} // namespace feedback

Powered by Google App Engine
This is Rietveld 408576698