Files
mongo/jstests/core/loadserverscripts.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

70 lines
2.2 KiB
JavaScript

// @tags: [
// requires_fastcount,
// requires_non_retryable_writes,
// uses_multiple_connections,
// ]
// Test db.loadServerScripts()
var testdb = db.getSisterDB("loadserverscripts");
jsTest.log("testing db.loadServerScripts()");
var x;
// assert._debug = true;
// clear out any data from old tests
testdb.system.js.remove({});
x = testdb.system.js.findOne();
assert.isnull(x, "Test for empty collection");
// User functions should not be defined yet
assert.eq(typeof myfunc, "undefined", "Checking that myfunc() is undefined");
assert.eq(typeof myfunc2, "undefined", "Checking that myfunc2() is undefined");
// Insert a function in the context of this process: make sure it's in the collection
testdb.system.js.insert({
_id: "myfunc",
"value": function() {
return "myfunc";
}
});
testdb.system.js.insert({_id: "mystring", "value": "var root = this;"});
testdb.system.js.insert({_id: "changeme", "value": false});
x = testdb.system.js.count();
assert.eq(x, 3, "Should now be one function in the system.js collection");
// Set a global variable that will be over-written
var changeme = true;
// Load that function
testdb.loadServerScripts();
assert.eq(typeof myfunc, "function", "Checking that myfunc() loaded correctly");
assert.eq(typeof mystring, "string", "Checking that mystring round-tripped correctly");
assert.eq(changeme, false, "Checking that global var was overwritten");
// Make sure it works
x = myfunc();
assert.eq(x, "myfunc", "Checking that myfunc() returns the correct value");
// Insert value into collection from another process
var coproc =
startParallelShell('db.getSisterDB("loadserverscripts").system.js.insert' +
' ( {_id: "myfunc2", "value": function(){ return "myfunc2"; } } );');
// wait for results
coproc();
// Make sure the collection's been updated
x = testdb.system.js.count();
assert.eq(x, 4, "Should now be two functions in the system.js collection");
// Load the new functions: test them as above
testdb.loadServerScripts();
assert.eq(typeof myfunc2, "function", "Checking that myfunc2() loaded correctly");
x = myfunc2();
assert.eq(x, "myfunc2", "Checking that myfunc2() returns the correct value");
jsTest.log("completed test of db.loadServerScripts()");