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/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" |
10 #include "base/test/test_simple_task_runner.h" | 11 #include "base/test/test_simple_task_runner.h" |
11 #include "base/time/time.h" | 12 #include "base/time/time.h" |
12 #include "chrome/browser/chromeos/settings/scoped_cros_settings_test_helper.h" | 13 #include "chrome/browser/chromeos/settings/scoped_cros_settings_test_helper.h" |
13 #include "components/feedback/anonymizer_tool.h" | 14 #include "components/feedback/anonymizer_tool.h" |
14 #include "content/public/test/test_browser_thread_bundle.h" | 15 #include "content/public/test/test_browser_thread_bundle.h" |
15 #include "content/public/test/test_utils.h" | 16 #include "content/public/test/test_utils.h" |
16 #include "net/http/http_request_headers.h" | 17 #include "net/http/http_request_headers.h" |
17 #include "testing/gmock/include/gmock/gmock.h" | 18 #include "testing/gmock/include/gmock/gmock.h" |
18 | 19 |
(...skipping 20 matching lines...) Expand all Loading... |
39 MockUploadJob(const GURL& upload_url, | 40 MockUploadJob(const GURL& upload_url, |
40 UploadJob::Delegate* delegate, | 41 UploadJob::Delegate* delegate, |
41 bool is_upload_error, | 42 bool is_upload_error, |
42 int max_files); | 43 int max_files); |
43 ~MockUploadJob() override; | 44 ~MockUploadJob() override; |
44 | 45 |
45 // policy::UploadJob: | 46 // policy::UploadJob: |
46 void AddDataSegment(const std::string& name, | 47 void AddDataSegment(const std::string& name, |
47 const std::string& filename, | 48 const std::string& filename, |
48 const std::map<std::string, std::string>& header_entries, | 49 const std::map<std::string, std::string>& header_entries, |
49 scoped_ptr<std::string> data) override; | 50 std::unique_ptr<std::string> data) override; |
50 void Start() override; | 51 void Start() override; |
51 | 52 |
52 protected: | 53 protected: |
53 UploadJob::Delegate* delegate_; | 54 UploadJob::Delegate* delegate_; |
54 bool is_upload_error_; | 55 bool is_upload_error_; |
55 int file_index_; | 56 int file_index_; |
56 int max_files_; | 57 int max_files_; |
57 }; | 58 }; |
58 | 59 |
59 MockUploadJob::MockUploadJob(const GURL& upload_url, | 60 MockUploadJob::MockUploadJob(const GURL& upload_url, |
60 UploadJob::Delegate* delegate, | 61 UploadJob::Delegate* delegate, |
61 bool is_upload_error, | 62 bool is_upload_error, |
62 int max_files) | 63 int max_files) |
63 : delegate_(delegate), | 64 : delegate_(delegate), |
64 is_upload_error_(is_upload_error), | 65 is_upload_error_(is_upload_error), |
65 file_index_(0), | 66 file_index_(0), |
66 max_files_(max_files) {} | 67 max_files_(max_files) {} |
67 | 68 |
68 MockUploadJob::~MockUploadJob() {} | 69 MockUploadJob::~MockUploadJob() {} |
69 | 70 |
70 void MockUploadJob::AddDataSegment( | 71 void MockUploadJob::AddDataSegment( |
71 const std::string& name, | 72 const std::string& name, |
72 const std::string& filename, | 73 const std::string& filename, |
73 const std::map<std::string, std::string>& header_entries, | 74 const std::map<std::string, std::string>& header_entries, |
74 scoped_ptr<std::string> data) { | 75 std::unique_ptr<std::string> data) { |
75 // Test all fields to upload. | 76 // Test all fields to upload. |
76 EXPECT_LT(file_index_, max_files_); | 77 EXPECT_LT(file_index_, max_files_); |
77 EXPECT_GE(file_index_, 0); | 78 EXPECT_GE(file_index_, 0); |
78 | 79 |
79 EXPECT_EQ(base::StringPrintf(SystemLogUploader::kNameFieldTemplate, | 80 EXPECT_EQ(base::StringPrintf(SystemLogUploader::kNameFieldTemplate, |
80 file_index_ + 1), | 81 file_index_ + 1), |
81 name); | 82 name); |
82 | 83 |
83 EXPECT_EQ(kTestSystemLogFileNames[file_index_], filename); | 84 EXPECT_EQ(kTestSystemLogFileNames[file_index_], filename); |
84 | 85 |
(...skipping 27 matching lines...) Expand all Loading... |
112 class MockSystemLogDelegate : public SystemLogUploader::Delegate { | 113 class MockSystemLogDelegate : public SystemLogUploader::Delegate { |
113 public: | 114 public: |
114 MockSystemLogDelegate(bool is_upload_error, | 115 MockSystemLogDelegate(bool is_upload_error, |
115 const SystemLogUploader::SystemLogs& system_logs) | 116 const SystemLogUploader::SystemLogs& system_logs) |
116 : is_upload_error_(is_upload_error), system_logs_(system_logs) {} | 117 : is_upload_error_(is_upload_error), system_logs_(system_logs) {} |
117 ~MockSystemLogDelegate() override {} | 118 ~MockSystemLogDelegate() override {} |
118 | 119 |
119 void LoadSystemLogs(const LogUploadCallback& upload_callback) override { | 120 void LoadSystemLogs(const LogUploadCallback& upload_callback) override { |
120 EXPECT_TRUE(is_upload_allowed_); | 121 EXPECT_TRUE(is_upload_allowed_); |
121 upload_callback.Run( | 122 upload_callback.Run( |
122 make_scoped_ptr(new SystemLogUploader::SystemLogs(system_logs_))); | 123 base::WrapUnique(new SystemLogUploader::SystemLogs(system_logs_))); |
123 } | 124 } |
124 | 125 |
125 scoped_ptr<UploadJob> CreateUploadJob( | 126 std::unique_ptr<UploadJob> CreateUploadJob( |
126 const GURL& url, | 127 const GURL& url, |
127 UploadJob::Delegate* delegate) override { | 128 UploadJob::Delegate* delegate) override { |
128 return make_scoped_ptr(new MockUploadJob(url, delegate, is_upload_error_, | 129 return base::WrapUnique(new MockUploadJob(url, delegate, is_upload_error_, |
129 system_logs_.size())); | 130 system_logs_.size())); |
130 } | 131 } |
131 | 132 |
132 void set_upload_allowed(bool is_upload_allowed) { | 133 void set_upload_allowed(bool is_upload_allowed) { |
133 is_upload_allowed_ = is_upload_allowed; | 134 is_upload_allowed_ = is_upload_allowed; |
134 } | 135 } |
135 | 136 |
136 private: | 137 private: |
137 bool is_upload_allowed_; | 138 bool is_upload_allowed_; |
138 bool is_upload_error_; | 139 bool is_upload_error_; |
139 SystemLogUploader::SystemLogs system_logs_; | 140 SystemLogUploader::SystemLogs system_logs_; |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 protected: | 182 protected: |
182 content::TestBrowserThreadBundle thread_bundle_; | 183 content::TestBrowserThreadBundle thread_bundle_; |
183 chromeos::ScopedCrosSettingsTestHelper settings_helper_; | 184 chromeos::ScopedCrosSettingsTestHelper settings_helper_; |
184 scoped_refptr<base::TestSimpleTaskRunner> task_runner_; | 185 scoped_refptr<base::TestSimpleTaskRunner> task_runner_; |
185 }; | 186 }; |
186 | 187 |
187 // Check disabled system log uploads by default. | 188 // Check disabled system log uploads by default. |
188 TEST_F(SystemLogUploaderTest, Basic) { | 189 TEST_F(SystemLogUploaderTest, Basic) { |
189 EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); | 190 EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); |
190 | 191 |
191 scoped_ptr<MockSystemLogDelegate> syslog_delegate( | 192 std::unique_ptr<MockSystemLogDelegate> syslog_delegate( |
192 new MockSystemLogDelegate(false, SystemLogUploader::SystemLogs())); | 193 new MockSystemLogDelegate(false, SystemLogUploader::SystemLogs())); |
193 syslog_delegate->set_upload_allowed(false); | 194 syslog_delegate->set_upload_allowed(false); |
194 SystemLogUploader uploader(std::move(syslog_delegate), task_runner_); | 195 SystemLogUploader uploader(std::move(syslog_delegate), task_runner_); |
195 | 196 |
196 task_runner_->RunPendingTasks(); | 197 task_runner_->RunPendingTasks(); |
197 } | 198 } |
198 | 199 |
199 // One success task pending. | 200 // One success task pending. |
200 TEST_F(SystemLogUploaderTest, SuccessTest) { | 201 TEST_F(SystemLogUploaderTest, SuccessTest) { |
201 EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); | 202 EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); |
202 | 203 |
203 scoped_ptr<MockSystemLogDelegate> syslog_delegate( | 204 std::unique_ptr<MockSystemLogDelegate> syslog_delegate( |
204 new MockSystemLogDelegate(false, SystemLogUploader::SystemLogs())); | 205 new MockSystemLogDelegate(false, SystemLogUploader::SystemLogs())); |
205 syslog_delegate->set_upload_allowed(true); | 206 syslog_delegate->set_upload_allowed(true); |
206 settings_helper_.SetBoolean(chromeos::kSystemLogUploadEnabled, true); | 207 settings_helper_.SetBoolean(chromeos::kSystemLogUploadEnabled, true); |
207 SystemLogUploader uploader(std::move(syslog_delegate), task_runner_); | 208 SystemLogUploader uploader(std::move(syslog_delegate), task_runner_); |
208 | 209 |
209 EXPECT_EQ(1U, task_runner_->GetPendingTasks().size()); | 210 EXPECT_EQ(1U, task_runner_->GetPendingTasks().size()); |
210 | 211 |
211 RunPendingUploadTaskAndCheckNext( | 212 RunPendingUploadTaskAndCheckNext( |
212 uploader, base::TimeDelta::FromMilliseconds( | 213 uploader, base::TimeDelta::FromMilliseconds( |
213 SystemLogUploader::kDefaultUploadDelayMs)); | 214 SystemLogUploader::kDefaultUploadDelayMs)); |
214 } | 215 } |
215 | 216 |
216 // Three failed responses recieved. | 217 // Three failed responses recieved. |
217 TEST_F(SystemLogUploaderTest, ThreeFailureTest) { | 218 TEST_F(SystemLogUploaderTest, ThreeFailureTest) { |
218 EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); | 219 EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); |
219 | 220 |
220 scoped_ptr<MockSystemLogDelegate> syslog_delegate( | 221 std::unique_ptr<MockSystemLogDelegate> syslog_delegate( |
221 new MockSystemLogDelegate(true, SystemLogUploader::SystemLogs())); | 222 new MockSystemLogDelegate(true, SystemLogUploader::SystemLogs())); |
222 syslog_delegate->set_upload_allowed(true); | 223 syslog_delegate->set_upload_allowed(true); |
223 settings_helper_.SetBoolean(chromeos::kSystemLogUploadEnabled, true); | 224 settings_helper_.SetBoolean(chromeos::kSystemLogUploadEnabled, true); |
224 SystemLogUploader uploader(std::move(syslog_delegate), task_runner_); | 225 SystemLogUploader uploader(std::move(syslog_delegate), task_runner_); |
225 | 226 |
226 EXPECT_EQ(1U, task_runner_->GetPendingTasks().size()); | 227 EXPECT_EQ(1U, task_runner_->GetPendingTasks().size()); |
227 | 228 |
228 // Do not retry two times consequentially. | 229 // Do not retry two times consequentially. |
229 RunPendingUploadTaskAndCheckNext(uploader, | 230 RunPendingUploadTaskAndCheckNext(uploader, |
230 base::TimeDelta::FromMilliseconds( | 231 base::TimeDelta::FromMilliseconds( |
231 SystemLogUploader::kErrorUploadDelayMs)); | 232 SystemLogUploader::kErrorUploadDelayMs)); |
232 // We are using the kDefaultUploadDelayMs and not the kErrorUploadDelayMs here | 233 // We are using the kDefaultUploadDelayMs and not the kErrorUploadDelayMs here |
233 // because there's just one retry. | 234 // because there's just one retry. |
234 RunPendingUploadTaskAndCheckNext( | 235 RunPendingUploadTaskAndCheckNext( |
235 uploader, base::TimeDelta::FromMilliseconds( | 236 uploader, base::TimeDelta::FromMilliseconds( |
236 SystemLogUploader::kDefaultUploadDelayMs)); | 237 SystemLogUploader::kDefaultUploadDelayMs)); |
237 RunPendingUploadTaskAndCheckNext(uploader, | 238 RunPendingUploadTaskAndCheckNext(uploader, |
238 base::TimeDelta::FromMilliseconds( | 239 base::TimeDelta::FromMilliseconds( |
239 SystemLogUploader::kErrorUploadDelayMs)); | 240 SystemLogUploader::kErrorUploadDelayMs)); |
240 } | 241 } |
241 | 242 |
242 // Check header fields of system log files to upload. | 243 // Check header fields of system log files to upload. |
243 TEST_F(SystemLogUploaderTest, CheckHeaders) { | 244 TEST_F(SystemLogUploaderTest, CheckHeaders) { |
244 EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); | 245 EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); |
245 | 246 |
246 SystemLogUploader::SystemLogs system_logs = GenerateTestSystemLogFiles(); | 247 SystemLogUploader::SystemLogs system_logs = GenerateTestSystemLogFiles(); |
247 scoped_ptr<MockSystemLogDelegate> syslog_delegate( | 248 std::unique_ptr<MockSystemLogDelegate> syslog_delegate( |
248 new MockSystemLogDelegate(false, system_logs)); | 249 new MockSystemLogDelegate(false, system_logs)); |
249 syslog_delegate->set_upload_allowed(true); | 250 syslog_delegate->set_upload_allowed(true); |
250 settings_helper_.SetBoolean(chromeos::kSystemLogUploadEnabled, true); | 251 settings_helper_.SetBoolean(chromeos::kSystemLogUploadEnabled, true); |
251 SystemLogUploader uploader(std::move(syslog_delegate), task_runner_); | 252 SystemLogUploader uploader(std::move(syslog_delegate), task_runner_); |
252 | 253 |
253 EXPECT_EQ(1U, task_runner_->GetPendingTasks().size()); | 254 EXPECT_EQ(1U, task_runner_->GetPendingTasks().size()); |
254 | 255 |
255 RunPendingUploadTaskAndCheckNext( | 256 RunPendingUploadTaskAndCheckNext( |
256 uploader, base::TimeDelta::FromMilliseconds( | 257 uploader, base::TimeDelta::FromMilliseconds( |
257 SystemLogUploader::kDefaultUploadDelayMs)); | 258 SystemLogUploader::kDefaultUploadDelayMs)); |
258 } | 259 } |
259 | 260 |
260 // Disable system log uploads after one failed log upload. | 261 // Disable system log uploads after one failed log upload. |
261 TEST_F(SystemLogUploaderTest, DisableLogUpload) { | 262 TEST_F(SystemLogUploaderTest, DisableLogUpload) { |
262 EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); | 263 EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); |
263 | 264 |
264 scoped_ptr<MockSystemLogDelegate> syslog_delegate( | 265 std::unique_ptr<MockSystemLogDelegate> syslog_delegate( |
265 new MockSystemLogDelegate(true, SystemLogUploader::SystemLogs())); | 266 new MockSystemLogDelegate(true, SystemLogUploader::SystemLogs())); |
266 MockSystemLogDelegate* mock_delegate = syslog_delegate.get(); | 267 MockSystemLogDelegate* mock_delegate = syslog_delegate.get(); |
267 settings_helper_.SetBoolean(chromeos::kSystemLogUploadEnabled, true); | 268 settings_helper_.SetBoolean(chromeos::kSystemLogUploadEnabled, true); |
268 mock_delegate->set_upload_allowed(true); | 269 mock_delegate->set_upload_allowed(true); |
269 SystemLogUploader uploader(std::move(syslog_delegate), task_runner_); | 270 SystemLogUploader uploader(std::move(syslog_delegate), task_runner_); |
270 | 271 |
271 EXPECT_EQ(1U, task_runner_->GetPendingTasks().size()); | 272 EXPECT_EQ(1U, task_runner_->GetPendingTasks().size()); |
272 RunPendingUploadTaskAndCheckNext(uploader, | 273 RunPendingUploadTaskAndCheckNext(uploader, |
273 base::TimeDelta::FromMilliseconds( | 274 base::TimeDelta::FromMilliseconds( |
274 SystemLogUploader::kErrorUploadDelayMs)); | 275 SystemLogUploader::kErrorUploadDelayMs)); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
310 "<IPv4: 1>55\n" | 311 "<IPv4: 1>55\n" |
311 "aaaa<IPv4: 2>aaa\n" | 312 "aaaa<IPv4: 2>aaa\n" |
312 "11:11;<IPv6: 1>\n" | 313 "11:11;<IPv6: 1>\n" |
313 "<IPv6: 1>\n" | 314 "<IPv6: 1>\n" |
314 "11:11:abcdef:0:0:0:0:0\n" | 315 "11:11:abcdef:0:0:0:0:0\n" |
315 "aa:aa:aa:00:00:01"; | 316 "aa:aa:aa:00:00:01"; |
316 EXPECT_EQ(result, SystemLogUploader::RemoveSensitiveData(&anonymizer, data)); | 317 EXPECT_EQ(result, SystemLogUploader::RemoveSensitiveData(&anonymizer, data)); |
317 } | 318 } |
318 | 319 |
319 } // namespace policy | 320 } // namespace policy |
OLD | NEW |