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

Unified Diff: chrome/browser/chromeos/policy/system_log_uploader_unittest.cc

Issue 1280003004: Added policy to disable/enable a system log upload. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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: 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..756f722dfd235b2eea0585ac966e2a5ce53f1a98 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,20 +141,20 @@ class SystemLogUploaderTest : public testing::Test {
public:
SystemLogUploaderTest() : task_runner_(new base::TestSimpleTaskRunner()) {}
+ void TearDown() override { content::RunAllBlockingPoolTasksUntilIdle(); }
+
// Given a pending task to upload system logs.
- void RunPendingUploadTaskAndCheckNext(const SystemLogUploader& uploader,
- base::TimeDelta expected_delay) {
+ void RunPendingUploadTaskAndCheckNext(base::TimeDelta expected_delay) {
EXPECT_FALSE(task_runner_->GetPendingTasks().empty());
task_runner_->RunPendingTasks();
// The previous task should have uploaded another log upload task.
EXPECT_EQ(1U, task_runner_->GetPendingTasks().size());
- CheckPendingTaskDelay(uploader, expected_delay);
+ CheckPendingTaskDelay(expected_delay);
}
- void CheckPendingTaskDelay(const SystemLogUploader& uploader,
- base::TimeDelta expected_delay) {
+ void CheckPendingTaskDelay(base::TimeDelta expected_delay) {
// The next task should be scheduled sometime between
// |last_upload_attempt| + |expected_delay| and
// |now| + |expected_delay|.
@@ -153,49 +162,81 @@ class SystemLogUploaderTest : public testing::Test {
base::Time next_task = now + task_runner_->NextPendingTaskDelay();
EXPECT_LE(next_task, now + expected_delay);
- EXPECT_GE(next_task, uploader.last_upload_attempt() + expected_delay);
+ EXPECT_GE(next_task, uploader_->last_upload_attempt() + expected_delay);
}
+ void InitTestCase(scoped_ptr<MockSystemLogDelegate> delegate) {
+ // Replace settings provider must be after observer creation in the system
Andrew T Wilson (Slow) 2015/08/13 11:26:18 Why is the ordering important? I'm not sure I unde
Polina Bondarenko 2015/08/13 14:51:16 Yes, you're right, it's not important, removed it.
+ // log uploader's constructor.
+ uploader_.reset(new SystemLogUploader(delegate.Pass(), task_runner_));
+ settings_helper_.ReplaceProvider(chromeos::kLogUploadEnabled);
+ }
+
+ void DestroyTestCase() { settings_helper_.RestoreProvider(); }
+
+ protected:
+ content::TestBrowserThreadBundle thread_bundle_;
+ chromeos::ScopedCrosSettingsTestHelper settings_helper_;
scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
+ scoped_ptr<SystemLogUploader> uploader_;
};
+// 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);
+ InitTestCase(syslog_delegate.Pass());
Andrew T Wilson (Slow) 2015/08/13 11:26:18 It's a bit weird to have this Init/DestroyTestCase
Polina Bondarenko 2015/08/13 14:51:17 Yes, it's possible, done.
+
+ settings_helper_.SetBoolean(chromeos::kLogUploadEnabled, false);
+
+ task_runner_->RunPendingTasks();
+ DestroyTestCase();
+}
+
// 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);
+ InitTestCase(syslog_delegate.Pass());
+
+ settings_helper_.SetBoolean(chromeos::kLogUploadEnabled, true);
EXPECT_EQ(1U, task_runner_->GetPendingTasks().size());
- RunPendingUploadTaskAndCheckNext(
- uploader, base::TimeDelta::FromMilliseconds(
- SystemLogUploader::kDefaultUploadDelayMs));
+ RunPendingUploadTaskAndCheckNext(base::TimeDelta::FromMilliseconds(
+ SystemLogUploader::kDefaultUploadDelayMs));
+ DestroyTestCase();
}
// Three failed responses recieved.
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);
+
+ InitTestCase(syslog_delegate.Pass());
+ settings_helper_.SetBoolean(chromeos::kLogUploadEnabled, true);
EXPECT_EQ(1U, task_runner_->GetPendingTasks().size());
// Do not retry two times consequentially.
- RunPendingUploadTaskAndCheckNext(uploader,
- base::TimeDelta::FromMilliseconds(
- SystemLogUploader::kErrorUploadDelayMs));
+ RunPendingUploadTaskAndCheckNext(base::TimeDelta::FromMilliseconds(
+ SystemLogUploader::kErrorUploadDelayMs));
// We are using the kDefaultUploadDelayMs and not the kErrorUploadDelayMs here
// because there's just one retry.
- RunPendingUploadTaskAndCheckNext(
- uploader, base::TimeDelta::FromMilliseconds(
- SystemLogUploader::kDefaultUploadDelayMs));
- RunPendingUploadTaskAndCheckNext(uploader,
- base::TimeDelta::FromMilliseconds(
- SystemLogUploader::kErrorUploadDelayMs));
+ RunPendingUploadTaskAndCheckNext(base::TimeDelta::FromMilliseconds(
+ SystemLogUploader::kDefaultUploadDelayMs));
+ RunPendingUploadTaskAndCheckNext(base::TimeDelta::FromMilliseconds(
+ SystemLogUploader::kErrorUploadDelayMs));
+ DestroyTestCase();
}
// Check header fields of system log files to upload.
@@ -203,15 +244,47 @@ 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);
+ InitTestCase(syslog_delegate.Pass());
+
+ settings_helper_.SetBoolean(chromeos::kLogUploadEnabled, true);
EXPECT_EQ(1U, task_runner_->GetPendingTasks().size());
- RunPendingUploadTaskAndCheckNext(
- uploader, base::TimeDelta::FromMilliseconds(
- SystemLogUploader::kDefaultUploadDelayMs));
+ RunPendingUploadTaskAndCheckNext(base::TimeDelta::FromMilliseconds(
+ SystemLogUploader::kDefaultUploadDelayMs));
+ DestroyTestCase();
+}
+
+// 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();
+ InitTestCase(syslog_delegate.Pass());
+
+ settings_helper_.SetBoolean(chromeos::kLogUploadEnabled, true);
+ mock_delegate->set_upload_allowed(true);
+
+ EXPECT_EQ(1U, task_runner_->GetPendingTasks().size());
+ RunPendingUploadTaskAndCheckNext(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(base::TimeDelta::FromMilliseconds(
+ SystemLogUploader::kDefaultUploadDelayMs));
+ RunPendingUploadTaskAndCheckNext(base::TimeDelta::FromMilliseconds(
+ SystemLogUploader::kDefaultUploadDelayMs));
+ DestroyTestCase();
}
} // namespace policy
« no previous file with comments | « chrome/browser/chromeos/policy/system_log_uploader.cc ('k') | chrome/browser/chromeos/settings/device_settings_provider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698