From 9ee2e3ec6ba1ad496c552e7b5a461eeae9fa657e Mon Sep 17 00:00:00 2001 From: Geir Storli Date: Thu, 28 Nov 2019 09:54:42 +0000 Subject: Rename searchvisitor.cpp -> searchvisitor_test.cpp. --- .../src/tests/searchvisitor/searchvisitor_test.cpp | 129 +++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 streamingvisitors/src/tests/searchvisitor/searchvisitor_test.cpp (limited to 'streamingvisitors/src/tests/searchvisitor/searchvisitor_test.cpp') diff --git a/streamingvisitors/src/tests/searchvisitor/searchvisitor_test.cpp b/streamingvisitors/src/tests/searchvisitor/searchvisitor_test.cpp new file mode 100644 index 00000000000..793aa31b3ac --- /dev/null +++ b/streamingvisitors/src/tests/searchvisitor/searchvisitor_test.cpp @@ -0,0 +1,129 @@ +// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +LOG_SETUP("searchvisitor_test"); + +using namespace search; +using namespace search::query; +using namespace document; + +namespace storage { + +class SearchVisitorTest : public vespalib::TestApp +{ +private: + framework::defaultimplementation::FakeClock _clock; + StorageComponentRegisterImpl _componentRegister; + std::unique_ptr _component; + SearchEnvironment _env; + void testSearchVisitor(); + void testSearchEnvironment(); + void testCreateSearchVisitor(const vespalib::string & dir, const vdslib::Parameters & parameters); + void testOnlyRequireWeakReadConsistency(); + +public: + SearchVisitorTest(); + ~SearchVisitorTest(); + int Main() override; +}; + +SearchVisitorTest::SearchVisitorTest() : + vespalib::TestApp(), + _componentRegister(), + _env("dir:" + TEST_PATH("cfg")) +{ + _componentRegister.setNodeInfo("mycluster", lib::NodeType::STORAGE, 1); + _componentRegister.setClock(_clock); + StorageComponent::DocumentTypeRepoSP repo(new DocumentTypeRepo(readDocumenttypesConfig(TEST_PATH("cfg/documenttypes.cfg")))); + _componentRegister.setDocumentTypeRepo(repo); + _component.reset(new StorageComponent(_componentRegister, "storage")); +} + +SearchVisitorTest::~SearchVisitorTest() = default; + +std::vector +createDocuments(const vespalib::string & dir) +{ + (void) dir; + std::vector documents; + spi::Timestamp ts; + document::Document::UP doc(new document::Document()); + spi::DocEntry::UP e(new spi::DocEntry(ts, 0, std::move(doc))); + documents.push_back(std::move(e)); + return documents; +} + +void +SearchVisitorTest::testCreateSearchVisitor(const vespalib::string & dir, const vdslib::Parameters & params) +{ + SearchVisitorFactory sFactory(dir); + VisitorFactory & factory(sFactory); + std::unique_ptr sv(static_cast(factory.makeVisitor(*_component, _env, params))); + document::BucketId bucketId; + std::vector documents(createDocuments(dir)); + Visitor::HitCounter hitCounter; + sv->handleDocuments(bucketId, documents, hitCounter); +} + +void +SearchVisitorTest::testSearchEnvironment() +{ + EXPECT_TRUE(_env.getVSMAdapter("simple") != NULL); + EXPECT_TRUE(_env.getRankManager("simple") != NULL); +} + +void +SearchVisitorTest::testSearchVisitor() +{ + vdslib::Parameters params; + params.set("searchcluster", "aaa"); + params.set("queryflags", "0x40000"); + params.set("summarycount", "3"); + params.set("summaryclass", "petra"); + params.set("rankprofile", "default"); + + QueryBuilder builder; + builder.addStringTerm("maptest", "sddocname", 0, Weight(0)); + Node::UP node = builder.build(); + vespalib::string stackDump = StackDumpCreator::create(*node); + + params.set("query", stackDump); + testCreateSearchVisitor("dir:" + TEST_PATH("cfg"), params); +} + +void +SearchVisitorTest::testOnlyRequireWeakReadConsistency() +{ + SearchVisitorFactory factory("dir:" + TEST_PATH("cfg")); + VisitorFactory& factoryBase(factory); + vdslib::Parameters params; + std::unique_ptr sv(factoryBase.makeVisitor(*_component, _env, params)); + EXPECT_TRUE(sv->getRequiredReadConsistency() == spi::ReadConsistency::WEAK); +} + +int +SearchVisitorTest::Main() +{ + TEST_INIT("searchvisitor_test"); + + testSearchVisitor(); TEST_FLUSH(); + testSearchEnvironment(); TEST_FLUSH(); + testOnlyRequireWeakReadConsistency(); TEST_FLUSH(); + + TEST_DONE(); +} + +} // namespace storage + +TEST_APPHOOK(storage::SearchVisitorTest) -- cgit v1.2.3