aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@broadpark.no>2018-04-12 23:04:20 +0200
committerTor Egge <Tor.Egge@oath.com>2018-04-13 10:24:45 +0000
commitf68f6bc837d622fa58b135311167c26f75765837 (patch)
tree9b184f9178d004c6ca257c6859072c0f393fa204 /searchlib/src/tests
parentd4db9e38c6b389d9a38439afc784d39e07410d43 (diff)
Factor out classes for read/write access to memory based pagedict4 structures
used by unit tests.
Diffstat (limited to 'searchlib/src/tests')
-rw-r--r--searchlib/src/tests/diskindex/pagedict4/pagedict4test.cpp164
1 files changed, 6 insertions, 158 deletions
diff --git a/searchlib/src/tests/diskindex/pagedict4/pagedict4test.cpp b/searchlib/src/tests/diskindex/pagedict4/pagedict4test.cpp
index cf90356c949..f75c04dee59 100644
--- a/searchlib/src/tests/diskindex/pagedict4/pagedict4test.cpp
+++ b/searchlib/src/tests/diskindex/pagedict4/pagedict4test.cpp
@@ -6,6 +6,9 @@
#include <vespa/searchlib/bitcompression/countcompression.h>
#include <vespa/searchlib/bitcompression/pagedict4.h>
#include <vespa/searchlib/test/diskindex/threelevelcountbuffers.h>
+#include <vespa/searchlib/test/diskindex/pagedict4_mem_writer.h>
+#include <vespa/searchlib/test/diskindex/pagedict4_mem_seq_reader.h>
+#include <vespa/searchlib/test/diskindex/pagedict4_mem_rand_reader.h>
#include <vespa/searchlib/index/postinglistcounts.h>
#include <vespa/searchlib/index/dummyfileheadercontext.h>
#include <vespa/searchlib/diskindex/pagedict4file.h>
@@ -44,164 +47,9 @@ using search::index::schema::DataType;
using namespace search::index;
using StartOffset = search::bitcompression::PageDict4StartOffset;
-
-namespace
-{
-
-
-class Writer : public search::diskindex::ThreeLevelCountWriteBuffers
-{
-public:
- PageDict4SSWriter *_ssw;
- PageDict4SPWriter *_spw;
- PageDict4PWriter *_pw;
-
- Writer(EC &sse,
- EC &spe,
- EC &pe)
- : ThreeLevelCountWriteBuffers(sse, spe, pe),
- _ssw(NULL),
- _spw(NULL),
- _pw(NULL)
- {
- }
-
- ~Writer()
- {
- delete _ssw;
- delete _spw;
- delete _pw;
- }
-
- void allocWriters()
- {
- _ssw = new PageDict4SSWriter(_sse);
- _spw = new PageDict4SPWriter(*_ssw, _spe);
- _pw = new PageDict4PWriter(*_spw, _pe);
- _spw->setup();
- _pw->setup();
- }
-
- void flush()
- {
- _pw->flush();
- ThreeLevelCountWriteBuffers::flush();
- }
-
- void addCounts(const std::string &word,
- const PostingListCounts &counts)
- {
- _pw->addCounts(word, counts);
- }
-};
-
-
-class SeqReader : public search::diskindex::ThreeLevelCountReadBuffers
-{
-public:
- PageDict4SSReader _ssr;
- PageDict4Reader _pr;
-
- SeqReader(DC &ssd,
- DC &spd,
- DC &pd,
- search::diskindex::ThreeLevelCountWriteBuffers &wb)
- : ThreeLevelCountReadBuffers(ssd, spd, pd, wb),
- _ssr(_rcssd,
- wb._ssHeaderLen, wb._ssFileBitSize,
- wb._spHeaderLen, wb._spFileBitSize,
- wb._pHeaderLen, wb._pFileBitSize),
- _pr(_ssr, spd, pd)
- {
- _ssr.setup(ssd);
- _pr.setup();
- }
-
- void readCounts(vespalib::string &word,
- uint64_t &wordNum,
- PostingListCounts &counts)
- {
- _pr.readCounts(word, wordNum, counts);
- }
-};
-
-class RandReader : public search::diskindex::ThreeLevelCountReadBuffers
-{
-public:
- PageDict4SSReader _ssr;
- const char *_spData;
- const char *_pData;
- size_t _pageSize;
-
- RandReader(DC &ssd,
- DC &spd,
- DC &pd,
- search::diskindex::ThreeLevelCountWriteBuffers &wb)
- : ThreeLevelCountReadBuffers(ssd, spd, pd, wb),
- _ssr(_rcssd,
- wb._ssHeaderLen, wb._ssFileBitSize,
- wb._spHeaderLen, wb._spFileBitSize,
- wb._pHeaderLen, wb._pFileBitSize),
- _spData(static_cast<const char *>(_rcspd._comprBuf)),
- _pData(static_cast<const char *>(_rcpd._comprBuf)),
- _pageSize(search::bitcompression::PageDict4PageParams::getPageByteSize())
- {
- _ssr.setup(ssd);
- }
-
- bool
- lookup(const std::string &key,
- uint64_t &wordNum,
- PostingListCounts &counts,
- StartOffset &offsets)
- {
- PageDict4SSLookupRes sslr;
-
- sslr = _ssr.lookup(key);
- if (!sslr._res) {
- counts.clear();
- offsets = sslr._l6StartOffset;
- wordNum = sslr._l6WordNum;
- return false;
- }
-
- if (sslr._overflow) {
- wordNum = sslr._l6WordNum;
- counts = sslr._counts;
- offsets = sslr._startOffset;
- return true;
- }
- PageDict4SPLookupRes splr;
- splr.lookup(_ssr,
- _spData +
- _pageSize * sslr._sparsePageNum,
- key,
- sslr._l6Word,
- sslr._lastWord,
- sslr._l6StartOffset,
- sslr._l6WordNum,
- sslr._pageNum);
-
- PageDict4PLookupRes plr;
- plr.lookup(_ssr,
- _pData + _pageSize * splr._pageNum,
- key,
- splr._l3Word,
- splr._lastWord,
- splr._l3StartOffset,
- splr._l3WordNum);
- wordNum = plr._wordNum;
- offsets = plr._startOffset;
- if (plr._res) {
- counts = plr._counts;
- return true;
- }
- counts.clear();
- return false;
- }
-};
-
-}
+using Writer = search::diskindex::test::PageDict4MemWriter;
+using SeqReader = search::diskindex::test::PageDict4MemSeqReader;
+using RandReader = search::diskindex::test::PageDict4MemRandReader;
class PageDict4TestApp : public FastOS_Application
{