github.com/lianghucheng/zrddz@v0.0.0-20200923083010-c71f680932e2/src/gopkg.in/mgo.v2/harness/mongojs/wait.js (about)

     1  // We know the master of the first set (pri=1), but not of the second.
     2  var settings = {}
     3  var rs1cfg = {_id: "rs1",
     4                members: [{_id: 1, host: "127.0.0.1:40011", priority: 1},
     5                          {_id: 2, host: "127.0.0.1:40012", priority: 0},
     6                          {_id: 3, host: "127.0.0.1:40013", priority: 0}]}
     7  var rs2cfg = {_id: "rs2",
     8                members: [{_id: 1, host: "127.0.0.1:40021", priority: 1},
     9                          {_id: 2, host: "127.0.0.1:40022", priority: 1},
    10                          {_id: 3, host: "127.0.0.1:40023", priority: 0}]}
    11  var rs3cfg = {_id: "rs3",
    12                members: [{_id: 1, host: "127.0.0.1:40031", priority: 1},
    13                          {_id: 2, host: "127.0.0.1:40032", priority: 1},
    14                          {_id: 3, host: "127.0.0.1:40033", priority: 1}],
    15                settings: settings}
    16  
    17  for (var i = 0; i != 60; i++) {
    18  	try {
    19  		rs1a = new Mongo("127.0.0.1:40011").getDB("admin")
    20  		rs2a = new Mongo("127.0.0.1:40021").getDB("admin")
    21  		rs3a = new Mongo("127.0.0.1:40031").getDB("admin")
    22  		rs3a.auth("root", "rapadura")
    23  		db1 = new Mongo("127.0.0.1:40001").getDB("admin")
    24  		db2 = new Mongo("127.0.0.1:40002").getDB("admin")
    25  		break
    26  	} catch(err) {
    27  		print("Can't connect yet...")
    28  	}
    29  	sleep(1000)
    30  }
    31  
    32  function countHealthy(rs) {
    33      var status = rs.runCommand({replSetGetStatus: 1})
    34      var count = 0
    35      var primary = 0
    36      if (typeof status.members != "undefined") {
    37          for (var i = 0; i != status.members.length; i++) {
    38              var m = status.members[i]
    39              if (m.health == 1 && (m.state == 1 || m.state == 2)) {
    40                  count += 1
    41                  if (m.state == 1) {
    42                      primary = 1
    43                  }
    44              }
    45          }
    46      }
    47      if (primary == 0) {
    48  	    count = 0
    49      }
    50      return count
    51  }
    52  
    53  var totalRSMembers = rs1cfg.members.length + rs2cfg.members.length + rs3cfg.members.length
    54  
    55  for (var i = 0; i != 90; i++) {
    56      var count = countHealthy(rs1a) + countHealthy(rs2a) + countHealthy(rs3a)
    57      print("Replica sets have", count, "healthy nodes.")
    58      if (count == totalRSMembers) {
    59          quit(0)
    60      }
    61      sleep(1000)
    62  }
    63  
    64  print("Replica sets didn't sync up properly.")
    65  quit(12)
    66  
    67  // vim:ts=4:sw=4:et