summaryrefslogtreecommitdiff
path: root/jstests/sharding/move_primary_basic.js
blob: 17b5b694ffb1511df8188fcefd505d4053a80d9a (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
49
50
51
52
53
54
55
56
57
58
//
// Basic tests for movePrimary.
//

(function() {
'use strict';

var st = new ShardingTest({mongos:1, shards:2});

var mongos = st.s0;

var kDbName = 'db';

var shards = mongos.getCollection('config.shards').find().toArray();

var shard0 = shards[0]._id;
var shard1 = shards[1]._id;

assert.commandWorked(mongos.adminCommand({enableSharding : kDbName}));

// Can run only on mongos.
assert.commandFailedWithCode(st.d0.getDB('admin').runCommand({movePrimary : kDbName, to: shard0}),
                             ErrorCodes.CommandNotFound);

// Can run only against the admin database. 
assert.commandFailedWithCode(mongos.getDB('test').runCommand({movePrimary : kDbName, to: shard0}),
                             ErrorCodes.Unauthorized);

// Can't movePrimary for 'config' database.
assert.commandFailed(mongos.adminCommand({movePrimary : 'config', to: shard0}));

// Can't movePrimary for 'local' database.
assert.commandFailed(mongos.adminCommand({movePrimary : 'local', to: shard0}));

// Can't movePrimary for 'admin' database.
assert.commandFailed(mongos.adminCommand({movePrimary : 'admin', to: shard0}));

// Can't movePrimary for invalid db name.
assert.commandFailed(mongos.adminCommand({movePrimary : 'a.b', to: shard0}));
assert.commandFailed(mongos.adminCommand({movePrimary : '', to: shard0}));

// Fail if shard does not exist or empty.
assert.commandFailed(mongos.adminCommand({movePrimary : kDbName, to: 'Unknown'}));
assert.commandFailed(mongos.adminCommand({movePrimary : kDbName, to: ''}));
assert.commandFailed(mongos.adminCommand({movePrimary : kDbName}));

// Fail if moveShard to already primary and verify metadata changes.
assert.eq(shard0, mongos.getDB('config').databases.findOne({_id: kDbName}).primary); 

assert.commandWorked(mongos.adminCommand({movePrimary : kDbName, to: shard1}));
assert.eq(shard1, mongos.getDB('config').databases.findOne({_id: kDbName}).primary); 

assert.commandFailed(mongos.adminCommand({movePrimary : kDbName, to: shard1}));
assert.eq(shard1, mongos.getDB('config').databases.findOne({_id: kDbName}).primary); 

st.stop();

})()