aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/common/bitvector
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2022-02-15 15:06:39 +0100
committerTor Egge <Tor.Egge@online.no>2022-02-15 15:06:39 +0100
commit3f552a550bb835cf50896039216593ac0bd85142 (patch)
tree59b9ca1ad7280d122a0163fca983ff0cedb07647 /searchlib/src/tests/common/bitvector
parent8f8ebd22113425435d8bc38d406a2d74cd4333f0 (diff)
Keep memory allocator in growable bitvector.
Diffstat (limited to 'searchlib/src/tests/common/bitvector')
-rw-r--r--searchlib/src/tests/common/bitvector/bitvector_test.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/searchlib/src/tests/common/bitvector/bitvector_test.cpp b/searchlib/src/tests/common/bitvector/bitvector_test.cpp
index faeebf9984a..a9850756ac6 100644
--- a/searchlib/src/tests/common/bitvector/bitvector_test.cpp
+++ b/searchlib/src/tests/common/bitvector/bitvector_test.cpp
@@ -8,11 +8,16 @@
#include <vespa/searchlib/common/bitvectoriterator.h>
#include <vespa/searchlib/fef/termfieldmatchdata.h>
#include <vespa/searchlib/fef/termfieldmatchdataarray.h>
+#include <vespa/vespalib/test/memory_allocator_observer.h>
#include <vespa/vespalib/util/rand48.h>
#include <algorithm>
using namespace search;
+using vespalib::alloc::Alloc;
+using vespalib::alloc::test::MemoryAllocatorObserver;
+using AllocStats = MemoryAllocatorObserver::Stats;
+
namespace {
std::string
@@ -653,5 +658,26 @@ TEST("requireThatGrowWorks")
g.trimHoldLists(2);
}
+TEST("require that growable bit vectors keeps memory allocator")
+{
+ AllocStats stats;
+ auto memory_allocator = std::make_unique<MemoryAllocatorObserver>(stats);
+ Alloc init_alloc = Alloc::alloc_with_allocator(memory_allocator.get());
+ vespalib::GenerationHolder g;
+ GrowableBitVector v(200, 200, g, &init_alloc);
+ EXPECT_EQUAL(AllocStats(1, 0), stats);
+ v.resize(1);
+ EXPECT_EQUAL(AllocStats(2, 1), stats);
+ v.reserve(2000);
+ EXPECT_EQUAL(AllocStats(3, 1), stats);
+ v.extend(4000);
+ EXPECT_EQUAL(AllocStats(4, 1), stats);
+ v.shrink(200);
+ EXPECT_EQUAL(AllocStats(4, 1), stats);
+ v.resize(1);
+ EXPECT_EQUAL(AllocStats(5, 2), stats);
+ g.transferHoldLists(1);
+ g.trimHoldLists(2);
+}
TEST_MAIN() { TEST_RUN_ALL(); }