summaryrefslogtreecommitdiff
path: root/src/mongo/db/storage/mmap_v1/mmap_v1_init_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/storage/mmap_v1/mmap_v1_init_test.cpp')
-rw-r--r--src/mongo/db/storage/mmap_v1/mmap_v1_init_test.cpp158
1 files changed, 77 insertions, 81 deletions
diff --git a/src/mongo/db/storage/mmap_v1/mmap_v1_init_test.cpp b/src/mongo/db/storage/mmap_v1/mmap_v1_init_test.cpp
index 62ecdde5aa1..d5323f1b398 100644
--- a/src/mongo/db/storage/mmap_v1/mmap_v1_init_test.cpp
+++ b/src/mongo/db/storage/mmap_v1/mmap_v1_init_test.cpp
@@ -38,93 +38,89 @@
namespace {
- using namespace mongo;
-
- class MMAPV1FactoryTest : public mongo::unittest::Test {
- private:
- virtual void setUp() {
- ServiceContext* globalEnv = getGlobalServiceContext();
- ASSERT_TRUE(globalEnv);
- ASSERT_TRUE(getGlobalServiceContext()->isRegisteredStorageEngine("mmapv1"));
- std::unique_ptr<StorageFactoriesIterator> sfi(getGlobalServiceContext()->
- makeStorageFactoriesIterator());
- ASSERT_TRUE(sfi);
- bool found = false;
- while (sfi->more()) {
- const StorageEngine::Factory* currentFactory = sfi->next();
- if (currentFactory->getCanonicalName() == "mmapv1") {
- found = true;
- factory = currentFactory;
- break;
- }
+using namespace mongo;
+
+class MMAPV1FactoryTest : public mongo::unittest::Test {
+private:
+ virtual void setUp() {
+ ServiceContext* globalEnv = getGlobalServiceContext();
+ ASSERT_TRUE(globalEnv);
+ ASSERT_TRUE(getGlobalServiceContext()->isRegisteredStorageEngine("mmapv1"));
+ std::unique_ptr<StorageFactoriesIterator> sfi(
+ getGlobalServiceContext()->makeStorageFactoriesIterator());
+ ASSERT_TRUE(sfi);
+ bool found = false;
+ while (sfi->more()) {
+ const StorageEngine::Factory* currentFactory = sfi->next();
+ if (currentFactory->getCanonicalName() == "mmapv1") {
+ found = true;
+ factory = currentFactory;
+ break;
}
- ASSERT_TRUE(found);
- }
-
- virtual void tearDown() {
- factory = NULL;
- }
-
- protected:
- const StorageEngine::Factory* factory;
- };
-
- void _testValidateMetadata(const StorageEngine::Factory* factory,
- const BSONObj& metadataOptions,
- bool directoryPerDB,
- ErrorCodes::Error expectedCode) {
- // It is fine to specify an invalid data directory for the metadata
- // as long as we do not invoke read() or write().
- StorageEngineMetadata metadata("no_such_directory");
- metadata.setStorageEngineOptions(metadataOptions);
-
- StorageGlobalParams storageOptions;
- storageOptions.directoryperdb = directoryPerDB;
-
- Status status = factory->validateMetadata(metadata, storageOptions);
- if (expectedCode != status.code()) {
- FAIL(str::stream()
- << "Unexpected StorageEngine::Factory::validateMetadata result. Expected: "
- << ErrorCodes::errorString(expectedCode) << " but got "
- << status.toString()
- << " instead. metadataOptions: " << metadataOptions
- << "; directoryPerDB: " << directoryPerDB);
}
+ ASSERT_TRUE(found);
}
- // Do not validate fields that are not present in metadata.
- TEST_F(MMAPV1FactoryTest, ValidateMetadataEmptyOptions) {
- _testValidateMetadata(factory, BSONObj(), false, ErrorCodes::OK);
- _testValidateMetadata(factory, BSONObj(), true, ErrorCodes::OK);
- }
-
- TEST_F(MMAPV1FactoryTest, ValidateMetadataDirectoryPerDB) {
- _testValidateMetadata(factory, fromjson("{directoryPerDB: 123}"), false,
- ErrorCodes::FailedToParse);
- _testValidateMetadata(factory, fromjson("{directoryPerDB: false}"), false,
- ErrorCodes::OK);
- _testValidateMetadata(factory, fromjson("{directoryPerDB: false}"), true,
- ErrorCodes::InvalidOptions);
- _testValidateMetadata(factory, fromjson("{directoryPerDB: true}"), false,
- ErrorCodes::InvalidOptions);
- _testValidateMetadata(factory, fromjson("{directoryPerDB: true}"), true,
- ErrorCodes::OK);
- }
-
- void _testCreateMetadataOptions(const StorageEngine::Factory* factory,
- bool directoryPerDB) {
- StorageGlobalParams storageOptions;
- storageOptions.directoryperdb = directoryPerDB;
-
- BSONObj metadataOptions = factory->createMetadataOptions(storageOptions);
- BSONElement directoryPerDBElement = metadataOptions.getField("directoryPerDB");
- ASSERT_TRUE(directoryPerDBElement.isBoolean());
- ASSERT_EQUALS(directoryPerDB, directoryPerDBElement.boolean());
+ virtual void tearDown() {
+ factory = NULL;
}
- TEST_F(MMAPV1FactoryTest, CreateMetadataOptions) {
- _testCreateMetadataOptions(factory, false);
- _testCreateMetadataOptions(factory, true);
+protected:
+ const StorageEngine::Factory* factory;
+};
+
+void _testValidateMetadata(const StorageEngine::Factory* factory,
+ const BSONObj& metadataOptions,
+ bool directoryPerDB,
+ ErrorCodes::Error expectedCode) {
+ // It is fine to specify an invalid data directory for the metadata
+ // as long as we do not invoke read() or write().
+ StorageEngineMetadata metadata("no_such_directory");
+ metadata.setStorageEngineOptions(metadataOptions);
+
+ StorageGlobalParams storageOptions;
+ storageOptions.directoryperdb = directoryPerDB;
+
+ Status status = factory->validateMetadata(metadata, storageOptions);
+ if (expectedCode != status.code()) {
+ FAIL(str::stream()
+ << "Unexpected StorageEngine::Factory::validateMetadata result. Expected: "
+ << ErrorCodes::errorString(expectedCode) << " but got " << status.toString()
+ << " instead. metadataOptions: " << metadataOptions
+ << "; directoryPerDB: " << directoryPerDB);
}
+}
+
+// Do not validate fields that are not present in metadata.
+TEST_F(MMAPV1FactoryTest, ValidateMetadataEmptyOptions) {
+ _testValidateMetadata(factory, BSONObj(), false, ErrorCodes::OK);
+ _testValidateMetadata(factory, BSONObj(), true, ErrorCodes::OK);
+}
+
+TEST_F(MMAPV1FactoryTest, ValidateMetadataDirectoryPerDB) {
+ _testValidateMetadata(
+ factory, fromjson("{directoryPerDB: 123}"), false, ErrorCodes::FailedToParse);
+ _testValidateMetadata(factory, fromjson("{directoryPerDB: false}"), false, ErrorCodes::OK);
+ _testValidateMetadata(
+ factory, fromjson("{directoryPerDB: false}"), true, ErrorCodes::InvalidOptions);
+ _testValidateMetadata(
+ factory, fromjson("{directoryPerDB: true}"), false, ErrorCodes::InvalidOptions);
+ _testValidateMetadata(factory, fromjson("{directoryPerDB: true}"), true, ErrorCodes::OK);
+}
+
+void _testCreateMetadataOptions(const StorageEngine::Factory* factory, bool directoryPerDB) {
+ StorageGlobalParams storageOptions;
+ storageOptions.directoryperdb = directoryPerDB;
+
+ BSONObj metadataOptions = factory->createMetadataOptions(storageOptions);
+ BSONElement directoryPerDBElement = metadataOptions.getField("directoryPerDB");
+ ASSERT_TRUE(directoryPerDBElement.isBoolean());
+ ASSERT_EQUALS(directoryPerDB, directoryPerDBElement.boolean());
+}
+
+TEST_F(MMAPV1FactoryTest, CreateMetadataOptions) {
+ _testCreateMetadataOptions(factory, false);
+ _testCreateMetadataOptions(factory, true);
+}
} // namespace