Chromium Code Reviews| Index: chrome/browser/chromeos/policy/system_log_uploader_unittest.cc |
| diff --git a/chrome/browser/chromeos/policy/system_log_uploader_unittest.cc b/chrome/browser/chromeos/policy/system_log_uploader_unittest.cc |
| index a1e16e7b76d817fac13fac6d8c75bc02eee4eb8a..f4cc10fcdff54d5cf4f4da8ba0fba752d9113070 100644 |
| --- a/chrome/browser/chromeos/policy/system_log_uploader_unittest.cc |
| +++ b/chrome/browser/chromeos/policy/system_log_uploader_unittest.cc |
| @@ -6,6 +6,9 @@ |
| #include "base/test/test_simple_task_runner.h" |
| #include "base/time/time.h" |
| #include "chrome/browser/chromeos/policy/system_log_uploader.h" |
| +#include "chrome/browser/chromeos/settings/scoped_cros_settings_test_helper.h" |
| +#include "content/public/test/test_browser_thread_bundle.h" |
| +#include "content/public/test/test_utils.h" |
| #include "net/http/http_request_headers.h" |
| #include "testing/gmock/include/gmock/gmock.h" |
| @@ -110,6 +113,7 @@ class MockSystemLogDelegate : public SystemLogUploader::Delegate { |
| ~MockSystemLogDelegate() override {} |
| void LoadSystemLogs(const LogUploadCallback& upload_callback) override { |
| + EXPECT_TRUE(is_upload_allowed_); |
| upload_callback.Run( |
| make_scoped_ptr(new SystemLogUploader::SystemLogs(system_logs_))); |
| } |
| @@ -121,7 +125,12 @@ class MockSystemLogDelegate : public SystemLogUploader::Delegate { |
| system_logs_.size())); |
| } |
| + void set_upload_allowed(bool is_upload_allowed) { |
| + is_upload_allowed_ = is_upload_allowed; |
| + } |
| + |
| private: |
| + bool is_upload_allowed_; |
| bool is_upload_error_; |
| SystemLogUploader::SystemLogs system_logs_; |
| }; |
| @@ -132,6 +141,15 @@ class SystemLogUploaderTest : public testing::Test { |
| public: |
| SystemLogUploaderTest() : task_runner_(new base::TestSimpleTaskRunner()) {} |
| + void SetUp() override { |
| + settings_helper_.ReplaceProvider(chromeos::kLogUploadEnabled); |
| + } |
| + |
| + void TearDown() override { |
| + settings_helper_.RestoreProvider(); |
| + content::RunAllBlockingPoolTasksUntilIdle(); |
| + } |
| + |
| // Given a pending task to upload system logs. |
| void RunPendingUploadTaskAndCheckNext(const SystemLogUploader& uploader, |
| base::TimeDelta expected_delay) { |
| @@ -156,16 +174,36 @@ class SystemLogUploaderTest : public testing::Test { |
| EXPECT_GE(next_task, uploader.last_upload_attempt() + expected_delay); |
| } |
| + protected: |
| + content::TestBrowserThreadBundle thread_bundle_; |
| + chromeos::ScopedCrosSettingsTestHelper settings_helper_; |
| scoped_refptr<base::TestSimpleTaskRunner> task_runner_; |
| }; |
| +// Turn off system log uploads. |
| +TEST_F(SystemLogUploaderTest, Basic) { |
| + EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); |
| + |
| + scoped_ptr<MockSystemLogDelegate> syslog_delegate( |
| + new MockSystemLogDelegate(false, SystemLogUploader::SystemLogs())); |
| + syslog_delegate->set_upload_allowed(false); |
| + SystemLogUploader uploader(syslog_delegate.Pass(), task_runner_); |
| + |
| + settings_helper_.SetBoolean(chromeos::kLogUploadEnabled, false); |
|
Andrew T Wilson (Slow)
2015/08/13 15:03:20
Remove this line to make sure we default to false.
|
| + |
| + task_runner_->RunPendingTasks(); |
| +} |
| + |
| // One success task pending. |
| TEST_F(SystemLogUploaderTest, SuccessTest) { |
| EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); |
| - SystemLogUploader uploader(make_scoped_ptr(new MockSystemLogDelegate( |
| - false, SystemLogUploader::SystemLogs())), |
| - task_runner_); |
| + scoped_ptr<MockSystemLogDelegate> syslog_delegate( |
| + new MockSystemLogDelegate(false, SystemLogUploader::SystemLogs())); |
| + syslog_delegate->set_upload_allowed(true); |
| + SystemLogUploader uploader(syslog_delegate.Pass(), task_runner_); |
| + |
| + settings_helper_.SetBoolean(chromeos::kLogUploadEnabled, true); |
| EXPECT_EQ(1U, task_runner_->GetPendingTasks().size()); |
| @@ -178,10 +216,12 @@ TEST_F(SystemLogUploaderTest, SuccessTest) { |
| TEST_F(SystemLogUploaderTest, ThreeFailureTest) { |
| EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); |
| - SystemLogUploader uploader(make_scoped_ptr(new MockSystemLogDelegate( |
| - true, SystemLogUploader::SystemLogs())), |
| - task_runner_); |
| + scoped_ptr<MockSystemLogDelegate> syslog_delegate( |
| + new MockSystemLogDelegate(true, SystemLogUploader::SystemLogs())); |
| + syslog_delegate->set_upload_allowed(true); |
| + SystemLogUploader uploader(syslog_delegate.Pass(), task_runner_); |
| + settings_helper_.SetBoolean(chromeos::kLogUploadEnabled, true); |
| EXPECT_EQ(1U, task_runner_->GetPendingTasks().size()); |
| // Do not retry two times consequentially. |
| @@ -203,9 +243,12 @@ TEST_F(SystemLogUploaderTest, CheckHeaders) { |
| EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); |
| SystemLogUploader::SystemLogs system_logs = GenerateTestSystemLogFiles(); |
| - SystemLogUploader uploader( |
| - make_scoped_ptr(new MockSystemLogDelegate(false, system_logs)), |
| - task_runner_); |
| + scoped_ptr<MockSystemLogDelegate> syslog_delegate( |
| + new MockSystemLogDelegate(false, system_logs)); |
| + syslog_delegate->set_upload_allowed(true); |
| + SystemLogUploader uploader(syslog_delegate.Pass(), task_runner_); |
| + |
| + settings_helper_.SetBoolean(chromeos::kLogUploadEnabled, true); |
| EXPECT_EQ(1U, task_runner_->GetPendingTasks().size()); |
| @@ -214,4 +257,35 @@ TEST_F(SystemLogUploaderTest, CheckHeaders) { |
| SystemLogUploader::kDefaultUploadDelayMs)); |
| } |
| +// Disable system log uploads after one failed log upload. |
| +TEST_F(SystemLogUploaderTest, DisableLogUpload) { |
| + EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); |
| + |
| + scoped_ptr<MockSystemLogDelegate> syslog_delegate( |
| + new MockSystemLogDelegate(true, SystemLogUploader::SystemLogs())); |
| + MockSystemLogDelegate* mock_delegate = syslog_delegate.get(); |
| + SystemLogUploader uploader(syslog_delegate.Pass(), task_runner_); |
| + |
| + settings_helper_.SetBoolean(chromeos::kLogUploadEnabled, true); |
| + mock_delegate->set_upload_allowed(true); |
| + |
| + EXPECT_EQ(1U, task_runner_->GetPendingTasks().size()); |
| + RunPendingUploadTaskAndCheckNext(uploader, |
| + base::TimeDelta::FromMilliseconds( |
| + SystemLogUploader::kErrorUploadDelayMs)); |
| + |
| + // Disable log upload and check that frequency is usual, because there is no |
| + // errors, we should not upload logs. |
| + settings_helper_.SetBoolean(chromeos::kLogUploadEnabled, false); |
| + mock_delegate->set_upload_allowed(false); |
| + task_runner_->RunPendingTasks(); |
| + |
| + RunPendingUploadTaskAndCheckNext( |
| + uploader, base::TimeDelta::FromMilliseconds( |
| + SystemLogUploader::kDefaultUploadDelayMs)); |
| + RunPendingUploadTaskAndCheckNext( |
| + uploader, base::TimeDelta::FromMilliseconds( |
| + SystemLogUploader::kDefaultUploadDelayMs)); |
| +} |
| + |
| } // namespace policy |