diff options
author | Tor Egge <Tor.Egge@online.no> | 2021-12-14 12:11:50 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2021-12-14 12:11:50 +0100 |
commit | 053d89641fa4123ac240ee270e93b2e7502157d9 (patch) | |
tree | 754d340e06941d361fe841344a70aa7b38d53e73 /vespalib/src/tests/datastore/compact_buffer_candidates | |
parent | 5f2e6960cad8a3f673b726c3869a0b058fb2512f (diff) |
Limit buffers to compact based on number of active and free buffers.
Diffstat (limited to 'vespalib/src/tests/datastore/compact_buffer_candidates')
-rw-r--r-- | vespalib/src/tests/datastore/compact_buffer_candidates/compact_buffer_candidates_test.cpp | 40 |
1 files changed, 31 insertions, 9 deletions
diff --git a/vespalib/src/tests/datastore/compact_buffer_candidates/compact_buffer_candidates_test.cpp b/vespalib/src/tests/datastore/compact_buffer_candidates/compact_buffer_candidates_test.cpp index 80c0d571894..6ab4d68b7a6 100644 --- a/vespalib/src/tests/datastore/compact_buffer_candidates/compact_buffer_candidates_test.cpp +++ b/vespalib/src/tests/datastore/compact_buffer_candidates/compact_buffer_candidates_test.cpp @@ -10,6 +10,7 @@ namespace { constexpr uint32_t num_buffers = 1024; constexpr double default_ratio = 0.2 / 2; constexpr size_t default_slack = 1000; +constexpr double default_max_buffers_ratio = 1.0; }; @@ -20,23 +21,24 @@ public: CompactBufferCandidates candidates; CompactBufferCandidatesTest(); ~CompactBufferCandidatesTest() override; - void reset_candidates(uint32_t max_buffers); + void reset_candidates(uint32_t max_buffers, double max_buffers_ratio = default_max_buffers_ratio); CompactBufferCandidatesTest& add(uint32_t buffer_id, size_t used, size_t dead); void assert_select(const std::vector<uint32_t>& exp); + void set_free_buffers(uint32_t free_buffers = 100); }; CompactBufferCandidatesTest::CompactBufferCandidatesTest() : ::testing::Test(), - candidates(num_buffers, 1, default_ratio, default_slack) + candidates(num_buffers, 1, default_max_buffers_ratio, default_ratio, default_slack) { } CompactBufferCandidatesTest::~CompactBufferCandidatesTest() = default; void -CompactBufferCandidatesTest::reset_candidates(uint32_t max_buffers) +CompactBufferCandidatesTest::reset_candidates(uint32_t max_buffers, double max_buffers_ratio) { - candidates = CompactBufferCandidates(num_buffers, max_buffers, default_ratio, default_slack); + candidates = CompactBufferCandidates(num_buffers, max_buffers, max_buffers_ratio, default_ratio, default_slack); } CompactBufferCandidatesTest& @@ -47,6 +49,12 @@ CompactBufferCandidatesTest::add(uint32_t buffer_id, size_t used, size_t dead) } void +CompactBufferCandidatesTest::set_free_buffers(uint32_t free_buffers) +{ + candidates.set_free_buffers(free_buffers); +} + +void CompactBufferCandidatesTest::assert_select(const std::vector<uint32_t>& exp) { std::vector<uint32_t> act; @@ -56,36 +64,50 @@ CompactBufferCandidatesTest::assert_select(const std::vector<uint32_t>& exp) TEST_F(CompactBufferCandidatesTest, select_single) { - add(0, 10000, 2000).add(1, 10000, 3000); + add(0, 10000, 2000).add(1, 10000, 3000).set_free_buffers(); assert_select({1}); } TEST_F(CompactBufferCandidatesTest, select_two) { reset_candidates(2); - add(0, 10000, 2000).add(3, 10000, 3000).add(7, 10000, 4000); + add(0, 10000, 2000).add(3, 10000, 3000).add(7, 10000, 4000).set_free_buffers(); assert_select({7, 3}); } TEST_F(CompactBufferCandidatesTest, select_all) { reset_candidates(4); - add(1, 10000, 2000).add(3, 10000, 4000).add(8, 10000, 3000); + add(1, 10000, 2000).add(3, 10000, 4000).add(8, 10000, 3000).set_free_buffers(); assert_select({3, 8, 1}); } TEST_F(CompactBufferCandidatesTest, select_cutoff_by_ratio) { reset_candidates(4); - add(1, 100000, 9999).add(3, 100000, 40000).add(8, 100000, 30000); + add(1, 100000, 9999).add(3, 100000, 40000).add(8, 100000, 30000).set_free_buffers(); assert_select({3, 8}); } TEST_F(CompactBufferCandidatesTest, select_cutoff_by_slack) { reset_candidates(4); - add(1, 2000, 999).add(3, 2000, 1200).add(9, 2000, 1300); + add(1, 2000, 999).add(3, 2000, 1200).add(9, 2000, 1300).set_free_buffers(); assert_select({9, 3}); } +TEST_F(CompactBufferCandidatesTest, select_cutoff_by_max_buffers_ratio) +{ + reset_candidates(4, 0.5); + add(1, 10000, 2000).add(3, 10000, 4000).add(8, 10000, 3000).set_free_buffers(); + assert_select({3, 8}); +} + +TEST_F(CompactBufferCandidatesTest, select_cutoff_by_lack_of_free_buffers) +{ + reset_candidates(4); + add(1, 10000, 2000).add(3, 10000, 4000).add(8, 10000, 3000).set_free_buffers(9); + assert_select({3, 8}); +} + GTEST_MAIN_RUN_ALL_TESTS() |