// perform basic js tests in parallel & some other tasks as well
load('jstests/libs/parallelTester.js')

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" );
db.getCollectionNames().forEach( function( x ) {
                                v = db[ x ].validate();
                                assert( v.valid, "validate failed for " + x + " with " + tojson( v ) );
                                } );