diff options
author | Tor Egge <Tor.Egge@broadpark.no> | 2020-10-28 14:10:19 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@broadpark.no> | 2020-10-28 15:05:29 +0100 |
commit | c8aeadb2e91e9730df38e9aa8a656bf105fa0eed (patch) | |
tree | ca9f973361f41a031ef9b56bb916e56521c85ff2 /storage/src/tests/persistence | |
parent | 9a6ee1f2287a679f31cb3706953dede231f13bb3 (diff) |
Rename MaskRemapper to HasMaskRemapper.
Move HasMaskRemapper to separate file.
Add separate unit test for HasMaskRemapper.
Diffstat (limited to 'storage/src/tests/persistence')
-rw-r--r-- | storage/src/tests/persistence/CMakeLists.txt | 1 | ||||
-rw-r--r-- | storage/src/tests/persistence/has_mask_remapper_test.cpp | 42 |
2 files changed, 43 insertions, 0 deletions
diff --git a/storage/src/tests/persistence/CMakeLists.txt b/storage/src/tests/persistence/CMakeLists.txt index 5e03a2a3f2e..f922689b941 100644 --- a/storage/src/tests/persistence/CMakeLists.txt +++ b/storage/src/tests/persistence/CMakeLists.txt @@ -3,6 +3,7 @@ vespa_add_executable(storage_persistence_gtest_runner_app TEST SOURCES bucketownershipnotifiertest.cpp + has_mask_remapper_test.cpp mergehandlertest.cpp persistencequeuetest.cpp persistencetestutils.cpp diff --git a/storage/src/tests/persistence/has_mask_remapper_test.cpp b/storage/src/tests/persistence/has_mask_remapper_test.cpp new file mode 100644 index 00000000000..58f6f5b3fe7 --- /dev/null +++ b/storage/src/tests/persistence/has_mask_remapper_test.cpp @@ -0,0 +1,42 @@ +// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#include <vespa/storage/persistence/filestorage/has_mask_remapper.h> +#include <gtest/gtest.h> + +namespace storage { + +using NodeList = std::vector<api::MergeBucketCommand::Node>; + +const NodeList merge_operation_nodes{{0, true}, {1, true}, {2, false}, {3, false}, {4, false}}; + +TEST(HasMaskRemapperTest, test_remap_none) +{ + HasMaskRemapper remap_mask(merge_operation_nodes, merge_operation_nodes); + for (uint32_t i = 0; i < (1u << merge_operation_nodes.size()); ++i) { + EXPECT_EQ(i, remap_mask(i)); + } +} + +TEST(HasMaskRemapperTest, test_remap_subset) +{ + NodeList reply_nodes{{0, true}, {1, true}, {3, false}}; + HasMaskRemapper remap_mask(merge_operation_nodes, reply_nodes); + std::vector<uint16_t> remapped; + for (uint32_t i = 0; i < (1u << reply_nodes.size()); ++i) { + remapped.push_back(remap_mask(i)); + } + EXPECT_EQ((std::vector<uint16_t>{0u, 1u, 2u, 3u, 8u, 9u, 10u, 11u}), remapped); +} + +TEST(HasMaskRemapperTest, test_remap_swapped_subset) +{ + NodeList reply_nodes{{1, true}, {0, true}}; + HasMaskRemapper remap_mask(merge_operation_nodes, reply_nodes); + std::vector<uint16_t> remapped; + for (uint32_t i = 0; i < (1u << reply_nodes.size()); ++i) { + remapped.push_back(remap_mask(i)); + } + EXPECT_EQ((std::vector<uint16_t>{0u, 2u, 1u, 3u}), remapped); +} + +} |