Files
mongo/jstests/multiVersion/2_test_launching_cluster.js

146 lines
4.7 KiB
JavaScript

//
// Tests launching multi-version ShardingTest clusters
//
load('./jstests/multiVersion/libs/verify_versions.js');
(function() {
"use strict";
// Check our latest versions
var versionsToCheck = [ "last-stable",
"latest" ];
var versionsToCheckMongos = [ "last-stable" ];
jsTest.log( "Testing legacy versions..." );
for( var i = 0; i < versionsToCheck.length; i++ ){
var version = versionsToCheck[ i ];
// Set up a cluster
var st = new ShardingTest({ shards : 2,
mongos : 2,
sync: true, // Old clusters can't use replsets for config servers
other : {
mongosOptions : { binVersion : version },
configOptions : { binVersion : version },
shardOptions : { binVersion : version }
} });
var shards = [ st.shard0, st.shard1 ];
var mongoses = [ st.s0, st.s1 ];
var configs = [ st.config0 ];
// Make sure the started versions are actually the correct versions
for( var j = 0; j < shards.length; j++ ) assert.binVersion( shards[j], version );
for( j = 0; j < mongoses.length; j++ ) assert.binVersion( mongoses[j], version );
for( j = 0; j < configs.length; j++ ) assert.binVersion( configs[j], version );
st.stop();
}
jsTest.log( "Testing mixed versions..." );
// Set up a multi-version cluster
st = new ShardingTest({ shards : 2,
mongos : 2,
other : {
// Three config servers
sync : true,
mongosOptions : { binVersion : versionsToCheckMongos },
configOptions : { binVersion : versionsToCheck },
shardOptions : { binVersion : versionsToCheck }
} });
shards = [ st.shard0, st.shard1 ];
mongoses = [ st.s0, st.s1 ];
configs = [ st.config0, st.config1, st.config2 ];
// Make sure we have hosts of all the different versions
var versionsFound = [];
for ( j = 0; j < shards.length; j++ )
versionsFound.push( shards[j].getBinVersion() );
assert.allBinVersions( versionsToCheck, versionsFound );
versionsFound = [];
for ( j = 0; j < mongoses.length; j++ )
versionsFound.push( mongoses[j].getBinVersion() );
assert.allBinVersions( versionsToCheckMongos, versionsFound );
versionsFound = [];
for ( j = 0; j < configs.length; j++ )
versionsFound.push( configs[j].getBinVersion() );
assert.allBinVersions( versionsToCheck, versionsFound );
st.stop();
jsTest.log( "Testing mixed versions with replica sets..." );
// Set up a multi-version cluster w/ replica sets
st = new ShardingTest({ shards : 2,
mongos : 2,
other : {
// Three config servers
sync : true,
// Replica set shards
rs : true,
mongosOptions : { binVersion : versionsToCheckMongos },
configOptions : { binVersion : versionsToCheck },
rsOptions : { binVersion : versionsToCheck, protocolVersion: 0 }
} });
var nodesA = st.rs0.nodes;
var nodesB = st.rs1.nodes;
mongoses = [ st.s0, st.s1 ];
configs = [ st.config0, st.config1, st.config2 ];
var getVersion = function( mongo ){
var result = mongo.getDB( "admin" ).runCommand({ serverStatus : 1 });
return result.version;
};
// Make sure we have hosts of all the different versions
versionsFound = [];
for ( j = 0; j < nodesA.length; j++ )
versionsFound.push( nodesA[j].getBinVersion() );
assert.allBinVersions( versionsToCheck, versionsFound );
versionsFound = [];
for ( j = 0; j < nodesB.length; j++ )
versionsFound.push( nodesB[j].getBinVersion() );
assert.allBinVersions( versionsToCheck, versionsFound );
versionsFound = [];
for ( j = 0; j < mongoses.length; j++ )
versionsFound.push( mongoses[j].getBinVersion() );
assert.allBinVersions( versionsToCheckMongos, versionsFound );
versionsFound = [];
for ( j = 0; j < configs.length; j++ )
versionsFound.push( configs[j].getBinVersion() );
assert.allBinVersions( versionsToCheck, versionsFound );
jsTest.log("DONE!");
st.stop();
})();