diff options
-rw-r--r-- | jstests/free_mon/free_mon_announce.js | 11 | ||||
-rw-r--r-- | jstests/free_mon/free_mon_register_cmd.js | 10 | ||||
-rw-r--r-- | jstests/free_mon/libs/free_mon.js | 7 | ||||
-rw-r--r-- | src/mongo/db/free_mon/free_mon_commands.cpp | 24 |
4 files changed, 25 insertions, 27 deletions
diff --git a/jstests/free_mon/free_mon_announce.js b/jstests/free_mon/free_mon_announce.js index d78d0b58608..3c35e91cf40 100644 --- a/jstests/free_mon/free_mon_announce.js +++ b/jstests/free_mon/free_mon_announce.js @@ -14,20 +14,11 @@ const mongod = MongoRunner.runMongod({ assert.neq(mongod, null, 'mongod not running'); const admin = mongod.getDB('admin'); -function getConnectAnnounce() { - // Capture message as it'd be presented to a user. - clearRawMongoProgramOutput(); - const exitCode = runMongoProgram( - 'mongo', '--port', mongod.port, '--eval', "shellHelper( 'show', 'freeMonitoring' );"); - assert.eq(exitCode, 0); - return rawMongoProgramOutput(); -} - // state === 'enabled'. admin.enableFreeMonitoring(); WaitForRegistration(mongod); const reminder = "To see your monitoring data"; -assert.neq(getConnectAnnounce().search(reminder), -1, 'userReminder not found'); +assert(FreeMonGetStatus(mongod).userReminder.includes(reminder), 'userReminder not found'); // Cleanup. MongoRunner.stopMongod(mongod); diff --git a/jstests/free_mon/free_mon_register_cmd.js b/jstests/free_mon/free_mon_register_cmd.js index 295908663a5..006d022e6b2 100644 --- a/jstests/free_mon/free_mon_register_cmd.js +++ b/jstests/free_mon/free_mon_register_cmd.js @@ -21,9 +21,7 @@ assert.neq(null, conn, 'mongod was unable to start up'); sleep(10 * 1000); // Then verify that no registrations happened since we haven't runtime enabled yed. -assert.eq('undecided', - conn.getDB('admin').getFreeMonitoringStatus().state, - "Initial state should be 'undecided'"); +assert.eq('undecided', FreeMonGetStatus(conn).state, "Initial state should be 'undecided'"); assert.eq(0, mock_web.queryStats().registers, "mongod registered without enabling free_mod"); assert.commandWorked(conn.adminCommand({setFreeMonitoring: 1, action: "enable"})); @@ -31,8 +29,7 @@ assert.commandWorked(conn.adminCommand({setFreeMonitoring: 1, action: "enable"}) WaitForFreeMonServerStatusState(conn, 'enabled'); // The command should either timeout or suceed after registration is complete -const retStatus1 = conn.adminCommand({getFreeMonitoringStatus: 1}); -assert.commandWorked(retStatus1); +const retStatus1 = FreeMonGetStatus(conn); assert.eq(retStatus1.state, "enabled", tojson(retStatus1)); const stats = mock_web.queryStats(); @@ -64,8 +61,7 @@ assert.soon(function() { return regDoc.state == "disabled"; }, "Failed to unregister", 60 * 1000); -const retStatus2 = conn.adminCommand({getFreeMonitoringStatus: 1}); -assert.commandWorked(retStatus2); +const retStatus2 = FreeMonGetStatus(conn); assert.eq(retStatus2.state, "disabled", tojson(retStatus1)); MongoRunner.stopMongod(conn); diff --git a/jstests/free_mon/libs/free_mon.js b/jstests/free_mon/libs/free_mon.js index 269f1e65306..351f1a33e48 100644 --- a/jstests/free_mon/libs/free_mon.js +++ b/jstests/free_mon/libs/free_mon.js @@ -288,7 +288,12 @@ function FreeMonGetStatus(conn) { 'use strict'; const admin = conn.getDB("admin"); - return assert.commandWorked(admin.runCommand({getFreeMonitoringStatus: 1})); + const reply = assert.commandWorked(admin.runCommand({getFreeMonitoringStatus: 1})); + // FreeMonitoring has been deprecated and reports 'disabled' regardless of status. + assert.eq(reply.state, 'disabled', 'FreeMonitoring has been deprecated'); + + // Use the "true" state tucked into the 'debug' field if its available. + return reply.debug || reply; } /** diff --git a/src/mongo/db/free_mon/free_mon_commands.cpp b/src/mongo/db/free_mon/free_mon_commands.cpp index 5d639d03558..f11891218f6 100644 --- a/src/mongo/db/free_mon/free_mon_commands.cpp +++ b/src/mongo/db/free_mon/free_mon_commands.cpp @@ -84,17 +84,23 @@ public: IDLParserContext ctx("getFreeMonitoringStatus"); GetFreeMonitoringStatus::parse(ctx, cmdObj); - if (globalFreeMonParams.freeMonitoringState == EnableCloudStateEnum::kOff) { - result.append("state", "disabled"); - return true; + // FreeMonitoring has been deprecated and will be decomissioned. + // Report that FreeMon is disabled even if it's running to draw attention + // to the deprecation notice returned from the service. + result.append("state"_sd, "disabled"_sd); + + if (globalFreeMonParams.freeMonitoringState != EnableCloudStateEnum::kOff) { + // To aid discovery during deprecation period, add true state as context. + auto* controller = FreeMonController::get(opCtx->getServiceContext()); + if (controller) { + result.append( + "message"_sd, + "Free monitoring is deprecated, refer to 'debug' field for actual status"_sd); + BSONObjBuilder debug(result.subobjStart("debug"_sd)); + controller->getStatus(opCtx, &debug); + } } - auto* controller = FreeMonController::get(opCtx->getServiceContext()); - if (!controller) { - result.append("state", "disabled"); - } else { - controller->getStatus(opCtx, &result); - } return true; } } getFreeMonitoringStatusCommand; |