summaryrefslogtreecommitdiff
path: root/jstests/loadserverscripts.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/loadserverscripts.js')
-rw-r--r--jstests/loadserverscripts.js57
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()");
+