Files
mongo/jstests/sharding/group_slaveok.js
Kaloian Manassiev e2e4c75844 SERVER-21050 Continuous config stepdown logging changes
This commit is part of the overall change to enable continuous config
server stepdown and it includes improvements to logging and test
validation. It does not actually enable the stepdown thread.
2015-12-21 15:20:12 -05:00

64 lines
1.7 KiB
JavaScript

// Tests group using slaveOk
(function() {
'use strict';
var st = new ShardingTest({ name: "groupSlaveOk",
shards: 1,
mongos: 1,
other: { rs: true,
rs0: { nodes: 2 } } });
var rst = st._rs[0].test;
// Insert data into replica set
var conn = new Mongo(st.s.host);
conn.setLogLevel(3);
var coll = conn.getCollection("test.groupSlaveOk");
coll.drop();
var bulk = coll.initializeUnorderedBulkOp();
for(var i = 0; i < 300; i++) {
bulk.insert({ i: i % 10 });
}
assert.writeOK(bulk.execute());
// Wait for client to update itself and replication to finish
rst.awaitReplication();
var primary = rst.getPrimary();
var sec = rst.getSecondary();
// Data now inserted... stop the master, since only two in set, other will still be secondary
rst.stop(rst.getPrimary());
printjson(rst.status());
// Wait for the mongos to recognize the slave
ReplSetTest.awaitRSClientHosts(conn, sec, { ok: true, secondary: true });
// Need to check slaveOk=true first, since slaveOk=false will destroy conn in pool when
// master is down
conn.setSlaveOk();
// Should not throw exception, since slaveOk'd
assert.eq(10, coll.group({ key: { i: true } ,
reduce: function(obj, ctx) { ctx.count += 1 },
initial: { count: 0 } }).length)
try {
conn.setSlaveOk(false);
var res = coll.group({ key: { i: true },
reduce: function(obj, ctx) { ctx.count += 1 },
initial: { count: 0 } });
print("Should not reach here! Group result: " + tojson(res));
assert(false);
}
catch(e){
print("Non-slaveOk'd connection failed." + tojson(e));
}
st.stop();
})();