Skip to content

Commit dd5934e

Browse files
committed
incorporate comments on tests
1 parent aab089c commit dd5934e

File tree

2 files changed

+53
-49
lines changed

2 files changed

+53
-49
lines changed

src/Storages/Cache/ObjectStorageListObjectsCache.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ namespace DB
1010

1111
class ObjectStorageListObjectsCache
1212
{
13+
friend class ObjectStorageListObjectsCacheTest;
1314
public:
1415
ObjectStorageListObjectsCache(const ObjectStorageListObjectsCache &) = delete;
1516
ObjectStorageListObjectsCache(ObjectStorageListObjectsCache &&) noexcept = delete;

src/Storages/Cache/tests/gtest_object_storage_list_objects_cache.cpp

Lines changed: 52 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -6,70 +6,73 @@
66
namespace DB
77
{
88

9-
auto & initializeAndGetCacheInstance()
9+
class ObjectStorageListObjectsCacheTest : public ::testing::Test
1010
{
11-
static auto & cache = ObjectStorageListObjectsCache::instance();
12-
cache.setTTL(3);
13-
cache.setMaxCount(100);
14-
cache.setMaxSizeInBytes(1000000);
15-
return cache;
16-
}
17-
18-
static auto & cache = initializeAndGetCacheInstance();
11+
protected:
12+
void SetUp() override
13+
{
14+
cache = std::unique_ptr<ObjectStorageListObjectsCache>(new ObjectStorageListObjectsCache());
15+
cache->setTTL(3);
16+
cache->setMaxCount(100);
17+
cache->setMaxSizeInBytes(1000000);
18+
}
1919

20-
ObjectStorageListObjectsCache::Key default_key {"default", "test-bucket", "test-prefix/"};
20+
std::unique_ptr<ObjectStorageListObjectsCache> cache;
21+
static ObjectStorageListObjectsCache::Key default_key;
2122

22-
std::shared_ptr<ObjectStorageListObjectsCache::Value> createTestValue(const std::vector<std::string>& paths)
23-
{
24-
auto value = std::make_shared<ObjectStorageListObjectsCache::Value>();
25-
for (const auto & path : paths)
23+
static std::shared_ptr<ObjectStorageListObjectsCache::Value> createTestValue(const std::vector<std::string>& paths)
2624
{
27-
value->push_back(std::make_shared<ObjectInfo>(path));
25+
auto value = std::make_shared<ObjectStorageListObjectsCache::Value>();
26+
for (const auto & path : paths)
27+
{
28+
value->push_back(std::make_shared<ObjectInfo>(path));
29+
}
30+
return value;
2831
}
29-
return value;
30-
}
32+
};
3133

34+
ObjectStorageListObjectsCache::Key ObjectStorageListObjectsCacheTest::default_key {"default", "test-bucket", "test-prefix/"};
3235

33-
TEST(ObjectStorageListObjectsCacheTest, BasicSetAndGet)
36+
TEST_F(ObjectStorageListObjectsCacheTest, BasicSetAndGet)
3437
{
35-
cache.clear();
38+
cache->clear();
3639
const std::string bucket = "test-bucket";
3740
const std::string prefix = "test-prefix/";
3841
auto value = createTestValue({"test-prefix/file1.txt", "test-prefix/file2.txt"});
3942

40-
cache.set(default_key, value);
43+
cache->set(default_key, value);
4144

42-
auto result = cache.get(default_key).value();
45+
auto result = cache->get(default_key).value();
4346
ASSERT_EQ(result.size(), 2);
4447
EXPECT_EQ(result[0]->getPath(), "test-prefix/file1.txt");
4548
EXPECT_EQ(result[1]->getPath(), "test-prefix/file2.txt");
4649
}
4750

48-
TEST(ObjectStorageListObjectsCacheTest, CacheMiss)
51+
TEST_F(ObjectStorageListObjectsCacheTest, CacheMiss)
4952
{
50-
cache.clear();
53+
cache->clear();
5154
const std::string bucket = "test-bucket";
5255
const std::string prefix = "test-prefix/";
5356

54-
EXPECT_FALSE(cache.get(default_key));
57+
EXPECT_FALSE(cache->get(default_key));
5558
}
5659

57-
TEST(ObjectStorageListObjectsCacheTest, ClearCache)
60+
TEST_F(ObjectStorageListObjectsCacheTest, ClearCache)
5861
{
59-
cache.clear();
62+
cache->clear();
6063
const std::string bucket = "test-bucket";
6164
const std::string prefix = "test-prefix/";
6265
auto value = createTestValue({"test-prefix/file1.txt", "test-prefix/file2.txt"});
6366

64-
cache.set(default_key, value);
65-
cache.clear();
67+
cache->set(default_key, value);
68+
cache->clear();
6669

67-
EXPECT_FALSE(cache.get(default_key));
70+
EXPECT_FALSE(cache->get(default_key));
6871
}
6972

70-
TEST(ObjectStorageListObjectsCacheTest, PrefixMatching)
73+
TEST_F(ObjectStorageListObjectsCacheTest, PrefixMatching)
7174
{
72-
cache.clear();
75+
cache->clear();
7376

7477
auto short_prefix_key = default_key;
7578
short_prefix_key.prefix = "parent/";
@@ -85,20 +88,20 @@ TEST(ObjectStorageListObjectsCacheTest, PrefixMatching)
8588
"parent/child/grandchild/file1.txt",
8689
"parent/child/grandchild/file2.txt"});
8790

88-
cache.set(mid_prefix_key, value);
91+
cache->set(mid_prefix_key, value);
8992

90-
auto result1 = cache.get(mid_prefix_key).value();
93+
auto result1 = cache->get(mid_prefix_key).value();
9194
EXPECT_EQ(result1.size(), 2);
9295

93-
auto result2 = cache.get(long_prefix_key).value();
96+
auto result2 = cache->get(long_prefix_key).value();
9497
EXPECT_EQ(result2.size(), 2);
9598

96-
EXPECT_FALSE(cache.get(short_prefix_key));
99+
EXPECT_FALSE(cache->get(short_prefix_key));
97100
}
98101

99-
TEST(ObjectStorageListObjectsCacheTest, PrefixFiltering)
102+
TEST_F(ObjectStorageListObjectsCacheTest, PrefixFiltering)
100103
{
101-
cache.clear();
104+
cache->clear();
102105

103106
auto key_with_short_prefix = default_key;
104107
key_with_short_prefix.prefix = "parent/";
@@ -112,34 +115,34 @@ TEST(ObjectStorageListObjectsCacheTest, PrefixFiltering)
112115
"parent/child2/file3.txt"
113116
});
114117

115-
cache.set(key_with_short_prefix, value);
118+
cache->set(key_with_short_prefix, value);
116119

117-
auto result = cache.get(key_with_mid_prefix, true).value();
120+
auto result = cache->get(key_with_mid_prefix, true).value();
118121
EXPECT_EQ(result.size(), 1);
119122
EXPECT_EQ(result[0]->getPath(), "parent/child1/file2.txt");
120123
}
121124

122-
TEST(ObjectStorageListObjectsCacheTest, TTLExpiration)
125+
TEST_F(ObjectStorageListObjectsCacheTest, TTLExpiration)
123126
{
124-
cache.clear();
127+
cache->clear();
125128
const std::string bucket = "test-bucket";
126129
const std::string prefix = "test-prefix/";
127130
auto value = createTestValue({"test-prefix/file1.txt"});
128131

129-
cache.set(default_key, value);
132+
cache->set(default_key, value);
130133

131134
// Verify we can get it immediately
132-
auto result1 = cache.get(default_key).value();
135+
auto result1 = cache->get(default_key).value();
133136
EXPECT_EQ(result1.size(), 1);
134137

135138
std::this_thread::sleep_for(std::chrono::seconds(4));
136139

137-
EXPECT_FALSE(cache.get(default_key));
140+
EXPECT_FALSE(cache->get(default_key));
138141
}
139142

140-
TEST(ObjectStorageListObjectsCacheTest, BestPrefixMatch)
143+
TEST_F(ObjectStorageListObjectsCacheTest, BestPrefixMatch)
141144
{
142-
cache.clear();
145+
cache->clear();
143146

144147
auto short_prefix_key = default_key;
145148
short_prefix_key.prefix = "a/b/";
@@ -153,11 +156,11 @@ TEST(ObjectStorageListObjectsCacheTest, BestPrefixMatch)
153156
auto short_prefix = createTestValue({"a/b/c/d/file1.txt", "a/b/c/file1.txt", "a/b/file2.txt"});
154157
auto mid_prefix = createTestValue({"a/b/c/d/file1.txt", "a/b/c/file1.txt"});
155158

156-
cache.set(short_prefix_key, short_prefix);
157-
cache.set(mid_prefix_key, mid_prefix);
159+
cache->set(short_prefix_key, short_prefix);
160+
cache->set(mid_prefix_key, mid_prefix);
158161

159162
// should pick mid_prefix, which has size 2. filter_by_prefix=false so we can assert by size
160-
auto result = cache.get(long_prefix_key, false).value();
163+
auto result = cache->get(long_prefix_key, false).value();
161164
EXPECT_EQ(result.size(), 2u);
162165
}
163166

0 commit comments

Comments
 (0)