diff options
Diffstat (limited to 'jstests/parallel')
| -rw-r--r-- | jstests/parallel/checkMultiThread.js | 13 | ||||
| -rw-r--r-- | jstests/parallel/del.js | 37 | ||||
| -rw-r--r-- | jstests/parallel/repl.js | 13 |
3 files changed, 40 insertions, 23 deletions
diff --git a/jstests/parallel/checkMultiThread.js b/jstests/parallel/checkMultiThread.js new file mode 100644 index 00000000000..d43b1ae5066 --- /dev/null +++ b/jstests/parallel/checkMultiThread.js @@ -0,0 +1,13 @@ + +var start = new Date(); +print("start: " + start); +var func = function() { db.runCommand({$eval: "sleep(10000);", nolock: true}); return new Date();} +a = new ScopedThread( func ); +b = new ScopedThread( func ); +a.start(); +b.start(); +a.join(); +b.join(); +assert.lt( a.returnData().getMilliseconds(), start.getMilliseconds() + 15000, "A took more than 15s" ); +assert.lt( b.returnData().getMilliseconds(), start.getMilliseconds() + 15000, "B took more than 15s" ); + diff --git a/jstests/parallel/del.js b/jstests/parallel/del.js index c6eb5002724..fd4a3f13fe1 100644 --- a/jstests/parallel/del.js +++ b/jstests/parallel/del.js @@ -1,19 +1,20 @@ - N = 1000; - HOST = db.getMongo().host -DONE = false; +a = db.getSisterDB( "fooa" ) +b = db.getSisterDB( "foob" ) +a.dropDatabase(); +b.dropDatabase(); -function del1( dbname ){ - var m = new Mongo( HOST ) +function del1( dbname, host, max ){ + var m = new Mongo( host ) var db = m.getDB( "foo" + dbname ); var t = db.del - while ( ! DONE ){ + while ( !db.del_parallel.count() ){ var r = Math.random(); - var n = Math.floor( Math.random() * N ); + var n = Math.floor( Math.random() * max ); if ( r < .9 ){ t.insert( { x : n } ) } @@ -31,14 +32,14 @@ function del1( dbname ){ } } -function del2( dbname ){ - var m = new Mongo( HOST ) +function del2( dbname, host, max ){ + var m = new Mongo( host ) var db = m.getDB( "foo" + dbname ); var t = db.del - while ( ! DONE ){ + while ( !db.del_parallel.count() ){ var r = Math.random(); - var n = Math.floor( Math.random() * N ); + var n = Math.floor( Math.random() * max ); var s = Math.random() > .5 ? 1 : -1; if ( r < .5 ){ @@ -55,17 +56,14 @@ function del2( dbname ){ all = [] -all.push( fork( del1 , "a" ) ) -all.push( fork( del2 , "a" ) ) -all.push( fork( del1 , "b" ) ) -all.push( fork( del2 , "b" ) ) +all.push( fork( del1 , "a", HOST, N ) ) +all.push( fork( del2 , "a", HOST, N ) ) +all.push( fork( del1 , "b", HOST, N ) ) +all.push( fork( del2 , "b", HOST, N ) ) for ( i=0; i<all.length; i++ ) all[i].start() -a = db.getSisterDB( "fooa" ) -b = db.getSisterDB( "foob" ) - for ( i=0; i<10; i++ ){ sleep( 2000 ) print( "dropping" ) @@ -73,7 +71,8 @@ for ( i=0; i<10; i++ ){ b.dropDatabase(); } -DONE = true; +a.del_parallel.save({done: 1}) +b.del_parallel.save({done: 1}) all[0].join() diff --git a/jstests/parallel/repl.js b/jstests/parallel/repl.js index 919b0d795ac..8cc8dcdbb9f 100644 --- a/jstests/parallel/repl.js +++ b/jstests/parallel/repl.js @@ -7,14 +7,16 @@ rt = new ReplTest( baseName ); m = rt.start( true ); s = rt.start( false ); +// tests need to run against master server db = m.getDB( "test" ); +host = db.getMongo().host; Random.setRandomSeed(); t = new ParallelTester(); for( id = 0; id < 10; ++id ) { - var g = new EventGenerator( id, baseName, Random.randInt( 20 ) ); + var g = new EventGenerator( id, baseName, Random.randInt( 20 ), host ); for( var j = 0; j < 1000; ++j ) { var op = Random.randInt( 3 ); switch( op ) { @@ -34,7 +36,7 @@ for( id = 0; id < 10; ++id ) { t.add( EventGenerator.dispatch, g.getEvents() ); } -var g = new EventGenerator( id, baseName, Random.randInt( 5 ) ); +var g = new EventGenerator( id, baseName, Random.randInt( 5 ), host ); for( var j = 1000; j < 3000; ++j ) { g.addCheckCount( j - 1000, { _id: {$gte:1000} }, j % 100 == 0, j % 500 == 0 ); g.addInsert( {_id:j} ); @@ -43,8 +45,11 @@ t.add( EventGenerator.dispatch, g.getEvents() ); t.run( "one or more tests failed" ); -assert( m.getDB( "test" )[ baseName ].validate().valid ); -assert( s.getDB( "test" )[ baseName ].validate().valid ); +masterValidation = m.getDB( "test" )[ baseName ].validate(); +assert( masterValidation.valid, tojson( masterValidation ) ); + +slaveValidation = s.getDB( "test" )[ baseName ].validate(); +assert( slaveValidation.valid, tojson( slaveValidation ) ); assert.soon( function() { mh = m.getDB( "test" ).runCommand( "dbhash" ); |
