Commit cd2dc2cf authored by Gordon Guan's avatar Gordon Guan Committed by Commit Bot

discardable-memory: Fix discardable memory backing trial unit tests

This fixes two issues with the discardable memory backing trial unit
tests:

1. The return value of GetDiscardableMemoryBacking() was memoized on
a per-process basis, persisting across tests. This caused the tests to
erroneously fail. Since the function was not heavy in the first place,
remove the memoization.

2. The ScopedFeatureList was mistakenly initialized after querying
trial state, causing the tests to vacuously pass. Move the
initialization before the query.

This change does not affect the field trial behaviour, and only
fixes the unit tests.

Bug: 1014513
Change-Id: I200ddd87e4a8dd52ceba730a9e242f2f7167c029
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1944607Reviewed-by: default avatarMichael Thiessen <mthiesse@chromium.org>
Reviewed-by: default avatarFrançois Doray <fdoray@chromium.org>
Commit-Queue: Gordon Guan <gordonguan@google.com>
Cr-Commit-Position: refs/heads/master@{#720516}
parent 386e6e51
......@@ -63,29 +63,6 @@ DiscardableMemoryBacking GetBackingForFieldTrial() {
}
#endif // defined(OS_ANDROID) || defined(OS_LINUX)
DiscardableMemoryBacking GetPlatformDiscardableMemoryBacking() {
#if defined(OS_ANDROID) || defined(OS_LINUX)
if (DiscardableMemoryBackingFieldTrialIsEnabled()) {
return GetBackingForFieldTrial();
}
#endif // defined(OS_ANDROID) || defined(OS_LINUX)
#if defined(OS_ANDROID)
if (ashmem_device_is_supported())
return DiscardableMemoryBacking::kSharedMemory;
#endif // defined(OS_ANDROID)
#if defined(OS_POSIX)
if (base::FeatureList::IsEnabled(
base::features::kMadvFreeDiscardableMemory) &&
base::GetMadvFreeSupport() == base::MadvFreeSupport::kSupported) {
return DiscardableMemoryBacking::kMadvFree;
}
#endif // defined(OS_POSIX)
return DiscardableMemoryBacking::kSharedMemory;
}
} // namespace
#if defined(OS_ANDROID) || defined(OS_LINUX)
......@@ -117,9 +94,26 @@ DiscardableMemory::DiscardableMemory() = default;
DiscardableMemory::~DiscardableMemory() = default;
DiscardableMemoryBacking GetDiscardableMemoryBacking() {
static DiscardableMemoryBacking backing =
GetPlatformDiscardableMemoryBacking();
return backing;
#if defined(OS_ANDROID) || defined(OS_LINUX)
if (DiscardableMemoryBackingFieldTrialIsEnabled()) {
return GetBackingForFieldTrial();
}
#endif // defined(OS_ANDROID) || defined(OS_LINUX)
#if defined(OS_ANDROID)
if (ashmem_device_is_supported())
return DiscardableMemoryBacking::kSharedMemory;
#endif // defined(OS_ANDROID)
#if defined(OS_POSIX)
if (base::FeatureList::IsEnabled(
base::features::kMadvFreeDiscardableMemory) &&
base::GetMadvFreeSupport() == base::MadvFreeSupport::kSupported) {
return DiscardableMemoryBacking::kMadvFree;
}
#endif // defined(OS_POSIX)
return DiscardableMemoryBacking::kSharedMemory;
}
} // namespace base
......@@ -54,33 +54,33 @@ TEST_F(DiscardableMemoryBackingFieldTrialTest, TrialActiveOnlyIfCapable) {
TEST_F(DiscardableMemoryBackingFieldTrialTest,
EmulatedSharedMemoryBackingMatchesTrialGroup) {
if (!DiscardableMemoryBackingFieldTrialIsEnabled())
return;
std::unique_ptr<test::ScopedFeatureList> scoped_feature =
GetScopedFeatureListForDiscardableMemoryTrialGroup(
DiscardableMemoryTrialGroup::kEmulatedSharedMemory);
if (!DiscardableMemoryBackingFieldTrialIsEnabled())
return;
DiscardableMemoryBacking backing = GetDiscardableMemoryBacking();
EXPECT_EQ(backing, DiscardableMemoryBacking::kSharedMemory);
}
TEST_F(DiscardableMemoryBackingFieldTrialTest,
MadvFreeBackingMatchesTrialGroup) {
if (!DiscardableMemoryBackingFieldTrialIsEnabled())
return;
std::unique_ptr<test::ScopedFeatureList> scoped_feature =
GetScopedFeatureListForDiscardableMemoryTrialGroup(
DiscardableMemoryTrialGroup::kMadvFree);
if (!DiscardableMemoryBackingFieldTrialIsEnabled())
return;
DiscardableMemoryBacking backing = GetDiscardableMemoryBacking();
EXPECT_EQ(backing, DiscardableMemoryBacking::kMadvFree);
}
#if defined(OS_ANDROID)
TEST_F(DiscardableMemoryBackingFieldTrialTest, AshmemBackingMatchesTrialGroup) {
if (!DiscardableMemoryBackingFieldTrialIsEnabled())
return;
std::unique_ptr<test::ScopedFeatureList> scoped_feature =
GetScopedFeatureListForDiscardableMemoryTrialGroup(
DiscardableMemoryTrialGroup::kAshmem);
if (!DiscardableMemoryBackingFieldTrialIsEnabled())
return;
DiscardableMemoryBacking backing = GetDiscardableMemoryBacking();
EXPECT_EQ(backing, DiscardableMemoryBacking::kSharedMemory);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment