summaryrefslogtreecommitdiffstats
path: root/storage/src
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@verizonmedia.com>2020-10-30 15:18:52 +0000
committerTor Brede Vekterli <vekterli@verizonmedia.com>2020-10-30 15:18:52 +0000
commit848ef45a8fa00dc553919f7947507b6e41ed4381 (patch)
treea326f46fad2a4304ebbdf98f206677916f5784e6 /storage/src
parent6d917736806d1e69b0b662657b5ab09e1bc5b904 (diff)
Add test for explicit read guard iterator key ordering
Diffstat (limited to 'storage/src')
-rw-r--r--storage/src/tests/bucketdb/lockablemaptest.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/storage/src/tests/bucketdb/lockablemaptest.cpp b/storage/src/tests/bucketdb/lockablemaptest.cpp
index c84293ca9f9..7f5069f96b2 100644
--- a/storage/src/tests/bucketdb/lockablemaptest.cpp
+++ b/storage/src/tests/bucketdb/lockablemaptest.cpp
@@ -262,6 +262,29 @@ TYPED_TEST(LockableMapTest, iterating) {
}
}
+TYPED_TEST(LockableMapTest, explicit_iterator_is_key_ordered) {
+ TypeParam map;
+ bool preExisted;
+ map.insert(16, A(16, 0, 0), "foo", preExisted);
+ map.insert(18, A(18, 0, 0), "foo", preExisted);
+ map.insert(11, A(11, 0, 0), "foo", preExisted);
+ map.insert(14, A(14, 0, 0), "foo", preExisted);
+ map.insert(20, A(20, 0, 0), "foo", preExisted);
+
+ std::string expected("11 - A(11, 0, 0)\n"
+ "14 - A(14, 0, 0)\n"
+ "16 - A(16, 0, 0)\n"
+ "18 - A(18, 0, 0)\n"
+ "20 - A(20, 0, 0)\n");
+ ConstProcessor<TypeParam> cproc;
+
+ auto guard = map.acquire_read_guard();
+ for (auto iter = guard->create_iterator(); iter->valid(); iter->next()) {
+ cproc(iter->key(), iter->value());
+ }
+ EXPECT_EQ(expected, cproc.toString());
+}
+
TYPED_TEST(LockableMapTest, chunked_iteration_is_transparent_across_chunk_sizes) {
TypeParam map;
bool preExisted;