diff options
author | Tor Brede Vekterli <vekterli@verizonmedia.com> | 2020-10-30 15:18:52 +0000 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@verizonmedia.com> | 2020-10-30 15:18:52 +0000 |
commit | 848ef45a8fa00dc553919f7947507b6e41ed4381 (patch) | |
tree | a326f46fad2a4304ebbdf98f206677916f5784e6 /storage | |
parent | 6d917736806d1e69b0b662657b5ab09e1bc5b904 (diff) |
Add test for explicit read guard iterator key ordering
Diffstat (limited to 'storage')
-rw-r--r-- | storage/src/tests/bucketdb/lockablemaptest.cpp | 23 |
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; |