summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@oath.com>2017-09-03 13:03:16 +0000
committerTor Egge <Tor.Egge@oath.com>2017-09-03 13:03:16 +0000
commit3eeb13cc8a1d79e32864414d6bb3c4734851f3d5 (patch)
tree7b420d4f797eddf46f7a3c5116fd30712e706c2f /searchlib
parent41519ce71ca1b9fca34205c2bbd9cc11d56b689e (diff)
Test that reference attribute tracks unique gids.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp34
1 files changed, 34 insertions, 0 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 480b58d672d..07fb14c809b 100644
--- a/searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp
+++ b/searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp
@@ -192,6 +192,9 @@ struct Fixture
_attr->setGidToLidMapperFactory(factory);
_attr->populateReferencedLids();
}
+ uint32_t getUniqueGids() {
+ return getStatus().getNumUniqueValues();
+ }
};
TEST_F("require that we can instantiate reference attribute", Fixture)
@@ -388,4 +391,35 @@ TEST_F("Require that notifyReferencedPut and notifyReferencedRemove changes reve
TEST_DO(f.assertLids(11, { }));
}
+TEST_F("Require that we track unique gids", Fixture)
+{
+ EXPECT_EQUAL(0u, f.getUniqueGids());
+ f.notifyReferencedPut(toGid(doc1), 10);
+ EXPECT_EQUAL(1u, f.getUniqueGids());
+ f.ensureDocIdLimit(3);
+ f.set(1, toGid(doc1));
+ f.commit();
+ EXPECT_EQUAL(1u, f.getUniqueGids());
+ TEST_DO(f.assertRefLid(1, 10));
+ TEST_DO(f.assertLids(10, { 1 }));
+ f.set(2, toGid(doc2));
+ f.commit();
+ EXPECT_EQUAL(2u, f.getUniqueGids());
+ TEST_DO(f.assertRefLid(2, 0));
+ f.notifyReferencedPut(toGid(doc2), 17);
+ EXPECT_EQUAL(2u, f.getUniqueGids());
+ TEST_DO(f.assertRefLid(2, 17));
+ TEST_DO(f.assertLids(17, { 2 }));
+ f.clear(1);
+ f.notifyReferencedRemove(toGid(doc2));
+ EXPECT_EQUAL(2u, f.getUniqueGids());
+ TEST_DO(f.assertNoRefLid(1));
+ TEST_DO(f.assertRefLid(2, 0));
+ TEST_DO(f.assertLids(10, { }));
+ TEST_DO(f.assertLids(17, { }));
+ f.clear(2);
+ f.notifyReferencedRemove(toGid(doc1));
+ EXPECT_EQUAL(0u, f.getUniqueGids());
+}
+
TEST_MAIN() { TEST_RUN_ALL(); }