summaryrefslogtreecommitdiff
path: root/jstests/sortb.js
diff options
context:
space:
mode:
authorAaron <aaron@10gen.com>2012-01-23 14:35:37 -0800
committerAaron <aaron@10gen.com>2012-01-23 14:35:45 -0800
commit345863cc87bfc941b28fd1a4b7a978e390d3c8f2 (patch)
tree3926d1df05c781cf37618e47bafcedf733d52c8b /jstests/sortb.js
parent06cf3493ab99e4482f5bf0f3b780f237b96dc16d (diff)
downloadmongo-345863cc87bfc941b28fd1a4b7a978e390d3c8f2.tar.gz
SERVER-4716 keep track of memory usage running total in scan and order
Diffstat (limited to 'jstests/sortb.js')
-rw-r--r--jstests/sortb.js26
1 files changed, 26 insertions, 0 deletions
diff --git a/jstests/sortb.js b/jstests/sortb.js
new file mode 100644
index 00000000000..8f76a05bd47
--- /dev/null
+++ b/jstests/sortb.js
@@ -0,0 +1,26 @@
+// Test that the in memory sort capacity limit is checked for all "top N" sort candidates.
+// SERVER-4716
+
+t = db.jstests_sortb;
+t.drop();
+
+t.ensureIndex({b:1});
+
+for( i = 0; i < 100; ++i ) {
+ t.save( {a:i,b:i} );
+}
+
+// These large documents will not be part of the initial set of "top 100" matches, and they will
+// not be part of the final set of "top 100" matches returned to the client. However, they are an
+// intermediate set of "top 100" matches and should trigger an in memory sort capacity exception.
+big = new Array( 1024 * 1024 ).toString();
+for( i = 100; i < 200; ++i ) {
+ t.save( {a:i,b:i,big:big} );
+}
+
+for( i = 200; i < 300; ++i ) {
+ t.save( {a:i,b:i} );
+}
+
+assert.throws( function() { t.find().sort( {a:-1} ).hint( {b:1} ).limit( 100 ).itcount(); } );
+assert.throws( function() { t.find().sort( {a:-1} ).hint( {b:1} ).showDiskLoc().limit( 100 ).itcount(); } );