OLD | NEW |
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/chromeos/policy/system_log_uploader.h" | 5 #include "chrome/browser/chromeos/policy/system_log_uploader.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
10 #include "base/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 content::RunAllBlockingPoolTasksUntilIdle(); | 155 content::RunAllBlockingPoolTasksUntilIdle(); |
156 } | 156 } |
157 | 157 |
158 // Given a pending task to upload system logs. | 158 // Given a pending task to upload system logs. |
159 void RunPendingUploadTaskAndCheckNext(const SystemLogUploader& uploader, | 159 void RunPendingUploadTaskAndCheckNext(const SystemLogUploader& uploader, |
160 base::TimeDelta expected_delay) { | 160 base::TimeDelta expected_delay) { |
161 EXPECT_FALSE(task_runner_->GetPendingTasks().empty()); | 161 EXPECT_FALSE(task_runner_->GetPendingTasks().empty()); |
162 task_runner_->RunPendingTasks(); | 162 task_runner_->RunPendingTasks(); |
163 | 163 |
164 // The previous task should have uploaded another log upload task. | 164 // The previous task should have uploaded another log upload task. |
165 EXPECT_EQ(1U, task_runner_->GetPendingTasks().size()); | 165 EXPECT_EQ(1U, task_runner_->NumPendingTasks()); |
166 | 166 |
167 CheckPendingTaskDelay(uploader, expected_delay); | 167 CheckPendingTaskDelay(uploader, expected_delay); |
168 } | 168 } |
169 | 169 |
170 void CheckPendingTaskDelay(const SystemLogUploader& uploader, | 170 void CheckPendingTaskDelay(const SystemLogUploader& uploader, |
171 base::TimeDelta expected_delay) { | 171 base::TimeDelta expected_delay) { |
172 // The next task should be scheduled sometime between | 172 // The next task should be scheduled sometime between |
173 // |last_upload_attempt| + |expected_delay| and | 173 // |last_upload_attempt| + |expected_delay| and |
174 // |now| + |expected_delay|. | 174 // |now| + |expected_delay|. |
175 base::Time now = base::Time::NowFromSystemTime(); | 175 base::Time now = base::Time::NowFromSystemTime(); |
(...skipping 24 matching lines...) Expand all Loading... |
200 // One success task pending. | 200 // One success task pending. |
201 TEST_F(SystemLogUploaderTest, SuccessTest) { | 201 TEST_F(SystemLogUploaderTest, SuccessTest) { |
202 EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); | 202 EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); |
203 | 203 |
204 std::unique_ptr<MockSystemLogDelegate> syslog_delegate( | 204 std::unique_ptr<MockSystemLogDelegate> syslog_delegate( |
205 new MockSystemLogDelegate(false, SystemLogUploader::SystemLogs())); | 205 new MockSystemLogDelegate(false, SystemLogUploader::SystemLogs())); |
206 syslog_delegate->set_upload_allowed(true); | 206 syslog_delegate->set_upload_allowed(true); |
207 settings_helper_.SetBoolean(chromeos::kSystemLogUploadEnabled, true); | 207 settings_helper_.SetBoolean(chromeos::kSystemLogUploadEnabled, true); |
208 SystemLogUploader uploader(std::move(syslog_delegate), task_runner_); | 208 SystemLogUploader uploader(std::move(syslog_delegate), task_runner_); |
209 | 209 |
210 EXPECT_EQ(1U, task_runner_->GetPendingTasks().size()); | 210 EXPECT_EQ(1U, task_runner_->NumPendingTasks()); |
211 | 211 |
212 RunPendingUploadTaskAndCheckNext( | 212 RunPendingUploadTaskAndCheckNext( |
213 uploader, base::TimeDelta::FromMilliseconds( | 213 uploader, base::TimeDelta::FromMilliseconds( |
214 SystemLogUploader::kDefaultUploadDelayMs)); | 214 SystemLogUploader::kDefaultUploadDelayMs)); |
215 } | 215 } |
216 | 216 |
217 // Three failed responses recieved. | 217 // Three failed responses recieved. |
218 TEST_F(SystemLogUploaderTest, ThreeFailureTest) { | 218 TEST_F(SystemLogUploaderTest, ThreeFailureTest) { |
219 EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); | 219 EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); |
220 | 220 |
221 std::unique_ptr<MockSystemLogDelegate> syslog_delegate( | 221 std::unique_ptr<MockSystemLogDelegate> syslog_delegate( |
222 new MockSystemLogDelegate(true, SystemLogUploader::SystemLogs())); | 222 new MockSystemLogDelegate(true, SystemLogUploader::SystemLogs())); |
223 syslog_delegate->set_upload_allowed(true); | 223 syslog_delegate->set_upload_allowed(true); |
224 settings_helper_.SetBoolean(chromeos::kSystemLogUploadEnabled, true); | 224 settings_helper_.SetBoolean(chromeos::kSystemLogUploadEnabled, true); |
225 SystemLogUploader uploader(std::move(syslog_delegate), task_runner_); | 225 SystemLogUploader uploader(std::move(syslog_delegate), task_runner_); |
226 | 226 |
227 EXPECT_EQ(1U, task_runner_->GetPendingTasks().size()); | 227 EXPECT_EQ(1U, task_runner_->NumPendingTasks()); |
228 | 228 |
229 // Do not retry two times consequentially. | 229 // Do not retry two times consequentially. |
230 RunPendingUploadTaskAndCheckNext(uploader, | 230 RunPendingUploadTaskAndCheckNext(uploader, |
231 base::TimeDelta::FromMilliseconds( | 231 base::TimeDelta::FromMilliseconds( |
232 SystemLogUploader::kErrorUploadDelayMs)); | 232 SystemLogUploader::kErrorUploadDelayMs)); |
233 // We are using the kDefaultUploadDelayMs and not the kErrorUploadDelayMs here | 233 // We are using the kDefaultUploadDelayMs and not the kErrorUploadDelayMs here |
234 // because there's just one retry. | 234 // because there's just one retry. |
235 RunPendingUploadTaskAndCheckNext( | 235 RunPendingUploadTaskAndCheckNext( |
236 uploader, base::TimeDelta::FromMilliseconds( | 236 uploader, base::TimeDelta::FromMilliseconds( |
237 SystemLogUploader::kDefaultUploadDelayMs)); | 237 SystemLogUploader::kDefaultUploadDelayMs)); |
238 RunPendingUploadTaskAndCheckNext(uploader, | 238 RunPendingUploadTaskAndCheckNext(uploader, |
239 base::TimeDelta::FromMilliseconds( | 239 base::TimeDelta::FromMilliseconds( |
240 SystemLogUploader::kErrorUploadDelayMs)); | 240 SystemLogUploader::kErrorUploadDelayMs)); |
241 } | 241 } |
242 | 242 |
243 // Check header fields of system log files to upload. | 243 // Check header fields of system log files to upload. |
244 TEST_F(SystemLogUploaderTest, CheckHeaders) { | 244 TEST_F(SystemLogUploaderTest, CheckHeaders) { |
245 EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); | 245 EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); |
246 | 246 |
247 SystemLogUploader::SystemLogs system_logs = GenerateTestSystemLogFiles(); | 247 SystemLogUploader::SystemLogs system_logs = GenerateTestSystemLogFiles(); |
248 std::unique_ptr<MockSystemLogDelegate> syslog_delegate( | 248 std::unique_ptr<MockSystemLogDelegate> syslog_delegate( |
249 new MockSystemLogDelegate(false, system_logs)); | 249 new MockSystemLogDelegate(false, system_logs)); |
250 syslog_delegate->set_upload_allowed(true); | 250 syslog_delegate->set_upload_allowed(true); |
251 settings_helper_.SetBoolean(chromeos::kSystemLogUploadEnabled, true); | 251 settings_helper_.SetBoolean(chromeos::kSystemLogUploadEnabled, true); |
252 SystemLogUploader uploader(std::move(syslog_delegate), task_runner_); | 252 SystemLogUploader uploader(std::move(syslog_delegate), task_runner_); |
253 | 253 |
254 EXPECT_EQ(1U, task_runner_->GetPendingTasks().size()); | 254 EXPECT_EQ(1U, task_runner_->NumPendingTasks()); |
255 | 255 |
256 RunPendingUploadTaskAndCheckNext( | 256 RunPendingUploadTaskAndCheckNext( |
257 uploader, base::TimeDelta::FromMilliseconds( | 257 uploader, base::TimeDelta::FromMilliseconds( |
258 SystemLogUploader::kDefaultUploadDelayMs)); | 258 SystemLogUploader::kDefaultUploadDelayMs)); |
259 } | 259 } |
260 | 260 |
261 // Disable system log uploads after one failed log upload. | 261 // Disable system log uploads after one failed log upload. |
262 TEST_F(SystemLogUploaderTest, DisableLogUpload) { | 262 TEST_F(SystemLogUploaderTest, DisableLogUpload) { |
263 EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); | 263 EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); |
264 | 264 |
265 std::unique_ptr<MockSystemLogDelegate> syslog_delegate( | 265 std::unique_ptr<MockSystemLogDelegate> syslog_delegate( |
266 new MockSystemLogDelegate(true, SystemLogUploader::SystemLogs())); | 266 new MockSystemLogDelegate(true, SystemLogUploader::SystemLogs())); |
267 MockSystemLogDelegate* mock_delegate = syslog_delegate.get(); | 267 MockSystemLogDelegate* mock_delegate = syslog_delegate.get(); |
268 settings_helper_.SetBoolean(chromeos::kSystemLogUploadEnabled, true); | 268 settings_helper_.SetBoolean(chromeos::kSystemLogUploadEnabled, true); |
269 mock_delegate->set_upload_allowed(true); | 269 mock_delegate->set_upload_allowed(true); |
270 SystemLogUploader uploader(std::move(syslog_delegate), task_runner_); | 270 SystemLogUploader uploader(std::move(syslog_delegate), task_runner_); |
271 | 271 |
272 EXPECT_EQ(1U, task_runner_->GetPendingTasks().size()); | 272 EXPECT_EQ(1U, task_runner_->NumPendingTasks()); |
273 RunPendingUploadTaskAndCheckNext(uploader, | 273 RunPendingUploadTaskAndCheckNext(uploader, |
274 base::TimeDelta::FromMilliseconds( | 274 base::TimeDelta::FromMilliseconds( |
275 SystemLogUploader::kErrorUploadDelayMs)); | 275 SystemLogUploader::kErrorUploadDelayMs)); |
276 | 276 |
277 // Disable log upload and check that frequency is usual, because there is no | 277 // Disable log upload and check that frequency is usual, because there is no |
278 // errors, we should not upload logs. | 278 // errors, we should not upload logs. |
279 settings_helper_.SetBoolean(chromeos::kSystemLogUploadEnabled, false); | 279 settings_helper_.SetBoolean(chromeos::kSystemLogUploadEnabled, false); |
280 mock_delegate->set_upload_allowed(false); | 280 mock_delegate->set_upload_allowed(false); |
281 task_runner_->RunPendingTasks(); | 281 task_runner_->RunPendingTasks(); |
282 | 282 |
(...skipping 28 matching lines...) Expand all Loading... |
311 "<IPv4: 1>55\n" | 311 "<IPv4: 1>55\n" |
312 "aaaa<IPv4: 2>aaa\n" | 312 "aaaa<IPv4: 2>aaa\n" |
313 "11:11;<IPv6: 1>\n" | 313 "11:11;<IPv6: 1>\n" |
314 "<IPv6: 1>\n" | 314 "<IPv6: 1>\n" |
315 "11:11:abcdef:0:0:0:0:0\n" | 315 "11:11:abcdef:0:0:0:0:0\n" |
316 "aa:aa:aa:00:00:01"; | 316 "aa:aa:aa:00:00:01"; |
317 EXPECT_EQ(result, SystemLogUploader::RemoveSensitiveData(&anonymizer, data)); | 317 EXPECT_EQ(result, SystemLogUploader::RemoveSensitiveData(&anonymizer, data)); |
318 } | 318 } |
319 | 319 |
320 } // namespace policy | 320 } // namespace policy |
OLD | NEW |