summaryrefslogtreecommitdiff
path: root/jstests/slow2/replsets_prefetch_stress.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/slow2/replsets_prefetch_stress.js')
-rw-r--r--jstests/slow2/replsets_prefetch_stress.js37
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() );
+ } );