summaryrefslogtreecommitdiff
path: root/jstests/parallel
diff options
context:
space:
mode:
authorAntonin Kral <a.kral@bobek.cz>2010-01-31 08:32:52 +0100
committerAntonin Kral <a.kral@bobek.cz>2010-01-31 08:32:52 +0100
commit4eefaf421bfeddf040d96a3dafb12e09673423d7 (patch)
treecb2e5ccc7f98158894f977ff131949da36673591 /jstests/parallel
downloadmongodb-4eefaf421bfeddf040d96a3dafb12e09673423d7.tar.gz
Imported Upstream version 1.3.1
Diffstat (limited to 'jstests/parallel')
-rw-r--r--jstests/parallel/allops.js40
-rw-r--r--jstests/parallel/basic.js11
-rw-r--r--jstests/parallel/basicPlus.js26
-rw-r--r--jstests/parallel/insert.js24
-rw-r--r--jstests/parallel/manyclients.js26
-rw-r--r--jstests/parallel/shellfork.js33
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