1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
/**
*
* Tests that the ShardSplit feature flag is enabled only in the proper FCV
* @tags: [requires_fcv_51, featureFlagShardSplit]
*/
(function() {
"use strict";
load("jstests/replsets/libs/tenant_migration_util.js");
const kDummyConnStr = "mongodb://localhost/?replicaSet=foo";
function makeShardSplitTest() {
return function(downgradeFCV) {
function commitShardSplitCmd() {
return {
commitShardSplit: 1,
tenantIds: ["foo"],
migrationId: UUID(),
recipientConnectionString: kDummyConnStr
};
}
function abortShardSplitCmd() {
return {abortShardSplit: 1, migrationId: UUID()};
}
// start up a replica set
// server-side setup
const rst = new ReplSetTest({nodes: 1});
rst.startSet();
rst.initiate();
const primary = rst.getPrimary();
const adminDB = primary.getDB("admin");
assert(TenantMigrationUtil.isShardSplitEnabled(adminDB));
assert.eq(getFCVConstants().latest,
adminDB.system.version.findOne({_id: 'featureCompatibilityVersion'}).version);
let res = adminDB.runCommand(commitShardSplitCmd());
assert.neq(res.code,
6057900,
`commitShardSplitCmd shouldn't reject when featureFlagShardSplit is enabled`);
res = adminDB.runCommand(abortShardSplitCmd());
assert.neq(res.code,
6057902,
`abortShardSplitCmd shouldn't reject when featureFlagShardSplit is enabled`);
assert.commandWorked(adminDB.adminCommand({setFeatureCompatibilityVersion: downgradeFCV}));
assert.commandFailedWithCode(
adminDB.runCommand(commitShardSplitCmd()),
6057900,
`commitShardSplitCmd should reject when featureFlagShardSplit is disabled`);
assert.commandFailedWithCode(
adminDB.runCommand(abortShardSplitCmd()),
6057902,
`abortShardSplitCmd should reject when featureFlagShardSplit is disabled`);
// shut down replica set
rst.stopSet();
};
}
runFeatureFlagMultiversionTest('featureFlagShardSplit', makeShardSplitTest());
})();
|