aboutsummaryrefslogtreecommitdiffstats
path: root/streamingvisitors
diff options
context:
space:
mode:
Diffstat (limited to 'streamingvisitors')
-rw-r--r--streamingvisitors/CMakeLists.txt12
-rw-r--r--streamingvisitors/src/tests/charbuffer/CMakeLists.txt3
-rw-r--r--streamingvisitors/src/tests/charbuffer/charbuffer_test.cpp111
-rw-r--r--streamingvisitors/src/tests/docsum/CMakeLists.txt3
-rw-r--r--streamingvisitors/src/tests/docsum/docsum_test.cpp106
-rw-r--r--streamingvisitors/src/tests/document/CMakeLists.txt3
-rw-r--r--streamingvisitors/src/tests/document/document_test.cpp86
-rw-r--r--streamingvisitors/src/tests/hitcollector/CMakeLists.txt2
-rw-r--r--streamingvisitors/src/tests/matching_elements_filler/CMakeLists.txt2
-rw-r--r--streamingvisitors/src/tests/nearest_neighbor_field_searcher/CMakeLists.txt4
-rw-r--r--streamingvisitors/src/tests/query_term_filter_factory/CMakeLists.txt2
-rw-r--r--streamingvisitors/src/tests/querywrapper/CMakeLists.txt3
-rw-r--r--streamingvisitors/src/tests/querywrapper/querywrapper_test.cpp32
-rw-r--r--streamingvisitors/src/tests/rank_processor/CMakeLists.txt2
-rw-r--r--streamingvisitors/src/tests/searcher/CMakeLists.txt4
-rw-r--r--streamingvisitors/src/tests/searcher/searcher_test.cpp2
-rw-r--r--streamingvisitors/src/tests/searchvisitor/CMakeLists.txt2
-rw-r--r--streamingvisitors/src/tests/searchvisitor/searchvisitor_test.cpp11
-rw-r--r--streamingvisitors/src/tests/textutil/CMakeLists.txt3
-rw-r--r--streamingvisitors/src/tests/textutil/textutil_test.cpp79
-rw-r--r--streamingvisitors/src/tests/tokens_converter/CMakeLists.txt2
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/CMakeLists.txt2
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp13
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/searchvisitor.h5
24 files changed, 214 insertions, 280 deletions
diff --git a/streamingvisitors/CMakeLists.txt b/streamingvisitors/CMakeLists.txt
index a990f6a4de0..7ecb91d387d 100644
--- a/streamingvisitors/CMakeLists.txt
+++ b/streamingvisitors/CMakeLists.txt
@@ -2,13 +2,13 @@
vespa_define_module(
DEPENDS
vespalog
- storage
- config_cloudconfig
+ vespa_storage
+ vespa_config
vespalib
- document
- vdslib
- searchlib
- searchsummary
+ vespa_document
+ vespa_vdslib
+ vespa_searchlib
+ vespa_searchsummary
LIBS
src/vespa/searchvisitor
diff --git a/streamingvisitors/src/tests/charbuffer/CMakeLists.txt b/streamingvisitors/src/tests/charbuffer/CMakeLists.txt
index d4b3da21e20..93d59c81036 100644
--- a/streamingvisitors/src/tests/charbuffer/CMakeLists.txt
+++ b/streamingvisitors/src/tests/charbuffer/CMakeLists.txt
@@ -3,6 +3,7 @@ vespa_add_executable(vsm_charbuffer_test_app TEST
SOURCES
charbuffer_test.cpp
DEPENDS
- streamingvisitors
+ vespa_streamingvisitors
+ GTest::gtest
)
vespa_add_test(NAME vsm_charbuffer_test_app COMMAND vsm_charbuffer_test_app)
diff --git a/streamingvisitors/src/tests/charbuffer/charbuffer_test.cpp b/streamingvisitors/src/tests/charbuffer/charbuffer_test.cpp
index b4e954d1ce0..a42851fc00a 100644
--- a/streamingvisitors/src/tests/charbuffer/charbuffer_test.cpp
+++ b/streamingvisitors/src/tests/charbuffer/charbuffer_test.cpp
@@ -1,80 +1,65 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/vespalib/testkit/testapp.h>
+#include <vespa/vespalib/gtest/gtest.h>
#include <vespa/vsm/common/charbuffer.h>
namespace vsm {
-class CharBufferTest : public vespalib::TestApp
+TEST(CharBufferTest, empty)
{
-private:
- void test();
-public:
- int Main() override;
-};
+ CharBuffer buf;
+ EXPECT_EQ(buf.getLength(), 0u);
+ EXPECT_EQ(buf.getPos(), 0u);
+ EXPECT_EQ(buf.getRemaining(), 0u);
+}
-void
-CharBufferTest::test()
+TEST(CharBufferTest, explicit_length)
{
- { // empty
- CharBuffer buf;
- EXPECT_EQUAL(buf.getLength(), 0u);
- EXPECT_EQUAL(buf.getPos(), 0u);
- EXPECT_EQUAL(buf.getRemaining(), 0u);
- }
- { // explicit length
- CharBuffer buf(8);
- EXPECT_EQUAL(buf.getLength(), 8u);
- EXPECT_EQUAL(buf.getPos(), 0u);
- EXPECT_EQUAL(buf.getRemaining(), 8u);
- }
- { // resize
- CharBuffer buf(8);
- EXPECT_EQUAL(buf.getLength(), 8u);
- buf.resize(16);
- EXPECT_EQUAL(buf.getLength(), 16u);
- buf.resize(8);
- EXPECT_EQUAL(buf.getLength(), 16u);
- }
- { // put with triggered resize
- CharBuffer buf(8);
- buf.put("123456", 6);
- EXPECT_EQUAL(buf.getLength(), 8u);
- EXPECT_EQUAL(buf.getPos(), 6u);
- EXPECT_EQUAL(buf.getRemaining(), 2u);
- EXPECT_EQUAL(std::string(buf.getBuffer(), buf.getPos()), "123456");
- buf.put("789", 3);
- EXPECT_EQUAL(buf.getLength(), 12u);
- EXPECT_EQUAL(buf.getPos(), 9u);
- EXPECT_EQUAL(buf.getRemaining(), 3u);
- EXPECT_EQUAL(std::string(buf.getBuffer(), buf.getPos()), "123456789");
- buf.put('a');
- EXPECT_EQUAL(buf.getLength(), 12u);
- EXPECT_EQUAL(buf.getPos(), 10u);
- EXPECT_EQUAL(buf.getRemaining(), 2u);
- EXPECT_EQUAL(std::string(buf.getBuffer(), buf.getPos()), "123456789a");
- buf.reset();
- EXPECT_EQUAL(buf.getLength(), 12u);
- EXPECT_EQUAL(buf.getPos(), 0u);
- EXPECT_EQUAL(buf.getRemaining(), 12u);
- buf.put("bcd", 3);
- EXPECT_EQUAL(buf.getLength(), 12u);
- EXPECT_EQUAL(buf.getPos(), 3u);
- EXPECT_EQUAL(buf.getRemaining(), 9u);
- EXPECT_EQUAL(std::string(buf.getBuffer(), buf.getPos()), "bcd");
- }
+ CharBuffer buf(8);
+ EXPECT_EQ(buf.getLength(), 8u);
+ EXPECT_EQ(buf.getPos(), 0u);
+ EXPECT_EQ(buf.getRemaining(), 8u);
}
-int
-CharBufferTest::Main()
+TEST(CharBufferTest, resize)
{
- TEST_INIT("charbuffer_test");
-
- test();
+ CharBuffer buf(8);
+ EXPECT_EQ(buf.getLength(), 8u);
+ buf.resize(16);
+ EXPECT_EQ(buf.getLength(), 16u);
+ buf.resize(8);
+ EXPECT_EQ(buf.getLength(), 16u);
+}
- TEST_DONE();
+TEST(CharBufferTest, put_with_triggered_resize)
+{
+ CharBuffer buf(8);
+ buf.put("123456", 6);
+ EXPECT_EQ(buf.getLength(), 8u);
+ EXPECT_EQ(buf.getPos(), 6u);
+ EXPECT_EQ(buf.getRemaining(), 2u);
+ EXPECT_EQ(std::string(buf.getBuffer(), buf.getPos()), "123456");
+ buf.put("789", 3);
+ EXPECT_EQ(buf.getLength(), 12u);
+ EXPECT_EQ(buf.getPos(), 9u);
+ EXPECT_EQ(buf.getRemaining(), 3u);
+ EXPECT_EQ(std::string(buf.getBuffer(), buf.getPos()), "123456789");
+ buf.put('a');
+ EXPECT_EQ(buf.getLength(), 12u);
+ EXPECT_EQ(buf.getPos(), 10u);
+ EXPECT_EQ(buf.getRemaining(), 2u);
+ EXPECT_EQ(std::string(buf.getBuffer(), buf.getPos()), "123456789a");
+ buf.reset();
+ EXPECT_EQ(buf.getLength(), 12u);
+ EXPECT_EQ(buf.getPos(), 0u);
+ EXPECT_EQ(buf.getRemaining(), 12u);
+ buf.put("bcd", 3);
+ EXPECT_EQ(buf.getLength(), 12u);
+ EXPECT_EQ(buf.getPos(), 3u);
+ EXPECT_EQ(buf.getRemaining(), 9u);
+ EXPECT_EQ(std::string(buf.getBuffer(), buf.getPos()), "bcd");
}
}
-TEST_APPHOOK(vsm::CharBufferTest);
+GTEST_MAIN_RUN_ALL_TESTS()
diff --git a/streamingvisitors/src/tests/docsum/CMakeLists.txt b/streamingvisitors/src/tests/docsum/CMakeLists.txt
index 15c1e26b08b..ac80824e21b 100644
--- a/streamingvisitors/src/tests/docsum/CMakeLists.txt
+++ b/streamingvisitors/src/tests/docsum/CMakeLists.txt
@@ -3,6 +3,7 @@ vespa_add_executable(vsm_docsum_test_app TEST
SOURCES
docsum_test.cpp
DEPENDS
- streamingvisitors
+ vespa_streamingvisitors
+ GTest::gtest
)
vespa_add_test(NAME vsm_docsum_test_app COMMAND vsm_docsum_test_app)
diff --git a/streamingvisitors/src/tests/docsum/docsum_test.cpp b/streamingvisitors/src/tests/docsum/docsum_test.cpp
index d6535046e87..112a4e7f679 100644
--- a/streamingvisitors/src/tests/docsum/docsum_test.cpp
+++ b/streamingvisitors/src/tests/docsum/docsum_test.cpp
@@ -1,5 +1,5 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/vespalib/testkit/testapp.h>
+
#include <vespa/document/fieldvalue/fieldvalues.h>
#include <vespa/document/datatype/structdatatype.h>
#include <vespa/document/datatype/weightedsetdatatype.h>
@@ -9,6 +9,7 @@
#include <vespa/vsm/vsm/flattendocsumwriter.h>
#include <vespa/vespalib/data/smart_buffer.h>
#include <vespa/vespalib/data/slime/slime.h>
+#include <vespa/vespalib/gtest/gtest.h>
using namespace document;
@@ -48,24 +49,29 @@ public:
};
-class DocsumTest : public vespalib::TestApp
+class DocsumTest : public ::testing::Test
{
-private:
+protected:
ArrayFieldValue createFieldValue(const StringList & fv);
WeightedSetFieldValue createFieldValue(const WeightedStringList & fv);
- void assertFlattenDocsumWriter(const FieldValue & fv, const std::string & exp) {
+ void assertFlattenDocsumWriter(const FieldValue & fv, const std::string & exp, const std::string& label) {
FlattenDocsumWriter fdw;
- assertFlattenDocsumWriter(fdw, fv, exp);
+ assertFlattenDocsumWriter(fdw, fv, exp, label);
}
- void assertFlattenDocsumWriter(FlattenDocsumWriter & fdw, const FieldValue & fv, const std::string & exp);
- void testFlattenDocsumWriter();
- void testDocSumCache();
+ void assertFlattenDocsumWriter(FlattenDocsumWriter & fdw, const FieldValue & fv, const std::string & exp, const std::string& label);
-public:
- int Main() override;
+ DocsumTest();
+ ~DocsumTest() override;
};
+DocsumTest::DocsumTest()
+ : ::testing::Test()
+{
+}
+
+DocsumTest::~DocsumTest() = default;
+
ArrayFieldValue
DocsumTest::createFieldValue(const StringList & fv)
{
@@ -90,62 +96,54 @@ DocsumTest::createFieldValue(const WeightedStringList & fv)
}
void
-DocsumTest::assertFlattenDocsumWriter(FlattenDocsumWriter & fdw, const FieldValue & fv, const std::string & exp)
+DocsumTest::assertFlattenDocsumWriter(FlattenDocsumWriter & fdw, const FieldValue & fv, const std::string & exp, const std::string& label)
{
+ SCOPED_TRACE(label);
FieldPath empty;
fv.iterateNested(empty.getFullRange(), fdw);
std::string actual(fdw.getResult().getBuffer(), fdw.getResult().getPos());
- EXPECT_EQUAL(actual, exp);
+ EXPECT_EQ(exp, actual);
}
-void
-DocsumTest::testFlattenDocsumWriter()
+TEST_F(DocsumTest, flatten_docsum_writer_basic)
{
- { // basic tests
- TEST_DO(assertFlattenDocsumWriter(StringFieldValue("foo bar"), "foo bar"));
- TEST_DO(assertFlattenDocsumWriter(RawFieldValue("foo bar"), "foo bar"));
- TEST_DO(assertFlattenDocsumWriter(BoolFieldValue(true), "true"));
- TEST_DO(assertFlattenDocsumWriter(BoolFieldValue(false), "false"));
- TEST_DO(assertFlattenDocsumWriter(LongFieldValue(123456789), "123456789"));
- TEST_DO(assertFlattenDocsumWriter(createFieldValue(StringList().add("foo bar").add("baz").add(" qux ")),
- "foo bar baz qux "));
- }
- { // test mulitple invocations
- FlattenDocsumWriter fdw("#");
- TEST_DO(assertFlattenDocsumWriter(fdw, StringFieldValue("foo"), "foo"));
- TEST_DO(assertFlattenDocsumWriter(fdw, StringFieldValue("bar"), "foo#bar"));
- fdw.clear();
- TEST_DO(assertFlattenDocsumWriter(fdw, StringFieldValue("baz"), "baz"));
- TEST_DO(assertFlattenDocsumWriter(fdw, StringFieldValue("qux"), "baz qux"));
- }
- { // test resizing
- FlattenDocsumWriter fdw("#");
- EXPECT_EQUAL(fdw.getResult().getPos(), 0u);
- EXPECT_EQUAL(fdw.getResult().getLength(), 32u);
- TEST_DO(assertFlattenDocsumWriter(fdw, StringFieldValue("aaaabbbbccccddddeeeeffffgggghhhh"),
- "aaaabbbbccccddddeeeeffffgggghhhh"));
- EXPECT_EQUAL(fdw.getResult().getPos(), 32u);
- EXPECT_EQUAL(fdw.getResult().getLength(), 32u);
- TEST_DO(assertFlattenDocsumWriter(fdw, StringFieldValue("aaaa"), "aaaabbbbccccddddeeeeffffgggghhhh#aaaa"));
- EXPECT_EQUAL(fdw.getResult().getPos(), 37u);
- EXPECT_TRUE(fdw.getResult().getLength() >= 37u);
- fdw.clear();
- EXPECT_EQUAL(fdw.getResult().getPos(), 0u);
- EXPECT_TRUE(fdw.getResult().getLength() >= 37u);
- }
+ assertFlattenDocsumWriter(StringFieldValue("foo bar"), "foo bar", "string foo bar");
+ assertFlattenDocsumWriter(RawFieldValue("foo bar"), "foo bar", "raw foo bar");
+ assertFlattenDocsumWriter(BoolFieldValue(true), "true", "bool true");
+ assertFlattenDocsumWriter(BoolFieldValue(false), "false", "bool false");
+ assertFlattenDocsumWriter(LongFieldValue(123456789), "123456789", "long");
+ assertFlattenDocsumWriter(createFieldValue(StringList().add("foo bar").add("baz").add(" qux ")),
+ "foo bar baz qux ", "wset");
}
-int
-DocsumTest::Main()
+TEST_F(DocsumTest, flatten_docsum_writer_multiple_invocations)
{
- TEST_INIT("docsum_test");
-
- TEST_DO(testFlattenDocsumWriter());
-
- TEST_DONE();
+ FlattenDocsumWriter fdw("#");
+ assertFlattenDocsumWriter(fdw, StringFieldValue("foo"), "foo", "string foo");
+ assertFlattenDocsumWriter(fdw, StringFieldValue("bar"), "foo#bar", "string bar");
+ fdw.clear();
+ assertFlattenDocsumWriter(fdw, StringFieldValue("baz"), "baz", "string baz");
+ assertFlattenDocsumWriter(fdw, StringFieldValue("qux"), "baz qux", "string qux");
}
+TEST_F(DocsumTest, flatten_docsum_writer_resizing)
+{
+ FlattenDocsumWriter fdw("#");
+ EXPECT_EQ(fdw.getResult().getPos(), 0u);
+ EXPECT_EQ(fdw.getResult().getLength(), 32u);
+ assertFlattenDocsumWriter(fdw, StringFieldValue("aaaabbbbccccddddeeeeffffgggghhhh"),
+ "aaaabbbbccccddddeeeeffffgggghhhh",
+ "string long");
+ EXPECT_EQ(fdw.getResult().getPos(), 32u);
+ EXPECT_EQ(fdw.getResult().getLength(), 32u);
+ assertFlattenDocsumWriter(fdw, StringFieldValue("aaaa"), "aaaabbbbccccddddeeeeffffgggghhhh#aaaa", "string second long");
+ EXPECT_EQ(fdw.getResult().getPos(), 37u);
+ EXPECT_TRUE(fdw.getResult().getLength() >= 37u);
+ fdw.clear();
+ EXPECT_EQ(fdw.getResult().getPos(), 0u);
+ EXPECT_TRUE(fdw.getResult().getLength() >= 37u);
}
-TEST_APPHOOK(vsm::DocsumTest);
+}
+GTEST_MAIN_RUN_ALL_TESTS()
diff --git a/streamingvisitors/src/tests/document/CMakeLists.txt b/streamingvisitors/src/tests/document/CMakeLists.txt
index 717626a9492..b29171b5198 100644
--- a/streamingvisitors/src/tests/document/CMakeLists.txt
+++ b/streamingvisitors/src/tests/document/CMakeLists.txt
@@ -3,6 +3,7 @@ vespa_add_executable(vsm_document_test_app TEST
SOURCES
document_test.cpp
DEPENDS
- streamingvisitors
+ vespa_streamingvisitors
+ GTest::gtest
)
vespa_add_test(NAME vsm_document_test_app COMMAND vsm_document_test_app)
diff --git a/streamingvisitors/src/tests/document/document_test.cpp b/streamingvisitors/src/tests/document/document_test.cpp
index 9d35df80c73..8a2f8614b58 100644
--- a/streamingvisitors/src/tests/document/document_test.cpp
+++ b/streamingvisitors/src/tests/document/document_test.cpp
@@ -1,26 +1,16 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/document/fieldvalue/fieldvalues.h>
#include <vespa/document/datatype/documenttype.h>
#include <vespa/vsm/common/storagedocument.h>
+#include <vespa/vespalib/gtest/gtest.h>
#include <vespa/vespalib/stllike/asciistream.h>
using namespace document;
namespace vsm {
-class DocumentTest : public vespalib::TestApp
-{
-private:
- void testStorageDocument();
- void testStringFieldIdTMap();
-public:
- int Main() override;
-};
-
-void
-DocumentTest::testStorageDocument()
+TEST(DocumentTest, storage_document)
{
DocumentType dt("testdoc", 0);
@@ -46,84 +36,72 @@ DocumentTest::testStorageDocument()
StorageDocument sdoc(std::move(doc), fpmap, 3);
ASSERT_TRUE(sdoc.valid());
- EXPECT_EQUAL(std::string("foo"), sdoc.getField(0)->getAsString());
- EXPECT_EQUAL(std::string("bar"), sdoc.getField(1)->getAsString());
+ EXPECT_EQ("foo", sdoc.getField(0)->getAsString());
+ EXPECT_EQ("bar", sdoc.getField(1)->getAsString());
EXPECT_TRUE(sdoc.getField(2) == nullptr);
// test caching
- EXPECT_EQUAL(std::string("foo"), sdoc.getField(0)->getAsString());
- EXPECT_EQUAL(std::string("bar"), sdoc.getField(1)->getAsString());
+ EXPECT_EQ("foo", sdoc.getField(0)->getAsString());
+ EXPECT_EQ("bar", sdoc.getField(1)->getAsString());
EXPECT_TRUE(sdoc.getField(2) == nullptr);
// set new values
EXPECT_TRUE(sdoc.setField(0, FieldValue::UP(new StringFieldValue("baz"))));
- EXPECT_EQUAL(std::string("baz"), sdoc.getField(0)->getAsString());
- EXPECT_EQUAL(std::string("bar"), sdoc.getField(1)->getAsString());
+ EXPECT_EQ("baz", sdoc.getField(0)->getAsString());
+ EXPECT_EQ("bar", sdoc.getField(1)->getAsString());
EXPECT_TRUE(sdoc.getField(2) == nullptr);
EXPECT_TRUE(sdoc.setField(1, FieldValue::UP(new StringFieldValue("qux"))));
- EXPECT_EQUAL(std::string("baz"), sdoc.getField(0)->getAsString());
- EXPECT_EQUAL(std::string("qux"), sdoc.getField(1)->getAsString());
+ EXPECT_EQ("baz", sdoc.getField(0)->getAsString());
+ EXPECT_EQ("qux", sdoc.getField(1)->getAsString());
EXPECT_TRUE(sdoc.getField(2) == nullptr);
EXPECT_TRUE(sdoc.setField(2, FieldValue::UP(new StringFieldValue("quux"))));
- EXPECT_EQUAL(std::string("baz"), sdoc.getField(0)->getAsString());
- EXPECT_EQUAL(std::string("qux"), sdoc.getField(1)->getAsString());
- EXPECT_EQUAL(std::string("quux"), sdoc.getField(2)->getAsString());
+ EXPECT_EQ("baz", sdoc.getField(0)->getAsString());
+ EXPECT_EQ("qux", sdoc.getField(1)->getAsString());
+ EXPECT_EQ("quux", sdoc.getField(2)->getAsString());
EXPECT_TRUE(!sdoc.setField(3, FieldValue::UP(new StringFieldValue("thud"))));
SharedFieldPathMap fim;
StorageDocument s2(std::make_unique<document::Document>(), fim, 0);
- EXPECT_EQUAL(IdString().toString(), s2.docDoc().getId().toString());
+ EXPECT_EQ(IdString().toString(), s2.docDoc().getId().toString());
}
-void DocumentTest::testStringFieldIdTMap()
+TEST(DocumentTest, string_field_id_t_map)
{
StringFieldIdTMap m;
- EXPECT_EQUAL(0u, m.highestFieldNo());
+ EXPECT_EQ(0u, m.highestFieldNo());
EXPECT_TRUE(StringFieldIdTMap::npos == m.fieldNo("unknown"));
m.add("f1");
- EXPECT_EQUAL(0u, m.fieldNo("f1"));
- EXPECT_EQUAL(1u, m.highestFieldNo());
+ EXPECT_EQ(0u, m.fieldNo("f1"));
+ EXPECT_EQ(1u, m.highestFieldNo());
m.add("f1");
- EXPECT_EQUAL(0u, m.fieldNo("f1"));
- EXPECT_EQUAL(1u, m.highestFieldNo());
+ EXPECT_EQ(0u, m.fieldNo("f1"));
+ EXPECT_EQ(1u, m.highestFieldNo());
m.add("f2");
- EXPECT_EQUAL(1u, m.fieldNo("f2"));
- EXPECT_EQUAL(2u, m.highestFieldNo());
+ EXPECT_EQ(1u, m.fieldNo("f2"));
+ EXPECT_EQ(2u, m.highestFieldNo());
m.add("f3", 7);
- EXPECT_EQUAL(7u, m.fieldNo("f3"));
- EXPECT_EQUAL(8u, m.highestFieldNo());
+ EXPECT_EQ(7u, m.fieldNo("f3"));
+ EXPECT_EQ(8u, m.highestFieldNo());
m.add("f3");
- EXPECT_EQUAL(7u, m.fieldNo("f3"));
- EXPECT_EQUAL(8u, m.highestFieldNo());
+ EXPECT_EQ(7u, m.fieldNo("f3"));
+ EXPECT_EQ(8u, m.highestFieldNo());
m.add("f2", 13);
- EXPECT_EQUAL(13u, m.fieldNo("f2"));
- EXPECT_EQUAL(14u, m.highestFieldNo());
+ EXPECT_EQ(13u, m.fieldNo("f2"));
+ EXPECT_EQ(14u, m.highestFieldNo());
m.add("f4");
- EXPECT_EQUAL(3u, m.fieldNo("f4"));
- EXPECT_EQUAL(14u, m.highestFieldNo());
+ EXPECT_EQ(3u, m.fieldNo("f4"));
+ EXPECT_EQ(14u, m.highestFieldNo());
{
vespalib::asciistream os;
StringFieldIdTMap t;
t.add("b");
t.add("a");
os << t;
- EXPECT_EQUAL(vespalib::string("a = 1\nb = 0\n"), os.str());
+ EXPECT_EQ(vespalib::string("a = 1\nb = 0\n"), os.str());
}
}
-int
-DocumentTest::Main()
-{
- TEST_INIT("document_test");
-
- testStorageDocument();
- testStringFieldIdTMap();
-
- TEST_DONE();
-}
-
}
-TEST_APPHOOK(vsm::DocumentTest);
-
+GTEST_MAIN_RUN_ALL_TESTS()
diff --git a/streamingvisitors/src/tests/hitcollector/CMakeLists.txt b/streamingvisitors/src/tests/hitcollector/CMakeLists.txt
index 7af2bbb1355..8430c1fa679 100644
--- a/streamingvisitors/src/tests/hitcollector/CMakeLists.txt
+++ b/streamingvisitors/src/tests/hitcollector/CMakeLists.txt
@@ -3,7 +3,7 @@ vespa_add_executable(streamingvisitors_hitcollector_test_app TEST
SOURCES
hitcollector_test.cpp
DEPENDS
- streamingvisitors
+ vespa_streamingvisitors
GTest::GTest
)
vespa_add_test(NAME streamingvisitors_hitcollector_test_app COMMAND streamingvisitors_hitcollector_test_app)
diff --git a/streamingvisitors/src/tests/matching_elements_filler/CMakeLists.txt b/streamingvisitors/src/tests/matching_elements_filler/CMakeLists.txt
index 69ae0084ee1..80509ebbad8 100644
--- a/streamingvisitors/src/tests/matching_elements_filler/CMakeLists.txt
+++ b/streamingvisitors/src/tests/matching_elements_filler/CMakeLists.txt
@@ -4,7 +4,7 @@ vespa_add_executable(streamingvisitors_matching_elements_filler_test_app TEST
matching_elements_filler_test.cpp
DEPENDS
searchlib_test
- streamingvisitors
+ vespa_streamingvisitors
GTest::GTest
)
vespa_add_test(NAME streamingvisitors_matching_elements_filler_test_app COMMAND streamingvisitors_matching_elements_filler_test_app)
diff --git a/streamingvisitors/src/tests/nearest_neighbor_field_searcher/CMakeLists.txt b/streamingvisitors/src/tests/nearest_neighbor_field_searcher/CMakeLists.txt
index 3ded5a1dafb..f27d7801b17 100644
--- a/streamingvisitors/src/tests/nearest_neighbor_field_searcher/CMakeLists.txt
+++ b/streamingvisitors/src/tests/nearest_neighbor_field_searcher/CMakeLists.txt
@@ -3,9 +3,9 @@ vespa_add_executable(vsm_nearest_neighbor_field_searcher_test_app TEST
SOURCES
nearest_neighbor_field_searcher_test.cpp
DEPENDS
- searchlib
+ vespa_searchlib
searchlib_test
- streamingvisitors
+ vespa_streamingvisitors
GTest::GTest
)
diff --git a/streamingvisitors/src/tests/query_term_filter_factory/CMakeLists.txt b/streamingvisitors/src/tests/query_term_filter_factory/CMakeLists.txt
index a4359e391f4..9e7d95c6a87 100644
--- a/streamingvisitors/src/tests/query_term_filter_factory/CMakeLists.txt
+++ b/streamingvisitors/src/tests/query_term_filter_factory/CMakeLists.txt
@@ -3,7 +3,7 @@ vespa_add_executable(streamingvisitors_query_term_filter_factory_test_app TEST
SOURCES
query_term_filter_factory_test.cpp
DEPENDS
- streamingvisitors
+ vespa_streamingvisitors
GTest::GTest
)
vespa_add_test(NAME streamingvisitors_query_term_filter_factory_test_app COMMAND streamingvisitors_query_term_filter_factory_test_app)
diff --git a/streamingvisitors/src/tests/querywrapper/CMakeLists.txt b/streamingvisitors/src/tests/querywrapper/CMakeLists.txt
index 9fa9f75f047..0de6c12cc75 100644
--- a/streamingvisitors/src/tests/querywrapper/CMakeLists.txt
+++ b/streamingvisitors/src/tests/querywrapper/CMakeLists.txt
@@ -3,6 +3,7 @@ vespa_add_executable(streamingvisitors_querywrapper_test_app TEST
SOURCES
querywrapper_test.cpp
DEPENDS
- streamingvisitors
+ vespa_streamingvisitors
+ GTest::gtest
)
vespa_add_test(NAME streamingvisitors_querywrapper_test_app COMMAND streamingvisitors_querywrapper_test_app)
diff --git a/streamingvisitors/src/tests/querywrapper/querywrapper_test.cpp b/streamingvisitors/src/tests/querywrapper/querywrapper_test.cpp
index 2a4b9e1f869..6deb0d4cda4 100644
--- a/streamingvisitors/src/tests/querywrapper/querywrapper_test.cpp
+++ b/streamingvisitors/src/tests/querywrapper/querywrapper_test.cpp
@@ -1,10 +1,10 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#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/querywrapper.h>
+#include <vespa/vespalib/gtest/gtest.h>
#include <iostream>
using namespace search;
@@ -13,17 +13,7 @@ using namespace search::streaming;
namespace streaming {
-class QueryWrapperTest : public vespalib::TestApp
-{
-private:
- void testQueryWrapper();
-
-public:
- int Main() override;
-};
-
-void
-QueryWrapperTest::testQueryWrapper()
+TEST(QueryWrapperTest, test_query_wrapper)
{
QueryNodeResultFactory empty;
{
@@ -49,27 +39,17 @@ QueryWrapperTest::testQueryWrapper()
q.getLeaves(terms);
ASSERT_TRUE(tl.size() == 3 && terms.size() == 3);
for (size_t i = 0; i < 3; ++i) {
- EXPECT_EQUAL(tl[i], terms[i]);
+ EXPECT_EQ(tl[i], terms[i]);
std::cout << "t[" << i << "]:" << terms[i] << std::endl;
auto phrase = dynamic_cast<PhraseQueryNode*>(terms[i]);
- EXPECT_EQUAL(i == 1, phrase != nullptr);
+ EXPECT_EQ(i == 1, phrase != nullptr);
if (i == 1) {
- EXPECT_EQUAL(3u, phrase->get_terms().size());
+ EXPECT_EQ(3u, phrase->get_terms().size());
}
}
}
}
-int
-QueryWrapperTest::Main()
-{
- TEST_INIT("querywrapper_test");
-
- testQueryWrapper();
-
- TEST_DONE();
}
-} // namespace streaming
-
-TEST_APPHOOK(::streaming::QueryWrapperTest)
+GTEST_MAIN_RUN_ALL_TESTS()
diff --git a/streamingvisitors/src/tests/rank_processor/CMakeLists.txt b/streamingvisitors/src/tests/rank_processor/CMakeLists.txt
index 2c3e60b7d08..35186ff2cd6 100644
--- a/streamingvisitors/src/tests/rank_processor/CMakeLists.txt
+++ b/streamingvisitors/src/tests/rank_processor/CMakeLists.txt
@@ -3,7 +3,7 @@ vespa_add_executable(streamingvisitors_rank_processor_test_app TEST
SOURCES
rank_processor_test.cpp
DEPENDS
- streamingvisitors
+ vespa_streamingvisitors
GTest::GTest
)
vespa_add_test(NAME streamingvisitors_rank_processor_test_app COMMAND streamingvisitors_rank_processor_test_app)
diff --git a/streamingvisitors/src/tests/searcher/CMakeLists.txt b/streamingvisitors/src/tests/searcher/CMakeLists.txt
index 2daf963a338..ad58db76572 100644
--- a/streamingvisitors/src/tests/searcher/CMakeLists.txt
+++ b/streamingvisitors/src/tests/searcher/CMakeLists.txt
@@ -3,8 +3,8 @@ vespa_add_executable(vsm_searcher_test_app TEST
SOURCES
searcher_test.cpp
DEPENDS
- searchlib
+ vespa_searchlib
searchlib_test
- streamingvisitors
+ vespa_streamingvisitors
)
vespa_add_test(NAME vsm_searcher_test_app COMMAND vsm_searcher_test_app)
diff --git a/streamingvisitors/src/tests/searcher/searcher_test.cpp b/streamingvisitors/src/tests/searcher/searcher_test.cpp
index 84c3a542661..b3e0ad304fe 100644
--- a/streamingvisitors/src/tests/searcher/searcher_test.cpp
+++ b/streamingvisitors/src/tests/searcher/searcher_test.cpp
@@ -1,6 +1,6 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/vespalib/testkit/testapp.h>
+#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/document/fieldvalue/fieldvalues.h>
#include <vespa/searchlib/query/streaming/fuzzy_term.h>
diff --git a/streamingvisitors/src/tests/searchvisitor/CMakeLists.txt b/streamingvisitors/src/tests/searchvisitor/CMakeLists.txt
index 87a1098f52d..83122503bf5 100644
--- a/streamingvisitors/src/tests/searchvisitor/CMakeLists.txt
+++ b/streamingvisitors/src/tests/searchvisitor/CMakeLists.txt
@@ -3,7 +3,7 @@ vespa_add_executable(streamingvisitors_searchvisitor_test_app TEST
SOURCES
searchvisitor_test.cpp
DEPENDS
- streamingvisitors
+ vespa_streamingvisitors
GTest::GTest
)
vespa_add_test(NAME streamingvisitors_searchvisitor_test_app COMMAND streamingvisitors_searchvisitor_test_app)
diff --git a/streamingvisitors/src/tests/searchvisitor/searchvisitor_test.cpp b/streamingvisitors/src/tests/searchvisitor/searchvisitor_test.cpp
index 7cf333a4bee..0c4fb4d1864 100644
--- a/streamingvisitors/src/tests/searchvisitor/searchvisitor_test.cpp
+++ b/streamingvisitors/src/tests/searchvisitor/searchvisitor_test.cpp
@@ -15,6 +15,7 @@
#include <vespa/storage/frameworkimpl/component/storagecomponentregisterimpl.h>
#include <vespa/storageframework/defaultimplementation/clock/fakeclock.h>
#include <vespa/vespalib/gtest/gtest.h>
+#include <vespa/vespalib/testkit/test_path.h>
#include <vespa/log/log.h>
LOG_SETUP("searchvisitor_test");
@@ -30,6 +31,10 @@ vespalib::string get_doc_id(int id) {
return "id:test:test::" + std::to_string(id);
}
+vespalib::string src_cfg(vespalib::stringref prefix, vespalib::stringref suffix) {
+ return prefix + TEST_PATH("cfg") + suffix;
+}
+
/**
* This class reflects the document type defined in cfg/test.sd.
*/
@@ -160,9 +165,9 @@ public:
SearchVisitorTest::SearchVisitorTest() :
_componentRegister(),
- _env(::config::ConfigUri("dir:cfg"), nullptr, ""),
- _factory(::config::ConfigUri("dir:cfg"), nullptr, ""),
- _repo(std::make_shared<DocumentTypeRepo>(readDocumenttypesConfig("cfg/documenttypes.cfg"))),
+ _env(::config::ConfigUri(src_cfg("dir:", "")), nullptr, ""),
+ _factory(::config::ConfigUri(src_cfg("dir:", "")), nullptr, ""),
+ _repo(std::make_shared<DocumentTypeRepo>(readDocumenttypesConfig(src_cfg("", "/documenttypes.cfg")))),
_doc_type(_repo->getDocumentType("test"))
{
assert(_doc_type != nullptr);
diff --git a/streamingvisitors/src/tests/textutil/CMakeLists.txt b/streamingvisitors/src/tests/textutil/CMakeLists.txt
index da99850e43e..267b67f3b97 100644
--- a/streamingvisitors/src/tests/textutil/CMakeLists.txt
+++ b/streamingvisitors/src/tests/textutil/CMakeLists.txt
@@ -3,6 +3,7 @@ vespa_add_executable(vsm_textutil_test_app TEST
SOURCES
textutil_test.cpp
DEPENDS
- streamingvisitors
+ vespa_streamingvisitors
+ GTest::gtest
)
vespa_add_test(NAME vsm_textutil_test_app COMMAND vsm_textutil_test_app)
diff --git a/streamingvisitors/src/tests/textutil/textutil_test.cpp b/streamingvisitors/src/tests/textutil/textutil_test.cpp
index f7f340a2182..1dbabf1f0af 100644
--- a/streamingvisitors/src/tests/textutil/textutil_test.cpp
+++ b/streamingvisitors/src/tests/textutil/textutil_test.cpp
@@ -1,7 +1,7 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/fastlib/text/normwordfolder.h>
+#include <vespa/vespalib/gtest/gtest.h>
#include <vespa/vsm/searcher/fold.h>
#include <vespa/vsm/searcher/futf8strchrfieldsearcher.h>
#include <vespa/vsm/searcher/utf8stringfieldsearcherbase.h>
@@ -23,9 +23,9 @@ using SizeV = Vector<size_t>;
using SFSB = UTF8StringFieldSearcherBase;
using FSFS = FUTF8StrChrFieldSearcher;
-class TextUtilTest : public vespalib::TestApp
+class TextUtilTest : public ::testing::Test
{
-private:
+protected:
ucs4_t getUTF8Char(const char * src);
template <typename BW, bool OFF>
void assertSkipSeparators(const char * input, size_t len, const UCS4V & expdstbuf, const SizeV & expoffsets);
@@ -38,23 +38,23 @@ private:
template <typename BW, bool OFF>
void testSkipSeparators();
- void testSkipSeparators();
- void testSeparatorCharacter();
- void testAnsiFold();
- void test_lfoldua();
-#ifdef __x86_64__
- void test_sse2_foldua();
-#endif
-public:
- int Main() override;
+ TextUtilTest();
+ ~TextUtilTest() override;
};
+TextUtilTest::TextUtilTest()
+ : ::testing::Test()
+{
+}
+
+TextUtilTest::~TextUtilTest() = default;
+
ucs4_t
TextUtilTest::getUTF8Char(const char * src)
{
ucs4_t retval = Fast_UnicodeUtil::GetUTF8Char(src);
- ASSERT_TRUE(retval != Fast_UnicodeUtil::_BadUTF8Char);
+ EXPECT_TRUE(retval != Fast_UnicodeUtil::_BadUTF8Char);
return retval;
}
@@ -68,12 +68,12 @@ TextUtilTest::assertSkipSeparators(const char * input, size_t len, const UCS4V &
UTF8StrChrFieldSearcher fs(0);
BW bw(dstbuf.get(), offsets.get());
size_t dstlen = fs.skipSeparators(srcbuf, len, bw);
- EXPECT_EQUAL(dstlen, expdstbuf.size());
+ EXPECT_EQ(dstlen, expdstbuf.size());
ASSERT_TRUE(dstlen == expdstbuf.size());
for (size_t i = 0; i < dstlen; ++i) {
- EXPECT_EQUAL(dstbuf[i], expdstbuf[i]);
+ EXPECT_EQ(dstbuf[i], expdstbuf[i]);
if (OFF) {
- EXPECT_EQUAL(offsets[i], expoffsets[i]);
+ EXPECT_EQ(offsets[i], expoffsets[i]);
}
}
}
@@ -83,7 +83,7 @@ TextUtilTest::assertAnsiFold(const std::string & toFold, const std::string & exp
{
char folded[256];
EXPECT_TRUE(FSFS::ansiFold(toFold.c_str(), toFold.size(), folded));
- EXPECT_EQUAL(std::string(folded, toFold.size()), exp);
+ EXPECT_EQ(std::string(folded, toFold.size()), exp);
}
void
@@ -91,7 +91,7 @@ TextUtilTest::assertAnsiFold(char c, char exp)
{
char folded;
EXPECT_TRUE(FSFS::ansiFold(&c, 1, &folded));
- EXPECT_EQUAL((int32_t)folded, (int32_t)exp);
+ EXPECT_EQ((int32_t)folded, (int32_t)exp);
}
#ifdef __x86_64__
@@ -103,8 +103,8 @@ TextUtilTest::assert_sse2_foldua(const std::string & toFold, size_t charFolded,
const unsigned char * toFoldOrg = reinterpret_cast<const unsigned char *>(toFold.c_str());
const unsigned char * retval =
sse2_foldua(toFoldOrg, toFold.size(), reinterpret_cast<unsigned char *>(folded + alignedStart));
- EXPECT_EQUAL((size_t)(retval - toFoldOrg), charFolded);
- EXPECT_EQUAL(std::string(folded + alignedStart, charFolded), exp);
+ EXPECT_EQ((size_t)(retval - toFoldOrg), charFolded);
+ EXPECT_EQ(std::string(folded + alignedStart, charFolded), exp);
}
void
@@ -115,9 +115,9 @@ TextUtilTest::assert_sse2_foldua(unsigned char c, unsigned char exp, size_t char
unsigned char folded[32];
size_t alignedStart = 0xF - (size_t(folded + 0xF) % 0x10);
const unsigned char * retval = sse2_foldua(toFold, 16, folded + alignedStart);
- EXPECT_EQUAL((size_t)(retval - toFold), charFolded);
+ EXPECT_EQ((size_t)(retval - toFold), charFolded);
for (size_t i = 0; i < charFolded; ++i) {
- EXPECT_EQUAL((int32_t)folded[i + alignedStart], (int32_t)exp);
+ EXPECT_EQ((int32_t)folded[i + alignedStart], (int32_t)exp);
}
}
#endif
@@ -145,8 +145,7 @@ TextUtilTest::testSkipSeparators()
SizeV().a(0).a(0).a(2).a(3).a(3));
}
-void
-TextUtilTest::testSkipSeparators()
+TEST_F(TextUtilTest, skip_separators)
{
Fast_NormalizeWordFolder::Setup(Fast_NormalizeWordFolder::DO_SHARP_S_SUBSTITUTION);
@@ -154,8 +153,7 @@ TextUtilTest::testSkipSeparators()
testSkipSeparators<SFSB::OffsetWrapper, true>();
}
-void
-TextUtilTest::testSeparatorCharacter()
+TEST_F(TextUtilTest, separator_character)
{
EXPECT_TRUE(SFSB::isSeparatorCharacter('\x00'));
EXPECT_TRUE(SFSB::isSeparatorCharacter('\x01'));
@@ -194,8 +192,7 @@ TextUtilTest::testSeparatorCharacter()
EXPECT_TRUE(! SFSB::isSeparatorCharacter('\x20')); // space
}
-void
-TextUtilTest::testAnsiFold()
+TEST_F(TextUtilTest, ansi_fold)
{
FieldSearcher::init();
assertAnsiFold("", "");
@@ -220,8 +217,7 @@ TextUtilTest::testAnsiFold()
}
}
-void
-TextUtilTest::test_lfoldua()
+TEST_F(TextUtilTest, lfoldua)
{
FieldSearcher::init();
char folded[256];
@@ -229,12 +225,11 @@ TextUtilTest::test_lfoldua()
const char * toFold = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
size_t len = strlen(toFold);
EXPECT_TRUE(FSFS::lfoldua(toFold, len, folded, alignedStart));
- EXPECT_EQUAL(std::string(folded + alignedStart, len), "abcdefghijklmnopqrstuvwxyz");
+ EXPECT_EQ(std::string(folded + alignedStart, len), "abcdefghijklmnopqrstuvwxyz");
}
#ifdef __x86_64__
-void
-TextUtilTest::test_sse2_foldua()
+TEST_F(TextUtilTest, sse2_foldua)
{
assert_sse2_foldua("", 0, "");
assert_sse2_foldua("ABCD", 0, "");
@@ -263,22 +258,6 @@ TextUtilTest::test_sse2_foldua()
}
#endif
-int
-TextUtilTest::Main()
-{
- TEST_INIT("textutil_test");
-
- testSkipSeparators();
- testSeparatorCharacter();
- testAnsiFold();
- test_lfoldua();
-#ifdef __x86_64__
- test_sse2_foldua();
-#endif
-
- TEST_DONE();
-}
-
}
-TEST_APPHOOK(vsm::TextUtilTest);
+GTEST_MAIN_RUN_ALL_TESTS()
diff --git a/streamingvisitors/src/tests/tokens_converter/CMakeLists.txt b/streamingvisitors/src/tests/tokens_converter/CMakeLists.txt
index 01a1fc965af..848e52d275b 100644
--- a/streamingvisitors/src/tests/tokens_converter/CMakeLists.txt
+++ b/streamingvisitors/src/tests/tokens_converter/CMakeLists.txt
@@ -3,7 +3,7 @@ vespa_add_executable(streamingvisitors_tokens_converter_test_app TEST
SOURCES
tokens_converter_test.cpp
DEPENDS
- streamingvisitors
+ vespa_streamingvisitors
GTest::gtest
)
diff --git a/streamingvisitors/src/vespa/searchvisitor/CMakeLists.txt b/streamingvisitors/src/vespa/searchvisitor/CMakeLists.txt
index 4112c76bdaa..855038058d0 100644
--- a/streamingvisitors/src/vespa/searchvisitor/CMakeLists.txt
+++ b/streamingvisitors/src/vespa/searchvisitor/CMakeLists.txt
@@ -1,5 +1,5 @@
# Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-vespa_add_library(streamingvisitors
+vespa_add_library(vespa_streamingvisitors
SOURCES
attribute_access_recorder.cpp
hitcollector.cpp
diff --git a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp
index 7ecda0e82f1..926da9438a1 100644
--- a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp
+++ b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp
@@ -684,7 +684,7 @@ SearchVisitor::RankController::processAccessedAttributes(const QueryEnvironment
SearchVisitor::RankController::RankController()
: _rankProfile("default"),
_rankManagerSnapshot(nullptr),
- _rank_score_drop_limit(std::numeric_limits<search::feature_t>::min()),
+ _rank_score_drop_limit(),
_hasRanking(false),
_hasSummaryFeatures(false),
_dumpFeatures(false),
@@ -703,9 +703,9 @@ SearchVisitor::RankController::setupRankProcessors(Query & query,
const search::IAttributeManager & attrMan,
std::vector<AttrInfo> & attributeFields)
{
- using RankScoreDropLimit = search::fef::indexproperties::hitcollector::RankScoreDropLimit;
+ using FirstPhaseRankScoreDropLimit = search::fef::indexproperties::hitcollector::FirstPhaseRankScoreDropLimit;
const search::fef::RankSetup & rankSetup = _rankManagerSnapshot->getRankSetup(_rankProfile);
- _rank_score_drop_limit = RankScoreDropLimit::lookup(_queryProperties, rankSetup.getRankScoreDropLimit());
+ _rank_score_drop_limit = FirstPhaseRankScoreDropLimit::lookup(_queryProperties, rankSetup.get_first_phase_rank_score_drop_limit());
_rankProcessor = std::make_unique<RankProcessor>(_rankManagerSnapshot, _rankProfile, query, location, _queryProperties, _featureOverrides, &attrMan);
_rankProcessor->initForRanking(wantedHitCount, use_sort_blob);
// register attribute vectors needed for ranking
@@ -751,8 +751,11 @@ SearchVisitor::RankController::rankMatchedDocument(uint32_t docId)
bool
SearchVisitor::RankController::keepMatchedDocument()
{
+ if (!_rank_score_drop_limit.has_value()) {
+ return true;
+ }
// also make sure that NaN scores are added
- return (!(_rankProcessor->getRankScore() <= _rank_score_drop_limit));
+ return (!(_rankProcessor->getRankScore() <= _rank_score_drop_limit.value()));
}
void
@@ -1139,7 +1142,7 @@ SearchVisitor::handleDocument(StorageDocument::SP documentSP)
} else {
_hitsRejectedCount++;
LOG(debug, "Do not keep document with id '%s' because rank score (%f) <= rank score drop limit (%f)",
- documentId.c_str(), rp.getRankScore(), _rankController.rank_score_drop_limit());
+ documentId.c_str(), rp.getRankScore(), _rankController.rank_score_drop_limit().value());
}
} else {
LOG(debug, "Did not match document with id '%s'", document.docDoc().getId().getScheme().toString().c_str());
diff --git a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h
index 7d73a159f6f..2f6673abd2d 100644
--- a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h
+++ b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h
@@ -30,6 +30,7 @@
#include <vespa/document/fieldvalue/fieldvalues.h>
#include <vespa/documentapi/messagebus/messages/queryresultmessage.h>
#include <vespa/document/fieldvalue/iteratorhandler.h>
+#include <optional>
using namespace search::aggregation;
@@ -127,7 +128,7 @@ private:
private:
vespalib::string _rankProfile;
std::shared_ptr<const RankManager::Snapshot> _rankManagerSnapshot;
- search::feature_t _rank_score_drop_limit;
+ std::optional<search::feature_t> _rank_score_drop_limit;
bool _hasRanking;
bool _hasSummaryFeatures;
bool _dumpFeatures;
@@ -157,7 +158,7 @@ private:
RankProcessor * getRankProcessor() { return _rankProcessor.get(); }
void setDumpFeatures(bool dumpFeatures) { _dumpFeatures = dumpFeatures; }
bool getDumpFeatures() const { return _dumpFeatures; }
- search::feature_t rank_score_drop_limit() const noexcept { return _rank_score_drop_limit; }
+ std::optional<search::feature_t> rank_score_drop_limit() const noexcept { return _rank_score_drop_limit; }
/**
* Setup rank processors used for ranking and dumping.