summaryrefslogtreecommitdiff
path: root/src/mongo/db/query/lru_key_value_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/query/lru_key_value_test.cpp')
-rw-r--r--src/mongo/db/query/lru_key_value_test.cpp75
1 files changed, 11 insertions, 64 deletions
diff --git a/src/mongo/db/query/lru_key_value_test.cpp b/src/mongo/db/query/lru_key_value_test.cpp
index 6dcdfc5a4ea..3ebf47267fb 100644
--- a/src/mongo/db/query/lru_key_value_test.cpp
+++ b/src/mongo/db/query/lru_key_value_test.cpp
@@ -64,15 +64,15 @@ struct ValueType {
struct TrivialBudgetEstimator {
static constexpr size_t kSize = 1;
- size_t operator()(const int&, const ValueType&) {
+ size_t operator()(const ValueType&) {
return kSize;
}
- size_t operator()(const int&, const std::unique_ptr<int>&) {
+ size_t operator()(const std::shared_ptr<int>&) {
return kSize;
}
- size_t operator()(const int&, const std::shared_ptr<int>) {
+ size_t operator()(const std::unique_ptr<int>&) {
return kSize;
}
};
@@ -87,7 +87,7 @@ struct NonTrivialEntry {
};
struct NonTrivialBudgetEstimator {
- size_t operator()(const int& key, const std::shared_ptr<NonTrivialEntry> value) {
+ size_t operator()(const std::shared_ptr<NonTrivialEntry>& value) {
return value->budgetSize;
}
};
@@ -95,40 +95,8 @@ struct NonTrivialBudgetEstimator {
using NonTrivialTestSharedPtrValue =
LRUKeyValue<size_t, std::shared_ptr<NonTrivialEntry>, NonTrivialBudgetEstimator>;
-class NonTrivialInsertionEvictionListener {
-public:
- NonTrivialInsertionEvictionListener() {
- keyTotal = 0;
- valueTotal = 0;
- budgetTotal = 0;
- }
-
- void onInsert(const int& k, const ValueType& v, size_t budget) {
- keyTotal += k;
- valueTotal += v.val;
- budgetTotal += budget;
- }
-
- void onEvict(const int& k, const ValueType& v, size_t budget) {
- keyTotal -= k;
- valueTotal -= v.val;
- budgetTotal -= budget;
- }
-
- void onClear(size_t budget) {
- budgetTotal -= budget;
- }
-
- static size_t keyTotal;
- static size_t valueTotal;
- static size_t budgetTotal;
-};
-size_t NonTrivialInsertionEvictionListener::keyTotal;
-size_t NonTrivialInsertionEvictionListener::valueTotal;
-size_t NonTrivialInsertionEvictionListener::budgetTotal;
-
-template <typename Key, typename Value, typename Estimator, typename Listener>
-void assertInKVStore(LRUKeyValue<Key, Value, Estimator, Listener>& cache, Key key, Value value) {
+template <typename Key, typename Value, typename Estimator>
+void assertInKVStore(LRUKeyValue<Key, Value, Estimator>& cache, Key key, Value value) {
ASSERT_TRUE(cache.hasKey(key));
auto s = cache.get(key);
ASSERT(s.isOK());
@@ -137,8 +105,8 @@ void assertInKVStore(LRUKeyValue<Key, Value, Estimator, Listener>& cache, Key ke
ASSERT_EQUALS(*(kvItr->second), *value);
}
-template <typename Key, typename Value, typename Estimator, typename Listener>
-void assertNotInKVStore(LRUKeyValue<Key, Value, Estimator, Listener>& cache, Key key) {
+template <typename Key, typename Value, typename Estimator>
+void assertNotInKVStore(LRUKeyValue<Key, Value, Estimator>& cache, Key key) {
ASSERT_FALSE(cache.hasKey(key));
auto s = cache.get(key);
ASSERT(!s.isOK());
@@ -327,10 +295,10 @@ TEST(LRUKeyValueTest, IterationTest) {
cache.add(2, std::make_shared<int>(2));
auto i = cache.begin();
- ASSERT_EQUALS(*i->first, 2);
+ ASSERT_EQUALS(i->first, 2);
ASSERT_EQUALS(*i->second, 2);
++i;
- ASSERT_EQUALS(*i->first, 1);
+ ASSERT_EQUALS(i->first, 1);
ASSERT_EQUALS(*i->second, 1);
++i;
ASSERT(i == cache.end());
@@ -388,8 +356,7 @@ TEST(LRUKeyValueTest, UniquePtrKeyValue) {
assertNotInKVStore(cacheForEviction, 1); // The entry with key '1' has been Evicted.
}
-using TestScalarValue =
- LRUKeyValue<int, ValueType, TrivialBudgetEstimator, NonTrivialInsertionEvictionListener>;
+using TestScalarValue = LRUKeyValue<int, ValueType, TrivialBudgetEstimator>;
void assertValueInKVStore(TestScalarValue& cache, int key, ValueType value) {
ASSERT_TRUE(cache.hasKey(key));
@@ -406,17 +373,9 @@ TEST(LRUKeyValueTest, ScalarKeyValue) {
assertValueInKVStore(cache, 1, ValueType{2});
assertNotInKVStore(cache, 3);
- ASSERT_EQUALS(NonTrivialInsertionEvictionListener::keyTotal, 1);
- ASSERT_EQUALS(NonTrivialInsertionEvictionListener::valueTotal, 2);
- ASSERT_EQUALS(NonTrivialInsertionEvictionListener::budgetTotal, 1);
-
cache.add(1, ValueType{3});
assertValueInKVStore(cache, 1, ValueType{3});
- ASSERT_EQUALS(NonTrivialInsertionEvictionListener::keyTotal, 1);
- ASSERT_EQUALS(NonTrivialInsertionEvictionListener::valueTotal, 3);
- ASSERT_EQUALS(NonTrivialInsertionEvictionListener::budgetTotal, 1);
-
// Test eviction.
TestScalarValue cacheForEviction{2};
cacheForEviction.add(1, ValueType{1});
@@ -425,18 +384,6 @@ TEST(LRUKeyValueTest, ScalarKeyValue) {
ASSERT_EQUALS(cacheForEviction.size(), static_cast<size_t>(2));
assertNotInKVStore(cacheForEviction, 1); // The entry with key '1' has been Evicted.
-
- ASSERT_EQUALS(NonTrivialInsertionEvictionListener::keyTotal, 5);
- ASSERT_EQUALS(NonTrivialInsertionEvictionListener::valueTotal, 5);
- ASSERT_EQUALS(NonTrivialInsertionEvictionListener::budgetTotal, 2);
-
- // Clear the remaining values.
- cacheForEviction.clear();
-
- assertNotInKVStore(cacheForEviction, 2); // The entry with key '2' has been Evicted.
- assertNotInKVStore(cacheForEviction, 3); // The entry with key '3' has been Evicted.
-
- ASSERT_EQUALS(NonTrivialInsertionEvictionListener::budgetTotal, 0);
}
} // namespace