mirror of
https://github.com/mongodb/mongo.git
synced 2024-11-30 00:56:44 +01:00
51 lines
1.3 KiB
JavaScript
51 lines
1.3 KiB
JavaScript
/**
|
|
* Verify the TTL index behavior after restart.
|
|
* @tags: [requires_persistence]
|
|
*/
|
|
(function() {
|
|
'use strict';
|
|
let oldConn = MongoRunner.runMongod({setParameter: 'ttlMonitorSleepSecs=1'});
|
|
let db = oldConn.getDB('test');
|
|
|
|
let coll = db.ttl_coll;
|
|
coll.drop();
|
|
let now = (new Date()).getTime();
|
|
|
|
// Insert 50 docs with timestamp 'now - 24h'.
|
|
let past = new Date(now - (3600 * 1000 * 24));
|
|
for (let i = 0; i < 50; i++) {
|
|
assert.commandWorked(db.runCommand({insert: 'ttl_coll', documents: [{x: past}]}));
|
|
}
|
|
|
|
assert.eq(coll.find().itcount(), 50);
|
|
|
|
// Create TTL index: expire docs older than 20000 seconds (~5.5h).
|
|
coll.createIndex({x: 1}, {expireAfterSeconds: 20000});
|
|
|
|
assert.soon(function() {
|
|
return coll.find().itcount() == 0;
|
|
}, 'TTL index on x didn\'t delete');
|
|
|
|
// Restart the server.
|
|
MongoRunner.stopMongod(oldConn);
|
|
let newConn = MongoRunner.runMongod({
|
|
restart: true,
|
|
dbpath: oldConn.dbpath,
|
|
cleanData: false,
|
|
setParameter: "ttlMonitorSleepSecs=1"
|
|
});
|
|
db = newConn.getDB('test');
|
|
coll = db.ttl_coll;
|
|
|
|
// Re-insert 50 docs with timestamp 'now - 24h'.
|
|
for (let i = 0; i < 50; i++) {
|
|
assert.commandWorked(db.runCommand({insert: 'ttl_coll', documents: [{x: past}]}));
|
|
}
|
|
|
|
assert.soon(function() {
|
|
return coll.find().itcount() == 0;
|
|
}, 'TTL index on x didn\'t delete');
|
|
|
|
MongoRunner.stopMongod(newConn);
|
|
})();
|