diff options
author | Antonin Kral <a.kral@bobek.cz> | 2010-01-31 08:32:52 +0100 |
---|---|---|
committer | Antonin Kral <a.kral@bobek.cz> | 2010-01-31 08:32:52 +0100 |
commit | 4eefaf421bfeddf040d96a3dafb12e09673423d7 (patch) | |
tree | cb2e5ccc7f98158894f977ff131949da36673591 /jstests/parallel | |
download | mongodb-4eefaf421bfeddf040d96a3dafb12e09673423d7.tar.gz |
Imported Upstream version 1.3.1
Diffstat (limited to 'jstests/parallel')
-rw-r--r-- | jstests/parallel/allops.js | 40 | ||||
-rw-r--r-- | jstests/parallel/basic.js | 11 | ||||
-rw-r--r-- | jstests/parallel/basicPlus.js | 26 | ||||
-rw-r--r-- | jstests/parallel/insert.js | 24 | ||||
-rw-r--r-- | jstests/parallel/manyclients.js | 26 | ||||
-rw-r--r-- | jstests/parallel/shellfork.js | 33 |
6 files changed, 160 insertions, 0 deletions
diff --git a/jstests/parallel/allops.js b/jstests/parallel/allops.js new file mode 100644 index 0000000..7eb0cb2 --- /dev/null +++ b/jstests/parallel/allops.js @@ -0,0 +1,40 @@ +// test all operations in parallel + +f = db.jstests_parallel_allops; +f.drop(); + +Random.setRandomSeed(); + +t = new ParallelTester(); + +for( id = 0; id < 10; ++id ) { + var g = new EventGenerator( id, "jstests_parallel_allops", Random.randInt( 20 ) ); + for( var j = 0; j < 1000; ++j ) { + var op = Random.randInt( 3 ); + switch( op ) { + case 0: // insert + g.addInsert( { _id:Random.randInt( 1000 ) } ); + break; + case 1: // remove + g.addRemove( { _id:Random.randInt( 1000 ) } ); + break; + case 2: // update + g.addUpdate( {_id:{$lt:1000}}, { _id:Random.randInt( 1000 ) } ); + break; + default: + assert( false, "Invalid op code" ); + } + } + t.add( EventGenerator.dispatch, g.getEvents() ); +} + +var g = new EventGenerator( id, "jstests_parallel_allops", Random.randInt( 5 ) ); +for( var j = 1000; j < 3000; ++j ) { + g.addCheckCount( j - 1000, { _id: {$gte:1000} }, j % 100 == 0, j % 500 == 0 ); + g.addInsert( {_id:j} ); +} +t.add( EventGenerator.dispatch, g.getEvents() ); + +t.run( "one or more tests failed" ); + +assert( f.validate().valid ); diff --git a/jstests/parallel/basic.js b/jstests/parallel/basic.js new file mode 100644 index 0000000..9c10306 --- /dev/null +++ b/jstests/parallel/basic.js @@ -0,0 +1,11 @@ +// perform basic js tests in parallel + +Random.setRandomSeed(); + +var params = ParallelTester.createJstestsLists( 4 ); +var t = new ParallelTester(); +for( i in params ) { + t.add( ParallelTester.fileTester, params[ i ] ); +} + +t.run( "one or more tests failed", true ); diff --git a/jstests/parallel/basicPlus.js b/jstests/parallel/basicPlus.js new file mode 100644 index 0000000..d6f9a4d --- /dev/null +++ b/jstests/parallel/basicPlus.js @@ -0,0 +1,26 @@ +// perform basic js tests in parallel & some other tasks as well + +var c = db.jstests_parallel_basicPlus; +c.drop(); + +Random.setRandomSeed(); + +var params = ParallelTester.createJstestsLists( 4 ); +var t = new ParallelTester(); +for( i in params ) { + t.add( ParallelTester.fileTester, params[ i ] ); +} + +for( var i = 4; i < 8; ++i ) { + var g = new EventGenerator( i, "jstests_parallel_basicPlus", Random.randInt( 20 ) ); + for( var j = ( i - 4 ) * 3000; j < ( i - 3 ) * 3000; ++j ) { + var expected = j - ( ( i - 4 ) * 3000 ); + g.addCheckCount( expected, {_id:{$gte:((i-4)*3000),$lt:((i-3)*3000)}}, expected % 1000 == 0, expected % 500 == 0 ); + g.addInsert( {_id:j} ); + } + t.add( EventGenerator.dispatch, g.getEvents() ); +} + +t.run( "one or more tests failed", true ); + +assert( c.validate().valid, "validate failed" );
\ No newline at end of file diff --git a/jstests/parallel/insert.js b/jstests/parallel/insert.js new file mode 100644 index 0000000..fc1c750 --- /dev/null +++ b/jstests/parallel/insert.js @@ -0,0 +1,24 @@ +// perform inserts in parallel from several clients + +f = db.jstests_parallel_insert; +f.drop(); +f.ensureIndex( {who:1} ); + +Random.setRandomSeed(); + +t = new ParallelTester(); + +for( id = 0; id < 10; ++id ) { + var g = new EventGenerator( id, "jstests_parallel_insert", Random.randInt( 20 ) ); + for( j = 0; j < 1000; ++j ) { + if ( j % 50 == 0 ) { + g.addCheckCount( j, {who:id} ); + } + g.addInsert( { i:j, who:id } ); + } + t.add( EventGenerator.dispatch, g.getEvents() ); +} + +t.run( "one or more tests failed" ); + +assert( f.validate().valid ); diff --git a/jstests/parallel/manyclients.js b/jstests/parallel/manyclients.js new file mode 100644 index 0000000..14cdec5 --- /dev/null +++ b/jstests/parallel/manyclients.js @@ -0,0 +1,26 @@ +// perform inserts in parallel from a large number of clients + +f = db.jstests_parallel_manyclients; +f.drop(); +f.ensureIndex( {who:1} ); + +Random.setRandomSeed(); + +t = new ParallelTester(); + +for( id = 0; id < 200; ++id ) { + var g = new EventGenerator( id, "jstests_parallel_manyclients", Random.randInt( 20 ) ); + for( j = 0; j < 1000; ++j ) { + if ( j % 50 == 0 ) { + g.addCheckCount( j, {who:id}, true ); + } + g.addInsert( { i:j, who:id } ); + } + t.add( EventGenerator.dispatch, g.getEvents() ); +} + +print( "done preparing test" ); + +t.run( "one or more tests failed" ); + +assert( f.validate().valid ); diff --git a/jstests/parallel/shellfork.js b/jstests/parallel/shellfork.js new file mode 100644 index 0000000..20a1d3d --- /dev/null +++ b/jstests/parallel/shellfork.js @@ -0,0 +1,33 @@ +a = fork( function( a, b ) { return a / b; }, 10, 2 ); +a.start(); +b = fork( function( a, b, c ) { return a + b + c; }, 18, " is a ", "multiple of 3" ); +makeFunny = function( text ) { + return text + " ha ha!"; +} +c = fork( makeFunny, "paisley" ); +c.start(); +b.start(); +b.join(); +assert.eq( 5, a.returnData() ); +assert.eq( "18 is a multiple of 3", b.returnData() ); +assert.eq( "paisley ha ha!", c.returnData() ); + +z = fork( function( a ) { + var y = fork( function( a ) { + return a + 1; }, 5 ); + y.start(); + return y.returnData() + a; + }, 1 ); +z.start(); +assert.eq( 7, z.returnData() ); + + +t = 1; +z = new ScopedThread( function() { + assert( typeof( t ) == "undefined", "t not undefined" ); + t = 5; + return t; + } ); +z.start(); +assert.eq( 5, z.returnData() ); +assert.eq( 1, t );
\ No newline at end of file |