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)
70 lines
2.2 KiB
JavaScript
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()");
|