aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/yt/containers/unittests/expiring_set_ut.cpp
diff options
context:
space:
mode:
authorbabenko <babenko@yandex-team.com>2024-09-30 15:33:57 +0300
committerbabenko <babenko@yandex-team.com>2024-09-30 15:49:23 +0300
commitd4f5e798223ea2abf44ad38eab5673e1ee4654b0 (patch)
treed3b0ab47d006a6f2c6f5459293ea950320b3e222 /library/cpp/yt/containers/unittests/expiring_set_ut.cpp
parentfd3ee9bf6fcc6b810969bf83f7e3e622061957da (diff)
downloadydb-d4f5e798223ea2abf44ad38eab5673e1ee4654b0.tar.gz
Extract TExpiringSet to library/cpp/containers
commit_hash:dd1c08771b1d4865d03a492927afa0f9895a5f44
Diffstat (limited to 'library/cpp/yt/containers/unittests/expiring_set_ut.cpp')
-rw-r--r--library/cpp/yt/containers/unittests/expiring_set_ut.cpp102
1 files changed, 102 insertions, 0 deletions
diff --git a/library/cpp/yt/containers/unittests/expiring_set_ut.cpp b/library/cpp/yt/containers/unittests/expiring_set_ut.cpp
new file mode 100644
index 0000000000..e9f2743a80
--- /dev/null
+++ b/library/cpp/yt/containers/unittests/expiring_set_ut.cpp
@@ -0,0 +1,102 @@
+#include <library/cpp/yt/containers/expiring_set.h>
+
+#include <library/cpp/testing/gtest/gtest.h>
+
+namespace NYT {
+namespace {
+
+////////////////////////////////////////////////////////////////////////////////
+
+TInstant operator""_ts(unsigned long long seconds)
+{
+ return TInstant::Zero() + TDuration::Seconds(seconds);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+TEST(TExpiringSetTest, Empty)
+{
+ TExpiringSet<int> set;
+ EXPECT_EQ(set.GetSize(), 0);
+}
+
+TEST(TExpiringSetTest, ExpireSingle)
+{
+ TExpiringSet<int> set;
+ set.SetTTl(TDuration::Seconds(2));
+
+ set.Insert(0_ts, 1);
+ EXPECT_EQ(set.GetSize(), 1);
+
+ set.Expire(1_ts);
+ EXPECT_EQ(set.GetSize(), 1);
+
+ set.Expire(2_ts);
+ EXPECT_EQ(set.GetSize(), 0);
+}
+
+TEST(TExpiringSetTest, ExpireBatch)
+{
+ TExpiringSet<int> set;
+ set.SetTTl(TDuration::Seconds(2));
+
+ set.InsertMany(0_ts, std::vector<int>{1, 2, 3});
+ EXPECT_EQ(set.GetSize(), 3);
+
+ set.Expire(1_ts);
+ EXPECT_EQ(set.GetSize(), 3);
+
+ set.Expire(2_ts);
+ EXPECT_EQ(set.GetSize(), 0);
+}
+
+TEST(TExpiringSetTest, Reinsert)
+{
+ TExpiringSet<int> set;
+ set.SetTTl(TDuration::Seconds(2));
+
+ set.Insert(0_ts, 1);
+ EXPECT_EQ(set.GetSize(), 1);
+
+ set.Insert(1_ts, 1);
+ EXPECT_EQ(set.GetSize(), 1);
+
+ set.Expire(2_ts);
+ EXPECT_EQ(set.GetSize(), 1);
+
+ set.Expire(3_ts);
+ EXPECT_EQ(set.GetSize(), 0);
+}
+
+TEST(TExpiringSetTest, Contains)
+{
+ TExpiringSet<int> set;
+ set.SetTTl(TDuration::Seconds(1));
+
+ EXPECT_FALSE(set.Contains(1));
+
+ set.Insert(0_ts, 1);
+ EXPECT_TRUE(set.Contains(1));
+
+ set.Expire(1_ts);
+ EXPECT_FALSE(set.Contains(1));
+}
+
+TEST(TExpiringSetTest, Clear)
+{
+ TExpiringSet<int> set;
+ set.SetTTl(TDuration::Seconds(1));
+
+ set.Insert(0_ts, 1);
+ EXPECT_EQ(set.GetSize(), 1);
+ EXPECT_TRUE(set.Contains(1));
+
+ set.Clear();
+ EXPECT_EQ(set.GetSize(), 0);
+ EXPECT_FALSE(set.Contains(1));
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+} // namespace
+} // namespace NYT