1
//var settings = {heartbeatSleep: 0.05, heartbeatTimeout: 0.5}
4
// We know the master of the first set (pri=1), but not of the second.
5
var rs1cfg = {_id: "rs1",
6
members: [{_id: 1, host: "127.0.0.1:40011", priority: 1, tags: {rs1: "a"}},
7
{_id: 2, host: "127.0.0.1:40012", priority: 0, tags: {rs1: "b"}},
8
{_id: 3, host: "127.0.0.1:40013", priority: 0, tags: {rs1: "c"}}],
10
var rs2cfg = {_id: "rs2",
11
members: [{_id: 1, host: "127.0.0.1:40021", priority: 1, tags: {rs2: "a"}},
12
{_id: 2, host: "127.0.0.1:40022", priority: 1, tags: {rs2: "b"}},
13
{_id: 3, host: "127.0.0.1:40023", priority: 1, tags: {rs2: "c"}}],
15
var rs3cfg = {_id: "rs3",
16
members: [{_id: 1, host: "127.0.0.1:40031", priority: 1, tags: {rs3: "a"}},
17
{_id: 2, host: "127.0.0.1:40032", priority: 1, tags: {rs3: "b"}},
18
{_id: 3, host: "127.0.0.1:40033", priority: 1, tags: {rs3: "c"}}],
21
for (var i = 0; i != 60; i++) {
23
db1 = new Mongo("127.0.0.1:40001").getDB("admin")
24
db2 = new Mongo("127.0.0.1:40002").getDB("admin")
25
rs1a = new Mongo("127.0.0.1:40011").getDB("admin")
26
rs2a = new Mongo("127.0.0.1:40021").getDB("admin")
27
rs3a = new Mongo("127.0.0.1:40031").getDB("admin")
30
print("Can't connect yet...")
36
return Boolean(db1.serverBuildInfo().OpenSSLVersion)
39
rs1a.runCommand({replSetInitiate: rs1cfg})
40
rs2a.runCommand({replSetInitiate: rs2cfg})
41
rs3a.runCommand({replSetInitiate: rs3cfg})
43
function configShards() {
44
cfg1 = new Mongo("127.0.0.1:40201").getDB("admin")
45
cfg1.runCommand({addshard: "127.0.0.1:40001"})
46
cfg1.runCommand({addshard: "rs1/127.0.0.1:40011"})
48
cfg2 = new Mongo("127.0.0.1:40202").getDB("admin")
49
cfg2.runCommand({addshard: "rs2/127.0.0.1:40021"})
51
cfg3 = new Mongo("127.0.0.1:40203").getDB("admin")
52
cfg3.runCommand({addshard: "rs3/127.0.0.1:40031"})
55
function configAuth() {
56
var addrs = ["127.0.0.1:40002", "127.0.0.1:40203", "127.0.0.1:40031"]
58
addrs.push("127.0.0.1:40003")
60
for (var i in addrs) {
61
print("Configuring auth for", addrs[i])
62
var db = new Mongo(addrs[i]).getDB("admin")
63
var v = db.serverBuildInfo().versionArray
66
db.addUser("root", "rapadura")
69
db.createUser({user: "root", pwd: "rapadura", roles: ["root"]})
71
// 3.2 consistently fails replication of creds on 40031 (config server)
72
print("createUser command returned an error: " + err)
73
if (String(err).indexOf("timed out") >= 0) {
78
for (var i = 0; i < 60; i++) {
79
var ok = db.auth("root", "rapadura")
80
if (ok || !timedOut) {
86
db.createUser({user: "reader", pwd: "rapadura", roles: ["readAnyDatabase"]})
87
} else if (v >= [2, 4]) {
88
db.addUser({user: "reader", pwd: "rapadura", roles: ["readAnyDatabase"]})
90
db.addUser("reader", "rapadura", true)
95
function countHealthy(rs) {
96
var status = rs.runCommand({replSetGetStatus: 1})
99
if (typeof status.members != "undefined") {
100
for (var i = 0; i != status.members.length; i++) {
101
var m = status.members[i]
102
if (m.health == 1 && (m.state == 1 || m.state == 2)) {
116
var totalRSMembers = rs1cfg.members.length + rs2cfg.members.length + rs3cfg.members.length
118
for (var i = 0; i != 60; i++) {
119
var count = countHealthy(rs1a) + countHealthy(rs2a) + countHealthy(rs3a)
120
print("Replica sets have", count, "healthy nodes.")
121
if (count == totalRSMembers) {
129
print("Replica sets didn't sync up properly.")