summaryrefslogtreecommitdiff
path: root/jstests/core/padding.js
diff options
context:
space:
mode:
authorSiyuan Zhou <siyuan.zhou@mongodb.com>2014-02-19 12:45:53 -0500
committerMatt Kangas <matt.kangas@mongodb.com>2014-03-03 22:54:10 -0500
commit3660343e0b4627d2fee4afb89b74d32644d16d18 (patch)
treeffa571e0b73ce56d73c2ae23f458f0db772ef782 /jstests/core/padding.js
parent9fae141a1f3fe652fa6002e47722c5ceb051cffb (diff)
downloadmongo-3660343e0b4627d2fee4afb89b74d32644d16d18.tar.gz
SERVER-12127 migrate js tests to jscore suite when not related to writes
Migrate js tests starting from j-z. Include SERVER-12920 Update use_power_of_2.js Signed-off-by: Matt Kangas <matt.kangas@mongodb.com>
Diffstat (limited to 'jstests/core/padding.js')
-rw-r--r--jstests/core/padding.js66
1 files changed, 66 insertions, 0 deletions
diff --git a/jstests/core/padding.js b/jstests/core/padding.js
new file mode 100644
index 00000000000..1872574d80f
--- /dev/null
+++ b/jstests/core/padding.js
@@ -0,0 +1,66 @@
+p = db.getCollection("padding");
+p.drop();
+
+// this test requires usePowerOf2Sizes to be off
+db.createCollection( p.getName(), { "usePowerOf2Sizes" : false } );
+assert.eq(0, p.stats().userFlags);
+
+for (var i = 0; i < 1000; i++) {
+ p.insert({ x: 1, y: "aaaaaaaaaaaaaaa" });
+}
+
+assert.eq(p.stats().paddingFactor, 1, "Padding Not 1");
+
+for (var i = 0; i < 1000; i++) {
+ var x = p.findOne();
+ x.y = x.y + "aaaaaaaaaaaaaaaa";
+ p.update({}, x);
+ if (i % 100 == 0)
+
+ print(p.stats().paddingFactor);
+}
+
+assert.gt(p.stats().paddingFactor, 1.9, "Padding not > 1.9");
+
+// this should make it go down
+for (var i = 0; i < 1000; i++) {
+ p.update({}, { $inc: { x: 1} });
+ if (i % 100 == 0)
+ print(p.stats().paddingFactor);
+}
+assert.lt(p.stats().paddingFactor, 1.7, "Padding not < 1.7");
+
+for (var i = 0; i < 1000; i++) {
+ if (i % 2 == 0) {
+ p.update({}, { $inc: { x: 1} });
+ }
+ else {
+ var x = p.findOne();
+ x.y = x.y + "aaaaaaaaaaaaaaaa";
+ p.update({}, x);
+ }
+ if( i % 100 == 0 )
+ print(p.stats().paddingFactor);
+}
+var ps = p.stats().paddingFactor;
+assert.gt(ps, 1.7, "Padding not greater than 1.7");
+assert.lt(ps, 1.9, "Padding not less than 1.9");
+
+// 50/50 inserts and nonfitting updates
+for (var i = 0; i < 1000; i++) {
+ if (i % 2 == 0) {
+ p.insert({});
+ }
+ else {
+ var x = p.findOne();
+ x.y = x.y + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
+ p.update({}, x);
+ }
+ if (i % 100 == 0)
+ print(p.stats().paddingFactor);
+}
+
+// should have trended somewhat higher over the above.
+// speed of increase would be higher with more indexes.
+assert.gt(p.stats().paddingFactor, ps + 0.02 , "padding factor not greater than value (+.02)");
+p.drop();