mongo/jstests/core/shell/shellstartparallel.js

59 lines
1.6 KiB
JavaScript

// @tags: [
// requires_fastcount,
// uses_multiple_connections,
// uses_parallel_shell,
// ]
import {funWithArgs} from "jstests/libs/parallel_shell_helpers.js";
// verify that join works
db.sps.drop();
let awaitShell = startParallelShell("sleep(1000); db.sps.insert({x:1});");
awaitShell();
assert.eq(1, db.sps.count(), "join problem?");
// test with a throw
awaitShell = startParallelShell("db.sps.insert({x:1}); throw Error('intentionally_uncaught');");
let exitCode = awaitShell({checkExitSuccess: false});
assert.neq(0, exitCode, "expected shell to exit abnormally due to an uncaught exception");
assert.eq(2, db.sps.count(), "join2 problem?");
// test throwing with checking exit success
function func() {
throw Error("intentional_throw_to_test_assert_throws");
}
assert.throws(() => {
const awaitShell = startParallelShell(func);
awaitShell();
});
assert.throws(() => {
const awaitShell = startParallelShell(funWithArgs(func, true));
awaitShell();
});
async function asyncFunc() {
throw Error("intentional_throw_to_test_assert_throws");
}
assert.throws(() => {
const awaitShell = startParallelShell(asyncFunc);
awaitShell();
});
assert.throws(() => {
const awaitShell = startParallelShell(funWithArgs(asyncFunc, true));
awaitShell();
});
const asyncLambda = async () => {
throw Error("intentional_throw_to_test_assert_throws");
};
assert.throws(() => {
const awaitShell = startParallelShell(asyncLambda);
awaitShell();
});
assert.throws(() => {
const awaitShell = startParallelShell(funWithArgs(asyncLambda, true));
awaitShell();
});
print("shellstartparallel.js SUCCESS");