aboutsummaryrefslogtreecommitdiffstats
path: root/streamingvisitors/src/tests/searchvisitor/searchvisitor_test.cpp
diff options
context:
space:
mode:
authorGeir Storli <geirst@verizonmedia.com>2019-11-28 09:54:42 +0000
committerGeir Storli <geirst@verizonmedia.com>2019-11-28 10:15:38 +0000
commit9ee2e3ec6ba1ad496c552e7b5a461eeae9fa657e (patch)
tree017d902cbca682e43dee6300305f1ac56e4e165c /streamingvisitors/src/tests/searchvisitor/searchvisitor_test.cpp
parent2c06d1d97b39c89efb58ed48f5d1770fafef2b75 (diff)
Rename searchvisitor.cpp -> searchvisitor_test.cpp.
Diffstat (limited to 'streamingvisitors/src/tests/searchvisitor/searchvisitor_test.cpp')
-rw-r--r--streamingvisitors/src/tests/searchvisitor/searchvisitor_test.cpp129
1 files changed, 129 insertions, 0 deletions
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 <vespa/document/base/testdocrepo.h>
+#include <vespa/document/repo/documenttyperepo.h>
+#include <vespa/vespalib/testkit/testapp.h>
+#include <vespa/searchlib/query/tree/querybuilder.h>
+#include <vespa/searchlib/query/tree/simplequery.h>
+#include <vespa/searchlib/query/tree/stackdumpcreator.h>
+#include <vespa/searchvisitor/searchenvironment.h>
+#include <vespa/searchvisitor/searchvisitor.h>
+#include <vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.h>
+#include <vespa/storageframework/defaultimplementation/clock/fakeclock.h>
+
+#include <vespa/log/log.h>
+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<StorageComponent> _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<spi::DocEntry::UP>
+createDocuments(const vespalib::string & dir)
+{
+ (void) dir;
+ std::vector<spi::DocEntry::UP> 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<Visitor> sv(static_cast<SearchVisitor *>(factory.makeVisitor(*_component, _env, params)));
+ document::BucketId bucketId;
+ std::vector<spi::DocEntry::UP> 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<SimpleQueryNodeTypes> 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<Visitor> 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)