| Index: chrome/browser/apps/ephemeral_app_service_unittest.cc
|
| diff --git a/chrome/browser/apps/ephemeral_app_service_unittest.cc b/chrome/browser/apps/ephemeral_app_service_unittest.cc
|
| deleted file mode 100644
|
| index 34b7f5629227b2af8e0b5ed857168f61236c35f4..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/apps/ephemeral_app_service_unittest.cc
|
| +++ /dev/null
|
| @@ -1,266 +0,0 @@
|
| -// Copyright 2013 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include <algorithm>
|
| -
|
| -#include "base/rand_util.h"
|
| -#include "base/strings/string_number_conversions.h"
|
| -#include "base/time/time.h"
|
| -#include "chrome/browser/apps/ephemeral_app_service.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace {
|
| -
|
| -// Generate a time N number of days before the reference time.
|
| -// The generated time can be randomized.
|
| -base::Time GetPastTime(const base::Time& reference_time,
|
| - int days_before,
|
| - bool randomize_time = false) {
|
| - base::Time generated_time =
|
| - reference_time - base::TimeDelta::FromDays(days_before);
|
| -
|
| - // Add an hour so that the time is well within the number of days before.
|
| - generated_time += base::TimeDelta::FromHours(1);
|
| -
|
| - // Add a random number of seconds between 0 - 10 hours.
|
| - if (randomize_time)
|
| - generated_time += base::TimeDelta::FromSeconds(base::RandInt(0, 36000));
|
| -
|
| - return generated_time;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -class EphemeralAppServiceTest : public testing::Test {
|
| - protected:
|
| - typedef EphemeralAppService::LaunchTimeAppMap LaunchTimeAppMap;
|
| -
|
| - EphemeralAppServiceTest() {}
|
| - ~EphemeralAppServiceTest() override {}
|
| -
|
| - void RunTest(int ephemeral_app_count,
|
| - const LaunchTimeAppMap& launch_times,
|
| - const std::set<std::string>& expected_removed_ids) {
|
| - std::set<std::string> remove_app_ids;
|
| - EphemeralAppService::GetAppsToRemove(ephemeral_app_count,
|
| - launch_times,
|
| - &remove_app_ids);
|
| - EXPECT_EQ(expected_removed_ids, remove_app_ids);
|
| - }
|
| -
|
| - void RunTestCheckLRU(int ephemeral_app_count,
|
| - LaunchTimeAppMap& launch_times,
|
| - int expected_removed_count) {
|
| - std::set<std::string> remove_app_ids;
|
| - EphemeralAppService::GetAppsToRemove(ephemeral_app_count,
|
| - launch_times,
|
| - &remove_app_ids);
|
| - EXPECT_EQ(expected_removed_count, (int) remove_app_ids.size());
|
| -
|
| - // Move the launch times of removed apps to another map.
|
| - LaunchTimeAppMap removed_apps;
|
| - for (LaunchTimeAppMap::iterator it = launch_times.begin();
|
| - it != launch_times.end(); ) {
|
| - if (remove_app_ids.find(it->second) != remove_app_ids.end()) {
|
| - removed_apps.insert(*it);
|
| - launch_times.erase(it++);
|
| - } else {
|
| - ++it;
|
| - }
|
| - }
|
| -
|
| - if (launch_times.empty())
|
| - return;
|
| -
|
| - // Verify that the removed apps have launch times earlier than or equal to
|
| - // all retained apps. We can actually just compare with the first entry in
|
| - // |launch_times| but will make no implementation assumptions.
|
| - for (LaunchTimeAppMap::const_iterator removed = removed_apps.begin();
|
| - removed != removed_apps.end(); ++removed) {
|
| - for (LaunchTimeAppMap::iterator retained = launch_times.begin();
|
| - retained != launch_times.end(); ++retained) {
|
| - EXPECT_LE(removed->first, retained->first);
|
| - }
|
| - }
|
| - }
|
| -
|
| - // Generate X app launch times, N days before the reference time.
|
| - // If |generated_ids| is not NULL, the generated app IDs will be added
|
| - // to the set.
|
| - void GenerateLaunchTimes(const base::Time& reference_time,
|
| - int days_before,
|
| - int count,
|
| - LaunchTimeAppMap* launch_times,
|
| - std::set<std::string>* generated_ids = NULL) {
|
| - for (int i = 0; i < count; ++i) {
|
| - std::string app_id = base::SizeTToString(launch_times->size());
|
| - launch_times->insert(std::make_pair(
|
| - GetPastTime(reference_time, days_before, true),
|
| - app_id));
|
| -
|
| - if (generated_ids)
|
| - generated_ids->insert(app_id);
|
| - }
|
| - }
|
| -
|
| - // Add inactive apps that should always be removed by garbage collection.
|
| - void AddInactiveApps(const base::Time& reference_time,
|
| - int count,
|
| - LaunchTimeAppMap* launch_times,
|
| - std::set<std::string>* generated_ids = NULL) {
|
| - GenerateLaunchTimes(reference_time,
|
| - EphemeralAppService::kAppInactiveThreshold + 1,
|
| - count,
|
| - launch_times,
|
| - generated_ids);
|
| - }
|
| -
|
| - // Add recently launched apps that should NOT be removed by garbage
|
| - // collection regardless of the number of cached ephemeral apps.
|
| - void AddRecentlyLaunchedApps(const base::Time& reference_time,
|
| - int count,
|
| - LaunchTimeAppMap* launch_times,
|
| - std::set<std::string>* generated_ids = NULL) {
|
| - GenerateLaunchTimes(reference_time,
|
| - EphemeralAppService::kAppKeepThreshold,
|
| - count,
|
| - launch_times,
|
| - generated_ids);
|
| - }
|
| -
|
| - // Add apps launched between the kAppInactiveThreshold and kAppKeepThreshold,
|
| - // which may or may not be removed by garbage collection depending on the
|
| - // number of ephemeral apps in the cache.
|
| - void AddIntermediateApps(const base::Time& reference_time,
|
| - int count,
|
| - LaunchTimeAppMap* launch_times,
|
| - std::set<std::string>* generated_ids = NULL) {
|
| - int days_before = base::RandInt(EphemeralAppService::kAppKeepThreshold + 1,
|
| - EphemeralAppService::kAppInactiveThreshold);
|
| - GenerateLaunchTimes(reference_time,
|
| - days_before,
|
| - count,
|
| - launch_times,
|
| - generated_ids);
|
| - }
|
| -};
|
| -
|
| -// Verify that inactive apps are removed even if the cache has not reached
|
| -// capacity.
|
| -// Test case: | inactive |
|
| -// Expected output: All inactive apps removed.
|
| -TEST_F(EphemeralAppServiceTest, RemoveInactiveApps) {
|
| - base::Time time_now = base::Time::Now();
|
| - LaunchTimeAppMap launch_times;
|
| - std::set<std::string> expected_removed_ids;
|
| -
|
| - AddInactiveApps(
|
| - time_now,
|
| - EphemeralAppService::kMaxEphemeralAppsCount / 5,
|
| - &launch_times,
|
| - &expected_removed_ids);
|
| - RunTest(launch_times.size(), launch_times, expected_removed_ids);
|
| -}
|
| -
|
| -// Verify that inactive apps are removed even if the cache has not reached
|
| -// capacity.
|
| -// Test case: | inactive | intermediate | recently launched |
|
| -// Expected output: All inactive apps removed, other apps retained.
|
| -TEST_F(EphemeralAppServiceTest, RemoveInactiveAppsKeepOthers) {
|
| - base::Time time_now = base::Time::Now();
|
| - LaunchTimeAppMap launch_times;
|
| - std::set<std::string> expected_removed_ids;
|
| -
|
| - AddInactiveApps(
|
| - time_now,
|
| - EphemeralAppService::kMaxEphemeralAppsCount / 5,
|
| - &launch_times,
|
| - &expected_removed_ids);
|
| - AddIntermediateApps(
|
| - time_now,
|
| - EphemeralAppService::kMaxEphemeralAppsCount / 5,
|
| - &launch_times);
|
| - AddRecentlyLaunchedApps(
|
| - time_now,
|
| - EphemeralAppService::kMaxEphemeralAppsCount / 5,
|
| - &launch_times);
|
| - RunTest(launch_times.size(), launch_times, expected_removed_ids);
|
| -}
|
| -
|
| -// Verify that recently launched apps will not be removed, even when the cache
|
| -// overflows.
|
| -// Test case: | recently launched |
|
| -// Expected output: All recently launched apps retained.
|
| -TEST_F(EphemeralAppServiceTest, KeepRecentLaunch) {
|
| - base::Time time_now = base::Time::Now();
|
| - LaunchTimeAppMap launch_times;
|
| -
|
| - AddRecentlyLaunchedApps(
|
| - time_now,
|
| - 3,
|
| - &launch_times);
|
| - RunTest(launch_times.size(), launch_times, std::set<std::string>());
|
| -
|
| - AddRecentlyLaunchedApps(
|
| - time_now,
|
| - EphemeralAppService::kMaxEphemeralAppsCount,
|
| - &launch_times); // overflow
|
| - RunTest(launch_times.size(), launch_times, std::set<std::string>());
|
| -}
|
| -
|
| -// Verify that recently launched apps will not be removed, even when the cache
|
| -// overflows.
|
| -// Test case: | intermediate (overflow) | recently launched (overflow) |
|
| -// Expected output: All recently launched apps retained, intermediate apps
|
| -// removed.
|
| -TEST_F(EphemeralAppServiceTest, KeepRecentLaunchRemoveOthers) {
|
| - base::Time time_now = base::Time::Now();
|
| - LaunchTimeAppMap launch_times;
|
| - std::set<std::string> expected_removed_ids;
|
| -
|
| - AddRecentlyLaunchedApps(
|
| - time_now,
|
| - EphemeralAppService::kMaxEphemeralAppsCount + 3,
|
| - &launch_times); // overflow
|
| - AddIntermediateApps(
|
| - time_now,
|
| - 3,
|
| - &launch_times,
|
| - &expected_removed_ids); // overflow
|
| - RunTest(launch_times.size(), launch_times, expected_removed_ids);
|
| -}
|
| -
|
| -// Verify that the LRU algorithm is implemented correctly.
|
| -// Test case: | intermediate (overflow) |
|
| -// Expected output: The least recently launched apps are removed.
|
| -TEST_F(EphemeralAppServiceTest, RemoveOverflow) {
|
| - base::Time time_now = base::Time::Now();
|
| - LaunchTimeAppMap launch_times;
|
| -
|
| - const int kOverflow = 3;
|
| - AddIntermediateApps(
|
| - time_now,
|
| - EphemeralAppService::kMaxEphemeralAppsCount + kOverflow,
|
| - &launch_times); // overflow
|
| - RunTestCheckLRU(launch_times.size(), launch_times, kOverflow);
|
| -}
|
| -
|
| -// Verify that GetAppsToRemove() takes into account the number of running apps,
|
| -// since they are not included in the launch times.
|
| -// Test case: | intermediate (overflow) | running apps |
|
| -// Expected output: The least recently launched apps are removed.
|
| -TEST_F(EphemeralAppServiceTest, RemoveOverflowWithRunningApps) {
|
| - base::Time time_now = base::Time::Now();
|
| - LaunchTimeAppMap launch_times;
|
| -
|
| - const int kRunningApps = 3;
|
| - AddIntermediateApps(
|
| - time_now,
|
| - EphemeralAppService::kMaxEphemeralAppsCount,
|
| - &launch_times); // overflow
|
| - RunTestCheckLRU(
|
| - launch_times.size() + kRunningApps,
|
| - launch_times,
|
| - kRunningApps);
|
| -}
|
|
|