mirror of https://github.com/mongodb/mongo
58 lines
1.6 KiB
JavaScript
58 lines
1.6 KiB
JavaScript
/*
|
|
* Tests the behavior of runtime constants $$IS_MR and $$JS_SCOPE.
|
|
* @tags: [
|
|
* requires_fcv_81,
|
|
* ]
|
|
*/
|
|
|
|
import "jstests/libs/query/sbe_assert_error_override.js";
|
|
|
|
import {FixtureHelpers} from "jstests/libs/fixture_helpers.js";
|
|
|
|
const coll = db.runtime_constants;
|
|
coll.drop();
|
|
|
|
assert.commandWorked(coll.insert({x: true}));
|
|
|
|
// Runtime constant $$IS_MR is unable to be retrieved by users.
|
|
assert.commandFailedWithCode(
|
|
db.runCommand({aggregate: coll.getName(), pipeline: [{$addFields: {testField: "$$IS_MR"}}], cursor: {}}),
|
|
[51144],
|
|
);
|
|
|
|
// Runtime constant $$JS_SCOPE is unable to be retrieved by users.
|
|
assert.commandFailedWithCode(
|
|
db.runCommand({aggregate: coll.getName(), pipeline: [{$addFields: {field: "$$JS_SCOPE"}}], cursor: {}}),
|
|
[51144],
|
|
);
|
|
|
|
// Tests that runtimeConstants can't be specified on a mongod if 'fromRouter' is false.
|
|
const rtc = {
|
|
localNow: new Date(),
|
|
clusterTime: new Timestamp(0, 0),
|
|
};
|
|
|
|
if (!FixtureHelpers.isMongos(db)) {
|
|
// RuntimeConstants is disallowed when 'fromRouter' is false.
|
|
assert.commandFailedWithCode(
|
|
db.runCommand({
|
|
aggregate: coll.getName(),
|
|
pipeline: [{$project: {_id: 0}}],
|
|
cursor: {},
|
|
runtimeConstants: rtc,
|
|
fromRouter: false,
|
|
}),
|
|
463840,
|
|
);
|
|
// RuntimeConstants is allowed when 'fromRouter' is true.
|
|
assert.commandWorked(
|
|
db.runCommand({
|
|
aggregate: coll.getName(),
|
|
pipeline: [{$project: {_id: 0}}],
|
|
cursor: {},
|
|
runtimeConstants: rtc,
|
|
fromRouter: true,
|
|
}),
|
|
);
|
|
}
|