Reverts to emulating the write concern to work around how prior to
MongoDB 3.4, operations that did writes didn't necessarily accept a
writeConcern object.
Also limits the usage of replica set connection strings to only the
write_concern_majority_passthrough.yml test suite to work around the
lack of complete support of MongoURI parsing in versions of the mongo
shell prior to MongoDB 3.4.
(cherry picked from commit 264d971842)
66 lines
2.1 KiB
JavaScript
66 lines
2.1 KiB
JavaScript
// Test db.loadServerScripts()
|
|
//
|
|
// @tags: [requires_parallel_shell]
|
|
|
|
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()");
|