diff options
author | Mark Benvenuto <mark.benvenuto@mongodb.com> | 2015-11-02 16:59:24 -0500 |
---|---|---|
committer | Mark Benvenuto <mark.benvenuto@mongodb.com> | 2015-11-06 11:10:31 -0500 |
commit | 7ed2f9786e541d7df22660a09f8a86668e667d60 (patch) | |
tree | 3bf1e1fa473dfd30b581c5c442a7420be261f074 /src/mongo/db/ftdc/controller_test.cpp | |
parent | 02eb7fa6d33d23244d41a876867d0b64f75f096f (diff) | |
download | mongo-7ed2f9786e541d7df22660a09f8a86668e667d60.tar.gz |
SERVER-21231: Improve logging messages, and prevent FTDC from writting to disk when not enabled.
Diffstat (limited to 'src/mongo/db/ftdc/controller_test.cpp')
-rw-r--r-- | src/mongo/db/ftdc/controller_test.cpp | 80 |
1 files changed, 76 insertions, 4 deletions
diff --git a/src/mongo/db/ftdc/controller_test.cpp b/src/mongo/db/ftdc/controller_test.cpp index 065db24e198..37f406a2f39 100644 --- a/src/mongo/db/ftdc/controller_test.cpp +++ b/src/mongo/db/ftdc/controller_test.cpp @@ -44,6 +44,7 @@ #include "mongo/db/ftdc/ftdc_test.h" #include "mongo/db/jsobj.h" #include "mongo/db/service_context.h" +#include "mongo/stdx/memory.h" #include "mongo/unittest/temp_dir.h" #include "mongo/unittest/unittest.h" @@ -166,8 +167,8 @@ TEST(FTDCControllerTest, TestFull) { FTDCController c(dir, config); - auto c1 = std::unique_ptr<FTDCMetricsCollectorMock2>(new FTDCMetricsCollectorMock2()); - auto c2 = std::unique_ptr<FTDCMetricsCollectorMockRotate>(new FTDCMetricsCollectorMockRotate()); + auto c1 = stdx::make_unique<FTDCMetricsCollectorMock2>(); + auto c2 = stdx::make_unique<FTDCMetricsCollectorMockRotate>(); auto c1Ptr = c1.get(); auto c2Ptr = c2.get(); @@ -191,8 +192,7 @@ TEST(FTDCControllerTest, TestFull) { auto docsRotate = c2Ptr->getDocs(); ASSERT_EQUALS(docsRotate.size(), 1UL); - std::vector<BSONObj> allDocs; - allDocs.insert(allDocs.end(), docsRotate.begin(), docsRotate.end()); + std::vector<BSONObj> allDocs(docsRotate.begin(), docsRotate.end()); allDocs.insert(allDocs.end(), docsPeriodic.begin(), docsPeriodic.end()); auto files = scanDirectory(dir); @@ -204,4 +204,76 @@ TEST(FTDCControllerTest, TestFull) { ValidateDocumentList(alog, allDocs); } +// Test we can start and stop the controller in quick succession, make sure it succeeds without +// assert or fault +TEST(FTDCControllerTest, TestStartStop) { + unittest::TempDir tempdir("metrics_testpath"); + boost::filesystem::path dir(tempdir.path()); + + createDirectoryClean(dir); + + FTDCConfig config; + config.enabled = false; + config.period = Milliseconds(1); + config.maxFileSizeBytes = FTDCConfig::kMaxFileSizeBytesDefault; + config.maxDirectorySizeBytes = FTDCConfig::kMaxDirectorySizeBytesDefault; + + FTDCController c(dir, config); + + c.start(); + + c.stop(); +} + +// Test we can start the controller as disabled, the directory is empty, and then we can succesfully +// enable it +TEST(FTDCControllerTest, TestStartAsDisabled) { + unittest::TempDir tempdir("metrics_testpath"); + boost::filesystem::path dir(tempdir.path()); + + createDirectoryClean(dir); + + FTDCConfig config; + config.enabled = false; + config.period = Milliseconds(1); + config.maxFileSizeBytes = FTDCConfig::kMaxFileSizeBytesDefault; + config.maxDirectorySizeBytes = FTDCConfig::kMaxDirectorySizeBytesDefault; + + auto c1 = stdx::make_unique<FTDCMetricsCollectorMock2>(); + + auto c1Ptr = c1.get(); + + FTDCController c(dir, config); + + c.addPeriodicCollector(std::move(c1)); + + c.start(); + + auto files0 = scanDirectory(dir); + + ASSERT_EQUALS(files0.size(), 0UL); + + c.setEnabled(true); + + c1Ptr->setSignalOnCount(50); + + // Wait for 50 samples to have occured + c1Ptr->wait(); + + c.stop(); + + auto docsPeriodic = c1Ptr->getDocs(); + ASSERT_GREATER_THAN_OR_EQUALS(docsPeriodic.size(), 50UL); + + std::vector<BSONObj> allDocs(docsPeriodic.begin(), docsPeriodic.end()); + + auto files = scanDirectory(dir); + + ASSERT_EQUALS(files.size(), 1UL); + + auto alog = files[0]; + + ValidateDocumentList(alog, allDocs); +} + } // namespace mongo |