Skip to content

Commit 537beb0

Browse files
gregorvGreg Studer
authored andcommitted
buildbot fix multiVersion tests, future-proof
1 parent ed47890 commit 537beb0

14 files changed

+261
-143
lines changed

jstests/multiVersion/0_test_launching.js

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,11 @@
22
// Tests whether or not multi-version mongos/mongod instances can be launched
33
//
44

5-
var verifyVersion = function( mongo, version ){
6-
7-
var result = mongo.getDB( "admin" ).runCommand({ serverStatus : 1 })
8-
9-
if( result.version != version ) printjson( result )
10-
11-
assert.eq( result.version, version )
12-
}
5+
load('./jstests/multiVersion/libs/verify_versions.js');
136

14-
var versionsToCheck = [ "1.8.5",
15-
"2.0.6" ]
7+
// Check our oldest and newest versions
8+
var versionsToCheck = [ "1.8",
9+
"latest"];
1610

1711
for( var i = 0; i < versionsToCheck.length; i++ ){
1812

@@ -22,8 +16,8 @@ for( var i = 0; i < versionsToCheck.length; i++ ){
2216
var mongos = MongoRunner.runMongos({ binVersion : version, configdb : mongod })
2317

2418
// Make sure the started versions are actually the correct versions
25-
verifyVersion( mongod, version )
26-
verifyVersion( mongos, version )
19+
assert.binVersion( mongod, version );
20+
assert.binVersion( mongos, version );
2721

2822
MongoRunner.stopMongos( mongos )
2923
MongoRunner.stopMongod( mongod )

jstests/multiVersion/1_test_launching_replset.js

Lines changed: 10 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,12 @@
22
// Tests launching multi-version ReplSetTest replica sets
33
//
44

5-
var verifyVersion = function( mongo, version ){
6-
7-
var result = mongo.getDB( "admin" ).runCommand({ serverStatus : 1 })
8-
9-
if( result.version != version ) printjson( result )
10-
11-
assert.eq( result.version, version )
12-
}
5+
// Check our latest versions
6+
var versionsToCheck = [ "last-stable",
7+
"latest" ];
8+
9+
load('./jstests/multiVersion/libs/verify_versions.js');
1310

14-
var versionsToCheck = [ "1.8.5",
15-
"2.0.6" ]
16-
1711
jsTest.log( "Testing legacy versions..." )
1812

1913
for( var i = 0; i < versionsToCheck.length; i++ ){
@@ -29,7 +23,7 @@ for( var i = 0; i < versionsToCheck.length; i++ ){
2923
var nodes = rst.nodes
3024

3125
// Make sure the started versions are actually the correct versions
32-
for( var j = 0; j < nodes.length; j++ ) verifyVersion( nodes[j], version )
26+
for( var j = 0; j < nodes.length; j++ ) assert.binVersion(nodes[j], version);
3327

3428
rst.stopSet()
3529
}
@@ -44,30 +38,17 @@ rst.startSet({ binVersion : versionsToCheck })
4438

4539
var nodes = rst.nodes
4640

47-
var getVersion = function( mongo ){
48-
var result = mongo.getDB( "admin" ).runCommand({ serverStatus : 1 })
49-
return result.version
50-
}
51-
52-
var verifyAllVersionsFound = function( versionsFound ){
53-
for( var j = 0; j < versionsToCheck.length; j++ )
54-
assert( versionsFound[ versionsToCheck[j] ] )
55-
}
56-
5741
//Make sure we have hosts of all the different versions
58-
var versionsFound = {}
59-
for( var j = 0; j < nodes.length; j++ )
60-
versionsFound[ getVersion( nodes[j] ) ] = true
42+
var versionsFound = []
43+
for( var j = 0; j < nodes.length; j++ )
44+
versionsFound.push(nodes[j].getBinVersion());
6145

62-
verifyAllVersionsFound( versionsFound )
46+
assert.allBinVersions(versionsToCheck, versionsFound);
6347

6448
rst.stopSet()
6549

6650
jsTest.log( "Done!" )
6751

68-
69-
70-
7152
//
7253
// End
7354
//

jstests/multiVersion/2_test_launching_cluster.js

Lines changed: 35 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,11 @@
22
// Tests launching multi-version ShardingTest clusters
33
//
44

5-
var verifyVersion = function( mongo, version ){
6-
7-
var result = mongo.getDB( "admin" ).runCommand({ serverStatus : 1 })
8-
9-
if( result.version != version ) printjson( result )
10-
11-
assert.eq( result.version, version )
12-
}
5+
load('./jstests/multiVersion/libs/verify_versions.js');
136

14-
var versionsToCheck = [ "1.8.5",
15-
"2.0.6" ]
7+
// Check our latest versions
8+
var versionsToCheck = [ "last-stable",
9+
"latest" ];
1610

1711
jsTest.log( "Testing legacy versions..." )
1812

@@ -36,9 +30,9 @@ for( var i = 0; i < versionsToCheck.length; i++ ){
3630
var configs = [ st.config0 ]
3731

3832
// Make sure the started versions are actually the correct versions
39-
for( var j = 0; j < shards.length; j++ ) verifyVersion( shards[j], version )
40-
for( var j = 0; j < mongoses.length; j++ ) verifyVersion( mongoses[j], version )
41-
for( var j = 0; j < configs.length; j++ ) verifyVersion( configs[j], version )
33+
for( var j = 0; j < shards.length; j++ ) assert.binVersion( shards[j], version );
34+
for( var j = 0; j < mongoses.length; j++ ) assert.binVersion( mongoses[j], version );
35+
for( var j = 0; j < configs.length; j++ ) assert.binVersion( configs[j], version );
4236

4337
st.stop()
4438
}
@@ -65,34 +59,24 @@ var shards = [ st.shard0, st.shard1 ]
6559
var mongoses = [ st.s0, st.s1 ]
6660
var configs = [ st.config0, st.config1, st.config2 ]
6761

68-
var getVersion = function( mongo ){
69-
var result = mongo.getDB( "admin" ).runCommand({ serverStatus : 1 })
70-
return result.version
71-
}
72-
73-
var verifyAllVersionsFound = function( versionsFound ){
74-
for( var j = 0; j < versionsToCheck.length; j++ )
75-
assert( versionsFound[ versionsToCheck[j] ] )
76-
}
77-
7862
// Make sure we have hosts of all the different versions
79-
var versionsFound = {}
63+
var versionsFound = [];
8064
for( var j = 0; j < shards.length; j++ )
81-
versionsFound[ getVersion( shards[j] ) ] = true
65+
versionsFound.push( shards[j].getBinVersion() );
8266

83-
verifyAllVersionsFound( versionsFound )
67+
assert.allBinVersions( versionsToCheck, versionsFound );
8468

85-
versionsFound = {}
69+
versionsFound = [];
8670
for( var j = 0; j < mongoses.length; j++ )
87-
versionsFound[ getVersion( mongoses[j] ) ] = true
71+
versionsFound.push( mongoses[j].getBinVersion() );
8872

89-
verifyAllVersionsFound( versionsFound )
73+
assert.allBinVersions( versionsToCheck, versionsFound );
9074

91-
versionsFound = {}
75+
versionsFound = [];
9276
for( var j = 0; j < configs.length; j++ )
93-
versionsFound[ getVersion( configs[j] ) ] = true
77+
versionsFound.push( configs[j].getBinVersion() );
9478

95-
verifyAllVersionsFound( versionsFound )
79+
assert.allBinVersions( versionsToCheck, versionsFound );
9680

9781
st.stop()
9882

@@ -128,39 +112,34 @@ var getVersion = function( mongo ){
128112
return result.version
129113
}
130114

131-
var verifyAllVersionsFound = function( versionsFound ){
132-
for( var j = 0; j < versionsToCheck.length; j++ )
133-
assert( versionsFound[ versionsToCheck[j] ] )
134-
}
135-
136115
// Make sure we have hosts of all the different versions
137-
var versionsFound = {}
116+
versionsFound = []
138117
for( var j = 0; j < nodesA.length; j++ )
139-
versionsFound[ getVersion( nodesA[j] ) ] = true
118+
versionsFound.push( nodesA[j].getBinVersion() );
140119

141-
verifyAllVersionsFound( versionsFound )
120+
assert.allBinVersions( versionsToCheck, versionsFound );
142121

143-
versionsFound = {}
122+
versionsFound = []
144123
for( var j = 0; j < nodesB.length; j++ )
145-
versionsFound[ getVersion( nodesA[j] ) ] = true
124+
versionsFound.push( nodesB[j].getBinVersion() );
146125

147-
verifyAllVersionsFound( versionsFound )
126+
assert.allBinVersions( versionsToCheck, versionsFound );( versionsFound )
148127

149-
versionsFound = {}
150-
for( var j = 0; j < mongoses.length; j++ )
151-
versionsFound[ getVersion( mongoses[j] ) ] = true
128+
versionsFound = [];
129+
for( var j = 0; j < mongoses.length; j++ )
130+
versionsFound.push( mongoses[j].getBinVersion() );
152131

153-
verifyAllVersionsFound( versionsFound )
154-
155-
versionsFound = {}
156-
for( var j = 0; j < configs.length; j++ )
157-
versionsFound[ getVersion( configs[j] ) ] = true
158-
159-
verifyAllVersionsFound( versionsFound )
160-
161-
st.stop()
132+
assert.allBinVersions( versionsToCheck, versionsFound );
133+
134+
versionsFound = [];
135+
for( var j = 0; j < configs.length; j++ )
136+
versionsFound.push( configs[j].getBinVersion() );
162137

163-
jsTest.log( "Done!" )
138+
assert.allBinVersions( versionsToCheck, versionsFound );
139+
140+
jsTest.log("DONE!");
141+
142+
st.stop()
164143

165144
//
166145
// End

jstests/multiVersion/3_upgrade_replset.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
load( './jstests/multiVersion/libs/multi_rs.js' )
66
load( './jstests/libs/test_background_ops.js' )
77

8-
var oldVersion = "2.0.6"
9-
var newVersion = "latest"
8+
var oldVersion = "2.0"
9+
var newVersion = "2.2"
1010

1111
var nodes = { n1 : { binVersion : oldVersion },
1212
n2 : { binVersion : oldVersion },

jstests/multiVersion/4_upgrade_cluster.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ load( './jstests/multiVersion/libs/multi_rs.js' )
66
load( './jstests/multiVersion/libs/multi_cluster.js' )
77
load( './jstests/libs/test_background_ops.js' )
88

9-
var oldVersion = "2.0.6"
10-
var newVersion = "latest"
9+
var oldVersion = "2.0"
10+
var newVersion = "2.2"
1111

1212
// BIG OUTER LOOP, RS CLUSTER OR NOT!
1313
for( var test = 0; test < 1; test++ ){
@@ -147,4 +147,4 @@ jsTest.log( "DONE!" )
147147

148148
st.stop()
149149

150-
} // END OUTER LOOP FOR RS CLUSTER
150+
} // END OUTER LOOP FOR RS CLUSTER

jstests/multiVersion/auth_index_upgrade_downgrade.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727
// * Verify that the desired indexes are present.
2828
// * Verify can insert privilege documents that would have conflicted in 2.2 into the database.
2929

30-
var oldVersion = "2.2.2";
31-
var newVersion = "latest";
30+
var oldVersion = "2.2";
31+
var newVersion = "2.4";
3232

3333
// Raises an exception if "status" is not a GetLastError object indicating success.
3434
function assertGLEOK(status) {

jstests/multiVersion/config_version_excludes.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
// Test checks whether or not config version excludes prevent mongos startup
33
//
44

5+
load('./jstests/multiVersion/libs/verify_versions.js');
6+
57
jsTest.log( "Starting cluster..." );
68

79
var options = {
@@ -28,8 +30,12 @@ var configConnStr = st._configDB;
2830

2931
jsTest.log("Testing excluded mongos versions...")
3032

31-
configVersion.update({ _id : 1 }, { $addToSet : { excluding : "2.3" } });
32-
configVersion.update({ _id : 1 }, { $addToSet : { excluding : "2.4" } });
33+
// Since the version isn't being tested via javascript, we want to find the actual version
34+
// that "latest" is mapped to.
35+
// Implicitly, the above cluster is started at "latest" version, so we can check this way.
36+
var realLatestVersion = mongos.getBinVersion();
37+
38+
configVersion.update({ _id : 1 }, { $addToSet : { excluding : realLatestVersion } });
3339
printjson(configVersion.findOne());
3440

3541
// Make sure down
@@ -39,7 +45,8 @@ assert.eq(null, mongosNew);
3945
jsTest.log("Testing excluded ranges...")
4046

4147
configVersion.update({ _id : 1 }, { $unset : { excluding : 1 } });
42-
configVersion.update({ _id : 1 }, { $addToSet : { excluding : ["2.3", "2.4"] } });
48+
configVersion.update({ _id : 1 }, { $addToSet : { excluding : ["1.8",
49+
realLatestVersion] } });
4350
printjson(configVersion.findOne());
4451

4552
// Make sure down
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/**
2+
* Helpers for verifying versions of started MongoDB processes
3+
*/
4+
5+
Mongo.prototype.getBinVersion = function() {
6+
var result = this.getDB( "admin" ).runCommand({ serverStatus : 1 })
7+
return result.version
8+
}
9+
10+
// Checks that our mongodb process is of a certain version
11+
assert.binVersion = function(mongo, version) {
12+
var currVersion = mongo.getBinVersion();
13+
assert(MongoRunner.areBinVersionsTheSame(MongoRunner.getBinVersionFor(currVersion),
14+
MongoRunner.getBinVersionFor(version)),
15+
"version " + version + " (" + MongoRunner.getBinVersionFor(version) + ")" +
16+
" is not the same as " + currVersion);
17+
}
18+
19+
20+
// Compares an array of desired versions and an array of found versions,
21+
// looking for versions not found
22+
assert.allBinVersions = function(versionsWanted, versionsFound) {
23+
24+
for (var i = 0; i < versionsWanted.length; i++) {
25+
26+
var found = false;
27+
for (var j = 0; j < versionsFound.length; j++) {
28+
if (MongoRunner.areBinVersionsTheSame(versionsWanted[i],
29+
versionsFound[j]))
30+
{
31+
found = true;
32+
break;
33+
}
34+
}
35+
36+
assert(found, "could not find version " +
37+
version + " (" + MongoRunner.getBinVersionFor(version) + ")" +
38+
" in " + versionsFound);
39+
}
40+
}

jstests/multiVersion/upgrade_cluster_v3_to_v4.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ var configConnStr = st._configDB;
4141

4242
jsTest.log("Starting v2.4 mongos in 2.0 cluster...")
4343

44-
var mongos = MongoRunner.runMongos({ binVersion : "latest", configdb : configConnStr })
44+
var mongos = MongoRunner.runMongos({ binVersion : "2.4", configdb : configConnStr })
4545
assert.eq(null, mongos);
4646

47-
var mongos = MongoRunner.runMongos({ binVersion : "latest", configdb : configConnStr, upgrade : "" })
47+
var mongos = MongoRunner.runMongos({ binVersion : "2.4", configdb : configConnStr, upgrade : "" })
4848
assert.eq(null, mongos);
4949

5050
jsTest.log("2.4 mongoses did not start or upgrade in 2.0 cluster (which is correct).")
@@ -101,10 +101,10 @@ st.restartMongoses();
101101

102102
jsTest.log("Starting v2.4 mongos in 2.0/2.2 cluster....")
103103

104-
var mongos = MongoRunner.runMongos({ binVersion : "latest", configdb : configConnStr })
104+
var mongos = MongoRunner.runMongos({ binVersion : "2.4", configdb : configConnStr })
105105
assert.eq(null, mongos);
106106

107-
var mongos = MongoRunner.runMongos({ binVersion : "latest", configdb : configConnStr, upgrade : "" })
107+
var mongos = MongoRunner.runMongos({ binVersion : "2.4", configdb : configConnStr, upgrade : "" })
108108
assert.eq(null, mongos);
109109

110110
jsTest.log("2.4 mongoses did not start or upgrade in 2.0/2.2 cluster (which is correct).")
@@ -138,10 +138,10 @@ st.restartMongoses();
138138

139139
jsTest.log("Starting v2.4 mongos in 2.2 cluster....")
140140

141-
var mongos = MongoRunner.runMongos({ binVersion : "latest", configdb : configConnStr })
141+
var mongos = MongoRunner.runMongos({ binVersion : "2.4", configdb : configConnStr })
142142
assert.eq(null, mongos);
143143

144-
var mongos = MongoRunner.runMongos({ binVersion : "latest", configdb : configConnStr, upgrade : "" })
144+
var mongos = MongoRunner.runMongos({ binVersion : "2.4", configdb : configConnStr, upgrade : "" })
145145
assert.neq(null, mongos);
146146
MongoRunner.stopMongos(mongos);
147147

0 commit comments

Comments
 (0)