summaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/queryeval/multibitvectoriterator
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@broadpark.no>2020-02-13 11:56:12 +0100
committerTor Egge <Tor.Egge@broadpark.no>2020-02-13 12:13:22 +0100
commit89a5cb3d0fc7e5c808af3c583ad89902c8c4b086 (patch)
treea545fa16c253d7ffccd65afa44a9b267d67d0f4a /searchlib/src/tests/queryeval/multibitvectoriterator
parent1e35637ebf9bf87fb12a7e3ab009988b8fe0bf0d (diff)
Use well defined pseudorandom generator when depending on the generated
sequence.
Diffstat (limited to 'searchlib/src/tests/queryeval/multibitvectoriterator')
-rw-r--r--searchlib/src/tests/queryeval/multibitvectoriterator/multibitvectoriterator_test.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/searchlib/src/tests/queryeval/multibitvectoriterator/multibitvectoriterator_test.cpp b/searchlib/src/tests/queryeval/multibitvectoriterator/multibitvectoriterator_test.cpp
index 28ba13bb4fc..12c38d3fe02 100644
--- a/searchlib/src/tests/queryeval/multibitvectoriterator/multibitvectoriterator_test.cpp
+++ b/searchlib/src/tests/queryeval/multibitvectoriterator/multibitvectoriterator_test.cpp
@@ -10,6 +10,7 @@
#include <vespa/searchlib/fef/termfieldmatchdata.h>
#include <vespa/searchlib/fef/termfieldmatchdataarray.h>
#include <vespa/searchlib/test/searchiteratorverifier.h>
+#include <random>
#include <vespa/log/log.h>
LOG_SETUP("multibitvectoriterator_test");
@@ -52,6 +53,14 @@ private:
BitVector * getBV(size_t index, bool inverted) {
return inverted ? _bvs_inverted[index].get() : _bvs[index].get();
}
+ void fixup_bitvectors() {
+ // Restore from inverted bitvectors after tampering
+ for (int i = 0; i < 3; ++i) {
+ if (_bvs_inverted[i]->testBit(1)) {
+ _bvs[i]->clearBit(1);
+ }
+ }
+ }
std::vector< BitVector::UP > _bvs;
std::vector< BitVector::UP > _bvs_inverted;
};
@@ -61,12 +70,12 @@ Test::~Test() = default;
void Test::setup()
{
- srand(7);
+ std::minstd_rand rnd(341);
for(size_t i(0); i < 3; i++) {
_bvs.push_back(BitVector::create(10000));
BitVector & bv(*_bvs.back());
for (size_t j(0); j < bv.size(); j++) {
- int r = rand();
+ int r = rnd();
if (r & 0x1) {
bv.setBit(j);
}
@@ -132,7 +141,7 @@ Test::testAndWith(bool invert)
s->initFullRange();
H firstHits3 = seekNoReset(*s, 1, 130);
H lastHits3 = seekNoReset(*s, 130, _bvs[0]->size());
- //These constants will change if srand(7) is changed.
+ //These constants will change if rnd(341) is changed.
EXPECT_EQUAL(30u, firstHits2.size());
EXPECT_EQUAL(19u, firstHits3.size());
EXPECT_EQUAL(1234u, lastHits2F.size());
@@ -208,6 +217,7 @@ Test::testBug7163266()
EXPECT_TRUE(ms->needUnpack(i));
}
EXPECT_TRUE(ms->needUnpack(28)); // NB: force unpack all
+ fixup_bitvectors();
}
template<typename T>
@@ -240,6 +250,7 @@ Test::testThatOptimizePreservesUnpack()
EXPECT_TRUE(ms != nullptr);
EXPECT_EQUAL(2u, ms->getChildren().size());
verifySelectiveUnpack(*s, tfmd);
+ fixup_bitvectors();
}
void