aboutsummaryrefslogtreecommitdiff
path: root/ExperimentsTest.cpp
diff options
context:
space:
mode:
authorLuke Huang <huangluke@google.com>2020-04-30 11:26:41 +0800
committerLuke Huang <huangluke@google.com>2020-05-01 16:47:40 +0800
commita893556b4e2e9c3128e0384357487310acb48204 (patch)
tree2feb271120d25e7ef23076b44971af461c936022 /ExperimentsTest.cpp
parent11df744d25609531e817d1940d177723d5131f6c (diff)
Fix default value problem of DnsResolver Experiments#getFlag()
The default value of Experiments::getFlag() doesn't actually work because Experiments::updateInternal() wil also initial the property as 0. Use INT_MIN as the default value to represent the flag can't be found. Bug: 155042187 Test: atest Change-Id: Icc863b9a9d7b4cefca4dce23933c705a51299095
Diffstat (limited to 'ExperimentsTest.cpp')
-rw-r--r--ExperimentsTest.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/ExperimentsTest.cpp b/ExperimentsTest.cpp
index 47f6a7dc..6b3ad574 100644
--- a/ExperimentsTest.cpp
+++ b/ExperimentsTest.cpp
@@ -59,6 +59,19 @@ class ExperimentsTest : public ::testing::Test {
EXPECT_THAT(mExperiments.mFlagsMapInt, ::testing::ContainerEq(sFakeFlagsMapInt));
}
+ void expectFlagsMapIntDefault() {
+ std::lock_guard guard(mExperiments.mMutex);
+ for (const auto& [key, value] : mExperiments.mFlagsMapInt) {
+ EXPECT_EQ(value, Experiments::kFlagIntDefault);
+ }
+ }
+
+ void expectGetDnsExperimentFlagIntDefault(int value) {
+ for (const auto& key : Experiments::kExperimentFlagKeyList) {
+ EXPECT_EQ(mExperiments.getFlag(key, value), value);
+ }
+ }
+
void expectGetDnsExperimentFlagInt() {
std::unordered_map<std::string_view, int> tempMap;
for (const auto& key : Experiments::kExperimentFlagKeyList) {
@@ -78,6 +91,9 @@ class ExperimentsTest : public ::testing::Test {
std::lock_guard guard(mExperiments.mMutex);
for (const auto& [key, value] : mExperiments.mFlagsMapInt) {
std::string flagDump = fmt::format("{}: {}", key, value);
+ if (value == Experiments::kFlagIntDefault) {
+ flagDump = fmt::format("{}: UNSET", key);
+ }
SCOPED_TRACE(flagDump);
size_t pos = dumpString.find(flagDump, startPos);
EXPECT_NE(pos, std::string::npos);
@@ -110,6 +126,17 @@ TEST_F(ExperimentsTest, getDnsExperimentFlagInt) {
}
}
+TEST_F(ExperimentsTest, getDnsExperimentFlagIntDefaultValue) {
+ // Clear the map and make mExperiments initialized with our default int value.
+ sFakeFlagsMapInt.clear();
+ mExperiments.update();
+ expectFlagsMapIntDefault();
+ std::vector<int> testValues = {100, 50, 30, 5};
+ for (int testValue : testValues) {
+ expectGetDnsExperimentFlagIntDefault(testValue);
+ }
+}
+
TEST_F(ExperimentsTest, dump) {
std::vector<int> testValues = {100, 37, 0, 30};
for (int testValue : testValues) {
@@ -117,6 +144,9 @@ TEST_F(ExperimentsTest, dump) {
mExperiments.update();
expectDumpOutput();
}
+ sFakeFlagsMapInt.clear();
+ mExperiments.update();
+ expectDumpOutput();
}
} // namespace android::net