diff options
author | Tor Egge <Tor.Egge@oath.com> | 2017-09-03 13:03:16 +0000 |
---|---|---|
committer | Tor Egge <Tor.Egge@oath.com> | 2017-09-03 13:03:16 +0000 |
commit | 3eeb13cc8a1d79e32864414d6bb3c4734851f3d5 (patch) | |
tree | 7b420d4f797eddf46f7a3c5116fd30712e706c2f /searchlib/src/tests/attribute | |
parent | 41519ce71ca1b9fca34205c2bbd9cc11d56b689e (diff) |
Test that reference attribute tracks unique gids.
Diffstat (limited to 'searchlib/src/tests/attribute')
-rw-r--r-- | searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp | 34 |
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(); } |