Files
mongo/jstests/core/count10.js
Max Hirschhorn 9ad8d6335f SERVER-40076 Tag JS tests with reason they're unable to run in Atlas.
There are likely more JavaScript tests which have been added since
r3.6.9 that still need to be tagged.

(cherry picked from commit 05ec08fa62)
2019-03-11 18:17:29 -04:00

68 lines
2.6 KiB
JavaScript

// Test that interrupting a count returns an error code.
//
// @tags: [
// # This test attempts to perform a count command and find it using the currentOp command. The
// # former operation may be routed to a secondary in the replica set, whereas the latter must be
// # routed to the primary.
// assumes_read_preference_unchanged,
// does_not_support_stepdowns,
// # Uses $where operator
// requires_scripting,
// uses_multiple_connections,
// ]
t = db.count10;
t.drop();
for (i = 0; i < 100; i++) {
t.save({x: i});
}
// Start a parallel shell which repeatedly checks for a count
// query using db.currentOp(). As soon as the op is found,
// kill it via db.killOp().
s = startParallelShell('assert.soon(function() {' +
' current = db.currentOp({"ns": db.count10.getFullName(), ' +
' "command.count": db.count10.getName()}); ' +
// Check that we found the count op. If not, return false so
// that assert.soon will retry.
' assert("inprog" in current); ' +
' if (current.inprog.length === 0) { ' +
' jsTest.log("count10.js: did not find count op, retrying"); ' +
' printjson(current); ' +
' return false; ' +
' } ' +
' countOp = current.inprog[0]; ' +
' if (!countOp) { ' +
' jsTest.log("count10.js: did not find count op, retrying"); ' +
' printjson(current); ' +
' return false; ' +
' } ' +
// Found the count op. Try to kill it.
' jsTest.log("count10.js: found count op:"); ' +
' printjson(current); ' +
' printjson(db.killOp(countOp.opid)); ' +
' return true; ' +
'}, "count10.js: could not find count op after retrying, gave up");');
function getKilledCount() {
try {
db.count10.find("sleep(1000)").count();
jsTest.log("count10.js: count op completed without being killed");
} catch (e) {
return e;
}
}
var res = getKilledCount();
jsTest.log("count10.js: killed count output start");
printjson(res);
jsTest.log("count10.js: killed count output end");
assert(res);
assert(res.message.match(/count failed/) !== null);
assert(res.message.match(/\"code\"/) !== null);
s();