diff options
author | Tor Egge <Tor.Egge@online.no> | 2022-02-15 15:06:39 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2022-02-15 15:06:39 +0100 |
commit | 3f552a550bb835cf50896039216593ac0bd85142 (patch) | |
tree | 59b9ca1ad7280d122a0163fca983ff0cedb07647 /searchlib/src/tests/common/bitvector | |
parent | 8f8ebd22113425435d8bc38d406a2d74cd4333f0 (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.cpp | 26 |
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(); } |