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

Side by Side Diff: components/offline_pages/background/request_coordinator_unittest.cc

Issue 2473553004: Request Picker task (Closed)
Patch Set: CR fixes per DougArnett Created 4 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "components/offline_pages/background/request_coordinator.h" 5 #include "components/offline_pages/background/request_coordinator.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/location.h" 13 #include "base/location.h"
14 #include "base/logging.h" 14 #include "base/logging.h"
15 #include "base/synchronization/waitable_event.h" 15 #include "base/synchronization/waitable_event.h"
16 #include "base/sys_info.h" 16 #include "base/sys_info.h"
17 #include "base/test/test_mock_time_task_runner.h" 17 #include "base/test/test_mock_time_task_runner.h"
18 #include "base/threading/thread_task_runner_handle.h" 18 #include "base/threading/thread_task_runner_handle.h"
19 #include "base/time/time.h" 19 #include "base/time/time.h"
20 #include "components/offline_pages/background/device_conditions.h" 20 #include "components/offline_pages/background/device_conditions.h"
21 #include "components/offline_pages/background/offliner.h" 21 #include "components/offline_pages/background/offliner.h"
22 #include "components/offline_pages/background/offliner_factory.h" 22 #include "components/offline_pages/background/offliner_factory.h"
23 #include "components/offline_pages/background/offliner_policy.h" 23 #include "components/offline_pages/background/offliner_policy.h"
24 #include "components/offline_pages/background/pick_request_task_builder.h"
24 #include "components/offline_pages/background/request_queue.h" 25 #include "components/offline_pages/background/request_queue.h"
25 #include "components/offline_pages/background/request_queue_in_memory_store.h" 26 #include "components/offline_pages/background/request_queue_in_memory_store.h"
26 #include "components/offline_pages/background/save_page_request.h" 27 #include "components/offline_pages/background/save_page_request.h"
27 #include "components/offline_pages/background/scheduler.h" 28 #include "components/offline_pages/background/scheduler.h"
28 #include "testing/gtest/include/gtest/gtest.h" 29 #include "testing/gtest/include/gtest/gtest.h"
29 30
30 namespace offline_pages { 31 namespace offline_pages {
31 32
32 namespace { 33 namespace {
33 // put test constants here 34 // put test constants here
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 // Callback function which releases a wait for it. 254 // Callback function which releases a wait for it.
254 void WaitingCallbackFunction(bool result) { 255 void WaitingCallbackFunction(bool result) {
255 waiter_.Signal(); 256 waiter_.Signal();
256 } 257 }
257 258
258 net::NetworkChangeNotifier::ConnectionType GetConnectionType() { 259 net::NetworkChangeNotifier::ConnectionType GetConnectionType() {
259 return coordinator()->GetConnectionType(); 260 return coordinator()->GetConnectionType();
260 } 261 }
261 262
262 // Callback for Add requests. 263 // Callback for Add requests.
263 void AddRequestDone(RequestQueue::AddRequestResult result, 264 void AddRequestDone(QueueResults::AddRequestResult result,
264 const SavePageRequest& request); 265 const SavePageRequest& request);
265 266
266 // Callback for getting requests. 267 // Callback for getting requests.
267 void GetRequestsDone(RequestQueue::GetRequestsResult result, 268 void GetRequestsDone(QueueResults::GetRequestsResult result,
268 std::vector<std::unique_ptr<SavePageRequest>> requests); 269 std::vector<std::unique_ptr<SavePageRequest>> requests);
269 270
270 // Callback for removing requests. 271 // Callback for removing requests.
271 void RemoveRequestsDone(const MultipleItemStatuses& results); 272 void RemoveRequestsDone(const MultipleItemStatuses& results);
272 273
273 // Callback for getting request statuses. 274 // Callback for getting request statuses.
274 void GetQueuedRequestsDone( 275 void GetQueuedRequestsDone(
275 std::vector<std::unique_ptr<SavePageRequest>> requests); 276 std::vector<std::unique_ptr<SavePageRequest>> requests);
276 277
277 void SetupForOfflinerDoneCallbackTest( 278 void SetupForOfflinerDoneCallbackTest(
278 offline_pages::SavePageRequest* request); 279 offline_pages::SavePageRequest* request);
279 280
280 void SendOfflinerDoneCallback(const SavePageRequest& request, 281 void SendOfflinerDoneCallback(const SavePageRequest& request,
281 Offliner::RequestStatus status); 282 Offliner::RequestStatus status);
282 283
283 RequestQueue::GetRequestsResult last_get_requests_result() const { 284 QueueResults::GetRequestsResult last_get_requests_result() const {
284 return last_get_requests_result_; 285 return last_get_requests_result_;
285 } 286 }
286 287
287 const std::vector<std::unique_ptr<SavePageRequest>>& last_requests() const { 288 const std::vector<std::unique_ptr<SavePageRequest>>& last_requests() const {
288 return last_requests_; 289 return last_requests_;
289 } 290 }
290 291
291 const MultipleItemStatuses& last_remove_results() const { 292 const MultipleItemStatuses& last_remove_results() const {
292 return last_remove_results_; 293 return last_remove_results_;
293 } 294 }
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 353
353 bool OfflinerWasCanceled() const { return offliner_->cancel_called(); } 354 bool OfflinerWasCanceled() const { return offliner_->cancel_called(); }
354 355
355 ObserverStub observer() { return observer_; } 356 ObserverStub observer() { return observer_; }
356 357
357 bool immediate_schedule_callback_called() const { 358 bool immediate_schedule_callback_called() const {
358 return immediate_schedule_callback_called_; 359 return immediate_schedule_callback_called_;
359 } 360 }
360 361
361 private: 362 private:
362 RequestQueue::GetRequestsResult last_get_requests_result_; 363 QueueResults::GetRequestsResult last_get_requests_result_;
363 MultipleItemStatuses last_remove_results_; 364 MultipleItemStatuses last_remove_results_;
364 std::vector<std::unique_ptr<SavePageRequest>> last_requests_; 365 std::vector<std::unique_ptr<SavePageRequest>> last_requests_;
365 scoped_refptr<base::TestMockTimeTaskRunner> task_runner_; 366 scoped_refptr<base::TestMockTimeTaskRunner> task_runner_;
366 base::ThreadTaskRunnerHandle task_runner_handle_; 367 base::ThreadTaskRunnerHandle task_runner_handle_;
367 std::unique_ptr<NetworkQualityEstimatorStub> network_quality_estimator_; 368 std::unique_ptr<NetworkQualityEstimatorStub> network_quality_estimator_;
368 std::unique_ptr<RequestCoordinator> coordinator_; 369 std::unique_ptr<RequestCoordinator> coordinator_;
369 OfflinerStub* offliner_; 370 OfflinerStub* offliner_;
370 base::WaitableEvent waiter_; 371 base::WaitableEvent waiter_;
371 ObserverStub observer_; 372 ObserverStub observer_;
372 bool immediate_schedule_callback_called_; 373 bool immediate_schedule_callback_called_;
373 }; 374 };
374 375
375 RequestCoordinatorTest::RequestCoordinatorTest() 376 RequestCoordinatorTest::RequestCoordinatorTest()
376 : last_get_requests_result_(RequestQueue::GetRequestsResult::STORE_FAILURE), 377 : last_get_requests_result_(QueueResults::GetRequestsResult::STORE_FAILURE),
377 task_runner_(new base::TestMockTimeTaskRunner), 378 task_runner_(new base::TestMockTimeTaskRunner),
378 task_runner_handle_(task_runner_), 379 task_runner_handle_(task_runner_),
379 offliner_(nullptr), 380 offliner_(nullptr),
380 waiter_(base::WaitableEvent::ResetPolicy::MANUAL, 381 waiter_(base::WaitableEvent::ResetPolicy::MANUAL,
381 base::WaitableEvent::InitialState::NOT_SIGNALED), 382 base::WaitableEvent::InitialState::NOT_SIGNALED),
382 immediate_schedule_callback_called_(false) {} 383 immediate_schedule_callback_called_(false) {}
383 384
384 RequestCoordinatorTest::~RequestCoordinatorTest() {} 385 RequestCoordinatorTest::~RequestCoordinatorTest() {}
385 386
386 void RequestCoordinatorTest::SetUp() { 387 void RequestCoordinatorTest::SetUp() {
387 std::unique_ptr<OfflinerPolicy> policy(new OfflinerPolicy()); 388 std::unique_ptr<OfflinerPolicy> policy(new OfflinerPolicy());
388 std::unique_ptr<OfflinerFactory> factory(new OfflinerFactoryStub()); 389 std::unique_ptr<OfflinerFactory> factory(new OfflinerFactoryStub());
389 // Save the offliner for use by the tests. 390 // Save the offliner for use by the tests.
390 offliner_ = 391 offliner_ =
391 reinterpret_cast<OfflinerStub*>(factory->GetOffliner(policy.get())); 392 reinterpret_cast<OfflinerStub*>(factory->GetOffliner(policy.get()));
392 std::unique_ptr<RequestQueueInMemoryStore> 393 std::unique_ptr<RequestQueueInMemoryStore>
393 store(new RequestQueueInMemoryStore()); 394 store(new RequestQueueInMemoryStore());
394 std::unique_ptr<RequestQueue> queue(new RequestQueue(std::move(store))); 395 std::unique_ptr<RequestQueue> queue(new RequestQueue(std::move(store)));
395 std::unique_ptr<Scheduler> scheduler_stub(new SchedulerStub()); 396 std::unique_ptr<Scheduler> scheduler_stub(new SchedulerStub());
396 network_quality_estimator_.reset(new NetworkQualityEstimatorStub()); 397 network_quality_estimator_.reset(new NetworkQualityEstimatorStub());
397 coordinator_.reset(new RequestCoordinator( 398 coordinator_.reset(new RequestCoordinator(
398 std::move(policy), std::move(factory), std::move(queue), 399 std::move(policy), std::move(factory), std::move(queue),
399 std::move(scheduler_stub), network_quality_estimator_.get())); 400 std::move(scheduler_stub), network_quality_estimator_.get()));
400 coordinator_->AddObserver(&observer_); 401 coordinator_->AddObserver(&observer_);
402 PickRequestTaskBuilder* builder = new PickRequestTaskBuilder(
403 coordinator_->policy(), static_cast<RequestNotifier*>(coordinator_.get()),
404 coordinator_->GetLogger());
405 coordinator_->queue()->SetPickerBuilder(builder);
401 SetEffectiveConnectionTypeForTest( 406 SetEffectiveConnectionTypeForTest(
402 net::EffectiveConnectionType::EFFECTIVE_CONNECTION_TYPE_OFFLINE); 407 net::EffectiveConnectionType::EFFECTIVE_CONNECTION_TYPE_OFFLINE);
403 SetNetworkConditionsForTest( 408 SetNetworkConditionsForTest(
404 net::NetworkChangeNotifier::ConnectionType::CONNECTION_NONE); 409 net::NetworkChangeNotifier::ConnectionType::CONNECTION_NONE);
405 } 410 }
406 411
407 void RequestCoordinatorTest::PumpLoop() { 412 void RequestCoordinatorTest::PumpLoop() {
408 task_runner_->RunUntilIdle(); 413 task_runner_->RunUntilIdle();
409 } 414 }
410 415
411 void RequestCoordinatorTest::GetRequestsDone( 416 void RequestCoordinatorTest::GetRequestsDone(
412 RequestQueue::GetRequestsResult result, 417 QueueResults::GetRequestsResult result,
413 std::vector<std::unique_ptr<SavePageRequest>> requests) { 418 std::vector<std::unique_ptr<SavePageRequest>> requests) {
414 last_get_requests_result_ = result; 419 last_get_requests_result_ = result;
415 last_requests_ = std::move(requests); 420 last_requests_ = std::move(requests);
416 } 421 }
417 422
418 void RequestCoordinatorTest::RemoveRequestsDone( 423 void RequestCoordinatorTest::RemoveRequestsDone(
419 const MultipleItemStatuses& results) { 424 const MultipleItemStatuses& results) {
420 last_remove_results_ = results; 425 last_remove_results_ = results;
421 waiter_.Signal(); 426 waiter_.Signal();
422 } 427 }
423 428
424 void RequestCoordinatorTest::GetQueuedRequestsDone( 429 void RequestCoordinatorTest::GetQueuedRequestsDone(
425 std::vector<std::unique_ptr<SavePageRequest>> requests) { 430 std::vector<std::unique_ptr<SavePageRequest>> requests) {
426 last_requests_ = std::move(requests); 431 last_requests_ = std::move(requests);
427 waiter_.Signal(); 432 waiter_.Signal();
428 } 433 }
429 434
430 void RequestCoordinatorTest::AddRequestDone( 435 void RequestCoordinatorTest::AddRequestDone(
431 RequestQueue::AddRequestResult result, 436 QueueResults::AddRequestResult result,
432 const SavePageRequest& request) {} 437 const SavePageRequest& request) {}
433 438
434 void RequestCoordinatorTest::SetupForOfflinerDoneCallbackTest( 439 void RequestCoordinatorTest::SetupForOfflinerDoneCallbackTest(
435 offline_pages::SavePageRequest* request) { 440 offline_pages::SavePageRequest* request) {
436 // Mark request as started and add it to the queue, 441 // Mark request as started and add it to the queue,
437 // then wait for callback to finish. 442 // then wait for callback to finish.
438 request->MarkAttemptStarted(base::Time::Now()); 443 request->MarkAttemptStarted(base::Time::Now());
439 coordinator()->queue()->AddRequest( 444 coordinator()->queue()->AddRequest(
440 *request, base::Bind(&RequestCoordinatorTest::AddRequestDone, 445 *request, base::Bind(&RequestCoordinatorTest::AddRequestDone,
441 base::Unretained(this))); 446 base::Unretained(this)));
(...skipping 908 matching lines...) Expand 10 before | Expand all | Expand 10 after
1350 // Now whether processing triggered immediately depends on whether test 1355 // Now whether processing triggered immediately depends on whether test
1351 // is run on svelte device or not. 1356 // is run on svelte device or not.
1352 if (base::SysInfo::IsLowEndDevice()) { 1357 if (base::SysInfo::IsLowEndDevice()) {
1353 EXPECT_FALSE(is_busy()); 1358 EXPECT_FALSE(is_busy());
1354 } else { 1359 } else {
1355 EXPECT_TRUE(is_busy()); 1360 EXPECT_TRUE(is_busy());
1356 } 1361 }
1357 } 1362 }
1358 1363
1359 } // namespace offline_pages 1364 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698