WiredTiger is used as the default storage engine if the dbpath does not contain any data files. Otherwise, the storage engine specified in the storage.bson metadata file is used when the --storageEngine flag is omitted from the command line invocation.
97 lines
3.8 KiB
JavaScript
97 lines
3.8 KiB
JavaScript
/**
|
|
* Test the upgrade process for 2.6 ~~> 3.2 and 3.0 ~~> 3.2, where mmapv1 should continue to be the
|
|
* default storage engine. Repeat the process with --directoryperdb set.
|
|
*/
|
|
(function() {
|
|
'use strict';
|
|
|
|
var testCases = [
|
|
{
|
|
binVersion: '2.6',
|
|
},
|
|
{
|
|
binVersion: '2.6',
|
|
directoryperdb: '',
|
|
},
|
|
{
|
|
binVersion: '3.0',
|
|
},
|
|
{
|
|
binVersion: '3.0',
|
|
directoryperdb: '',
|
|
},
|
|
];
|
|
|
|
// The mongod should start up with mmapv1 when the --storageEngine flag is omitted, or when
|
|
// --storageEngine=mmapv1 is explicitly specified.
|
|
testCases.forEach(function(testCase) {
|
|
[null, 'mmapv1'].forEach(function(storageEngine) {
|
|
jsTest.log('Upgrading from a ' + testCase.binVersion + ' instance with options='
|
|
+ tojson(testCase) + ' to the latest version. This should succeed when the'
|
|
+ ' latest version '
|
|
+ (storageEngine ? ('explicitly specifies --storageEngine=' + storageEngine)
|
|
: 'omits the --storageEngine flag'));
|
|
|
|
var dbpath = MongoRunner.dataPath + 'mmapv1_overrides_default_storage_engine';
|
|
resetDbpath(dbpath);
|
|
|
|
var defaultOptions = {
|
|
dbpath: dbpath,
|
|
noCleanData: true,
|
|
};
|
|
|
|
// Start the old version.
|
|
var mongodOptions = Object.merge(defaultOptions, testCase);
|
|
var conn = MongoRunner.runMongod(mongodOptions);
|
|
assert.neq(null, conn,
|
|
'mongod was unable to start up with options ' + tojson(mongodOptions));
|
|
assert.commandWorked(conn.getDB('test').runCommand({ping: 1}));
|
|
MongoRunner.stopMongod(conn);
|
|
|
|
// Start the newest version.
|
|
mongodOptions = Object.extend({}, defaultOptions);
|
|
if (storageEngine) {
|
|
mongodOptions.storageEngine = storageEngine;
|
|
}
|
|
if (testCase.hasOwnProperty('directoryperdb')) {
|
|
mongodOptions.directoryperdb = testCase.directoryperdb;
|
|
}
|
|
conn = MongoRunner.runMongod(mongodOptions);
|
|
assert.neq(null, conn,
|
|
'mongod was unable to start up with options ' + tojson(mongodOptions));
|
|
assert.commandWorked(conn.getDB('test').runCommand({ping: 1}));
|
|
MongoRunner.stopMongod(conn);
|
|
});
|
|
});
|
|
|
|
// The mongod should not start up when --storageEngine=wiredTiger is specified.
|
|
testCases.forEach(function(testCase) {
|
|
jsTest.log('Upgrading from a ' + testCase.binVersion + ' instance with options='
|
|
+ tojson(testCase) + ' to the latest version. This should fail when the latest'
|
|
+ ' version specifies --storageEngine=wiredTiger');
|
|
|
|
var dbpath = MongoRunner.dataPath + 'mmapv1_overrides_default_storage_engine';
|
|
resetDbpath(dbpath);
|
|
|
|
var defaultOptions = {
|
|
dbpath: dbpath,
|
|
noCleanData: true,
|
|
};
|
|
|
|
// Start the old version.
|
|
var mongodOptions = Object.merge(defaultOptions, testCase);
|
|
var conn = MongoRunner.runMongod(mongodOptions);
|
|
assert.neq(null, conn,
|
|
'mongod was unable to start up with options ' + tojson(mongodOptions));
|
|
assert.commandWorked(conn.getDB('test').runCommand({ping: 1}));
|
|
MongoRunner.stopMongod(conn);
|
|
|
|
// Start the newest version.
|
|
mongodOptions = Object.extend({storageEngine: 'wiredTiger'}, defaultOptions);
|
|
conn = MongoRunner.runMongod(mongodOptions);
|
|
assert.eq(null, conn,
|
|
'mongod should not have been able to start up with options '
|
|
+ tojson(mongodOptions));
|
|
});
|
|
}());
|