summaryrefslogtreecommitdiff
path: root/jstests/sharding/addshard6.js
blob: 7e40058ec375da433d43a2d15487c83290838422 (plain)
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
/**
 * Test that adding a config server replica set as a shard fails.
 */
(function() {

var addShardRes;

// Note: this method expects that the failure is *not* that the specified shardName is already
// the shardName of an existing shard.
var assertAddShardFailed = function(res, shardName) {
    assert.commandFailed(res);

    // If a shard name was specified in the addShard, make sure no shard with its name shows up
    // in config.shards.
    if (shardName) {
        assert.eq(
            null,
            st.s.getDB('config').shards.findOne({_id: shardName}),
            "addShard for " + shardName + " reported failure, but shard shows up in config.shards");
    }
};

var st = new ShardingTest({
    shards: TestData.configShard ? 1 : 0,
    mongos: 1,
});

var configRS = new ReplSetTest({name: "configsvrReplicaSet", nodes: 1});
configRS.startSet({configsvr: '', storageEngine: 'wiredTiger'});
configRS.initiate();

jsTest.log("Adding a config server replica set without a specified shardName should fail.");
addShardRes = st.s.adminCommand({addShard: configRS.getURL()});
assertAddShardFailed(addShardRes);

jsTest.log(
    "Adding a config server replica set with a shardName that matches the set's name should fail.");
addShardRes = st.s.adminCommand({addShard: configRS.getURL(), name: configRS.name});
assertAddShardFailed(addShardRes, configRS.name);

jsTest.log("Adding a config server replica set even with a non-'config' shardName should fail.");
addShardRes = st.s.adminCommand({addShard: configRS.getURL(), name: "nonConfig"});
assertAddShardFailed(addShardRes, "nonConfig");

configRS.stopSet();

st.stop();
})();