Files
mongo/jstests/multiVersion/mmapv1_overrides_default_storage_engine.js
2016-08-25 09:40:16 -04:00

105 lines
4.0 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.
*
* @tags: [requires_mmapv1]
*/
(function() {
'use strict';
var testCases = [
{
binVersion: '2.6',
},
{
binVersion: '2.6',
directoryperdb: '',
},
{
binVersion: '3.0',
},
{
binVersion: '3.0',
directoryperdb: '',
},
];
// Since this test requires not specifying the storageEngine, delete it before invoking test.
if (typeof TestData === "object" && TestData !== null) {
delete TestData.storageEngine;
}
// 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));
});
}());