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

Unified Diff: components/offline_pages/background/request_picker_unittest.cc

Issue 2233493003: [Offline Pages] Remove expired requests from the queue. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixing build. Created 4 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
« no previous file with comments | « components/offline_pages/background/request_picker.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/offline_pages/background/request_picker_unittest.cc
diff --git a/components/offline_pages/background/request_picker_unittest.cc b/components/offline_pages/background/request_picker_unittest.cc
index cd74c70db4cc43d4e52c7f8a5e2219bf6e7c12d2..b6c1dc82604519da60b5c972264f0499dd2be5d7 100644
--- a/components/offline_pages/background/request_picker_unittest.cc
+++ b/components/offline_pages/background/request_picker_unittest.cc
@@ -9,6 +9,9 @@
#include "base/threading/thread_task_runner_handle.h"
#include "base/time/time.h"
#include "components/offline_pages/background/device_conditions.h"
+#include "components/offline_pages/background/offliner_factory.h"
+#include "components/offline_pages/background/offliner_policy.h"
+#include "components/offline_pages/background/request_notifier.h"
#include "components/offline_pages/background/request_queue.h"
#include "components/offline_pages/background/request_queue_in_memory_store.h"
#include "components/offline_pages/background/save_page_request.h"
@@ -28,7 +31,6 @@ const GURL kUrl2("http://nytimes.com");
const ClientId kClientId2("bookmark", "5678");
const bool kUserRequested = true;
const int kAttemptCount = 1;
-const int kTwoWeeksInSeconds = 60 * 60 * 24 * 7 * 2;
const int kMaxStartedTries = 5;
const int kMaxCompletedTries = 1;
@@ -36,8 +38,46 @@ const int kMaxCompletedTries = 1;
const bool kPreferUntried = false;
const bool kPreferEarlier = true;
const bool kPreferRetryCount = true;
+
+// Default request
+const SavePageRequest kEmptyRequest(0UL,
+ GURL(""),
+ ClientId("", ""),
+ base::Time(),
+ true);
} // namespace
+class RequestNotifierStub : public RequestNotifier {
+ public:
+ RequestNotifierStub()
+ : last_expired_request_(kEmptyRequest), total_expired_requests_(0) {}
+
+ void NotifyAdded(const SavePageRequest& request) override {}
+ void NotifyChanged(const SavePageRequest& request) override {}
+
+ void NotifyCompleted(const SavePageRequest& request,
+ SavePageStatus status) override {
+ last_expired_request_ = request;
+ last_request_expiration_status_ = status;
+ total_expired_requests_++;
+ }
+
+ const SavePageRequest& last_expired_request() {
+ return last_expired_request_;
+ }
+
+ RequestCoordinator::SavePageStatus last_request_expiration_status() {
+ return last_request_expiration_status_;
+ }
+
+ int32_t total_expired_requests() { return total_expired_requests_; }
+
+ private:
+ SavePageStatus last_request_expiration_status_;
+ SavePageRequest last_expired_request_;
+ int32_t total_expired_requests_;
+};
+
class RequestPickerTest : public testing::Test {
public:
RequestPickerTest();
@@ -58,11 +98,14 @@ class RequestPickerTest : public testing::Test {
void QueueRequestsAndChooseOne(const SavePageRequest& request1,
const SavePageRequest& request2);
+ RequestNotifierStub* GetNotifier() { return notifier_.get(); }
+
protected:
// The request queue is simple enough we will use a real queue with a memory
// store instead of a stub.
std::unique_ptr<RequestQueue> queue_;
std::unique_ptr<RequestPicker> picker_;
+ std::unique_ptr<RequestNotifierStub> notifier_;
std::unique_ptr<SavePageRequest> last_picked_;
std::unique_ptr<OfflinerPolicy> policy_;
bool request_queue_empty_called_;
@@ -83,7 +126,9 @@ void RequestPickerTest::SetUp() {
new RequestQueueInMemoryStore());
queue_.reset(new RequestQueue(std::move(store)));
policy_.reset(new OfflinerPolicy());
- picker_.reset(new RequestPicker(queue_.get(), policy_.get()));
+ notifier_.reset(new RequestNotifierStub());
+ picker_.reset(
+ new RequestPicker(queue_.get(), policy_.get(), notifier_.get()));
request_queue_empty_called_ = false;
}
@@ -147,7 +192,8 @@ TEST_F(RequestPickerTest, ChooseRequestWithHigherRetryCount) {
policy_.reset(new OfflinerPolicy(kPreferUntried, kPreferEarlier,
kPreferRetryCount, kMaxStartedTries,
kMaxCompletedTries + 1));
- picker_.reset(new RequestPicker(queue_.get(), policy_.get()));
+ picker_.reset(
+ new RequestPicker(queue_.get(), policy_.get(), notifier_.get()));
base::Time creation_time = base::Time::Now();
SavePageRequest request1(
@@ -182,7 +228,8 @@ TEST_F(RequestPickerTest, ChooseEarlierRequest) {
policy_.reset(new OfflinerPolicy(kPreferUntried, kPreferEarlier,
!kPreferRetryCount, kMaxStartedTries,
kMaxCompletedTries));
- picker_.reset(new RequestPicker(queue_.get(), policy_.get()));
+ picker_.reset(
+ new RequestPicker(queue_.get(), policy_.get(), notifier_.get()));
base::Time creation_time1 =
base::Time::Now() - base::TimeDelta::FromSeconds(10);
@@ -204,7 +251,8 @@ TEST_F(RequestPickerTest, ChooseSameTimeRequestWithHigherRetryCount) {
policy_.reset(new OfflinerPolicy(kPreferUntried, kPreferEarlier,
!kPreferRetryCount, kMaxStartedTries,
kMaxCompletedTries + 1));
- picker_.reset(new RequestPicker(queue_.get(), policy_.get()));
+ picker_.reset(
+ new RequestPicker(queue_.get(), policy_.get(), notifier_.get()));
base::Time creation_time = base::Time::Now();
SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time,
@@ -224,7 +272,8 @@ TEST_F(RequestPickerTest, ChooseRequestWithLowerRetryCount) {
policy_.reset(new OfflinerPolicy(!kPreferUntried, kPreferEarlier,
kPreferRetryCount, kMaxStartedTries,
kMaxCompletedTries + 1));
- picker_.reset(new RequestPicker(queue_.get(), policy_.get()));
+ picker_.reset(
+ new RequestPicker(queue_.get(), policy_.get(), notifier_.get()));
base::Time creation_time = base::Time::Now();
SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time,
@@ -244,7 +293,8 @@ TEST_F(RequestPickerTest, ChooseLaterRequest) {
policy_.reset(new OfflinerPolicy(kPreferUntried, !kPreferEarlier,
!kPreferRetryCount, kMaxStartedTries,
kMaxCompletedTries));
- picker_.reset(new RequestPicker(queue_.get(), policy_.get()));
+ picker_.reset(
+ new RequestPicker(queue_.get(), policy_.get(), notifier_.get()));
base::Time creation_time1 =
base::Time::Now() - base::TimeDelta::FromSeconds(10);
@@ -260,19 +310,26 @@ TEST_F(RequestPickerTest, ChooseLaterRequest) {
EXPECT_FALSE(request_queue_empty_called_);
}
-TEST_F(RequestPickerTest, ChooseUnexpiredRequest) {
- base::Time creation_time1 =
- base::Time::Now() - base::TimeDelta::FromSeconds(kTwoWeeksInSeconds);
- base::Time creation_time2 = base::Time::Now();
- SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time1,
+TEST_F(RequestPickerTest, ChooseNonExpiredRequest) {
+ base::Time creation_time = base::Time::Now();
+ base::Time expired_time =
+ creation_time - base::TimeDelta::FromSeconds(
+ policy_->GetRequestExpirationTimeInSeconds() + 60);
+ SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time,
kUserRequested);
- SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time2,
+ SavePageRequest request2(kRequestId2, kUrl2, kClientId2, expired_time,
kUserRequested);
QueueRequestsAndChooseOne(request1, request2);
- EXPECT_EQ(kRequestId2, last_picked_->request_id());
+ PumpLoop();
+
+ EXPECT_EQ(kRequestId1, last_picked_->request_id());
EXPECT_FALSE(request_queue_empty_called_);
+ EXPECT_EQ(kRequestId2, GetNotifier()->last_expired_request().request_id());
+ EXPECT_EQ(RequestNotifier::SavePageStatus::EXPIRED,
+ GetNotifier()->last_request_expiration_status());
+ EXPECT_EQ(1, GetNotifier()->total_expired_requests());
}
TEST_F(RequestPickerTest, ChooseRequestThatHasNotExceededStartLimit) {
« no previous file with comments | « components/offline_pages/background/request_picker.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698