diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-02-02 01:13:10 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2017-02-03 14:51:08 +0100 |
commit | 6d4ed4f88706ee05b56096a86f473587f0e8e804 (patch) | |
tree | c2ea3484099c927825678d022cd4b4bc398330a2 /searchlib | |
parent | 0cf5991a9f248f852d84ff0db34b5ac1fcac0361 (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.cpp | 55 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/test/CMakeLists.txt | 2 | ||||
-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; |