summaryrefslogtreecommitdiffstats
path: root/searchcore/src/tests
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-02-23 11:19:30 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2021-02-23 11:19:30 +0000
commit31006e5945dd26d28d0157829862f61c405435ca (patch)
tree39dfe6a95b4489c1d61f0fad2023d2cb2ebf2de7 /searchcore/src/tests
parent9190653f24b07563ca70d1fb0263b8f3e9c8440f (diff)
Add metirc for buckets pending move.
Diffstat (limited to 'searchcore/src/tests')
-rw-r--r--searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.h1
-rw-r--r--searchcore/src/tests/proton/documentdb/documentbucketmover/documentbucketmover_v2_test.cpp17
2 files changed, 18 insertions, 0 deletions
diff --git a/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.h b/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.h
index e2cd5e268d7..b74a2410fa0 100644
--- a/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.h
+++ b/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.h
@@ -27,6 +27,7 @@ struct MyMoveOperationLimiter : public IMoveOperationLimiter {
++beginOpCount;
return {};
}
+ size_t numPending() const override { return beginOpCount; }
};
struct MyMoveHandler : public IDocumentMoveHandler {
diff --git a/searchcore/src/tests/proton/documentdb/documentbucketmover/documentbucketmover_v2_test.cpp b/searchcore/src/tests/proton/documentdb/documentbucketmover/documentbucketmover_v2_test.cpp
index 9db18091268..78232663eae 100644
--- a/searchcore/src/tests/proton/documentdb/documentbucketmover/documentbucketmover_v2_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/documentbucketmover/documentbucketmover_v2_test.cpp
@@ -6,6 +6,8 @@
#include <vespa/vespalib/gtest/gtest.h>
#include <vespa/log/log.h>
+#include <vespa/searchcore/proton/metrics/documentdb_tagged_metrics.h>
+
LOG_SETUP("document_bucket_mover_test");
using namespace proton;
@@ -35,6 +37,7 @@ struct ControllerFixtureBase : public ::testing::Test
ExecutorThreadService _master;
DummyBucketExecutor _bucketExecutor;
MyMoveHandler _moveHandler;
+ DocumentDBTaggedMetrics _metrics;
BucketMoveJobV2 _bmj;
MyCountJobRunner _runner;
ControllerFixtureBase(const BlockableMaintenanceJobConfig &blockableConfig, bool storeMoveDoneContexts);
@@ -73,6 +76,10 @@ struct ControllerFixtureBase : public ::testing::Test
const BucketId::List &calcAsked() const {
return _calc->asked();
}
+ size_t numPending() {
+ _bmj.updateMetrics(_metrics);
+ return _metrics.bucketMove.bucketsPending.getValue();
+ }
void runLoop() {
while (!_bmj.isBlocked() && !_bmj.run()) {
}
@@ -98,6 +105,7 @@ ControllerFixtureBase::ControllerFixtureBase(const BlockableMaintenanceJobConfig
_master(_singleExecutor),
_bucketExecutor(4),
_moveHandler(*_bucketDB, storeMoveDoneContexts),
+ _metrics("test", 1),
_bmj(_calc, _moveHandler, _modifiedHandler, _master, _bucketExecutor, _ready._subDb,
_notReady._subDb, _bucketCreateNotifier, _clusterStateHandler, _bucketHandler,
_diskMemUsageNotifier, blockableConfig,
@@ -156,11 +164,15 @@ TEST_F(ControllerFixture, require_that_not_ready_bucket_is_moved_to_ready_if_buc
addReady(_ready.bucket(1));
addReady(_ready.bucket(2));
addReady(_notReady.bucket(4));
+
+ EXPECT_EQ(0, numPending());
_bmj.recompute();
+ EXPECT_EQ(1, numPending());
EXPECT_FALSE(_bmj.done());
EXPECT_TRUE(_bmj.scanAndMove(4, 3));
EXPECT_TRUE(_bmj.done());
sync();
+ EXPECT_EQ(0, numPending());
EXPECT_EQ(3u, docsMoved().size());
assertEqual(_notReady.bucket(4), _notReady.docs(4)[0], 2, 1, docsMoved()[0]);
assertEqual(_notReady.bucket(4), _notReady.docs(4)[1], 2, 1, docsMoved()[1]);
@@ -194,27 +206,32 @@ TEST_F(ControllerFixture, require_that_we_move_buckets_in_several_steps)
addReady(_notReady.bucket(4));
_bmj.recompute();
+ EXPECT_EQ(3, numPending());
EXPECT_FALSE(_bmj.done());
EXPECT_FALSE(_bmj.scanAndMove(1, 2));
EXPECT_FALSE(_bmj.done());
sync();
+ EXPECT_EQ(2, numPending());
EXPECT_EQ(2u, docsMoved().size());
EXPECT_FALSE(_bmj.scanAndMove(1, 2));
EXPECT_FALSE(_bmj.done());
sync();
+ EXPECT_EQ(2, numPending());
EXPECT_EQ(4u, docsMoved().size());
EXPECT_FALSE(_bmj.scanAndMove(1, 2));
EXPECT_FALSE(_bmj.done());
sync();
+ EXPECT_EQ(1, numPending());
EXPECT_EQ(6u, docsMoved().size());
// move bucket 4, docs 3
EXPECT_TRUE(_bmj.scanAndMove(1,2));
EXPECT_TRUE(_bmj.done());
sync();
+ EXPECT_EQ(0, numPending());
EXPECT_EQ(7u, docsMoved().size());
EXPECT_EQ(3u, bucketsModified().size());
EXPECT_EQ(_ready.bucket(2), bucketsModified()[0]);