From 848ef45a8fa00dc553919f7947507b6e41ed4381 Mon Sep 17 00:00:00 2001 From: Tor Brede Vekterli Date: Fri, 30 Oct 2020 15:18:52 +0000 Subject: Add test for explicit read guard iterator key ordering --- storage/src/tests/bucketdb/lockablemaptest.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'storage/src') 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 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; -- cgit v1.2.3