98 lines
3.8 KiB
JavaScript
98 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));
|
|
});
|
|
}());
|