diff options
Diffstat (limited to 'jstests/loadserverscripts.js')
-rw-r--r-- | jstests/loadserverscripts.js | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/jstests/loadserverscripts.js b/jstests/loadserverscripts.js new file mode 100644 index 00000000000..792e1c9228a --- /dev/null +++ b/jstests/loadserverscripts.js @@ -0,0 +1,57 @@ + +// 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({}); +delete myfunc; +delete myfunc2; + +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"; } } ); +x = testdb.system.js.count(); +assert.eq( x, 1, "Should now be one function in the system.js collection"); + +// Load that function +testdb.loadServerScripts(); +assert.eq( typeof myfunc, "function", "Checking that myfunc() loaded correctly" ); + +// 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"; } } );' + + 'db.getLastError();' + ); +// wait for results +coproc(); + +// Make sure the collection's been updated +x = testdb.system.js.count(); +assert.eq( x, 2, "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()"); + |