diff options
Diffstat (limited to 'jstests/tool/dumprestore7.js')
-rw-r--r-- | jstests/tool/dumprestore7.js | 190 |
1 files changed, 95 insertions, 95 deletions
diff --git a/jstests/tool/dumprestore7.js b/jstests/tool/dumprestore7.js index 8078a7ab595..782529f0383 100644 --- a/jstests/tool/dumprestore7.js +++ b/jstests/tool/dumprestore7.js @@ -1,97 +1,97 @@ (function() { - "use strict"; - - // Skip this test if running with --nojournal and WiredTiger. - if (jsTest.options().noJournal && - (!jsTest.options().storageEngine || jsTest.options().storageEngine === "wiredTiger")) { - print("Skipping test because running WiredTiger without journaling isn't a valid" + - " replica set configuration"); - return; - } - - var name = "dumprestore7"; - - var step = (function() { - var n = 0; - return function(msg) { - msg = msg || ""; - print('\n' + name + ".js step " + (++n) + ' ' + msg); - }; - })(); - - step("starting the replset test"); - - var replTest = new ReplSetTest({name: name, nodes: 1}); - var nodes = replTest.startSet(); - replTest.initiate(); - - step("inserting first chunk of data"); - var foo = replTest.getPrimary().getDB("foo"); - for (var i = 0; i < 20; i++) { - foo.bar.insert({x: i, y: "abc"}); - } - - step("waiting for replication"); - replTest.awaitReplication(); - assert.eq(foo.bar.count(), 20, "should have inserted 20 documents"); - - // The time of the last oplog entry. - var time = replTest.getPrimary() - .getDB("local") - .getCollection("oplog.rs") - .find() - .limit(1) - .sort({$natural: -1}) - .next() - .ts; - step("got time of last oplog entry: " + time); - - step("inserting second chunk of data"); - for (var i = 30; i < 50; i++) { - foo.bar.insert({x: i, y: "abc"}); - } - assert.eq(foo.bar.count(), 40, "should have inserted 40 total documents"); - - step("try mongodump with $timestamp"); - - var data = MongoRunner.dataDir + "/dumprestore7-dump1/"; - var query = {ts: {$gt: time}}; - var queryJSON = '{"ts":{"$gt":{"$timestamp":{"t":' + time.t + ',"i":' + time.i + '}}}}'; - print("mongodump query: " + queryJSON); - if (_isWindows()) { - queryJSON = '"' + queryJSON.replace(/"/g, '\\"') + '"'; - } - var testQueryCount = - replTest.getPrimary().getDB("local").getCollection("oplog.rs").find(query).itcount(); - assert.eq(testQueryCount, 20, "the query should match 20 documents"); - - var exitCode = MongoRunner.runMongoTool("mongodump", { - host: "127.0.0.1:" + replTest.ports[0], - db: "local", - collection: "oplog.rs", - query: queryJSON, - out: data, - }); - assert.eq(0, exitCode, "monogdump failed to dump the oplog"); - - step("try mongorestore from $timestamp"); - - var restoreMongod = MongoRunner.runMongod({}); - exitCode = MongoRunner.runMongoTool("mongorestore", { - host: "127.0.0.1:" + restoreMongod.port, - dir: data, - writeConcern: 1, - }); - assert.eq(0, exitCode, "mongorestore failed to restore the oplog"); - - var count = restoreMongod.getDB("local").getCollection("oplog.rs").count(); - if (count != 20) { - print("mongorestore restored too many documents"); - restoreMongod.getDB("local").getCollection("oplog.rs").find().pretty().shellPrint(); - assert.eq(count, 20, "mongorestore should only have inserted the latter 20 entries"); - } - - MongoRunner.stopMongod(restoreMongod); - step("stopping replset test"); - replTest.stopSet(); +"use strict"; + +// Skip this test if running with --nojournal and WiredTiger. +if (jsTest.options().noJournal && + (!jsTest.options().storageEngine || jsTest.options().storageEngine === "wiredTiger")) { + print("Skipping test because running WiredTiger without journaling isn't a valid" + + " replica set configuration"); + return; +} + +var name = "dumprestore7"; + +var step = (function() { + var n = 0; + return function(msg) { + msg = msg || ""; + print('\n' + name + ".js step " + (++n) + ' ' + msg); + }; +})(); + +step("starting the replset test"); + +var replTest = new ReplSetTest({name: name, nodes: 1}); +var nodes = replTest.startSet(); +replTest.initiate(); + +step("inserting first chunk of data"); +var foo = replTest.getPrimary().getDB("foo"); +for (var i = 0; i < 20; i++) { + foo.bar.insert({x: i, y: "abc"}); +} + +step("waiting for replication"); +replTest.awaitReplication(); +assert.eq(foo.bar.count(), 20, "should have inserted 20 documents"); + +// The time of the last oplog entry. +var time = replTest.getPrimary() + .getDB("local") + .getCollection("oplog.rs") + .find() + .limit(1) + .sort({$natural: -1}) + .next() + .ts; +step("got time of last oplog entry: " + time); + +step("inserting second chunk of data"); +for (var i = 30; i < 50; i++) { + foo.bar.insert({x: i, y: "abc"}); +} +assert.eq(foo.bar.count(), 40, "should have inserted 40 total documents"); + +step("try mongodump with $timestamp"); + +var data = MongoRunner.dataDir + "/dumprestore7-dump1/"; +var query = {ts: {$gt: time}}; +var queryJSON = '{"ts":{"$gt":{"$timestamp":{"t":' + time.t + ',"i":' + time.i + '}}}}'; +print("mongodump query: " + queryJSON); +if (_isWindows()) { + queryJSON = '"' + queryJSON.replace(/"/g, '\\"') + '"'; +} +var testQueryCount = + replTest.getPrimary().getDB("local").getCollection("oplog.rs").find(query).itcount(); +assert.eq(testQueryCount, 20, "the query should match 20 documents"); + +var exitCode = MongoRunner.runMongoTool("mongodump", { + host: "127.0.0.1:" + replTest.ports[0], + db: "local", + collection: "oplog.rs", + query: queryJSON, + out: data, +}); +assert.eq(0, exitCode, "monogdump failed to dump the oplog"); + +step("try mongorestore from $timestamp"); + +var restoreMongod = MongoRunner.runMongod({}); +exitCode = MongoRunner.runMongoTool("mongorestore", { + host: "127.0.0.1:" + restoreMongod.port, + dir: data, + writeConcern: 1, +}); +assert.eq(0, exitCode, "mongorestore failed to restore the oplog"); + +var count = restoreMongod.getDB("local").getCollection("oplog.rs").count(); +if (count != 20) { + print("mongorestore restored too many documents"); + restoreMongod.getDB("local").getCollection("oplog.rs").find().pretty().shellPrint(); + assert.eq(count, 20, "mongorestore should only have inserted the latter 20 entries"); +} + +MongoRunner.stopMongod(restoreMongod); +step("stopping replset test"); +replTest.stopSet(); })(); |