summaryrefslogtreecommitdiffstats
path: root/src/test/mgr/test_ttlcache.cc
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 18:45:59 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 18:45:59 +0000
commit19fcec84d8d7d21e796c7624e521b60d28ee21ed (patch)
tree42d26aa27d1e3f7c0b8bd3fd14e7d7082f5008dc /src/test/mgr/test_ttlcache.cc
parentInitial commit. (diff)
downloadceph-upstream/16.2.11+ds.tar.xz
ceph-upstream/16.2.11+ds.zip
Adding upstream version 16.2.11+ds.upstream/16.2.11+dsupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/mgr/test_ttlcache.cc')
-rw-r--r--src/test/mgr/test_ttlcache.cc70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/test/mgr/test_ttlcache.cc b/src/test/mgr/test_ttlcache.cc
new file mode 100644
index 000000000..a1ee0a862
--- /dev/null
+++ b/src/test/mgr/test_ttlcache.cc
@@ -0,0 +1,70 @@
+#include <iostream>
+
+#include "mgr/TTLCache.h"
+#include "gtest/gtest.h"
+
+using namespace std;
+
+TEST(TTLCache, Get) {
+ TTLCache<string, int> c{100};
+ c.insert("foo", 1);
+ int foo = c.get("foo");
+ ASSERT_EQ(foo, 1);
+}
+
+TEST(TTLCache, Erase) {
+ TTLCache<string, int> c{100};
+ c.insert("foo", 1);
+ int foo = c.get("foo");
+ ASSERT_EQ(foo, 1);
+ c.erase("foo");
+ try{
+ foo = c.get("foo");
+ FAIL();
+ } catch (std::out_of_range& e) {
+ SUCCEED();
+ }
+}
+
+TEST(TTLCache, Clear) {
+ TTLCache<string, int> c{100};
+ c.insert("foo", 1);
+ c.insert("foo2", 2);
+ c.clear();
+ ASSERT_FALSE(c.size());
+}
+
+TEST(TTLCache, NoTTL) {
+ TTLCache<string, int> c{100};
+ c.insert("foo", 1);
+ int foo = c.get("foo");
+ ASSERT_EQ(foo, 1);
+ c.set_ttl(0);
+ c.insert("foo2", 2);
+ try{
+ foo = c.get("foo2");
+ FAIL();
+ } catch (std::out_of_range& e) {
+ SUCCEED();
+ }
+}
+
+TEST(TTLCache, SizeLimit) {
+ TTLCache<string, int> c{100, 2};
+ c.insert("foo", 1);
+ c.insert("foo2", 2);
+ c.insert("foo3", 3);
+ ASSERT_EQ(c.size(), 2);
+}
+
+TEST(TTLCache, HitRatio) {
+ TTLCache<string, int> c{100};
+ c.insert("foo", 1);
+ c.insert("foo2", 2);
+ c.insert("foo3", 3);
+ c.get("foo2");
+ c.get("foo3");
+ std::pair<uint64_t, uint64_t> hit_miss_ratio = c.get_hit_miss_ratio();
+ ASSERT_EQ(std::get<1>(hit_miss_ratio), 3);
+ ASSERT_EQ(std::get<0>(hit_miss_ratio), 2);
+}