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..ee006cd7b334236f62450dc98be5073d9085b881 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,33 @@ 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_; |
}; |
+// Check disabled system log uploads by default. |
+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_); |
+ |
+ 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); |
+ settings_helper_.SetBoolean(chromeos::kLogUploadEnabled, true); |
+ SystemLogUploader uploader(syslog_delegate.Pass(), task_runner_); |
EXPECT_EQ(1U, task_runner_->GetPendingTasks().size()); |
@@ -178,9 +213,11 @@ 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); |
+ settings_helper_.SetBoolean(chromeos::kLogUploadEnabled, true); |
+ SystemLogUploader uploader(syslog_delegate.Pass(), task_runner_); |
EXPECT_EQ(1U, task_runner_->GetPendingTasks().size()); |
@@ -203,9 +240,11 @@ 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); |
+ settings_helper_.SetBoolean(chromeos::kLogUploadEnabled, true); |
+ SystemLogUploader uploader(syslog_delegate.Pass(), task_runner_); |
EXPECT_EQ(1U, task_runner_->GetPendingTasks().size()); |
@@ -214,4 +253,34 @@ 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(); |
+ settings_helper_.SetBoolean(chromeos::kLogUploadEnabled, true); |
+ mock_delegate->set_upload_allowed(true); |
+ SystemLogUploader uploader(syslog_delegate.Pass(), task_runner_); |
+ |
+ 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 |