summaryrefslogtreecommitdiff
path: root/jstests/core/ts1.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/core/ts1.js')
-rw-r--r--jstests/core/ts1.js82
1 files changed, 45 insertions, 37 deletions
diff --git a/jstests/core/ts1.js b/jstests/core/ts1.js
index 342ff3215d7..79a2db95dca 100644
--- a/jstests/core/ts1.js
+++ b/jstests/core/ts1.js
@@ -1,37 +1,45 @@
-t = db.ts1;
-t.drop();
-
-N = 20;
-
-for (i = 0; i < N; i++) {
- t.insert({_id: i, x: new Timestamp()});
- sleep(100);
-}
-
-function get(i) {
- return t.findOne({_id: i}).x;
-}
-
-function cmp(a, b) {
- if (a.t < b.t)
- return -1;
- if (a.t > b.t)
- return 1;
-
- return a.i - b.i;
-}
-
-for (i = 0; i < N - 1; i++) {
- a = get(i);
- b = get(i + 1);
- // print( tojson(a) + "\t" + tojson(b) + "\t" + cmp(a,b) );
- assert.gt(0, cmp(a, b), "cmp " + i);
-}
-
-assert.eq(N, t.find({x: {$type: 17}}).itcount(), "B1");
-assert.eq(0, t.find({x: {$type: 3}}).itcount(), "B2");
-
-t.insert({_id: 100, x: new Timestamp(123456, 50)});
-x = t.findOne({_id: 100}).x;
-assert.eq(123456, x.t, "C1");
-assert.eq(50, x.i, "C2");
+// Tests that timestamps are inserted in increasing order. This test assumes that timestamps
+// inserted within the same second will have increasing increment values, which may not be the case
+// if the inserts are into a sharded collection.
+// @tags: [assumes_unsharded_collection]
+(function() {
+ "use strict";
+ const t = db.ts1;
+ t.drop();
+
+ const N = 20;
+
+ for (let i = 0; i < N; i++) {
+ assert.writeOK(t.insert({_id: i, x: new Timestamp()}));
+ sleep(100);
+ }
+
+ function get(i) {
+ return t.findOne({_id: i}).x;
+ }
+
+ function cmp(a, b) {
+ if (a.t < b.t)
+ return -1;
+ if (a.t > b.t)
+ return 1;
+
+ return a.i - b.i;
+ }
+
+ for (let i = 0; i < N - 1; i++) {
+ const a = get(i);
+ const b = get(i + 1);
+ assert.gt(0,
+ cmp(a, b),
+ `Expected ${tojson(a)} to be smaller than ${tojson(b)} (at iteration ${i})`);
+ }
+
+ assert.eq(N, t.find({x: {$type: 17}}).itcount());
+ assert.eq(0, t.find({x: {$type: 3}}).itcount());
+
+ assert.writeOK(t.insert({_id: 100, x: new Timestamp(123456, 50)}));
+ const x = t.findOne({_id: 100}).x;
+ assert.eq(123456, x.t);
+ assert.eq(50, x.i);
+}());