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

Unified Diff: content/browser/quota/quota_temporary_storage_evictor_unittest.cc

Issue 1782053004: Change how the quota system computes the total poolsize for temporary storage (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 3 years, 10 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 | « content/browser/quota/quota_manager_unittest.cc ('k') | content/browser/quota/storage_monitor_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/quota/quota_temporary_storage_evictor_unittest.cc
diff --git a/content/browser/quota/quota_temporary_storage_evictor_unittest.cc b/content/browser/quota/quota_temporary_storage_evictor_unittest.cc
index 989c63df3d64f962a8c9d495f8992f6d9a2c42cc..b5e09924dc9fe46e09b046b1c71e154790747e43 100644
--- a/content/browser/quota/quota_temporary_storage_evictor_unittest.cc
+++ b/content/browser/quota/quota_temporary_storage_evictor_unittest.cc
@@ -21,7 +21,6 @@
using storage::QuotaTemporaryStorageEvictor;
using storage::StorageType;
-using storage::UsageAndQuota;
namespace content {
@@ -31,15 +30,14 @@ namespace {
class MockQuotaEvictionHandler : public storage::QuotaEvictionHandler {
public:
- explicit MockQuotaEvictionHandler(QuotaTemporaryStorageEvictorTest *test)
- : quota_(0),
- available_space_(0),
+ explicit MockQuotaEvictionHandler(QuotaTemporaryStorageEvictorTest* test)
+ : available_space_(0),
error_on_evict_origin_data_(false),
error_on_get_usage_and_quota_(false) {}
void EvictOriginData(const GURL& origin,
StorageType type,
- const EvictOriginDataCallback& callback) override {
+ const storage::StatusCallback& callback) override {
if (error_on_evict_origin_data_) {
callback.Run(storage::kQuotaErrorInvalidModification);
return;
@@ -50,22 +48,17 @@ class MockQuotaEvictionHandler : public storage::QuotaEvictionHandler {
callback.Run(storage::kQuotaStatusOk);
}
- void AsyncGetVolumeInfo(const VolumeInfoCallback& callback) override {
- uint64_t available = static_cast<uint64_t>(available_space_);
- uint64_t total = (1024 * 1024 * 1024) + (2 * available); // 1G plus some.
- callback.Run(true, available, total);
- }
-
- void GetUsageAndQuotaForEviction(
- const UsageAndQuotaCallback& callback) override {
+ void GetEvictionRoundInfo(
+ const EvictionRoundInfoCallback& callback) override {
if (error_on_get_usage_and_quota_) {
- callback.Run(storage::kQuotaErrorInvalidAccess, UsageAndQuota());
+ callback.Run(storage::kQuotaErrorAbort, storage::QuotaSettings(), 0, 0,
+ 0, false);
return;
}
if (!task_for_get_usage_and_quota_.is_null())
task_for_get_usage_and_quota_.Run();
- UsageAndQuota quota_and_usage(-1, GetUsage(), quota_, available_space_);
- callback.Run(storage::kQuotaStatusOk, quota_and_usage);
+ callback.Run(storage::kQuotaStatusOk, settings_, available_space_,
+ available_space_ * 2, GetUsage(), true);
}
void GetEvictionOrigin(StorageType type,
@@ -86,7 +79,14 @@ class MockQuotaEvictionHandler : public storage::QuotaEvictionHandler {
return total_usage;
}
- void set_quota(int64_t quota) { quota_ = quota; }
+ const storage::QuotaSettings& settings() const { return settings_; }
+ void SetPoolSize(int64_t pool_size) {
+ settings_.pool_size = pool_size;
+ settings_.per_host_quota = pool_size / 5;
+ settings_.should_remain_available = pool_size / 5;
+ settings_.must_remain_available = pool_size / 100;
+ settings_.refresh_interval = base::TimeDelta::Max();
+ }
void set_available_space(int64_t available_space) {
available_space_ = available_space;
}
@@ -130,7 +130,7 @@ class MockQuotaEvictionHandler : public storage::QuotaEvictionHandler {
return origin_usage;
}
- int64_t quota_;
+ storage::QuotaSettings settings_;
int64_t available_space_;
std::list<GURL> origin_order_;
std::map<GURL, int64_t> origins_;
@@ -169,20 +169,20 @@ class QuotaTemporaryStorageEvictorTest : public testing::Test {
int expected_usage_after_second) {
EXPECT_GE(4, num_get_usage_and_quota_for_eviction_);
switch (num_get_usage_and_quota_for_eviction_) {
- case 2:
- EXPECT_EQ(expected_usage_after_first,
- quota_eviction_handler()->GetUsage());
- if (!origin_to_be_added.first.is_empty())
- quota_eviction_handler()->AddOrigin(origin_to_be_added.first,
- origin_to_be_added.second);
- if (!origin_to_be_accessed.is_empty())
- quota_eviction_handler()->AccessOrigin(origin_to_be_accessed);
- break;
- case 3:
- EXPECT_EQ(expected_usage_after_second,
- quota_eviction_handler()->GetUsage());
- temporary_storage_evictor()->set_repeated_eviction(false);
- break;
+ case 2:
+ EXPECT_EQ(expected_usage_after_first,
+ quota_eviction_handler()->GetUsage());
+ if (!origin_to_be_added.first.is_empty())
+ quota_eviction_handler()->AddOrigin(origin_to_be_added.first,
+ origin_to_be_added.second);
+ if (!origin_to_be_accessed.is_empty())
+ quota_eviction_handler()->AccessOrigin(origin_to_be_accessed);
+ break;
+ case 3:
+ EXPECT_EQ(expected_usage_after_second,
+ quota_eviction_handler()->GetUsage());
+ temporary_storage_evictor()->timer_disabled_for_testing_ = true;
+ break;
}
++num_get_usage_and_quota_for_eviction_;
}
@@ -201,36 +201,19 @@ class QuotaTemporaryStorageEvictorTest : public testing::Test {
return temporary_storage_evictor()->statistics_;
}
- void set_repeated_eviction(bool repeated_eviction) const {
- return temporary_storage_evictor_->set_repeated_eviction(repeated_eviction);
+ void disable_timer_for_testing() const {
+ temporary_storage_evictor_->timer_disabled_for_testing_ = true;
}
int num_get_usage_and_quota_for_eviction() const {
return num_get_usage_and_quota_for_eviction_;
}
- int64_t default_min_available_disk_space_to_start_eviction() const {
- return 1000 * 1000 * 500;
- }
-
- void set_min_available_disk_space_to_start_eviction(int64_t value) const {
- temporary_storage_evictor_->set_min_available_disk_space_to_start_eviction(
- value);
- }
-
- void reset_min_available_disk_space_to_start_eviction() const {
- temporary_storage_evictor_->
- reset_min_available_disk_space_to_start_eviction();
- }
-
base::MessageLoop message_loop_;
std::unique_ptr<MockQuotaEvictionHandler> quota_eviction_handler_;
std::unique_ptr<QuotaTemporaryStorageEvictor> temporary_storage_evictor_;
-
int num_get_usage_and_quota_for_eviction_;
-
base::WeakPtrFactory<QuotaTemporaryStorageEvictorTest> weak_factory_;
-
DISALLOW_COPY_AND_ASSIGN(QuotaTemporaryStorageEvictorTest);
};
@@ -238,10 +221,10 @@ TEST_F(QuotaTemporaryStorageEvictorTest, SimpleEvictionTest) {
quota_eviction_handler()->AddOrigin(GURL("http://www.z.com"), 3000);
quota_eviction_handler()->AddOrigin(GURL("http://www.y.com"), 200);
quota_eviction_handler()->AddOrigin(GURL("http://www.x.com"), 500);
- quota_eviction_handler()->set_quota(4000);
+ quota_eviction_handler()->SetPoolSize(4000);
quota_eviction_handler()->set_available_space(1000000000);
EXPECT_EQ(3000 + 200 + 500, quota_eviction_handler()->GetUsage());
- set_repeated_eviction(false);
+ disable_timer_for_testing();
temporary_storage_evictor()->Start();
base::RunLoop().RunUntilIdle();
EXPECT_EQ(200 + 500, quota_eviction_handler()->GetUsage());
@@ -258,10 +241,10 @@ TEST_F(QuotaTemporaryStorageEvictorTest, MultipleEvictionTest) {
quota_eviction_handler()->AddOrigin(GURL("http://www.y.com"), 2900);
quota_eviction_handler()->AddOrigin(GURL("http://www.x.com"), 450);
quota_eviction_handler()->AddOrigin(GURL("http://www.w.com"), 400);
- quota_eviction_handler()->set_quota(4000);
+ quota_eviction_handler()->SetPoolSize(4000);
quota_eviction_handler()->set_available_space(1000000000);
EXPECT_EQ(20 + 2900 + 450 + 400, quota_eviction_handler()->GetUsage());
- set_repeated_eviction(false);
+ disable_timer_for_testing();
temporary_storage_evictor()->Start();
base::RunLoop().RunUntilIdle();
EXPECT_EQ(450 + 400, quota_eviction_handler()->GetUsage());
@@ -285,7 +268,7 @@ TEST_F(QuotaTemporaryStorageEvictorTest, RepeatedEvictionTest) {
quota_eviction_handler()->AddOrigin(GURL("http://www.c.com"), c_size);
quota_eviction_handler()->AddOrigin(GURL("http://www.b.com"), b_size);
quota_eviction_handler()->AddOrigin(GURL("http://www.a.com"), a_size);
- quota_eviction_handler()->set_quota(1000);
+ quota_eviction_handler()->SetPoolSize(1000);
quota_eviction_handler()->set_available_space(1000000000);
quota_eviction_handler()->set_task_for_get_usage_and_quota(
base::Bind(&QuotaTemporaryStorageEvictorTest::TaskForRepeatedEvictionTest,
@@ -318,14 +301,14 @@ TEST_F(QuotaTemporaryStorageEvictorTest, RepeatedEvictionSkippedTest) {
quota_eviction_handler()->AddOrigin(GURL("http://www.c.com"), c_size);
quota_eviction_handler()->AddOrigin(GURL("http://www.b.com"), b_size);
quota_eviction_handler()->AddOrigin(GURL("http://www.a.com"), a_size);
- quota_eviction_handler()->set_quota(1000);
+ quota_eviction_handler()->SetPoolSize(1000);
quota_eviction_handler()->set_available_space(1000000000);
quota_eviction_handler()->set_task_for_get_usage_and_quota(
base::Bind(&QuotaTemporaryStorageEvictorTest::TaskForRepeatedEvictionTest,
weak_factory_.GetWeakPtr(), std::make_pair(GURL(), 0), GURL(),
initial_total_size - d_size, initial_total_size - d_size));
EXPECT_EQ(initial_total_size, quota_eviction_handler()->GetUsage());
- set_repeated_eviction(true);
+ // disable_timer_for_testing();
temporary_storage_evictor()->Start();
base::RunLoop().RunUntilIdle();
EXPECT_EQ(initial_total_size - d_size, quota_eviction_handler()->GetUsage());
@@ -350,7 +333,7 @@ TEST_F(QuotaTemporaryStorageEvictorTest, RepeatedEvictionWithAccessOriginTest) {
quota_eviction_handler()->AddOrigin(GURL("http://www.c.com"), c_size);
quota_eviction_handler()->AddOrigin(GURL("http://www.b.com"), b_size);
quota_eviction_handler()->AddOrigin(GURL("http://www.a.com"), a_size);
- quota_eviction_handler()->set_quota(1000);
+ quota_eviction_handler()->SetPoolSize(1000);
quota_eviction_handler()->set_available_space(1000000000);
quota_eviction_handler()->set_task_for_get_usage_and_quota(
base::Bind(&QuotaTemporaryStorageEvictorTest::TaskForRepeatedEvictionTest,
@@ -374,17 +357,18 @@ TEST_F(QuotaTemporaryStorageEvictorTest, RepeatedEvictionWithAccessOriginTest) {
}
TEST_F(QuotaTemporaryStorageEvictorTest, DiskSpaceNonEvictionTest) {
- quota_eviction_handler()->AddOrigin(GURL("http://www.z.com"), 414);
- quota_eviction_handler()->AddOrigin(GURL("http://www.x.com"), 450);
- quota_eviction_handler()->set_quota(10000);
+ // If we're using so little that evicting all of it wouldn't
+ // do enough to alleviate a diskspace shortage, we don't evict.
+ quota_eviction_handler()->AddOrigin(GURL("http://www.z.com"), 10);
+ quota_eviction_handler()->AddOrigin(GURL("http://www.x.com"), 20);
+ quota_eviction_handler()->SetPoolSize(10000);
quota_eviction_handler()->set_available_space(
- default_min_available_disk_space_to_start_eviction() - 350);
- EXPECT_EQ(414 + 450, quota_eviction_handler()->GetUsage());
- reset_min_available_disk_space_to_start_eviction();
- set_repeated_eviction(false);
+ quota_eviction_handler()->settings().should_remain_available - 350);
+ EXPECT_EQ(10 + 20, quota_eviction_handler()->GetUsage());
+ disable_timer_for_testing();
temporary_storage_evictor()->Start();
base::RunLoop().RunUntilIdle();
- EXPECT_EQ(414 + 450, quota_eviction_handler()->GetUsage());
+ EXPECT_EQ(10 + 20, quota_eviction_handler()->GetUsage());
EXPECT_EQ(0, statistics().num_errors_on_evicting_origin);
EXPECT_EQ(0, statistics().num_errors_on_getting_usage_and_quota);
@@ -398,13 +382,11 @@ TEST_F(QuotaTemporaryStorageEvictorTest, DiskSpaceEvictionTest) {
quota_eviction_handler()->AddOrigin(GURL("http://www.y.com"), 120);
quota_eviction_handler()->AddOrigin(GURL("http://www.x.com"), 150);
quota_eviction_handler()->AddOrigin(GURL("http://www.w.com"), 300);
- quota_eviction_handler()->set_quota(10000);
+ quota_eviction_handler()->SetPoolSize(10000);
quota_eviction_handler()->set_available_space(
- default_min_available_disk_space_to_start_eviction() - 350);
+ quota_eviction_handler()->settings().should_remain_available - 350);
EXPECT_EQ(294 + 120 + 150 + 300, quota_eviction_handler()->GetUsage());
- set_min_available_disk_space_to_start_eviction(
- default_min_available_disk_space_to_start_eviction());
- set_repeated_eviction(false);
+ disable_timer_for_testing();
temporary_storage_evictor()->Start();
base::RunLoop().RunUntilIdle();
EXPECT_EQ(150 + 300, quota_eviction_handler()->GetUsage());
@@ -413,7 +395,7 @@ TEST_F(QuotaTemporaryStorageEvictorTest, DiskSpaceEvictionTest) {
EXPECT_EQ(0, statistics().num_errors_on_getting_usage_and_quota);
EXPECT_EQ(2, statistics().num_evicted_origins);
EXPECT_EQ(1, statistics().num_eviction_rounds);
- EXPECT_EQ(0, statistics().num_skipped_eviction_rounds);
+ EXPECT_EQ(0, statistics().num_skipped_eviction_rounds); // FIXME?
}
} // namespace content
« no previous file with comments | « content/browser/quota/quota_manager_unittest.cc ('k') | content/browser/quota/storage_monitor_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698