aboutsummaryrefslogtreecommitdiffstats
path: root/storage/src/tests/distributor/bucketdbmetricupdatertest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'storage/src/tests/distributor/bucketdbmetricupdatertest.cpp')
-rw-r--r--storage/src/tests/distributor/bucketdbmetricupdatertest.cpp153
1 files changed, 55 insertions, 98 deletions
diff --git a/storage/src/tests/distributor/bucketdbmetricupdatertest.cpp b/storage/src/tests/distributor/bucketdbmetricupdatertest.cpp
index 152a213a4f4..1008d3ee4f2 100644
--- a/storage/src/tests/distributor/bucketdbmetricupdatertest.cpp
+++ b/storage/src/tests/distributor/bucketdbmetricupdatertest.cpp
@@ -1,57 +1,32 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/vdstestlib/cppunit/macros.h>
-#include <string>
-#include <sstream>
#include <vespa/storage/bucketdb/bucketdatabase.h>
#include <vespa/storage/distributor/bucketdb/bucketdbmetricupdater.h>
#include <vespa/storage/distributor/distributormetricsset.h>
#include <vespa/storage/distributor/idealstatemetricsset.h>
#include <vespa/storage/config/config-stor-distributormanager.h>
+#include <vespa/vespalib/gtest/gtest.h>
+#include <string>
+#include <sstream>
-namespace storage {
-namespace distributor {
+namespace storage::distributor {
using document::BucketId;
+using namespace ::testing;
-class BucketDBMetricUpdaterTest : public CppUnit::TestFixture {
- CPPUNIT_TEST_SUITE(BucketDBMetricUpdaterTest);
- CPPUNIT_TEST(testDocAndByteCountsAreUpdated);
- CPPUNIT_TEST(testBucketsWithTooFewAndTooManyCopies);
- CPPUNIT_TEST(testBucketsWithVaryingTrustedness);
- CPPUNIT_TEST(testPickCountsFromTrustedCopy);
- CPPUNIT_TEST(testPickLargestCopyIfNoTrusted);
- CPPUNIT_TEST(testCompleteRoundClearsWorkingState);
- CPPUNIT_TEST(testMinBucketReplicaTrackedAndReportedPerNode);
- CPPUNIT_TEST(nonTrustedReplicasAlsoCountedInModeAny);
- CPPUNIT_TEST(minimumReplicaCountReturnedForNodeInModeAny);
- CPPUNIT_TEST_SUITE_END();
-
+struct BucketDBMetricUpdaterTest : Test {
void visitBucketWith2Copies1Trusted(BucketDBMetricUpdater& metricUpdater);
void visitBucketWith2CopiesBothTrusted(
BucketDBMetricUpdater& metricUpdater);
void visitBucketWith1Copy(BucketDBMetricUpdater& metricUpdater);
-
using NodeToReplicasMap = std::unordered_map<uint16_t, uint32_t>;
NodeToReplicasMap replicaStatsOf(BucketDBMetricUpdater& metricUpdater);
metrics::LoadTypeSet _loadTypes;
-public:
- BucketDBMetricUpdaterTest();
- void testDocAndByteCountsAreUpdated();
- void testBucketsWithTooFewAndTooManyCopies();
- void testBucketsWithVaryingTrustedness();
- void testPickCountsFromTrustedCopy();
- void testPickLargestCopyIfNoTrusted();
- void testCompleteRoundClearsWorkingState();
- void testMinBucketReplicaTrackedAndReportedPerNode();
- void nonTrustedReplicasAlsoCountedInModeAny();
- void minimumReplicaCountReturnedForNodeInModeAny();
+ BucketDBMetricUpdaterTest();
};
-CPPUNIT_TEST_SUITE_REGISTRATION(BucketDBMetricUpdaterTest);
-
BucketDBMetricUpdaterTest::BucketDBMetricUpdaterTest()
{
_loadTypes.push_back(metrics::LoadType(0, "foo"));
@@ -65,7 +40,7 @@ void addNode(BucketInfo& info, uint16_t node, uint32_t crc) {
info.addNode(BucketCopy(1234, node, apiInfo), order);
}
-typedef bool Trusted;
+using Trusted = bool;
BucketInfo
makeInfo(uint32_t copy0Crc)
@@ -86,22 +61,20 @@ makeInfo(uint32_t copy0Crc, uint32_t copy1Crc)
} // anonymous namespace
-void
-BucketDBMetricUpdaterTest::testDocAndByteCountsAreUpdated()
-{
+TEST_F(BucketDBMetricUpdaterTest, doc_and_byte_counts_are_updated) {
BucketDBMetricUpdater metricUpdater;
IdealStateMetricSet ims;
DistributorMetricSet dms(_loadTypes);
- CPPUNIT_ASSERT_EQUAL(false, metricUpdater.hasCompletedRound());
+ EXPECT_FALSE(metricUpdater.hasCompletedRound());
metricUpdater.getLastCompleteStats().propagateMetrics(ims, dms);
metricUpdater.completeRound(false);
- CPPUNIT_ASSERT_EQUAL(true, metricUpdater.hasCompletedRound());
+ EXPECT_TRUE(metricUpdater.hasCompletedRound());
- CPPUNIT_ASSERT_EQUAL(int64_t(0), dms.docsStored.getLast());
- CPPUNIT_ASSERT_EQUAL(int64_t(0), dms.bytesStored.getLast());
+ EXPECT_EQ(0, dms.docsStored.getLast());
+ EXPECT_EQ(0, dms.bytesStored.getLast());
{
BucketDatabase::Entry e(document::BucketId(16, 1), makeInfo(10));
metricUpdater.visit(e, 1);
@@ -110,10 +83,10 @@ BucketDBMetricUpdaterTest::testDocAndByteCountsAreUpdated()
metricUpdater.completeRound(false);
metricUpdater.getLastCompleteStats().propagateMetrics(ims, dms);
- CPPUNIT_ASSERT_EQUAL(true, metricUpdater.hasCompletedRound());
+ EXPECT_TRUE(metricUpdater.hasCompletedRound());
- CPPUNIT_ASSERT_EQUAL(int64_t(11), dms.docsStored.getLast());
- CPPUNIT_ASSERT_EQUAL(int64_t(12), dms.bytesStored.getLast());
+ EXPECT_EQ(11, dms.docsStored.getLast());
+ EXPECT_EQ(12, dms.bytesStored.getLast());
{
BucketDatabase::Entry e(document::BucketId(16, 1), makeInfo(20));
@@ -123,22 +96,20 @@ BucketDBMetricUpdaterTest::testDocAndByteCountsAreUpdated()
metricUpdater.completeRound(false);
metricUpdater.getLastCompleteStats().propagateMetrics(ims, dms);
- CPPUNIT_ASSERT_EQUAL(int64_t(32), dms.docsStored.getLast());
- CPPUNIT_ASSERT_EQUAL(int64_t(34), dms.bytesStored.getLast());
+ EXPECT_EQ(32, dms.docsStored.getLast());
+ EXPECT_EQ(34, dms.bytesStored.getLast());
}
-void
-BucketDBMetricUpdaterTest::testBucketsWithTooFewAndTooManyCopies()
-{
+TEST_F(BucketDBMetricUpdaterTest, buckets_with_too_few_and_too_many_copies) {
BucketDBMetricUpdater metricUpdater;
IdealStateMetricSet ims;
DistributorMetricSet dms(_loadTypes);
metricUpdater.completeRound();
metricUpdater.getLastCompleteStats().propagateMetrics(ims, dms);
- CPPUNIT_ASSERT_EQUAL(int64_t(0), ims.buckets_toofewcopies.getLast());
- CPPUNIT_ASSERT_EQUAL(int64_t(0), ims.buckets_toomanycopies.getLast());
- CPPUNIT_ASSERT_EQUAL(int64_t(0), ims.buckets.getLast());
+ EXPECT_EQ(0, ims.buckets_toofewcopies.getLast());
+ EXPECT_EQ(0, ims.buckets_toomanycopies.getLast());
+ EXPECT_EQ(0, ims.buckets.getLast());
// 1 copy too little
{
@@ -148,9 +119,9 @@ BucketDBMetricUpdaterTest::testBucketsWithTooFewAndTooManyCopies()
metricUpdater.completeRound(false);
metricUpdater.getLastCompleteStats().propagateMetrics(ims, dms);
- CPPUNIT_ASSERT_EQUAL(int64_t(1), ims.buckets_toofewcopies.getLast());
- CPPUNIT_ASSERT_EQUAL(int64_t(0), ims.buckets_toomanycopies.getLast());
- CPPUNIT_ASSERT_EQUAL(int64_t(1), ims.buckets.getLast());
+ EXPECT_EQ(1, ims.buckets_toofewcopies.getLast());
+ EXPECT_EQ(0, ims.buckets_toomanycopies.getLast());
+ EXPECT_EQ(1, ims.buckets.getLast());
// 1 copy too many
{
@@ -160,9 +131,9 @@ BucketDBMetricUpdaterTest::testBucketsWithTooFewAndTooManyCopies()
metricUpdater.completeRound(false);
metricUpdater.getLastCompleteStats().propagateMetrics(ims, dms);
- CPPUNIT_ASSERT_EQUAL(int64_t(1), ims.buckets_toofewcopies.getLast());
- CPPUNIT_ASSERT_EQUAL(int64_t(1), ims.buckets_toomanycopies.getLast());
- CPPUNIT_ASSERT_EQUAL(int64_t(2), ims.buckets.getLast());
+ EXPECT_EQ(1, ims.buckets_toofewcopies.getLast());
+ EXPECT_EQ(1, ims.buckets_toomanycopies.getLast());
+ EXPECT_EQ(2, ims.buckets.getLast());
// Right amount of copies, just inc bucket counter.
{
@@ -172,21 +143,19 @@ BucketDBMetricUpdaterTest::testBucketsWithTooFewAndTooManyCopies()
metricUpdater.completeRound(false);
metricUpdater.getLastCompleteStats().propagateMetrics(ims, dms);
- CPPUNIT_ASSERT_EQUAL(int64_t(1), ims.buckets_toofewcopies.getLast());
- CPPUNIT_ASSERT_EQUAL(int64_t(1), ims.buckets_toomanycopies.getLast());
- CPPUNIT_ASSERT_EQUAL(int64_t(3), ims.buckets.getLast());
+ EXPECT_EQ(1, ims.buckets_toofewcopies.getLast());
+ EXPECT_EQ(1, ims.buckets_toomanycopies.getLast());
+ EXPECT_EQ(3, ims.buckets.getLast());
}
-void
-BucketDBMetricUpdaterTest::testBucketsWithVaryingTrustedness()
-{
+TEST_F(BucketDBMetricUpdaterTest, buckets_with_varying_trustedness) {
BucketDBMetricUpdater metricUpdater;
IdealStateMetricSet ims;
DistributorMetricSet dms(_loadTypes);
metricUpdater.completeRound(false);
metricUpdater.getLastCompleteStats().propagateMetrics(ims, dms);
- CPPUNIT_ASSERT_EQUAL(int64_t(0), ims.buckets_notrusted.getLast());
+ EXPECT_EQ(0, ims.buckets_notrusted.getLast());
// Has only trusted (implicit for first added)
{
BucketDatabase::Entry e(document::BucketId(16, 1), makeInfo(100));
@@ -194,7 +163,7 @@ BucketDBMetricUpdaterTest::testBucketsWithVaryingTrustedness()
}
metricUpdater.completeRound(false);
metricUpdater.getLastCompleteStats().propagateMetrics(ims, dms);
- CPPUNIT_ASSERT_EQUAL(int64_t(0), ims.buckets_notrusted.getLast());
+ EXPECT_EQ(0, ims.buckets_notrusted.getLast());
// Has at least one trusted (implicit for first added)
{
BucketDatabase::Entry e(document::BucketId(16, 2), makeInfo(100, 200));
@@ -202,7 +171,7 @@ BucketDBMetricUpdaterTest::testBucketsWithVaryingTrustedness()
}
metricUpdater.completeRound(false);
metricUpdater.getLastCompleteStats().propagateMetrics(ims, dms);
- CPPUNIT_ASSERT_EQUAL(int64_t(0), ims.buckets_notrusted.getLast());
+ EXPECT_EQ(0, ims.buckets_notrusted.getLast());
// Has no trusted
{
BucketInfo info(makeInfo(100, 200));
@@ -212,12 +181,10 @@ BucketDBMetricUpdaterTest::testBucketsWithVaryingTrustedness()
}
metricUpdater.completeRound(false);
metricUpdater.getLastCompleteStats().propagateMetrics(ims, dms);
- CPPUNIT_ASSERT_EQUAL(int64_t(1), ims.buckets_notrusted.getLast());
+ EXPECT_EQ(1, ims.buckets_notrusted.getLast());
}
-void
-BucketDBMetricUpdaterTest::testPickCountsFromTrustedCopy()
-{
+TEST_F(BucketDBMetricUpdaterTest, pick_counts_from_trusted_copy) {
BucketDBMetricUpdater metricUpdater;
IdealStateMetricSet ims;
DistributorMetricSet dms(_loadTypes);
@@ -228,13 +195,11 @@ BucketDBMetricUpdaterTest::testPickCountsFromTrustedCopy()
metricUpdater.completeRound(false);
metricUpdater.getLastCompleteStats().propagateMetrics(ims, dms);
- CPPUNIT_ASSERT_EQUAL(int64_t(101), dms.docsStored.getLast());
- CPPUNIT_ASSERT_EQUAL(int64_t(102), dms.bytesStored.getLast());
+ EXPECT_EQ(101, dms.docsStored.getLast());
+ EXPECT_EQ(102, dms.bytesStored.getLast());
}
-void
-BucketDBMetricUpdaterTest::testPickLargestCopyIfNoTrusted()
-{
+TEST_F(BucketDBMetricUpdaterTest, pick_largest_copy_if_no_trusted) {
BucketDBMetricUpdater metricUpdater;
IdealStateMetricSet ims;
DistributorMetricSet dms(_loadTypes);
@@ -247,13 +212,11 @@ BucketDBMetricUpdaterTest::testPickLargestCopyIfNoTrusted()
metricUpdater.completeRound(false);
metricUpdater.getLastCompleteStats().propagateMetrics(ims, dms);
- CPPUNIT_ASSERT_EQUAL(int64_t(201), dms.docsStored.getLast());
- CPPUNIT_ASSERT_EQUAL(int64_t(202), dms.bytesStored.getLast());
+ EXPECT_EQ(201, dms.docsStored.getLast());
+ EXPECT_EQ(202, dms.bytesStored.getLast());
}
-void
-BucketDBMetricUpdaterTest::testCompleteRoundClearsWorkingState()
-{
+TEST_F(BucketDBMetricUpdaterTest, complete_round_clears_working_state) {
BucketDBMetricUpdater metricUpdater;
IdealStateMetricSet ims;
DistributorMetricSet dms(_loadTypes);
@@ -265,13 +228,13 @@ BucketDBMetricUpdaterTest::testCompleteRoundClearsWorkingState()
metricUpdater.completeRound();
metricUpdater.getLastCompleteStats().propagateMetrics(ims, dms);
- CPPUNIT_ASSERT_EQUAL(int64_t(11), dms.docsStored.getLast());
+ EXPECT_EQ(11, dms.docsStored.getLast());
// Completing the round again with no visits having been done will
// propagate an empty working state to the complete state.
metricUpdater.completeRound();
metricUpdater.getLastCompleteStats().propagateMetrics(ims, dms);
- CPPUNIT_ASSERT_EQUAL(int64_t(0), dms.docsStored.getLast());
+ EXPECT_EQ(0, dms.docsStored.getLast());
}
// Replicas on nodes 0 and 1.
@@ -316,8 +279,7 @@ BucketDBMetricUpdaterTest::replicaStatsOf(BucketDBMetricUpdater& metricUpdater)
return metricUpdater.getLastCompleteStats()._minBucketReplica;
}
-void BucketDBMetricUpdaterTest::testMinBucketReplicaTrackedAndReportedPerNode()
-{
+TEST_F(BucketDBMetricUpdaterTest, min_bucket_replica_tracked_and_reported_per_node) {
BucketDBMetricUpdater metricUpdater;
// Node 0 and 1 should have min replica 1, while node 2 should have min
@@ -325,26 +287,22 @@ void BucketDBMetricUpdaterTest::testMinBucketReplicaTrackedAndReportedPerNode()
visitBucketWith2Copies1Trusted(metricUpdater);
visitBucketWith2CopiesBothTrusted(metricUpdater);
- CPPUNIT_ASSERT_EQUAL(NodeToReplicasMap({{0, 1}, {1, 1}, {2, 2}}),
- replicaStatsOf(metricUpdater));
+ EXPECT_EQ(NodeToReplicasMap({{0, 1}, {1, 1}, {2, 2}}),
+ replicaStatsOf(metricUpdater));
}
-void
-BucketDBMetricUpdaterTest::nonTrustedReplicasAlsoCountedInModeAny()
-{
+TEST_F(BucketDBMetricUpdaterTest, non_trusted_replicas_also_counted_in_mode_any) {
BucketDBMetricUpdater metricUpdater;
using CountingMode = BucketDBMetricUpdater::ReplicaCountingMode;
metricUpdater.setMinimumReplicaCountingMode(CountingMode::ANY);
visitBucketWith2Copies1Trusted(metricUpdater);
visitBucketWith2CopiesBothTrusted(metricUpdater);
- CPPUNIT_ASSERT_EQUAL(NodeToReplicasMap({{0, 2}, {1, 2}, {2, 2}}),
- replicaStatsOf(metricUpdater));
+ EXPECT_EQ(NodeToReplicasMap({{0, 2}, {1, 2}, {2, 2}}),
+ replicaStatsOf(metricUpdater));
}
-void
-BucketDBMetricUpdaterTest::minimumReplicaCountReturnedForNodeInModeAny()
-{
+TEST_F(BucketDBMetricUpdaterTest, minimum_replica_count_returned_for_node_in_mode_any) {
BucketDBMetricUpdater metricUpdater;
using CountingMode = BucketDBMetricUpdater::ReplicaCountingMode;
metricUpdater.setMinimumReplicaCountingMode(CountingMode::ANY);
@@ -352,9 +310,8 @@ BucketDBMetricUpdaterTest::minimumReplicaCountReturnedForNodeInModeAny()
visitBucketWith1Copy(metricUpdater);
// Node 2 has a bucket with only 1 replica.
- CPPUNIT_ASSERT_EQUAL(NodeToReplicasMap({{0, 2}, {2, 1}}),
- replicaStatsOf(metricUpdater));
+ EXPECT_EQ(NodeToReplicasMap({{0, 2}, {2, 1}}),
+ replicaStatsOf(metricUpdater));
}
-} // distributor
-} // storage
+} // storage::distributor