diff options
author | Tor Egge <tegge@oath.com> | 2019-01-15 23:42:34 +0000 |
---|---|---|
committer | Tor Egge <tegge@oath.com> | 2019-01-15 23:44:10 +0000 |
commit | 9c0828f85af631b339182a5e81ef0b672fd67829 (patch) | |
tree | a222b51d133a40f4410732568fea90ee90f61767 /searchlib/src/tests/attribute/sourceselector | |
parent | eda8c867de1695a59ab96887d42b5fd158dcb038 (diff) |
Set source to default source from committed docid limit to new guard
when reserving space for source mapping. This reinitializes data
that was set to "undefined" value (-128) in the backing int8_t single
value attribute when compacting lid space.
Diffstat (limited to 'searchlib/src/tests/attribute/sourceselector')
-rw-r--r-- | searchlib/src/tests/attribute/sourceselector/sourceselector_test.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/searchlib/src/tests/attribute/sourceselector/sourceselector_test.cpp b/searchlib/src/tests/attribute/sourceselector/sourceselector_test.cpp index 75a0ccf6ab9..3ad3607ab23 100644 --- a/searchlib/src/tests/attribute/sourceselector/sourceselector_test.cpp +++ b/searchlib/src/tests/attribute/sourceselector/sourceselector_test.cpp @@ -3,6 +3,7 @@ #include <vespa/searchlib/attribute/fixedsourceselector.h> #include <vespa/searchlib/index/dummyfileheadercontext.h> +#include <vespa/searchcommon/common/undefinedvalues.h> #include <vespa/vespalib/testkit/testapp.h> #include <vespa/fastos/file.h> @@ -28,6 +29,7 @@ const string index_dir = "test_data"; const string base_file_name = "test_data/sourcelist"; const string base_file_name2 = "test_data/sourcelist2"; const uint32_t default_source = 7; +const uint32_t invalid_source = (uint8_t)search::attribute::getUndefined<int8_t>(); const uint32_t base_id = 42; class Test : public vespalib::TestApp @@ -50,6 +52,7 @@ private: void requireThatSourcesAreCountedCorrectly(); void requireThatSourcesAreCountedCorrectly(); void requireThatDocIdLimitIsCorrect(); + void requireThatCorrectDefaultValueIsUsedAfterCompaction(); }; int @@ -66,6 +69,7 @@ Test::Main() TEST_DO(requireThatCompleteSourceRangeIsHandled()); TEST_DO(requireThatSourcesAreCountedCorrectly()); TEST_DO(requireThatDocIdLimitIsCorrect()); + TEST_DO(requireThatCorrectDefaultValueIsUsedAfterCompaction()); TEST_DONE(); } @@ -236,6 +240,27 @@ Test::requireThatDocIdLimitIsCorrect() EXPECT_EQUAL(7u, selector2->getDocIdLimit()); } +void +Test::requireThatCorrectDefaultValueIsUsedAfterCompaction() +{ + FixedSourceSelector selector(default_source, base_file_name); + EXPECT_EQUAL(0u, selector.getDocIdLimit()); + auto it(selector.createIterator()); + selector.setSource(8, 4); + EXPECT_EQUAL(default_source, (uint32_t) it->getSource(9)); + EXPECT_EQUAL(default_source, (uint32_t) it->getSource(6)); + selector.compactLidSpace(4); + EXPECT_EQUAL(4u, selector.getDocIdLimit()); + EXPECT_EQUAL(default_source, (uint32_t) it->getSource(4)); + EXPECT_EQUAL(invalid_source, (uint32_t) it->getSource(5)); // beyond guard + selector.setSource(6, 4); + EXPECT_EQUAL(7u, selector.getDocIdLimit()); + EXPECT_EQUAL(default_source, (uint32_t) it->getSource(5)); + EXPECT_EQUAL(4u, (uint8_t) it->getSource(6)); + EXPECT_EQUAL(default_source, (uint32_t) it->getSource(7)); +} + + } // namespace TEST_APPHOOK(Test); |