diff options
Diffstat (limited to 'jstests/core/ts1.js')
-rw-r--r-- | jstests/core/ts1.js | 82 |
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); +}()); |