summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/primary_only_service_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/repl/primary_only_service_test.cpp')
-rw-r--r--src/mongo/db/repl/primary_only_service_test.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/mongo/db/repl/primary_only_service_test.cpp b/src/mongo/db/repl/primary_only_service_test.cpp
index d89005e8b1d..d7c76b6b7cb 100644
--- a/src/mongo/db/repl/primary_only_service_test.cpp
+++ b/src/mongo/db/repl/primary_only_service_test.cpp
@@ -367,6 +367,40 @@ TEST_F(PrimaryOnlyServiceTest, DoubleCreateInstance) {
TestServiceHangDuringInitialization.setMode(FailPoint::off);
}
+TEST_F(PrimaryOnlyServiceTest, ReportServiceInfo) {
+ {
+ BSONObjBuilder resultBuilder;
+ _registry->reportServiceInfo(&resultBuilder);
+
+ ASSERT_BSONOBJ_EQ(BSON("primaryOnlyServices" << BSON("TestService" << 0)),
+ resultBuilder.obj());
+ }
+
+ // Make sure the instance doesn't complete.
+ TestServiceHangDuringInitialization.setMode(FailPoint::alwaysOn);
+ auto instance = TestService::Instance::getOrCreate(_service, BSON("_id" << 0 << "state" << 0));
+
+ {
+ BSONObjBuilder resultBuilder;
+ _registry->reportServiceInfo(&resultBuilder);
+
+ ASSERT_BSONOBJ_EQ(BSON("primaryOnlyServices" << BSON("TestService" << 1)),
+ resultBuilder.obj());
+ }
+
+ auto instance2 = TestService::Instance::getOrCreate(_service, BSON("_id" << 1 << "state" << 0));
+
+ {
+ BSONObjBuilder resultBuilder;
+ _registry->reportServiceInfo(&resultBuilder);
+
+ ASSERT_BSONOBJ_EQ(BSON("primaryOnlyServices" << BSON("TestService" << 2)),
+ resultBuilder.obj());
+ }
+
+ TestServiceHangDuringInitialization.setMode(FailPoint::off);
+}
+
TEST_F(PrimaryOnlyServiceTest, CreateWhenNotPrimary) {
_registry->onStepDown();