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

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

Issue 2473553004: Request Picker task (Closed)
Patch Set: merge 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_factory.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 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 // Callback function which releases a wait for it. 255 // Callback function which releases a wait for it.
255 void WaitingCallbackFunction(bool result) { 256 void WaitingCallbackFunction(bool result) {
256 waiter_.Signal(); 257 waiter_.Signal();
257 } 258 }
258 259
259 net::NetworkChangeNotifier::ConnectionType GetConnectionType() { 260 net::NetworkChangeNotifier::ConnectionType GetConnectionType() {
260 return coordinator()->GetConnectionType(); 261 return coordinator()->GetConnectionType();
261 } 262 }
262 263
263 // Callback for Add requests. 264 // Callback for Add requests.
264 void AddRequestDone(RequestQueue::AddRequestResult result, 265 void AddRequestDone(QueueResults::AddRequestResult result,
265 const SavePageRequest& request); 266 const SavePageRequest& request);
266 267
267 // Callback for getting requests. 268 // Callback for getting requests.
268 void GetRequestsDone(RequestQueue::GetRequestsResult result, 269 void GetRequestsDone(QueueResults::GetRequestsResult result,
269 std::vector<std::unique_ptr<SavePageRequest>> requests); 270 std::vector<std::unique_ptr<SavePageRequest>> requests);
270 271
271 // Callback for removing requests. 272 // Callback for removing requests.
272 void RemoveRequestsDone(const MultipleItemStatuses& results); 273 void RemoveRequestsDone(const MultipleItemStatuses& results);
273 274
274 // Callback for getting request statuses. 275 // Callback for getting request statuses.
275 void GetQueuedRequestsDone( 276 void GetQueuedRequestsDone(
276 std::vector<std::unique_ptr<SavePageRequest>> requests); 277 std::vector<std::unique_ptr<SavePageRequest>> requests);
277 278
278 void SetupForOfflinerDoneCallbackTest( 279 void SetupForOfflinerDoneCallbackTest(
279 offline_pages::SavePageRequest* request); 280 offline_pages::SavePageRequest* request);
280 281
281 void SendOfflinerDoneCallback(const SavePageRequest& request, 282 void SendOfflinerDoneCallback(const SavePageRequest& request,
282 Offliner::RequestStatus status); 283 Offliner::RequestStatus status);
283 284
284 RequestQueue::GetRequestsResult last_get_requests_result() const { 285 QueueResults::GetRequestsResult last_get_requests_result() const {
285 return last_get_requests_result_; 286 return last_get_requests_result_;
286 } 287 }
287 288
288 const std::vector<std::unique_ptr<SavePageRequest>>& last_requests() const { 289 const std::vector<std::unique_ptr<SavePageRequest>>& last_requests() const {
289 return last_requests_; 290 return last_requests_;
290 } 291 }
291 292
292 const MultipleItemStatuses& last_remove_results() const { 293 const MultipleItemStatuses& last_remove_results() const {
293 return last_remove_results_; 294 return last_remove_results_;
294 } 295 }
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 368
368 bool OfflinerWasCanceled() const { return offliner_->cancel_called(); } 369 bool OfflinerWasCanceled() const { return offliner_->cancel_called(); }
369 370
370 ObserverStub observer() { return observer_; } 371 ObserverStub observer() { return observer_; }
371 372
372 bool immediate_schedule_callback_called() const { 373 bool immediate_schedule_callback_called() const {
373 return immediate_schedule_callback_called_; 374 return immediate_schedule_callback_called_;
374 } 375 }
375 376
376 private: 377 private:
377 RequestQueue::GetRequestsResult last_get_requests_result_; 378 QueueResults::GetRequestsResult last_get_requests_result_;
378 MultipleItemStatuses last_remove_results_; 379 MultipleItemStatuses last_remove_results_;
379 std::vector<std::unique_ptr<SavePageRequest>> last_requests_; 380 std::vector<std::unique_ptr<SavePageRequest>> last_requests_;
380 scoped_refptr<base::TestMockTimeTaskRunner> task_runner_; 381 scoped_refptr<base::TestMockTimeTaskRunner> task_runner_;
381 base::ThreadTaskRunnerHandle task_runner_handle_; 382 base::ThreadTaskRunnerHandle task_runner_handle_;
382 std::unique_ptr<NetworkQualityEstimatorStub> network_quality_estimator_; 383 std::unique_ptr<NetworkQualityEstimatorStub> network_quality_estimator_;
383 std::unique_ptr<RequestCoordinator> coordinator_; 384 std::unique_ptr<RequestCoordinator> coordinator_;
384 OfflinerStub* offliner_; 385 OfflinerStub* offliner_;
385 base::WaitableEvent waiter_; 386 base::WaitableEvent waiter_;
386 ObserverStub observer_; 387 ObserverStub observer_;
387 bool immediate_schedule_callback_called_; 388 bool immediate_schedule_callback_called_;
388 }; 389 };
389 390
390 RequestCoordinatorTest::RequestCoordinatorTest() 391 RequestCoordinatorTest::RequestCoordinatorTest()
391 : last_get_requests_result_(RequestQueue::GetRequestsResult::STORE_FAILURE), 392 : last_get_requests_result_(QueueResults::GetRequestsResult::STORE_FAILURE),
392 task_runner_(new base::TestMockTimeTaskRunner), 393 task_runner_(new base::TestMockTimeTaskRunner),
393 task_runner_handle_(task_runner_), 394 task_runner_handle_(task_runner_),
394 offliner_(nullptr), 395 offliner_(nullptr),
395 waiter_(base::WaitableEvent::ResetPolicy::MANUAL, 396 waiter_(base::WaitableEvent::ResetPolicy::MANUAL,
396 base::WaitableEvent::InitialState::NOT_SIGNALED), 397 base::WaitableEvent::InitialState::NOT_SIGNALED),
397 immediate_schedule_callback_called_(false) {} 398 immediate_schedule_callback_called_(false) {}
398 399
399 RequestCoordinatorTest::~RequestCoordinatorTest() {} 400 RequestCoordinatorTest::~RequestCoordinatorTest() {}
400 401
401 void RequestCoordinatorTest::SetUp() { 402 void RequestCoordinatorTest::SetUp() {
402 std::unique_ptr<OfflinerPolicy> policy(new OfflinerPolicy()); 403 std::unique_ptr<OfflinerPolicy> policy(new OfflinerPolicy());
403 std::unique_ptr<OfflinerFactory> factory(new OfflinerFactoryStub()); 404 std::unique_ptr<OfflinerFactory> offliner_factory(new OfflinerFactoryStub());
404 // Save the offliner for use by the tests. 405 // Save the offliner for use by the tests.
405 offliner_ = 406 offliner_ = reinterpret_cast<OfflinerStub*>(
406 reinterpret_cast<OfflinerStub*>(factory->GetOffliner(policy.get())); 407 offliner_factory->GetOffliner(policy.get()));
407 std::unique_ptr<RequestQueueInMemoryStore> 408 std::unique_ptr<RequestQueueInMemoryStore>
408 store(new RequestQueueInMemoryStore()); 409 store(new RequestQueueInMemoryStore());
409 std::unique_ptr<RequestQueue> queue(new RequestQueue(std::move(store))); 410 std::unique_ptr<RequestQueue> queue(new RequestQueue(std::move(store)));
410 std::unique_ptr<Scheduler> scheduler_stub(new SchedulerStub()); 411 std::unique_ptr<Scheduler> scheduler_stub(new SchedulerStub());
411 network_quality_estimator_.reset(new NetworkQualityEstimatorStub()); 412 network_quality_estimator_.reset(new NetworkQualityEstimatorStub());
412 coordinator_.reset(new RequestCoordinator( 413 coordinator_.reset(new RequestCoordinator(
413 std::move(policy), std::move(factory), std::move(queue), 414 std::move(policy), std::move(offliner_factory), std::move(queue),
414 std::move(scheduler_stub), network_quality_estimator_.get())); 415 std::move(scheduler_stub), network_quality_estimator_.get()));
415 coordinator_->AddObserver(&observer_); 416 coordinator_->AddObserver(&observer_);
416 SetNetworkConnected(true); 417 SetNetworkConnected(true);
418 std::unique_ptr<PickRequestTaskFactory> picker_factory(
419 new PickRequestTaskFactory(
420 coordinator_->policy(),
421 static_cast<RequestNotifier*>(coordinator_.get()),
422 coordinator_->GetLogger()));
423 coordinator_->queue()->SetPickerFactory(std::move(picker_factory));
424 SetEffectiveConnectionTypeForTest(
425 net::EffectiveConnectionType::EFFECTIVE_CONNECTION_TYPE_OFFLINE);
426 SetNetworkConditionsForTest(
427 net::NetworkChangeNotifier::ConnectionType::CONNECTION_NONE);
417 } 428 }
418 429
419 void RequestCoordinatorTest::PumpLoop() { 430 void RequestCoordinatorTest::PumpLoop() {
420 task_runner_->RunUntilIdle(); 431 task_runner_->RunUntilIdle();
421 } 432 }
422 433
423 void RequestCoordinatorTest::GetRequestsDone( 434 void RequestCoordinatorTest::GetRequestsDone(
424 RequestQueue::GetRequestsResult result, 435 QueueResults::GetRequestsResult result,
425 std::vector<std::unique_ptr<SavePageRequest>> requests) { 436 std::vector<std::unique_ptr<SavePageRequest>> requests) {
426 last_get_requests_result_ = result; 437 last_get_requests_result_ = result;
427 last_requests_ = std::move(requests); 438 last_requests_ = std::move(requests);
428 } 439 }
429 440
430 void RequestCoordinatorTest::RemoveRequestsDone( 441 void RequestCoordinatorTest::RemoveRequestsDone(
431 const MultipleItemStatuses& results) { 442 const MultipleItemStatuses& results) {
432 last_remove_results_ = results; 443 last_remove_results_ = results;
433 waiter_.Signal(); 444 waiter_.Signal();
434 } 445 }
435 446
436 void RequestCoordinatorTest::GetQueuedRequestsDone( 447 void RequestCoordinatorTest::GetQueuedRequestsDone(
437 std::vector<std::unique_ptr<SavePageRequest>> requests) { 448 std::vector<std::unique_ptr<SavePageRequest>> requests) {
438 last_requests_ = std::move(requests); 449 last_requests_ = std::move(requests);
439 waiter_.Signal(); 450 waiter_.Signal();
440 } 451 }
441 452
442 void RequestCoordinatorTest::AddRequestDone( 453 void RequestCoordinatorTest::AddRequestDone(
443 RequestQueue::AddRequestResult result, 454 QueueResults::AddRequestResult result,
444 const SavePageRequest& request) {} 455 const SavePageRequest& request) {}
445 456
446 void RequestCoordinatorTest::SetupForOfflinerDoneCallbackTest( 457 void RequestCoordinatorTest::SetupForOfflinerDoneCallbackTest(
447 offline_pages::SavePageRequest* request) { 458 offline_pages::SavePageRequest* request) {
448 // Mark request as started and add it to the queue, 459 // Mark request as started and add it to the queue,
449 // then wait for callback to finish. 460 // then wait for callback to finish.
450 request->MarkAttemptStarted(base::Time::Now()); 461 request->MarkAttemptStarted(base::Time::Now());
451 coordinator()->queue()->AddRequest( 462 coordinator()->queue()->AddRequest(
452 *request, base::Bind(&RequestCoordinatorTest::AddRequestDone, 463 *request, base::Bind(&RequestCoordinatorTest::AddRequestDone,
453 base::Unretained(this))); 464 base::Unretained(this)));
(...skipping 941 matching lines...) Expand 10 before | Expand all | Expand 10 after
1395 // Now whether processing triggered immediately depends on whether test 1406 // Now whether processing triggered immediately depends on whether test
1396 // is run on svelte device or not. 1407 // is run on svelte device or not.
1397 if (base::SysInfo::IsLowEndDevice()) { 1408 if (base::SysInfo::IsLowEndDevice()) {
1398 EXPECT_FALSE(is_busy()); 1409 EXPECT_FALSE(is_busy());
1399 } else { 1410 } else {
1400 EXPECT_TRUE(is_busy()); 1411 EXPECT_TRUE(is_busy());
1401 } 1412 }
1402 } 1413 }
1403 1414
1404 } // namespace offline_pages 1415 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698