diff options
Diffstat (limited to 'src/mongo/db/free_mon')
-rw-r--r-- | src/mongo/db/free_mon/free_mon_controller.cpp | 5 | ||||
-rw-r--r-- | src/mongo/db/free_mon/free_mon_controller.h | 2 | ||||
-rw-r--r-- | src/mongo/db/free_mon/free_mon_controller_test.cpp | 41 | ||||
-rw-r--r-- | src/mongo/db/free_mon/free_mon_mongod.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/free_mon/free_mon_options.cpp | 16 | ||||
-rw-r--r-- | src/mongo/db/free_mon/free_mon_options.h | 3 | ||||
-rw-r--r-- | src/mongo/db/free_mon/free_mon_processor.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/free_mon/free_mon_protocol.idl | 4 |
8 files changed, 42 insertions, 33 deletions
diff --git a/src/mongo/db/free_mon/free_mon_controller.cpp b/src/mongo/db/free_mon/free_mon_controller.cpp index 3c50d193d07..30e31e5cf99 100644 --- a/src/mongo/db/free_mon/free_mon_controller.cpp +++ b/src/mongo/db/free_mon/free_mon_controller.cpp @@ -98,7 +98,7 @@ void FreeMonController::_enqueue(std::shared_ptr<FreeMonMessage> msg) { _processor->enqueue(std::move(msg)); } -void FreeMonController::start(RegistrationType registrationType) { +void FreeMonController::start(RegistrationType registrationType, std::vector<std::string>& tags) { { stdx::lock_guard<stdx::mutex> lock(_mutex); @@ -119,8 +119,7 @@ void FreeMonController::start(RegistrationType registrationType) { } if (registrationType != RegistrationType::DoNotRegister) { - std::vector<std::string> vec; - registerServerStartup(registrationType, vec); + registerServerStartup(registrationType, tags); } } diff --git a/src/mongo/db/free_mon/free_mon_controller.h b/src/mongo/db/free_mon/free_mon_controller.h index 0e3aece0694..b2eac2cdda8 100644 --- a/src/mongo/db/free_mon/free_mon_controller.h +++ b/src/mongo/db/free_mon/free_mon_controller.h @@ -58,7 +58,7 @@ public: * Initializes free monitoring. * Start free monitoring thread in the background. */ - void start(RegistrationType registrationType); + void start(RegistrationType registrationType, std::vector<std::string>& tags); /** * Stops free monitoring thread. diff --git a/src/mongo/db/free_mon/free_mon_controller_test.cpp b/src/mongo/db/free_mon/free_mon_controller_test.cpp index 28ac5506f92..9fd66fbf517 100644 --- a/src/mongo/db/free_mon/free_mon_controller_test.cpp +++ b/src/mongo/db/free_mon/free_mon_controller_test.cpp @@ -831,6 +831,12 @@ struct ControllerHolder { controller->stop(); } + void start(RegistrationType registrationType) { + std::vector<std::string> tags; + controller->start(registrationType, tags); + } + + FreeMonController* operator->() { return controller.get(); } @@ -842,11 +848,12 @@ struct ControllerHolder { std::unique_ptr<FreeMonController> controller; }; + // Positive: Test Register works TEST_F(FreeMonControllerTest, TestRegister) { ControllerHolder controller(_mockThreadPool.get(), FreeMonNetworkInterfaceMock::Options()); - controller->start(RegistrationType::DoNotRegister); + controller.start(RegistrationType::DoNotRegister); ASSERT_OK(controller->registerServerCommand(Milliseconds::min())); @@ -866,7 +873,7 @@ TEST_F(FreeMonControllerTest, TestRegisterTimeout) { ControllerHolder controller(_mockThreadPool.get(), opts); - controller->start(RegistrationType::DoNotRegister); + controller.start(RegistrationType::DoNotRegister); ASSERT_OK(controller->registerServerCommand(Milliseconds::min())); controller->turnCrankForTest(Turner().registerCommand(2)); @@ -883,7 +890,7 @@ TEST_F(FreeMonControllerTest, TestRegisterFail) { opts.invalidRegister = true; ControllerHolder controller(_mockThreadPool.get(), opts, false); - controller->start(RegistrationType::DoNotRegister); + controller.start(RegistrationType::DoNotRegister); ASSERT_NOT_OK(controller->registerServerCommand(duration_cast<Milliseconds>(Seconds(15)))); @@ -900,7 +907,7 @@ TEST_F(FreeMonControllerTest, TestRegisterHalts) { opts.haltRegister = true; ControllerHolder controller(_mockThreadPool.get(), opts); - controller->start(RegistrationType::DoNotRegister); + controller.start(RegistrationType::DoNotRegister); ASSERT_OK(controller->registerServerCommand(Milliseconds::min())); controller->turnCrankForTest(Turner().registerCommand()); @@ -915,7 +922,7 @@ TEST_F(FreeMonControllerTest, TestRegisterHalts) { TEST_F(FreeMonControllerTest, TestMetrics) { ControllerHolder controller(_mockThreadPool.get(), FreeMonNetworkInterfaceMock::Options()); - controller->start(RegistrationType::RegisterOnStart); + controller.start(RegistrationType::RegisterOnStart); controller->turnCrankForTest( Turner().registerServer().registerCommand().collect(2).metricsSend()); @@ -934,7 +941,7 @@ TEST_F(FreeMonControllerTest, TestMetrics) { TEST_F(FreeMonControllerTest, TestMetricsWithEmptyStorage) { ControllerHolder controller(_mockThreadPool.get(), FreeMonNetworkInterfaceMock::Options()); - controller->start(RegistrationType::RegisterAfterOnTransitionToPrimary); + controller.start(RegistrationType::RegisterAfterOnTransitionToPrimary); controller->turnCrankForTest(Turner().registerServer().collect(4)); ASSERT_GTE(controller.network->getRegistersCalls(), 0); @@ -962,7 +969,7 @@ TEST_F(FreeMonControllerTest, TestMetricsWithEnabledStorage) { FreeMonStorage::replace(_opCtx.get(), initStorage(StorageStateEnum::enabled)); - controller->start(RegistrationType::RegisterAfterOnTransitionToPrimary); + controller.start(RegistrationType::RegisterAfterOnTransitionToPrimary); controller->turnCrankForTest( Turner().registerServer().registerCommand().collect(2).metricsSend()); @@ -981,7 +988,7 @@ TEST_F(FreeMonControllerTest, TestMetricsWithDisabledStorage) { FreeMonStorage::replace(_opCtx.get(), initStorage(StorageStateEnum::disabled)); - controller->start(RegistrationType::RegisterAfterOnTransitionToPrimary); + controller.start(RegistrationType::RegisterAfterOnTransitionToPrimary); controller->turnCrankForTest(Turner().registerServer().collect(4)); ASSERT_GTE(controller.network->getRegistersCalls(), 0); @@ -999,7 +1006,7 @@ TEST_F(FreeMonControllerTest, TestMetricsWithDisabledStorageThenRegister) { FreeMonStorage::replace(_opCtx.get(), initStorage(StorageStateEnum::disabled)); - controller->start(RegistrationType::RegisterAfterOnTransitionToPrimary); + controller.start(RegistrationType::RegisterAfterOnTransitionToPrimary); controller->turnCrankForTest(Turner().registerServer().collect(4)); ASSERT_OK(controller->registerServerCommand(Milliseconds::min())); @@ -1020,7 +1027,7 @@ TEST_F(FreeMonControllerTest, TestMetricsWithDisabledStorageThenRegisterAndRereg FreeMonStorage::replace(_opCtx.get(), initStorage(StorageStateEnum::disabled)); - controller->start(RegistrationType::RegisterAfterOnTransitionToPrimary); + controller.start(RegistrationType::RegisterAfterOnTransitionToPrimary); controller->turnCrankForTest(Turner().registerServer().collect(4)); ASSERT_OK(controller->registerServerCommand(Milliseconds::min())); @@ -1054,7 +1061,7 @@ TEST_F(FreeMonControllerTest, TestMetricsUnregisterCancelsRegister) { opts.failRegisterHttp = true; ControllerHolder controller(_mockThreadPool.get(), opts); - controller->start(RegistrationType::DoNotRegister); + controller.start(RegistrationType::DoNotRegister); ASSERT_OK(controller->registerServerCommand(Milliseconds::min())); controller->turnCrankForTest(Turner().registerCommand(2)); @@ -1080,7 +1087,7 @@ TEST_F(FreeMonControllerTest, TestMetricsHalt) { opts.haltMetrics = true; ControllerHolder controller(_mockThreadPool.get(), opts); - controller->start(RegistrationType::RegisterOnStart); + controller.start(RegistrationType::RegisterOnStart); controller->turnCrankForTest( Turner().registerServer().registerCommand().collect(4).metricsSend()); @@ -1102,7 +1109,7 @@ TEST_F(FreeMonControllerTest, TestMetricsPermanentlyDelete) { opts.permanentlyDeleteAfter3 = true; ControllerHolder controller(_mockThreadPool.get(), opts); - controller->start(RegistrationType::RegisterOnStart); + controller.start(RegistrationType::RegisterOnStart); controller->turnCrankForTest( Turner().registerServer().registerCommand().collect(5).metricsSend(4)); @@ -1122,7 +1129,7 @@ TEST_F(FreeMonControllerTest, TestRegistrationIdRotatesAfterRegistration) { FreeMonStorage::replace(_opCtx.get(), initStorage(StorageStateEnum::enabled)); - controller->start(RegistrationType::RegisterAfterOnTransitionToPrimary); + controller.start(RegistrationType::RegisterAfterOnTransitionToPrimary); controller->turnCrankForTest(Turner().registerServer().registerCommand().collect(2)); // Ensure registration rotated the id @@ -1145,7 +1152,7 @@ TEST_F(FreeMonControllerTest, TestRegistrationIdRotatesAfterRegistration) { TEST_F(FreeMonControllerTest, TestPreRegistrationMetricBatching) { ControllerHolder controller(_mockThreadPool.get(), FreeMonNetworkInterfaceMock::Options()); - controller->start(RegistrationType::RegisterAfterOnTransitionToPrimary); + controller.start(RegistrationType::RegisterAfterOnTransitionToPrimary); controller->turnCrankForTest(Turner().registerServer().collect(3)); @@ -1170,7 +1177,7 @@ TEST_F(FreeMonControllerTest, TestMetricBatchingOnError) { opts.fail2MetricsUploads = true; ControllerHolder controller(_mockThreadPool.get(), opts); - controller->start(RegistrationType::RegisterOnStart); + controller.start(RegistrationType::RegisterOnStart); controller->turnCrankForTest(Turner().registerServer().registerCommand().collect(2)); @@ -1194,7 +1201,7 @@ TEST_F(FreeMonControllerTest, TestMetricBatchingOnErrorRealtime) { opts.fail2MetricsUploads = true; ControllerHolder controller(_mockThreadPool.get(), opts, false); - controller->start(RegistrationType::RegisterOnStart); + controller.start(RegistrationType::RegisterOnStart); // Ensure the first upload sends 2 samples ASSERT_TRUE(controller.network->waitMetricsCalls(1, Seconds(5)).is_initialized()); diff --git a/src/mongo/db/free_mon/free_mon_mongod.cpp b/src/mongo/db/free_mon/free_mon_mongod.cpp index 6d8f2042604..186b8d934da 100644 --- a/src/mongo/db/free_mon/free_mon_mongod.cpp +++ b/src/mongo/db/free_mon/free_mon_mongod.cpp @@ -335,7 +335,7 @@ void startFreeMonitoring(ServiceContext* serviceContext) { } } - staticFreeMon->start(registrationType); + controllerPtr->start(registrationType, globalFreeMonParams.freeMonitoringTags); } void stopFreeMonitoring() { diff --git a/src/mongo/db/free_mon/free_mon_options.cpp b/src/mongo/db/free_mon/free_mon_options.cpp index c99a899ccd9..e0c3c92b0d4 100644 --- a/src/mongo/db/free_mon/free_mon_options.cpp +++ b/src/mongo/db/free_mon/free_mon_options.cpp @@ -83,10 +83,12 @@ Status addFreeMonitoringOptions(moe::OptionSection* options) { moe::String, "Enable Cloud Free Monitoring (on|runtime|off)"); - // Command Line: --enableFreeMonitoringTag=string - // YAML Name: cloud.monitoring.free.tag=string - freeMonitoringOptions.addOptionChaining( - "cloud.monitoring.free.tag", "freeMonitoringTag", moe::String, "Cloud Free Monitoring Tag"); + // Command Line: --enableFreeMonitoringTag=array<string> + // YAML Name: cloud.monitoring.free.tag=array<string> + freeMonitoringOptions.addOptionChaining("cloud.monitoring.free.tags", + "freeMonitoringTag", + moe::StringVector, + "Cloud Free Monitoring Tags"); Status ret = options->addSection(freeMonitoringOptions); if (!ret.isOK()) { @@ -108,9 +110,9 @@ Status storeFreeMonitoringOptions(const moe::Environment& params) { globalFreeMonParams.freeMonitoringState = swState.getValue(); } - if (params.count("cloud.monitoring.free.tag")) { - globalFreeMonParams.freeMonitoringTag = - params["cloud.monitoring.free.tag"].as<std::string>(); + if (params.count("cloud.monitoring.free.tags")) { + globalFreeMonParams.freeMonitoringTags = + params["cloud.monitoring.free.tags"].as<std::vector<std::string>>(); } return Status::OK(); diff --git a/src/mongo/db/free_mon/free_mon_options.h b/src/mongo/db/free_mon/free_mon_options.h index 05d4ae2a91a..b543c0e3fdd 100644 --- a/src/mongo/db/free_mon/free_mon_options.h +++ b/src/mongo/db/free_mon/free_mon_options.h @@ -29,6 +29,7 @@ #pragma once #include <string> +#include <vector> namespace mongo { @@ -45,7 +46,7 @@ enum class EnableCloudStateEnum : std::int32_t { * Free Monitoring configuration options */ struct FreeMonParams { - std::string freeMonitoringTag; + std::vector<std::string> freeMonitoringTags; EnableCloudStateEnum freeMonitoringState = EnableCloudStateEnum::kRuntime; }; diff --git a/src/mongo/db/free_mon/free_mon_processor.cpp b/src/mongo/db/free_mon/free_mon_processor.cpp index 53e60ed316d..e5db7630cb8 100644 --- a/src/mongo/db/free_mon/free_mon_processor.cpp +++ b/src/mongo/db/free_mon/free_mon_processor.cpp @@ -392,7 +392,7 @@ void FreeMonProcessor::doCommandRegister(Client* client, } if (!_tags.empty()) { - req.setTag(transformVector(msg->getPayload())); + req.setTags(transformVector(msg->getPayload())); } // Collect the data diff --git a/src/mongo/db/free_mon/free_mon_protocol.idl b/src/mongo/db/free_mon/free_mon_protocol.idl index 0ebac53c4b8..ccc857163da 100644 --- a/src/mongo/db/free_mon/free_mon_protocol.idl +++ b/src/mongo/db/free_mon/free_mon_protocol.idl @@ -41,8 +41,8 @@ structs: description: "Existing Registration Id" type: string optional: true - tag: - description: "Tag" + tags: + description: "Tags" type: array<string> optional: true |