diff options
Diffstat (limited to 'jstests/padding.js')
| -rw-r--r-- | jstests/padding.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/jstests/padding.js b/jstests/padding.js new file mode 100644 index 00000000000..9b2754e528a --- /dev/null +++ b/jstests/padding.js @@ -0,0 +1,61 @@ +p = db.getCollection("padding");
+p.drop();
+
+for (var i = 0; i < 1000; i++) {
+ p.insert({ x: 1, y: "aaaaaaaaaaaaaaa" });
+}
+
+assert(p.stats().paddingFactor == 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(p.stats().paddingFactor > 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(p.stats().paddingFactor < 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(ps > 1.7 && ps < 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 + "aaaaaaaaaaaaaaaa";
+ 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(p.stats().paddingFactor > ps + 0.02 , "now: " + p.stats().paddingFactor + " ps: " + ps );
+p.drop();
|
