MCPcopy Create free account
hub / github.com/apache/impala / TEST

Function TEST

be/src/util/lru-multi-cache-test.cc:60–135  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

58// 7 + 3 = 10 total elements in cache
59
60TEST(LruMultiCache, BasicTests) {
61 LruMultiCache<std::string, TestType> cache(100);
62
63 const size_t num_of_parallel_keys = 5;
64 std::string keys[num_of_parallel_keys] = {"a", "b", "c", "d", "e"};
65 int value_bases[num_of_parallel_keys] = {1, 10, 100, 1000, 10000};
66
67 for (size_t i = 0; i < 5; i++) {
68 std::string& key = keys[i];
69 int& value_base = value_bases[i];
70
71 // {}
72 ASSERT_EQ(nullptr, cache.Get(key).Get());
73
74 auto value = cache.EmplaceAndGet(key, value_base, 1.0f);
75
76 ASSERT_EQ(nullptr, cache.Get(key).Get());
77
78 value.Release();
79
80 // 1
81 value = cache.Get(key);
82
83 ASSERT_NE(nullptr, value.Get());
84
85 value.Release();
86
87 auto value2 = cache.EmplaceAndGet(key, value_base + 1, 1.0f);
88
89 value = cache.Get(key);
90
91 ASSERT_EQ(value_base, value.Get()->i);
92
93 value.Release();
94 value2.Release();
95 // 2 -> 1
96 }
97
98 ASSERT_EQ(10, cache.Size());
99 ASSERT_EQ(10, cache.NumberOfAvailableObjects());
100
101 for (size_t i = 0; i < 5; i++) {
102 std::string& key = keys[i];
103 int& value_base = value_bases[i];
104
105 // 2 -> 1
106 auto value2 = cache.Get(key);
107
108 ASSERT_EQ(value_base + 1, value2.Get()->i);
109
110 auto value = cache.Get(key);
111
112 ASSERT_EQ(value_base, value.Get()->i);
113
114 value2.Release();
115 value.Release();
116
117 // 1 -> 2

Callers

nothing calls this directly

Calls 9

EmplaceAndGetMethod · 0.80
RehashMethod · 0.80
push_backMethod · 0.80
NumberOfKeysMethod · 0.80
GetMethod · 0.45
ReleaseMethod · 0.45
SizeMethod · 0.45
DestroyMethod · 0.45

Tested by

no test coverage detected