diff options
Diffstat (limited to 'jstests/replsets/emptycapped.js')
-rw-r--r-- | jstests/replsets/emptycapped.js | 186 |
1 files changed, 92 insertions, 94 deletions
diff --git a/jstests/replsets/emptycapped.js b/jstests/replsets/emptycapped.js index b3aa6093be2..e15322935eb 100644 --- a/jstests/replsets/emptycapped.js +++ b/jstests/replsets/emptycapped.js @@ -1,98 +1,96 @@ // This tests the emptycapped command in a replica set. (function() { - "use strict"; - var rst = new ReplSetTest({nodes: 2}); - rst.startSet(); - rst.initiate(); - - var primaryTestDB = rst.getPrimary().getDB('test'); - var primaryLocalDB = rst.getPrimary().getDB('local'); - var primaryAdminDB = rst.getPrimary().getDB('admin'); - var secondaryTestDB = rst.getSecondary().getDB('test'); - - // Truncate a non-capped collection. - assert.writeOK(primaryTestDB.noncapped.insert({x: 1})); - assert.commandWorked(primaryTestDB.runCommand({emptycapped: 'noncapped'})); - assert.eq(primaryTestDB.noncapped.find().itcount(), - 0, - "Expected 0 documents to exist after emptying the collection"); - - // Truncate a non-existent collection on a non-existent database. - assert.commandWorked(rst.getPrimary().getDB('nonexistent').dropDatabase()); - assert.commandFailedWithCode( - rst.getPrimary().getDB('nonexistent').runCommand({emptycapped: 'nonexistent'}), - ErrorCodes.NamespaceNotFound); - - // Truncate a non-existent collection. - primaryTestDB.nonexistent.drop(); - assert.commandFailedWithCode(primaryTestDB.runCommand({emptycapped: 'nonexistent'}), - ErrorCodes.NamespaceNotFound); - - // Truncate a capped collection. - assert.commandWorked(primaryTestDB.createCollection("capped", {capped: true, size: 4096})); - assert.writeOK(primaryTestDB.capped.insert({})); - assert.eq( - primaryTestDB.capped.find().itcount(), 1, "Expected 1 document to exist after an insert"); - assert.commandWorked(primaryTestDB.runCommand({emptycapped: 'capped'})); - assert.eq(primaryTestDB.capped.find().itcount(), - 0, - "Expected 0 documents to exist after emptying the collection"); - - // Truncate a capped collection on a secondary. - assert.commandFailedWithCode(secondaryTestDB.runCommand({emptycapped: 'capped'}), - ErrorCodes.NotMaster); - - // Truncate the oplog. - assert.commandFailedWithCode(primaryLocalDB.runCommand({emptycapped: "oplog.rs"}), - ErrorCodes.OplogOperationUnsupported); - - // Test system collections, which cannot be truncated except system.profile. - - // Truncate the local system.js collection. - assert.writeOK(primaryTestDB.system.js.insert({_id: "mystring", value: "var root = this;"})); - assert.commandFailedWithCode(primaryTestDB.runCommand({emptycapped: "system.js"}), - ErrorCodes.IllegalOperation); - - // Truncate the system.profile collection. - assert.commandWorked( - primaryTestDB.createCollection("system.profile", {capped: true, size: 4096})); - assert.commandWorked(primaryTestDB.runCommand({profile: 2})); - assert.commandWorked(primaryTestDB.runCommand({emptycapped: "system.profile"})); - assert.commandWorked(primaryTestDB.runCommand({profile: 0})); - assert(primaryTestDB.system.profile.drop(), "Failed to drop the system.profile collection"); - - // Truncate the local system.replset collection. - assert.commandFailedWithCode(primaryLocalDB.runCommand({emptycapped: "system.replset"}), - ErrorCodes.IllegalOperation); - - // Test user & role management system collections. - assert.commandWorked(primaryAdminDB.runCommand({ - createRole: "all1", - privileges: [{resource: {db: "", collection: ""}, actions: ["anyAction"]}], - roles: [] - })); - assert.commandWorked(primaryAdminDB.runCommand( - {createUser: "root2", pwd: "pwd", roles: [{role: "root", db: "admin"}]})); - - // TODO: Test system.backup_users & system.new_users. - - // Truncate the admin system.roles collection. - assert.commandFailedWithCode(primaryAdminDB.runCommand({emptycapped: "system.roles"}), - ErrorCodes.IllegalOperation); - - // Truncate the admin system.users collection. - assert.commandFailedWithCode(primaryAdminDB.runCommand({emptycapped: "system.users"}), - ErrorCodes.IllegalOperation); - - // Truncate the admin system.version collection. - assert.commandFailedWithCode(primaryAdminDB.runCommand({emptycapped: "system.version"}), - ErrorCodes.IllegalOperation); - - // Truncate the local system.views collection. - assert.commandWorked(primaryTestDB.runCommand( - {create: "view1", viewOn: "collection", pipeline: [{$match: {}}]})); - assert.commandFailedWithCode(primaryTestDB.runCommand({emptycapped: "system.views"}), - ErrorCodes.IllegalOperation); - rst.stopSet(); +"use strict"; +var rst = new ReplSetTest({nodes: 2}); +rst.startSet(); +rst.initiate(); + +var primaryTestDB = rst.getPrimary().getDB('test'); +var primaryLocalDB = rst.getPrimary().getDB('local'); +var primaryAdminDB = rst.getPrimary().getDB('admin'); +var secondaryTestDB = rst.getSecondary().getDB('test'); + +// Truncate a non-capped collection. +assert.writeOK(primaryTestDB.noncapped.insert({x: 1})); +assert.commandWorked(primaryTestDB.runCommand({emptycapped: 'noncapped'})); +assert.eq(primaryTestDB.noncapped.find().itcount(), + 0, + "Expected 0 documents to exist after emptying the collection"); + +// Truncate a non-existent collection on a non-existent database. +assert.commandWorked(rst.getPrimary().getDB('nonexistent').dropDatabase()); +assert.commandFailedWithCode( + rst.getPrimary().getDB('nonexistent').runCommand({emptycapped: 'nonexistent'}), + ErrorCodes.NamespaceNotFound); + +// Truncate a non-existent collection. +primaryTestDB.nonexistent.drop(); +assert.commandFailedWithCode(primaryTestDB.runCommand({emptycapped: 'nonexistent'}), + ErrorCodes.NamespaceNotFound); + +// Truncate a capped collection. +assert.commandWorked(primaryTestDB.createCollection("capped", {capped: true, size: 4096})); +assert.writeOK(primaryTestDB.capped.insert({})); +assert.eq(primaryTestDB.capped.find().itcount(), 1, "Expected 1 document to exist after an insert"); +assert.commandWorked(primaryTestDB.runCommand({emptycapped: 'capped'})); +assert.eq(primaryTestDB.capped.find().itcount(), + 0, + "Expected 0 documents to exist after emptying the collection"); + +// Truncate a capped collection on a secondary. +assert.commandFailedWithCode(secondaryTestDB.runCommand({emptycapped: 'capped'}), + ErrorCodes.NotMaster); + +// Truncate the oplog. +assert.commandFailedWithCode(primaryLocalDB.runCommand({emptycapped: "oplog.rs"}), + ErrorCodes.OplogOperationUnsupported); + +// Test system collections, which cannot be truncated except system.profile. + +// Truncate the local system.js collection. +assert.writeOK(primaryTestDB.system.js.insert({_id: "mystring", value: "var root = this;"})); +assert.commandFailedWithCode(primaryTestDB.runCommand({emptycapped: "system.js"}), + ErrorCodes.IllegalOperation); + +// Truncate the system.profile collection. +assert.commandWorked(primaryTestDB.createCollection("system.profile", {capped: true, size: 4096})); +assert.commandWorked(primaryTestDB.runCommand({profile: 2})); +assert.commandWorked(primaryTestDB.runCommand({emptycapped: "system.profile"})); +assert.commandWorked(primaryTestDB.runCommand({profile: 0})); +assert(primaryTestDB.system.profile.drop(), "Failed to drop the system.profile collection"); + +// Truncate the local system.replset collection. +assert.commandFailedWithCode(primaryLocalDB.runCommand({emptycapped: "system.replset"}), + ErrorCodes.IllegalOperation); + +// Test user & role management system collections. +assert.commandWorked(primaryAdminDB.runCommand({ + createRole: "all1", + privileges: [{resource: {db: "", collection: ""}, actions: ["anyAction"]}], + roles: [] +})); +assert.commandWorked(primaryAdminDB.runCommand( + {createUser: "root2", pwd: "pwd", roles: [{role: "root", db: "admin"}]})); + +// TODO: Test system.backup_users & system.new_users. + +// Truncate the admin system.roles collection. +assert.commandFailedWithCode(primaryAdminDB.runCommand({emptycapped: "system.roles"}), + ErrorCodes.IllegalOperation); + +// Truncate the admin system.users collection. +assert.commandFailedWithCode(primaryAdminDB.runCommand({emptycapped: "system.users"}), + ErrorCodes.IllegalOperation); + +// Truncate the admin system.version collection. +assert.commandFailedWithCode(primaryAdminDB.runCommand({emptycapped: "system.version"}), + ErrorCodes.IllegalOperation); + +// Truncate the local system.views collection. +assert.commandWorked( + primaryTestDB.runCommand({create: "view1", viewOn: "collection", pipeline: [{$match: {}}]})); +assert.commandFailedWithCode(primaryTestDB.runCommand({emptycapped: "system.views"}), + ErrorCodes.IllegalOperation); +rst.stopSet(); })(); |