diff options
Diffstat (limited to 'jstests/slow2/replsets_prefetch_stress.js')
-rw-r--r-- | jstests/slow2/replsets_prefetch_stress.js | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/jstests/slow2/replsets_prefetch_stress.js b/jstests/slow2/replsets_prefetch_stress.js new file mode 100644 index 00000000000..dcd523dd3a4 --- /dev/null +++ b/jstests/slow2/replsets_prefetch_stress.js @@ -0,0 +1,37 @@ +// Replication prefetching stress test. Insert many documents, each with a large number of multikey +// values on the same index. All multikey keys will be generated, but only the first will be +// prefetched from the index. + +var replTest = new ReplSetTest( { name:'testSet', nodes:3 } ); +var nodes = replTest.startSet(); +replTest.initiate(); +var master = replTest.getMaster(); +c = master.getDB( 'd' )[ 'c' ]; + +c.insert( { _id:0 } ); +master.getDB( 'd' ).getLastError(); +replTest.awaitReplication(); + +// Create a:1 index. +c.ensureIndex( { a:1 } ); + +// Create an array of multikey values. +multikeyValues = []; +for( i = 0; i < 10000; ++i ) { + multikeyValues.push( i ); +} + +// Insert documents with multikey values. +for( i = 0; i < 1000; ++i ) { + c.insert( { a:multikeyValues } ); +} +master.getDB( 'd' ).getLastError(); +replTest.awaitReplication(300000); + +// Check document counts on all nodes. On error a node might go down or fail to sync all data, see +// SERVER-6538. +assert.eq( 1001, c.count() ); +nodes.forEach( function( node ) { + node.setSlaveOk(); + assert.eq( 1001, node.getDB( 'd' )[ 'c' ].count() ); + } ); |