aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2021-11-18 20:01:35 +0100
committerTor Egge <Tor.Egge@online.no>2021-11-18 20:01:35 +0100
commit673f7324d93137cf781c2a0475017ed5d8121803 (patch)
tree8d9625ee6cbb41b0fed34dc6e16fdd1abc010d95 /searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp
parent0654fa7787092a5f101572629c11860f5480e058 (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.cpp26
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);