diff options
author | Tor Egge <Tor.Egge@online.no> | 2021-11-18 20:01:35 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2021-11-18 20:01:35 +0100 |
commit | 673f7324d93137cf781c2a0475017ed5d8121803 (patch) | |
tree | 8d9625ee6cbb41b0fed34dc6e16fdd1abc010d95 /searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp | |
parent | 0654fa7787092a5f101572629c11860f5480e058 (diff) |
Add a vector of gids to remove to ReferenceAttribute::populateTargetLids()
signature. These gids represent the target documents removed since the last
feed view force commit where the live gid to lid mapping in the document
meta store was made available as a frozen tree.
Diffstat (limited to 'searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp')
-rw-r--r-- | searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp b/searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp index bafcd545e33..c077ab83a6e 100644 --- a/searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp +++ b/searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp @@ -200,9 +200,9 @@ struct ReferenceAttributeTest : public ::testing::Test { void notifyReferencedRemove(const GlobalId &gid) { _attr->notifyReferencedRemove(gid); } - void setGidToLidMapperFactory(std::shared_ptr<MyGidToLidMapperFactory> factory) { + void setGidToLidMapperFactory(std::shared_ptr<MyGidToLidMapperFactory> factory, const std::vector<GlobalId>& removes) { _attr->setGidToLidMapperFactory(factory); - _attr->populateTargetLids(); + _attr->populateTargetLids(removes); } uint32_t getUniqueGids() { return getStatus().getNumUniqueValues(); @@ -257,7 +257,7 @@ TEST_F(ReferenceAttributeTest, reference_for_a_document_can_be_cleared) TEST_F(ReferenceAttributeTest, lid_beyond_range_is_mapped_to_zero) { auto factory = std::make_shared<MyGidToLidMapperFactory>(); - setGidToLidMapperFactory(factory); + setGidToLidMapperFactory(factory, {}); ensureDocIdLimit(5); _attr->addDocs(1); set(5, toGid(doc2)); @@ -318,7 +318,7 @@ TEST_F(ReferenceAttributeTest, update_uses_gid_mapper_to_set_target_lid) { ensureDocIdLimit(6); auto factory = std::make_shared<MyGidToLidMapperFactory>(); - setGidToLidMapperFactory(factory); + setGidToLidMapperFactory(factory, {}); set(1, toGid(doc1)); set(2, toGid(doc2)); set(4, toGid(doc1)); @@ -371,7 +371,7 @@ void checkPopulateTargetLids(ReferenceAttributeTest &f) { auto factory = std::make_shared<MyGidToLidMapperFactory>(); - f.setGidToLidMapperFactory(factory); + f.setGidToLidMapperFactory(factory, {}); f.assertTargetLid(1, 10); f.assertTargetLid(2, 17); f.assertTargetLid(3, 10); @@ -401,6 +401,22 @@ TEST_F(ReferenceAttributeTest, populateTargetLids_uses_gid_mapper_to_update_lid_ EXPECT_TRUE(vespalib::unlink("test.udat")); } +TEST_F(ReferenceAttributeTest, populateTargetLids_handles_removes) +{ + preparePopulateTargetLids(*this); + auto factory = std::make_shared<MyGidToLidMapperFactory>(); + setGidToLidMapperFactory(factory, { toGid(doc1) }); + assertTargetLid(1, 0); + assertTargetLid(2, 17); + assertTargetLid(3, 0); + assertTargetLid(4, 0); + assertNoTargetLid(5); + assertLids(0, { }); + assertLids(10, { }); + assertLids(17, { 2 }); + assertLids(18, { }); +} + TEST_F(ReferenceAttributeTest, notifyReferencedPut_and_notifyReferencedRemove_changes_reverse_mapping) { preparePopulateTargetLids(*this); |