diff options
author | Geir Storli <geirst@oath.com> | 2018-04-23 13:09:57 +0000 |
---|---|---|
committer | Geir Storli <geirst@oath.com> | 2018-04-23 13:09:57 +0000 |
commit | 2a1efb617b960948fc62201ea6ea09c4cfead166 (patch) | |
tree | 6b6cd2fd72ca964660d1fa17ffafaf90b76d6848 | |
parent | 046d9fc7125b19726d48b16ca1b714d6404888d4 (diff) |
Add unit tests for retrieval of regular and imported attribute vectors via DocumentDbReference.
4 files changed, 83 insertions, 0 deletions
diff --git a/searchcore/CMakeLists.txt b/searchcore/CMakeLists.txt index 2944b753dca..36e76b02b0b 100644 --- a/searchcore/CMakeLists.txt +++ b/searchcore/CMakeLists.txt @@ -131,6 +131,7 @@ vespa_define_module( src/tests/proton/reference/gid_to_lid_change_listener src/tests/proton/reference/gid_to_lid_change_registrator src/tests/proton/reference/gid_to_lid_mapper + src/tests/proton/reference/document_db_reference src/tests/proton/reference/document_db_reference_registry src/tests/proton/reference/document_db_reference_resolver src/tests/proton/reprocessing/attribute_reprocessing_initializer diff --git a/searchcore/src/tests/proton/reference/document_db_reference/CMakeLists.txt b/searchcore/src/tests/proton/reference/document_db_reference/CMakeLists.txt new file mode 100644 index 00000000000..00826843d9e --- /dev/null +++ b/searchcore/src/tests/proton/reference/document_db_reference/CMakeLists.txt @@ -0,0 +1,9 @@ +# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +vespa_add_executable(searchcore_document_db_reference_test_app TEST + SOURCES + document_db_reference_test.cpp + DEPENDS + searchcore_reference + searchcore_attribute +) +vespa_add_test(NAME searchcore_document_db_reference_test_app COMMAND searchcore_document_db_reference_test_app) diff --git a/searchcore/src/tests/proton/reference/document_db_reference/FILES b/searchcore/src/tests/proton/reference/document_db_reference/FILES new file mode 100644 index 00000000000..af035b253b8 --- /dev/null +++ b/searchcore/src/tests/proton/reference/document_db_reference/FILES @@ -0,0 +1 @@ +document_db_reference_test.cpp diff --git a/searchcore/src/tests/proton/reference/document_db_reference/document_db_reference_test.cpp b/searchcore/src/tests/proton/reference/document_db_reference/document_db_reference_test.cpp new file mode 100644 index 00000000000..13a3df2d139 --- /dev/null +++ b/searchcore/src/tests/proton/reference/document_db_reference/document_db_reference_test.cpp @@ -0,0 +1,72 @@ +// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +#include <vespa/vespalib/testkit/testapp.h> + +#include <vespa/searchcore/proton/attribute/imported_attributes_repo.h> +#include <vespa/searchcore/proton/reference/document_db_reference.h> +#include <vespa/searchcore/proton/test/mock_attribute_manager.h> +#include <vespa/searchlib/attribute/attributefactory.h> +#include <vespa/searchlib/attribute/imported_attribute_vector.h> + +#include <vespa/log/log.h> +LOG_SETUP("document_db_reference_test"); + +using namespace proton; + +using search::AttributeFactory; +using search::AttributeVector; +using search::IDocumentMetaStoreContext; +using search::attribute::BasicType; +using search::attribute::ImportedAttributeVector; +using search::attribute::ReadableAttributeVector; +using search::attribute::ReferenceAttribute; + +ImportedAttributesRepo::UP +makeImportedAttributesRepo() +{ + ImportedAttributesRepo::UP result = std::make_unique<ImportedAttributesRepo>(); + ImportedAttributeVector::SP attr = std::make_shared<ImportedAttributeVector>("imported", + std::shared_ptr<ReferenceAttribute>(), + std::shared_ptr<ReadableAttributeVector>(), + std::shared_ptr<IDocumentMetaStoreContext>(), false); + result->add("imported", std::move(attr)); + return result; +} + +struct Fixture { + std::shared_ptr<test::MockAttributeManager> attrMgr; + DocumentDBReference ref; + Fixture() + : attrMgr(std::make_shared<test::MockAttributeManager>()), + ref(attrMgr, std::shared_ptr<DocumentMetaStore>(), std::shared_ptr<IGidToLidChangeHandler>()) + { + attrMgr->addAttribute("regular", AttributeFactory::createAttribute("regular", {BasicType::INT32})); + attrMgr->setImportedAttributes(makeImportedAttributesRepo()); + } +}; + +TEST_F("regular attribute vector can be retrieved", Fixture) +{ + auto attr = f.ref.getAttribute("regular"); + EXPECT_TRUE(attr.get()); + const AttributeVector *attrPtr = dynamic_cast<const AttributeVector *>(attr.get()); + EXPECT_TRUE(attrPtr != nullptr); +} + +TEST_F("imported attribute vector can be retrieved", Fixture) +{ + auto attr = f.ref.getAttribute("imported"); + EXPECT_TRUE(attr.get()); + const ImportedAttributeVector *importedPtr = dynamic_cast<const ImportedAttributeVector *>(attr.get()); + EXPECT_TRUE(importedPtr != nullptr); +} + +TEST_F("nullptr is returned for non-existing attribute vector", Fixture) +{ + auto attr = f.ref.getAttribute("non-existing"); + EXPECT_FALSE(attr.get()); +} + +TEST_MAIN() +{ + TEST_RUN_ALL(); +} |