diff options
Diffstat (limited to 'searchcore')
-rw-r--r-- | searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp | 32 | ||||
-rw-r--r-- | searchcore/src/vespa/searchcore/proton/persistenceengine/document_iterator.cpp | 4 |
2 files changed, 16 insertions, 20 deletions
diff --git a/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp b/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp index b93553c3aa3..209523cd0aa 100644 --- a/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp +++ b/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp @@ -275,18 +275,14 @@ struct PairDR : DocumentRetrieverBaseForTest { } }; -size_t getSize() { - return sizeof(DocEntry); -} - size_t getSize(const document::Document &doc) { vespalib::nbostream tmp; doc.serialize(tmp); - return tmp.size() + getSize(); + return tmp.size(); } size_t getSize(const document::DocumentId &id) { - return id.getSerializedSize() + getSize(); + return id.getSerializedSize(); } IDocumentRetriever::SP nil() { return std::make_unique<UnitDR>(); } @@ -390,26 +386,26 @@ void checkDoc(const IDocumentRetriever &dr, const std::string &id, void checkEntry(const IterateResult &res, size_t idx, const Timestamp ×tamp, int flags) { ASSERT_LESS(idx, res.getEntries().size()); - DocEntry expect(timestamp, flags); - EXPECT_TRUE(equal(expect, *res.getEntries()[idx])); - EXPECT_EQUAL(getSize(), res.getEntries()[idx]->getSize()); + auto expect = DocEntry::create(timestamp, flags); + EXPECT_TRUE(equal(*expect, *res.getEntries()[idx])); + EXPECT_EQUAL(0u, res.getEntries()[idx]->getDocumentSize()); } void checkEntry(const IterateResult &res, size_t idx, const DocumentId &id, const Timestamp ×tamp) { ASSERT_LESS(idx, res.getEntries().size()); - DocEntry expect(timestamp, storage::spi::REMOVE_ENTRY, id); - EXPECT_TRUE(equal(expect, *res.getEntries()[idx])); - EXPECT_EQUAL(getSize(id), res.getEntries()[idx]->getSize()); + auto expect = DocEntry::create(timestamp, storage::spi::REMOVE_ENTRY, id); + EXPECT_TRUE(equal(*expect, *res.getEntries()[idx])); + EXPECT_EQUAL(getSize(id), res.getEntries()[idx]->getDocumentSize()); EXPECT_GREATER(getSize(id), 0u); } void checkEntry(const IterateResult &res, size_t idx, const Document &doc, const Timestamp ×tamp) { ASSERT_LESS(idx, res.getEntries().size()); - DocEntry expect(timestamp, storage::spi::NONE, Document::UP(doc.clone())); - EXPECT_TRUE(equal(expect, *res.getEntries()[idx])); - EXPECT_EQUAL(getSize(doc), res.getEntries()[idx]->getSize()); + auto expect = DocEntry::create(timestamp, storage::spi::NONE, Document::UP(doc.clone())); + EXPECT_TRUE(equal(*expect, *res.getEntries()[idx])); + EXPECT_EQUAL(getSize(doc), res.getEntries()[idx]->getDocumentSize()); EXPECT_GREATER(getSize(doc), 0u); } @@ -630,8 +626,8 @@ TEST("require that maxBytes splits iteration results") { itr.add(doc("id:ns:document::1", Timestamp(2), bucket(5))); itr.add(cat(rem("id:ns:document::2", Timestamp(3), bucket(5)), doc("id:ns:document::3", Timestamp(4), bucket(5)))); - IterateResult res1 = itr.iterate(getSize(Document(*DataType::DOCUMENT, DocumentId("id:ns:document::1"))) + - getSize(DocumentId("id:ns:document::2"))); + IterateResult res1 = itr.iterate(getSize(Document(*DataType::DOCUMENT, DocumentId("id:ns:document::1"))) + sizeof(DocEntry) + 8 + + getSize(DocumentId("id:ns:document::2")) + sizeof(DocEntry) + 8); EXPECT_TRUE(!res1.isCompleted()); EXPECT_EQUAL(2u, res1.getEntries().size()); TEST_DO(checkEntry(res1, 0, Document(*DataType::DOCUMENT, DocumentId("id:ns:document::1")), Timestamp(2))); @@ -651,7 +647,7 @@ TEST("require that maxBytes splits iteration results for meta-data only iteratio itr.add(doc("id:ns:document::1", Timestamp(2), bucket(5))); itr.add(cat(rem("id:ns:document::2", Timestamp(3), bucket(5)), doc("id:ns:document::3", Timestamp(4), bucket(5)))); - IterateResult res1 = itr.iterate(getSize() + getSize()); + IterateResult res1 = itr.iterate(2 * sizeof(DocEntry)); EXPECT_TRUE(!res1.isCompleted()); EXPECT_EQUAL(2u, res1.getEntries().size()); TEST_DO(checkEntry(res1, 0, Timestamp(2), storage::spi::NONE)); diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/document_iterator.cpp b/searchcore/src/vespa/searchcore/proton/persistenceengine/document_iterator.cpp index f7b38fa6560..39c93a0dd1a 100644 --- a/searchcore/src/vespa/searchcore/proton/persistenceengine/document_iterator.cpp +++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/document_iterator.cpp @@ -33,10 +33,10 @@ std::unique_ptr<DocEntry> createDocEntry(Timestamp timestamp, bool removed, Document::UP doc, ssize_t defaultSerializedSize) { if (doc) { if (removed) { - return std::make_unique<DocEntry>(timestamp, storage::spi::REMOVE_ENTRY, doc->getId()); + return DocEntry::create(timestamp, storage::spi::REMOVE_ENTRY, doc->getId()); } else { ssize_t serializedSize = defaultSerializedSize >= 0 ? defaultSerializedSize : doc->serialize().size(); - return std::make_unique<DocEntry>(timestamp, storage::spi::NONE, std::move(doc), serializedSize); + return DocEntry::create(timestamp, storage::spi::NONE, std::move(doc), serializedSize); } } else { return createDocEntry(timestamp, removed); |