summaryrefslogtreecommitdiff
path: root/jstests/parallel
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/parallel')
-rw-r--r--jstests/parallel/checkMultiThread.js13
-rw-r--r--jstests/parallel/del.js37
-rw-r--r--jstests/parallel/repl.js13
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" );