aboutsummaryrefslogtreecommitdiffstats
path: root/storage/src/tests/distributor/nodemaintenancestatstrackertest.cpp
diff options
context:
space:
mode:
authorGeir Storli <geirst@oath.com>2018-02-21 10:19:43 +0000
committerGeir Storli <geirst@oath.com>2018-02-21 16:01:15 +0000
commit63532725cd0d114fa6ec2719c9283e80ea65943d (patch)
tree3d85f267d792dbc1ef4f01ed5be01a18acb7353f /storage/src/tests/distributor/nodemaintenancestatstrackertest.cpp
parent59e254a7d8ea61ddfb2adde30b0aecef70913704 (diff)
Make NodeMaintenanceStatsTracker bucket space aware.
Diffstat (limited to 'storage/src/tests/distributor/nodemaintenancestatstrackertest.cpp')
-rw-r--r--storage/src/tests/distributor/nodemaintenancestatstrackertest.cpp90
1 files changed, 73 insertions, 17 deletions
diff --git a/storage/src/tests/distributor/nodemaintenancestatstrackertest.cpp b/storage/src/tests/distributor/nodemaintenancestatstrackertest.cpp
index 6da23103e0f..eee52f4d679 100644
--- a/storage/src/tests/distributor/nodemaintenancestatstrackertest.cpp
+++ b/storage/src/tests/distributor/nodemaintenancestatstrackertest.cpp
@@ -1,11 +1,14 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include <vespa/document/test/make_bucket_space.h>
+#include <vespa/storage/distributor/maintenance/node_maintenance_stats_tracker.h>
#include <vespa/vdstestlib/cppunit/macros.h>
+#include <vespa/document/bucket/fixed_bucket_spaces.h>
-#include <vespa/storage/distributor/maintenance/node_maintenance_stats_tracker.h>
+namespace storage::distributor {
-namespace storage {
-namespace distributor {
+using document::test::makeBucketSpace;
+using document::BucketSpace;
class NodeMaintenanceStatsTrackerTest : public CppUnit::TestFixture
{
@@ -14,12 +17,17 @@ class NodeMaintenanceStatsTrackerTest : public CppUnit::TestFixture
CPPUNIT_TEST(statsFieldsAffectEqualityComparison);
CPPUNIT_TEST(requestingNonExistingNodeGivesEmptyStats);
CPPUNIT_TEST(statsAreTrackedPerNode);
+ CPPUNIT_TEST(statsAreTrackedPerBucketSpace);
CPPUNIT_TEST_SUITE_END();
void emptyStatsInstancesAreEqual();
void statsFieldsAffectEqualityComparison();
void requestingNonExistingNodeGivesEmptyStats();
void statsAreTrackedPerNode();
+ void statsAreTrackedPerBucketSpace();
+ void assertBucketStats(BucketSpace bucketSpace, const NodeMaintenanceStatsTracker& tracker);
+ void assertBucketStats(uint64_t expMovingOut, uint64_t expSyncing, uint64_t expCopyingIn, uint64_t expCopyingOut,
+ BucketSpace bucketSpace, const NodeMaintenanceStatsTracker& tracker);
};
CPPUNIT_TEST_SUITE_REGISTRATION(NodeMaintenanceStatsTrackerTest);
@@ -64,7 +72,7 @@ NodeMaintenanceStatsTrackerTest::requestingNonExistingNodeGivesEmptyStats()
{
NodeMaintenanceStatsTracker tracker;
NodeMaintenanceStats wanted;
- CPPUNIT_ASSERT_EQUAL(wanted, tracker.forNode(0));
+ CPPUNIT_ASSERT_EQUAL(wanted, tracker.forNode(0, makeBucketSpace()));
}
void
@@ -72,30 +80,78 @@ NodeMaintenanceStatsTrackerTest::statsAreTrackedPerNode()
{
NodeMaintenanceStatsTracker tracker;
NodeMaintenanceStats wanted;
+ BucketSpace space(1);
- tracker.incMovingOut(0);
+ tracker.incMovingOut(0, space);
wanted.movingOut = 1;
- CPPUNIT_ASSERT_EQUAL(wanted, tracker.forNode(0));
+ CPPUNIT_ASSERT_EQUAL(wanted, tracker.forNode(0, space));
wanted.movingOut = 0;
- CPPUNIT_ASSERT_EQUAL(wanted, tracker.forNode(1));
+ CPPUNIT_ASSERT_EQUAL(wanted, tracker.forNode(1, space));
- tracker.incMovingOut(0);
+ tracker.incMovingOut(0, space);
wanted.movingOut = 2;
- CPPUNIT_ASSERT_EQUAL(wanted, tracker.forNode(0));
+ CPPUNIT_ASSERT_EQUAL(wanted, tracker.forNode(0, space));
- tracker.incMovingOut(1);
+ tracker.incMovingOut(1, space);
wanted.movingOut = 1;
- CPPUNIT_ASSERT_EQUAL(wanted, tracker.forNode(1));
+ CPPUNIT_ASSERT_EQUAL(wanted, tracker.forNode(1, space));
- tracker.incSyncing(1);
- tracker.incCopyingIn(1);
- tracker.incCopyingOut(1);
+ tracker.incSyncing(1, space);
+ tracker.incCopyingIn(1, space);
+ tracker.incCopyingOut(1, space);
wanted.syncing = 1;
wanted.copyingIn = 1;
wanted.copyingOut = 1;
- CPPUNIT_ASSERT_EQUAL(wanted, tracker.forNode(1));
+ CPPUNIT_ASSERT_EQUAL(wanted, tracker.forNode(1, space));
}
-} // distributor
-} // storage
+void
+NodeMaintenanceStatsTrackerTest::statsAreTrackedPerBucketSpace()
+{
+ NodeMaintenanceStatsTracker tracker;
+ BucketSpace fooSpace(3);
+ BucketSpace barSpace(5);
+
+ tracker.incMovingOut(0, fooSpace);
+ assertBucketStats(1, 0, 0, 0, fooSpace, tracker);
+ assertBucketStats(barSpace, tracker);
+
+ tracker.incMovingOut(0, barSpace);
+ assertBucketStats(1, 0, 0, 0, fooSpace, tracker);
+ assertBucketStats(1, 0, 0, 0, barSpace, tracker);
+
+ tracker.incSyncing(0, fooSpace);
+ assertBucketStats(1, 1, 0, 0, fooSpace, tracker);
+ assertBucketStats(1, 0, 0, 0, barSpace, tracker);
+
+ tracker.incCopyingIn(0, fooSpace);
+ assertBucketStats(1, 1, 1, 0, fooSpace, tracker);
+ assertBucketStats(1, 0, 0, 0, barSpace, tracker);
+
+ tracker.incCopyingOut(0, fooSpace);
+ assertBucketStats(1, 1, 1, 1, fooSpace, tracker);
+ assertBucketStats(1, 0, 0, 0, barSpace, tracker);
+}
+
+void
+NodeMaintenanceStatsTrackerTest::assertBucketStats(BucketSpace bucketSpace,
+ const NodeMaintenanceStatsTracker& tracker)
+{
+ NodeMaintenanceStats expStats;
+ CPPUNIT_ASSERT_EQUAL(expStats, tracker.forNode(0, bucketSpace));
+}
+
+void
+NodeMaintenanceStatsTrackerTest::assertBucketStats(uint64_t expMovingOut,
+ uint64_t expSyncing,
+ uint64_t expCopyingIn,
+ uint64_t expCopyingOut,
+ BucketSpace bucketSpace,
+ const NodeMaintenanceStatsTracker& tracker)
+{
+ NodeMaintenanceStats expStats(expMovingOut, expSyncing, expCopyingIn, expCopyingOut);
+ CPPUNIT_ASSERT_EQUAL(expStats, tracker.forNode(0, bucketSpace));
+}
+
+}