Chromium Code Reviews| 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 |