diff options
Diffstat (limited to 'jstests/multiVersion/migration_between_mixed_version_mongods.js')
-rw-r--r-- | jstests/multiVersion/migration_between_mixed_version_mongods.js | 192 |
1 files changed, 95 insertions, 97 deletions
diff --git a/jstests/multiVersion/migration_between_mixed_version_mongods.js b/jstests/multiVersion/migration_between_mixed_version_mongods.js index a2539d87ddd..bd6b41b0e16 100644 --- a/jstests/multiVersion/migration_between_mixed_version_mongods.js +++ b/jstests/multiVersion/migration_between_mixed_version_mongods.js @@ -10,101 +10,99 @@ TestData.skipCheckingUUIDsConsistentAcrossCluster = true; load("./jstests/multiVersion/libs/verify_versions.js"); (function() { - "use strict"; - - var options = { - shards: [ - {binVersion: "last-stable"}, - {binVersion: "last-stable"}, - {binVersion: "latest"}, - {binVersion: "latest"} - ], - mongos: 1, - other: {mongosOptions: {binVersion: "last-stable"}, shardAsReplicaSet: false} - }; - - var st = new ShardingTest(options); - st.stopBalancer(); - - assert.binVersion(st.shard0, "last-stable"); - assert.binVersion(st.shard1, "last-stable"); - assert.binVersion(st.shard2, "latest"); - assert.binVersion(st.shard3, "latest"); - assert.binVersion(st.s0, "last-stable"); - - var mongos = st.s0, admin = mongos.getDB('admin'), - shards = mongos.getCollection('config.shards').find().toArray(), - - fooDB = "fooTest", fooNS = fooDB + ".foo", fooColl = mongos.getCollection(fooNS), - fooDonor = st.shard0, fooRecipient = st.shard2, - fooDonorColl = fooDonor.getCollection(fooNS), - fooRecipientColl = fooRecipient.getCollection(fooNS), - - barDB = "barTest", barNS = barDB + ".foo", barColl = mongos.getCollection(barNS), - barDonor = st.shard3, barRecipient = st.shard1, - barDonorColl = barDonor.getCollection(barNS), - barRecipientColl = barRecipient.getCollection(barNS); - - assert.commandWorked(admin.runCommand({enableSharding: fooDB})); - assert.commandWorked(admin.runCommand({enableSharding: barDB})); - st.ensurePrimaryShard(fooDB, shards[0]._id); - st.ensurePrimaryShard(barDB, shards[3]._id); - - assert.commandWorked(admin.runCommand({shardCollection: fooNS, key: {a: 1}})); - assert.commandWorked(admin.runCommand({split: fooNS, middle: {a: 10}})); - assert.commandWorked(admin.runCommand({shardCollection: barNS, key: {a: 1}})); - assert.commandWorked(admin.runCommand({split: barNS, middle: {a: 10}})); - - fooColl.insert({a: 0}); - assert.eq(null, fooColl.getDB().getLastError()); - fooColl.insert({a: 10}); - assert.eq(null, fooColl.getDB().getLastError()); - assert.eq(0, fooRecipientColl.count()); - assert.eq(2, fooDonorColl.count()); - assert.eq(2, fooColl.count()); - - barColl.insert({a: 0}); - assert.eq(null, barColl.getDB().getLastError()); - barColl.insert({a: 10}); - assert.eq(null, barColl.getDB().getLastError()); - assert.eq(0, barRecipientColl.count()); - assert.eq(2, barDonorColl.count()); - assert.eq(2, barColl.count()); - - /** - * Perform two migrations: - * shard0 (last-stable) -> foo chunk -> shard2 (latest) - * shard3 (latest) -> bar chunk -> shard1 (last-stable) - */ - - assert.commandWorked(admin.runCommand( - {moveChunk: fooNS, find: {a: 10}, to: shards[2]._id, _waitForDelete: true})); - assert.commandWorked(admin.runCommand( - {moveChunk: barNS, find: {a: 10}, to: shards[1]._id, _waitForDelete: true})); - assert.eq(1, - fooRecipientColl.count(), - "Foo collection migration failed. " + - "Last-stable -> latest mongod version migration failure."); - assert.eq(1, - fooDonorColl.count(), - "Foo donor lost its document. " + - "Last-stable -> latest mongod version migration failure."); - assert.eq(2, - fooColl.count(), - "Incorrect number of documents in foo collection. " + - "Last-stable -> latest mongod version migration failure."); - assert.eq(1, - barRecipientColl.count(), - "Bar collection migration failed. " + - "Latest -> last-stable mongod version migration failure."); - assert.eq(1, - barDonorColl.count(), - "Bar donor lost its document. " + - "Latest -> last-stable mongod version migration failure."); - assert.eq(2, - barColl.count(), - "Incorrect number of documents in bar collection. " + - "Latest -> last-stable mongod version migration failure."); - - st.stop(); +"use strict"; + +var options = { + shards: [ + {binVersion: "last-stable"}, + {binVersion: "last-stable"}, + {binVersion: "latest"}, + {binVersion: "latest"} + ], + mongos: 1, + other: {mongosOptions: {binVersion: "last-stable"}, shardAsReplicaSet: false} +}; + +var st = new ShardingTest(options); +st.stopBalancer(); + +assert.binVersion(st.shard0, "last-stable"); +assert.binVersion(st.shard1, "last-stable"); +assert.binVersion(st.shard2, "latest"); +assert.binVersion(st.shard3, "latest"); +assert.binVersion(st.s0, "last-stable"); + +var mongos = st.s0, admin = mongos.getDB('admin'), + shards = mongos.getCollection('config.shards').find().toArray(), + + fooDB = "fooTest", fooNS = fooDB + ".foo", fooColl = mongos.getCollection(fooNS), + fooDonor = st.shard0, fooRecipient = st.shard2, fooDonorColl = fooDonor.getCollection(fooNS), + fooRecipientColl = fooRecipient.getCollection(fooNS), + + barDB = "barTest", barNS = barDB + ".foo", barColl = mongos.getCollection(barNS), + barDonor = st.shard3, barRecipient = st.shard1, barDonorColl = barDonor.getCollection(barNS), + barRecipientColl = barRecipient.getCollection(barNS); + +assert.commandWorked(admin.runCommand({enableSharding: fooDB})); +assert.commandWorked(admin.runCommand({enableSharding: barDB})); +st.ensurePrimaryShard(fooDB, shards[0]._id); +st.ensurePrimaryShard(barDB, shards[3]._id); + +assert.commandWorked(admin.runCommand({shardCollection: fooNS, key: {a: 1}})); +assert.commandWorked(admin.runCommand({split: fooNS, middle: {a: 10}})); +assert.commandWorked(admin.runCommand({shardCollection: barNS, key: {a: 1}})); +assert.commandWorked(admin.runCommand({split: barNS, middle: {a: 10}})); + +fooColl.insert({a: 0}); +assert.eq(null, fooColl.getDB().getLastError()); +fooColl.insert({a: 10}); +assert.eq(null, fooColl.getDB().getLastError()); +assert.eq(0, fooRecipientColl.count()); +assert.eq(2, fooDonorColl.count()); +assert.eq(2, fooColl.count()); + +barColl.insert({a: 0}); +assert.eq(null, barColl.getDB().getLastError()); +barColl.insert({a: 10}); +assert.eq(null, barColl.getDB().getLastError()); +assert.eq(0, barRecipientColl.count()); +assert.eq(2, barDonorColl.count()); +assert.eq(2, barColl.count()); + +/** + * Perform two migrations: + * shard0 (last-stable) -> foo chunk -> shard2 (latest) + * shard3 (latest) -> bar chunk -> shard1 (last-stable) + */ + +assert.commandWorked( + admin.runCommand({moveChunk: fooNS, find: {a: 10}, to: shards[2]._id, _waitForDelete: true})); +assert.commandWorked( + admin.runCommand({moveChunk: barNS, find: {a: 10}, to: shards[1]._id, _waitForDelete: true})); +assert.eq(1, + fooRecipientColl.count(), + "Foo collection migration failed. " + + "Last-stable -> latest mongod version migration failure."); +assert.eq(1, + fooDonorColl.count(), + "Foo donor lost its document. " + + "Last-stable -> latest mongod version migration failure."); +assert.eq(2, + fooColl.count(), + "Incorrect number of documents in foo collection. " + + "Last-stable -> latest mongod version migration failure."); +assert.eq(1, + barRecipientColl.count(), + "Bar collection migration failed. " + + "Latest -> last-stable mongod version migration failure."); +assert.eq(1, + barDonorColl.count(), + "Bar donor lost its document. " + + "Latest -> last-stable mongod version migration failure."); +assert.eq(2, + barColl.count(), + "Incorrect number of documents in bar collection. " + + "Latest -> last-stable mongod version migration failure."); + +st.stop(); })(); |