summaryrefslogtreecommitdiff
path: root/jstests/replsets/replset1.js
diff options
context:
space:
mode:
authorKyle Banker <kylebanker@gmail.com>2010-07-23 17:11:50 -0400
committerKyle Banker <kylebanker@gmail.com>2010-07-23 17:11:50 -0400
commit1ea00cd67704c6034bfbc8bca9dac687ac16dcc1 (patch)
tree83c82c910beeffcd91ebe6bd49b8757dfd756b7d /jstests/replsets/replset1.js
parentf6229557e8034b77fba6e644e5bfab9cc64eed52 (diff)
downloadmongo-1ea00cd67704c6034bfbc8bca9dac687ac16dcc1.tar.gz
Initial replica set test framework. See jstests/replsets/replset1.js for examples.
Diffstat (limited to 'jstests/replsets/replset1.js')
-rw-r--r--jstests/replsets/replset1.js57
1 files changed, 57 insertions, 0 deletions
diff --git a/jstests/replsets/replset1.js b/jstests/replsets/replset1.js
new file mode 100644
index 00000000000..ef8f43a4a98
--- /dev/null
+++ b/jstests/replsets/replset1.js
@@ -0,0 +1,57 @@
+
+doTest = function( signal ) {
+
+ // Replica set testing API
+ // Create a new replica set test. Specify set name, host, and the number of nodes you want.
+ var replTest = new ReplSetTest( {name: 'testSet', host: 'arete.local', nodes: 3} );
+
+ // call startSet() to start each mongod in the replica set
+ // this returns a list of nodes
+ var nodes = replTest.startSet();
+
+ // Call initiate() to send the replSetInitiate command
+ // This will wait for initiation
+ replTest.initiate();
+
+ // Call getMaster to return a reference to the node that's been
+ // elected master.
+ var master = replTest.getMaster();
+
+ // Calling getMaster also makes available the liveNodes structure,
+ // which looks like this:
+ // liveNodes = {master: masterNode,
+ // slaves: [slave1, slave2]
+ // }
+ printjson(replTest.liveNodes);
+
+ // Here's how you save something to master
+ master.getDB("foo").foo.save({a: 1000});
+
+ // This method will check the oplogs of the master
+ // and slaves in the set and wait until the change has replicated.
+ replTest.awaitReplication();
+
+ print("Node Ids");
+ print(replTest.getNodeId( master ))
+ print(replTest.getNodeId(replTest.liveNodes.slaves[0]));
+ print(replTest.getNodeId(replTest.liveNodes.slaves[1]));
+
+ // Here's how to stop the master node
+ var master_id = replTest.getNodeId( master );
+ replTest.stop( master_id );
+
+ sleep(10000);
+
+ // Here's how to restart it
+ replTest.start( master_id, {}, true );
+
+ // Now let's see who the new master is:
+ var new_master = replTest.getMaster();
+
+ // Is the new master the same as the old master?
+ var new_master_id = replTest.getNodeId( new_master );
+
+ assert( master_id != new_master_id );
+}
+
+doTest( 9 );