diff options
author | James Wahlin <james.wahlin@10gen.com> | 2016-08-08 12:27:35 -0400 |
---|---|---|
committer | James Wahlin <james.wahlin@10gen.com> | 2016-08-09 19:42:33 -0400 |
commit | 875bf157f0d16b10896528026f0e2be93c466f90 (patch) | |
tree | a35097d30807bddd98e4b8c0b68894088bb42d41 /jstests/views | |
parent | d930f4832631eca7092ada4328d780f2b8d19d31 (diff) | |
download | mongo-875bf157f0d16b10896528026f0e2be93c466f90.tar.gz |
SERVER-24506 Cloner support for views
Diffstat (limited to 'jstests/views')
-rw-r--r-- | jstests/views/initial_sync_views.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/jstests/views/initial_sync_views.js b/jstests/views/initial_sync_views.js new file mode 100644 index 00000000000..e5b0ffdae1f --- /dev/null +++ b/jstests/views/initial_sync_views.js @@ -0,0 +1,43 @@ +/** + * Test initial sync with views present. + * @tags: [requires_persistence] + */ + +(function() { + "use strict"; + + load("jstests/replsets/rslib.js"); + let testName = "initial_sync_views"; + let hostName = getHostName(); + + let replTest = + new ReplSetTest({name: testName, nodes: 1, nodeOptions: {setParameter: "enableViews=1"}}); + replTest.startSet(); + replTest.initiate(); + + let primaryDB = replTest.getPrimary().getDB(testName); + + for (let i = 0; i < 10; ++i) { + assert.writeOK(primaryDB.coll.insert({a: i})); + } + + // Setup view. + assert.commandWorked( + primaryDB.runCommand({create: "view", viewOn: "coll", pipeline: [{$match: {a: 5}}]})); + + assert.eq(10, primaryDB.coll.find().itcount()); + assert.eq(1, primaryDB.view.find().itcount()); + + // Add new member to the replica set and wait for initial sync to complete. + let secondary = replTest.add(); + replTest.reInitiate(); + replTest.awaitReplication(); + replTest.awaitSecondaryNodes(); + + // Confirm secondary has expected collection and view document count. + let secondaryDB = secondary.getDB(testName); + assert.eq(10, secondaryDB.coll.find().itcount()); + assert.eq(1, secondaryDB.view.find().itcount()); + + replTest.stopSet(); +})(); |