summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-02-02 01:13:10 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2017-02-03 14:51:08 +0100
commit6d4ed4f88706ee05b56096a86f473587f0e8e804 (patch)
treec2ea3484099c927825678d022cd4b4bc398330a2 /searchlib
parent0cf5991a9f248f852d84ff0db34b5ac1fcac0361 (diff)
Use one SearchIteratorVerifier where you overload create() and run verify().
Will go through all tests using InitRangeVerifier and swap in this one.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/tests/attribute/bitvector/bitvector_test.cpp55
-rw-r--r--searchlib/src/vespa/searchlib/test/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/test/searchiteratorverifier.cpp (renamed from searchlib/src/vespa/searchlib/test/termwise.cpp)53
-rw-r--r--searchlib/src/vespa/searchlib/test/searchiteratorverifier.h (renamed from searchlib/src/vespa/searchlib/test/termwise.h)8
4 files changed, 57 insertions, 61 deletions
diff --git a/searchlib/src/tests/attribute/bitvector/bitvector_test.cpp b/searchlib/src/tests/attribute/bitvector/bitvector_test.cpp
index c528122aded..1eafefa5458 100644
--- a/searchlib/src/tests/attribute/bitvector/bitvector_test.cpp
+++ b/searchlib/src/tests/attribute/bitvector/bitvector_test.cpp
@@ -13,7 +13,7 @@
#include <vespa/searchlib/attribute/i_document_weight_attribute.h>
#include <vespa/searchlib/queryeval/document_weight_search_iterator.h>
#include <vespa/searchlib/test/initrange.h>
-#include <vespa/searchlib/test/termwise.h>
+#include <vespa/searchlib/test/searchiteratorverifier.h>
#include <vespa/searchlib/common/bitvectoriterator.h>
#include <vespa/searchlib/parsequery/parse.h>
@@ -523,29 +523,17 @@ BitVectorTest::test(BasicType bt,
template <typename VectorType, typename BufferType>
void
-BitVectorTest::test(BasicType bt,
- CollectionType ct,
- const vespalib::string &pref)
-{
- LOG(info,
- "test run, pref is %s",
- pref.c_str());
- test<VectorType, BufferType>(bt, ct, pref,
- false, false, false, false);
- test<VectorType, BufferType>(bt, ct, pref,
- false, false, false, true);
- test<VectorType, BufferType>(bt, ct, pref,
- true, false, false, false);
- test<VectorType, BufferType>(bt, ct, pref,
- true, false, false, true);
- test<VectorType, BufferType>(bt, ct, pref,
- true, true, false, false);
- test<VectorType, BufferType>(bt, ct, pref,
- true, true, false, true);
- test<VectorType, BufferType>(bt, ct, pref,
- true, true, true, false);
- test<VectorType, BufferType>(bt, ct, pref,
- true, true, true, true);
+BitVectorTest::test(BasicType bt,CollectionType ct, const vespalib::string &pref)
+{
+ LOG(info, "test run, pref is %s", pref.c_str());
+ test<VectorType, BufferType>(bt, ct, pref, false, false, false, false);
+ test<VectorType, BufferType>(bt, ct, pref, false, false, false, true);
+ test<VectorType, BufferType>(bt, ct, pref, true, false, false, false);
+ test<VectorType, BufferType>(bt, ct, pref, true, false, false, true);
+ test<VectorType, BufferType>(bt, ct, pref, true, true, false, false);
+ test<VectorType, BufferType>(bt, ct, pref, true, true, false, true);
+ test<VectorType, BufferType>(bt, ct, pref, true, true, true, false);
+ test<VectorType, BufferType>(bt, ct, pref, true, true, true, true);
}
@@ -621,18 +609,8 @@ TEST_F("Test bitvectors with weighted set value string", BitVectorTest)
"string_ws");
}
-TEST("Test bitvector iterators adheres to initRange") {
- search::test::InitRangeVerifier initRangeTest;
- BitVector::UP bv = BitVector::create(initRangeTest.getDocIdLimit());
- for (uint32_t docId: initRangeTest.getExpectedDocIds()) {
- bv->setBit(docId);
- }
- TermFieldMatchData tfmd;
- initRangeTest.verify(*BitVectorIterator::create(bv.get(), initRangeTest.getDocIdLimit(), tfmd, false));
- initRangeTest.verify(*BitVectorIterator::create(bv.get(), initRangeTest.getDocIdLimit(), tfmd, true));
-}
-class Verifier : public search::test::TermwiseVerifier {
+class Verifier : public search::test::SearchIteratorVerifier {
public:
Verifier() : _bv(BitVector::create(getDocIdLimit())) {
for (uint32_t docId: getExpectedDocIds()) {
@@ -648,9 +626,10 @@ private:
mutable TermFieldMatchData _tfmd;
BitVector::UP _bv;
};
-TEST("Test bitvector iterators adheres to termwise search too") {
- Verifier termwiseTest;
- termwiseTest.verify();
+
+TEST("Test bitvector iterators does not break SearchIterator requirements") {
+ Verifier searchIteratorVerifier;
+ searchIteratorVerifier.verify();
}
diff --git a/searchlib/src/vespa/searchlib/test/CMakeLists.txt b/searchlib/src/vespa/searchlib/test/CMakeLists.txt
index 02bd2870ec3..fe8abb78f24 100644
--- a/searchlib/src/vespa/searchlib/test/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/test/CMakeLists.txt
@@ -3,9 +3,9 @@ vespa_add_library(searchlib_test
SOURCES
document_weight_attribute_helper.cpp
initrange.cpp
+ searchiteratorverifier.cpp
statefile.cpp
statestring.cpp
- termwise.cpp
$<TARGET_OBJECTS:searchlib_test_fakedata>
$<TARGET_OBJECTS:searchlib_searchlib_test_diskindex>
DEPENDS
diff --git a/searchlib/src/vespa/searchlib/test/termwise.cpp b/searchlib/src/vespa/searchlib/test/searchiteratorverifier.cpp
index b06e8991632..d8f24c02e78 100644
--- a/searchlib/src/vespa/searchlib/test/termwise.cpp
+++ b/searchlib/src/vespa/searchlib/test/searchiteratorverifier.cpp
@@ -1,5 +1,6 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include "termwise.h"
+#include "searchiteratorverifier.h"
+#include "initrange.h"
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/searchlib/queryeval/emptysearch.h>
#include <vespa/searchlib/queryeval/truesearch.h>
@@ -19,7 +20,7 @@ using std::make_unique;
class DocIdIterator : public SearchIterator
{
public:
- DocIdIterator(const TermwiseVerifier::DocIds & docIds, bool strict) :
+ DocIdIterator(const SearchIteratorVerifier::DocIds & docIds, bool strict) :
_strict(strict),
_currIndex(0),
_docIds(docIds)
@@ -55,10 +56,10 @@ public:
private:
const bool _strict;
uint32_t _currIndex;
- const TermwiseVerifier::DocIds _docIds;
+ const SearchIteratorVerifier::DocIds _docIds;
};
-TermwiseVerifier::TermwiseVerifier() :
+SearchIteratorVerifier::SearchIteratorVerifier() :
_trueTfmd(),
_docIds(),
_everyOddBitSet(BitVector::create(getDocIdLimit()))
@@ -89,22 +90,36 @@ TermwiseVerifier::TermwiseVerifier() :
}
}
-TermwiseVerifier::~TermwiseVerifier() { }
+SearchIteratorVerifier::~SearchIteratorVerifier() { }
SearchIterator::UP
-TermwiseVerifier::createIterator(const DocIds &docIds, bool strict) const
+SearchIteratorVerifier::createIterator(const DocIds &docIds, bool strict) const
{
return make_unique<DocIdIterator>(docIds, strict);
}
+ void
+ SearchIteratorVerifier::verify() const {
+ TEST_DO(verifyTermwise());
+ TEST_DO(verifyInitRange());
+ }
+
void
-TermwiseVerifier::verify() const {
+SearchIteratorVerifier::verifyTermwise() const {
TEST_DO(verify(false));
TEST_DO(verify(true));
}
+ void
+ SearchIteratorVerifier::verifyInitRange() const {
+ InitRangeVerifier initRangeTest;
+ TEST_DO(initRangeTest.verify(*create(false)));
+ TEST_DO(initRangeTest.verify(*create(true)));
+ }
+
+
void
-TermwiseVerifier::verify(bool strict) const {
+SearchIteratorVerifier::verify(bool strict) const {
SearchIterator::UP iterator = create(strict);
TEST_DO(verify(*iterator, strict, _docIds));
TEST_DO(verifyTermwise(std::move(iterator), strict, _docIds));
@@ -113,7 +128,7 @@ TermwiseVerifier::verify(bool strict) const {
}
void
-TermwiseVerifier::verifyAnd(bool strict) const {
+SearchIteratorVerifier::verifyAnd(bool strict) const {
fef::TermFieldMatchData tfmd;
MultiSearch::Children children;
children.emplace_back(create(strict).release());
@@ -124,7 +139,7 @@ TermwiseVerifier::verifyAnd(bool strict) const {
}
void
-TermwiseVerifier::verifyOr(bool strict) const {
+SearchIteratorVerifier::verifyOr(bool strict) const {
fef::TermFieldMatchData tfmd;
MultiSearch::Children children;
children.emplace_back(create(strict).release());
@@ -136,13 +151,13 @@ TermwiseVerifier::verifyOr(bool strict) const {
void
-TermwiseVerifier::verifyTermwise(SearchIterator::UP iterator, bool strict, const DocIds & docIds) {
+SearchIteratorVerifier::verifyTermwise(SearchIterator::UP iterator, bool strict, const DocIds & docIds) {
SearchIterator::UP termwise = make_termwise(std::move(iterator), strict);
TEST_DO(verify(*termwise, strict, docIds));
}
void
-TermwiseVerifier::verify(SearchIterator & iterator, bool strict, const DocIds & docIds)
+SearchIteratorVerifier::verify(SearchIterator & iterator, bool strict, const DocIds & docIds)
{
TEST_DO(verify(iterator, Ranges({{1, getDocIdLimit()}}), strict, docIds));
TEST_DO(verify(iterator, Ranges({{1, getDocIdLimit()}}), strict, docIds));
@@ -158,7 +173,7 @@ TermwiseVerifier::verify(SearchIterator & iterator, bool strict, const DocIds &
}
void
-TermwiseVerifier::verify(SearchIterator & iterator, const Ranges & ranges, bool strict, const DocIds & docIds)
+SearchIteratorVerifier::verify(SearchIterator & iterator, const Ranges & ranges, bool strict, const DocIds & docIds)
{
DocIds result = search(iterator, ranges, strict);
ASSERT_EQUAL(docIds.size(), result.size());
@@ -167,8 +182,8 @@ TermwiseVerifier::verify(SearchIterator & iterator, const Ranges & ranges, bool
}
}
-TermwiseVerifier::DocIds
-TermwiseVerifier::search(SearchIterator & it, const Ranges & ranges, bool strict)
+SearchIteratorVerifier::DocIds
+SearchIteratorVerifier::search(SearchIterator & it, const Ranges & ranges, bool strict)
{
DocIds result;
for (Range range : ranges) {
@@ -179,8 +194,8 @@ TermwiseVerifier::search(SearchIterator & it, const Ranges & ranges, bool strict
return result;
}
-TermwiseVerifier::DocIds
-TermwiseVerifier::searchRelaxed(SearchIterator & it, Range range)
+SearchIteratorVerifier::DocIds
+SearchIteratorVerifier::searchRelaxed(SearchIterator & it, Range range)
{
DocIds result;
it.initRange(range.first, range.second);
@@ -192,8 +207,8 @@ TermwiseVerifier::searchRelaxed(SearchIterator & it, Range range)
return result;
}
-TermwiseVerifier::DocIds
-TermwiseVerifier::searchStrict(SearchIterator & it, Range range)
+SearchIteratorVerifier::DocIds
+SearchIteratorVerifier::searchStrict(SearchIterator & it, Range range)
{
DocIds result;
it.initRange(range.first, range.second);
diff --git a/searchlib/src/vespa/searchlib/test/termwise.h b/searchlib/src/vespa/searchlib/test/searchiteratorverifier.h
index 957fa1c32c6..4d85a286801 100644
--- a/searchlib/src/vespa/searchlib/test/termwise.h
+++ b/searchlib/src/vespa/searchlib/test/searchiteratorverifier.h
@@ -8,21 +8,23 @@
namespace search {
namespace test {
-class TermwiseVerifier {
+class SearchIteratorVerifier {
public:
typedef queryeval::SearchIterator SearchIterator;
typedef std::vector<uint32_t> DocIds;
typedef std::pair<uint32_t, uint32_t> Range;
typedef std::vector<Range> Ranges;
- TermwiseVerifier();
- virtual ~TermwiseVerifier();
+ SearchIteratorVerifier();
+ virtual ~SearchIteratorVerifier();
void verify() const;
virtual SearchIterator::UP create(bool strict) const = 0;
protected:
const DocIds & getExpectedDocIds() const { return _docIds; }
static uint32_t getDocIdLimit() { return 207; }
private:
+ void verifyTermwise() const;
+ void verifyInitRange() const;
SearchIterator::UP createIterator(const DocIds &docIds, bool strict) const;
void verify(bool strict) const;
void verifyAnd(bool strict) const;