43 lines
1.3 KiB
JavaScript
43 lines
1.3 KiB
JavaScript
// SERVER-18198 check read pref is only applied when there is no $out stage
|
|
// in aggregate shell helper
|
|
(function() {
|
|
"use strict";
|
|
var t = db.server18198;
|
|
t.drop();
|
|
|
|
var mongo = db.getMongo();
|
|
|
|
try {
|
|
var commandsRan = [];
|
|
// hook in our patched mongo
|
|
var mockMongo = {
|
|
getSlaveOk: function() { return true; },
|
|
runCommand: function(db, cmd, opts) {
|
|
commandsRan.push({db: db, cmd: cmd, opts: opts});
|
|
return {ok: 1.0};
|
|
},
|
|
getReadPref: function() { return {mode: "secondaryPreferred"}; },
|
|
getReadPrefMode: function() { return "secondaryPreferred"; }
|
|
};
|
|
|
|
db._mongo = mockMongo;
|
|
|
|
// this query should not get a read pref
|
|
t.aggregate([{$sort: {"x" : 1}}, {$out: "foo"}]);
|
|
assert.eq(commandsRan.length, 1);
|
|
// check that it doesn't have a read preference
|
|
assert(!commandsRan[0].cmd.hasOwnProperty("$readPreference"));
|
|
|
|
commandsRan = [];
|
|
|
|
t.aggregate([{$sort: {"x" : 1}}]);
|
|
// check another command was run
|
|
assert.eq(commandsRan.length, 1);
|
|
// check that it has a read preference
|
|
assert(commandsRan[0].cmd.hasOwnProperty("$readPreference"));
|
|
}
|
|
finally {
|
|
db._mongo = mongo;
|
|
}
|
|
})();
|