diff options
Diffstat (limited to 'storage/src/tests/distributor/bucketdbmetricupdatertest.cpp')
-rw-r--r-- | storage/src/tests/distributor/bucketdbmetricupdatertest.cpp | 153 |
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 |