From a361b49376426b95d04775ecf81d9b0a86d8f64c Mon Sep 17 00:00:00 2001 From: Eliot Horowitz Date: Mon, 26 Oct 2009 14:32:20 -0400 Subject: [PATCH] a basic repl test that just ensures master/salve are the same - multi update test as well SERVER-268 --- jstests/repl/basic1.js | 59 ++++++++++++++++++++++++++++++++++++++++++ shell/servers.js | 18 ++++++++----- 2 files changed, 70 insertions(+), 7 deletions(-) create mode 100644 jstests/repl/basic1.js diff --git a/jstests/repl/basic1.js b/jstests/repl/basic1.js new file mode 100644 index 0000000000000..9668a9135c9e1 --- /dev/null +++ b/jstests/repl/basic1.js @@ -0,0 +1,59 @@ + +// test repl basics +// data on master/slave is the same + +var rt = new ReplTest( "basic1" ); + +m = rt.start( true ); +s = rt.start( false ); + +function hash( db ){ + var s = ""; + var a = db.getCollectionNames(); + a = a.sort(); + a.forEach( + function(cn){ + var c = db.getCollection( cn ); + s += cn + "\t" + c.find().count() + "\n"; + c.find().sort( { _id : 1 } ).forEach( + function(o){ + s += tojson( o , "" , true ) + "\n"; + } + ); + } + ); + return s; +} + +am = m.getDB( "foo" ); +as = s.getDB( "foo" ); + +function check( note ){ + var start = new Date(); + var x,y; + while ( (new Date()).getTime() - start.getTime() < 30000 ){ + x = hash( am ); + y = hash( as ); + if ( x == y ) + return; + sleep( 200 ); + } + assert.eq( x , y , note ); +} + +am.a.save( { x : 1 } ); +check( "A" ); + +am.a.save( { x : 5 } ); + +am.a.update( {} , { $inc : { x : 1 } } ); +check( "B" ); + +am.a.update( {} , { $inc : { x : 1 } } , false , true ); +check( "C" ); + +rt.stop(); + + + + diff --git a/shell/servers.js b/shell/servers.js index 96ff401bcf2b8..406addb8f761d 100644 --- a/shell/servers.js +++ b/shell/servers.js @@ -461,6 +461,12 @@ ReplTest.prototype.getPath = function( master ){ ReplTest.prototype.getOptions = function( master , extra , putBinaryFirst ){ + + if ( ! extra ) + extra = {}; + + if ( ! extra.oplogSize ) + extra.oplogSize = 10; var a = [] if ( putBinaryFirst ) @@ -483,13 +489,11 @@ ReplTest.prototype.getOptions = function( master , extra , putBinaryFirst ){ a.push( "127.0.0.1:" + this.ports[0] ); } - if ( extra ){ - for ( var k in extra ){ - var v = extra[k]; - a.push( "--" + k ); - if ( v != null ) - a.push( v ); - } + for ( var k in extra ){ + var v = extra[k]; + a.push( "--" + k ); + if ( v != null ) + a.push( v ); } return a;