summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeir Storli <geirst@oath.com>2018-04-23 13:09:57 +0000
committerGeir Storli <geirst@oath.com>2018-04-23 13:09:57 +0000
commit2a1efb617b960948fc62201ea6ea09c4cfead166 (patch)
tree6b6cd2fd72ca964660d1fa17ffafaf90b76d6848
parent046d9fc7125b19726d48b16ca1b714d6404888d4 (diff)
Add unit tests for retrieval of regular and imported attribute vectors via DocumentDbReference.
-rw-r--r--searchcore/CMakeLists.txt1
-rw-r--r--searchcore/src/tests/proton/reference/document_db_reference/CMakeLists.txt9
-rw-r--r--searchcore/src/tests/proton/reference/document_db_reference/FILES1
-rw-r--r--searchcore/src/tests/proton/reference/document_db_reference/document_db_reference_test.cpp72
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();
+}