diff options
author | Geir Storli <geirst@verizonmedia.com> | 2020-04-29 07:48:45 +0000 |
---|---|---|
committer | Geir Storli <geirst@verizonmedia.com> | 2020-04-29 07:51:06 +0000 |
commit | 6d108bacdf3c92ebbf8a84b70ff619201ff1ba53 (patch) | |
tree | e42e7a02073facf13936ecf8e860ded3623101e3 /searchcore/src/tests/proton/documentmetastore | |
parent | e1d922c6979fa06695bfdcec6cafb8988d67ff77 (diff) |
Improve tracking of remove batch rate used to consider to block lid space compaction.
This is also a preparation for tracking the rate of regular remove operations,
and use this to consider to block lid space compaction.
Diffstat (limited to 'searchcore/src/tests/proton/documentmetastore')
-rw-r--r-- | searchcore/src/tests/proton/documentmetastore/documentmetastore_test.cpp | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/searchcore/src/tests/proton/documentmetastore/documentmetastore_test.cpp b/searchcore/src/tests/proton/documentmetastore/documentmetastore_test.cpp index f8069dcf494..8935143a7be 100644 --- a/searchcore/src/tests/proton/documentmetastore/documentmetastore_test.cpp +++ b/searchcore/src/tests/proton/documentmetastore/documentmetastore_test.cpp @@ -6,6 +6,7 @@ #include <vespa/searchcore/proton/bucketdb/i_bucket_create_listener.h> #include <vespa/searchcore/proton/common/hw_info.h> #include <vespa/searchcore/proton/documentmetastore/documentmetastore.h> +#include <vespa/searchcore/proton/documentmetastore/operation_listener.h> #include <vespa/searchcore/proton/flushengine/shrink_lid_space_flush_target.h> #include <vespa/searchcore/proton/server/itlssyncer.h> #include <vespa/searchlib/attribute/attributefilesavetarget.h> @@ -1782,7 +1783,7 @@ TEST(DocumentMetaStoreTest, get_lid_usage_stats_works) void assertLidBloat(uint32_t expBloat, uint32_t lidLimit, uint32_t usedLids) { - LidUsageStats stats(lidLimit, usedLids, 0, 0, LidUsageStats::TimePoint()); + LidUsageStats stats(lidLimit, usedLids, 0, 0); EXPECT_EQ(expBloat, stats.getLidBloat()); } @@ -2084,21 +2085,27 @@ TEST(DocumentMetaStoreTest, multiple_lids_can_be_removed_with_removeBatch) assertLidGidFound(4, dms); } -TEST(DocumentMetaStoreTest, tracks_time_of_last_call_to_remove_batch) +class MockOperationListener : public documentmetastore::OperationListener { +public: + size_t remove_batch_cnt; + + MockOperationListener() + : remove_batch_cnt(0) + { + } + void notify_remove_batch() override { ++remove_batch_cnt; } +}; + +TEST(DocumentMetaStoreTest, call_to_remove_batch_is_notified) { DocumentMetaStore dms(createBucketDB()); + auto listener = std::make_shared<MockOperationListener>(); + dms.set_operation_listener(listener); dms.constructFreeList(); addLid(dms, 1); - LidUsageStats::TimePoint before = std::chrono::steady_clock::now(); - std::this_thread::sleep_for(std::chrono::milliseconds(1)); dms.removeBatch({1}, 5); - std::this_thread::sleep_for(std::chrono::milliseconds(1)); - LidUsageStats::TimePoint after = std::chrono::steady_clock::now(); - - auto stats = dms.getLidUsageStats(); - EXPECT_LT(before, stats.get_last_remove_batch()); - EXPECT_GT(after, stats.get_last_remove_batch()); + EXPECT_EQ(1, listener->remove_batch_cnt); } } |