diff options
| author | Lucas de Castro Borges <lucas@gnuabordo.com.br> | 2025-02-11 15:07:35 -0300 |
|---|---|---|
| committer | Lucas de Castro Borges <lucas@gnuabordo.com.br> | 2025-02-11 15:07:35 -0300 |
| commit | 4cb8841196d0625dfa3825aa326f071cd27c7b8b (patch) | |
| tree | 1682a647d4463397c119183369ae6f750d5fdcff /jstests/noPassthrough/server_write_concern_metrics_sharding.js | |
| parent | aa03c6362cbaa767638e6eed9b031d86dd2643d1 (diff) | |
| parent | 8f0827553e09872941945a093b647a4211a9db7f (diff) | |
Update upstream source from tag 'upstream/6.0.0'master
Update to upstream version '6.0.0'
with Debian dir 5604a80ec1c96ca76f25f40d78e6ef855abec322
Diffstat (limited to 'jstests/noPassthrough/server_write_concern_metrics_sharding.js')
| -rw-r--r-- | jstests/noPassthrough/server_write_concern_metrics_sharding.js | 215 |
1 files changed, 0 insertions, 215 deletions
diff --git a/jstests/noPassthrough/server_write_concern_metrics_sharding.js b/jstests/noPassthrough/server_write_concern_metrics_sharding.js deleted file mode 100644 index 3d95f5afd02..00000000000 --- a/jstests/noPassthrough/server_write_concern_metrics_sharding.js +++ /dev/null @@ -1,215 +0,0 @@ -// Tests writeConcern metrics in the serverStatus output for sharded cluster. -// @tags: [ -// requires_persistence, -// requires_replication, -// ] - -// For generateCmdsWithNoWCProvided, verifyServerStatusChange and verifyServerStatusFields. -load("jstests/noPassthrough/server_write_concern_metrics.js"); - -let rst; -let conn; -let st; -let primary; -let secondary; -const dbName = "test"; -const collName = "server_write_concern_metrics"; -let testDB; -let testColl; - -function initializeCluster() { - rst = new ReplSetTest({ - nodes: [{}, {}], - nodeOptions: {shardsvr: "", setParameter: 'reportOpWriteConcernCountersInServerStatus=true'} - }); - rst.startSet(); - let config = rst.getReplSetConfig(); - config.members[1].priority = 0; - config.members[0].tags = {dc_va: "rack1"}; - config.settings = {getLastErrorModes: {myTag: {dc_va: 1}}}; - rst.initiate(config); - primary = rst.getPrimary(); - secondary = rst.getSecondary(); - st = new ShardingTest({manualAddShard: true}); - assert.commandWorked(st.s.adminCommand({addShard: rst.getURL()})); - conn = st.s; - testDB = conn.getDB(dbName); - testColl = testDB[collName]; -} - -function resetCollection(setupCommand) { - testColl.drop(); - assert.commandWorked(testDB.createCollection(collName)); - if (setupCommand) { - assert.commandWorked(testDB.runCommand(setupCommand)); - } -} - -function testWriteConcernMetrics(cmd, opName, inc, setupCommand) { - jsTestLog("Testing " + opName); - initializeCluster(); - - // Run command with no writeConcern and no CWWC set. - const cmdsWithNoWCProvided = generateCmdsWithNoWCProvided(cmd); - let serverStatus, newStatus; - cmdsWithNoWCProvided.forEach(cmd => { - resetCollection(setupCommand); - serverStatus = assert.commandWorked(primary.adminCommand({serverStatus: 1})); - verifyServerStatusFields(serverStatus); - assert.commandWorked(testDB.runCommand(cmd)); - newStatus = assert.commandWorked(primary.adminCommand({serverStatus: 1})); - verifyServerStatusChange(serverStatus.opWriteConcernCounters, - newStatus.opWriteConcernCounters, - [opName + ".noneInfo.implicitDefault.wmajority", opName + ".none"], - inc); - }); - - // Run command with no writeConcern with CWWC set to majority. - assert.commandWorked(conn.adminCommand({ - setDefaultRWConcern: 1, - defaultWriteConcern: {w: "majority"}, - writeConcern: {w: "majority"} - })); - cmdsWithNoWCProvided.forEach(cmd => { - resetCollection(setupCommand); - serverStatus = assert.commandWorked(primary.adminCommand({serverStatus: 1})); - verifyServerStatusFields(serverStatus); - assert.commandWorked(testDB.runCommand(cmd)); - newStatus = assert.commandWorked(primary.adminCommand({serverStatus: 1})); - verifyServerStatusChange(serverStatus.opWriteConcernCounters, - newStatus.opWriteConcernCounters, - [opName + ".noneInfo.CWWC.wmajority", opName + ".none"], - inc); - }); - - // Run command with no writeConcern with CWWC set to w:1. - assert.commandWorked(conn.adminCommand( - {setDefaultRWConcern: 1, defaultWriteConcern: {w: 1}, writeConcern: {w: "majority"}})); - cmdsWithNoWCProvided.forEach(cmd => { - resetCollection(setupCommand); - serverStatus = assert.commandWorked(primary.adminCommand({serverStatus: 1})); - verifyServerStatusFields(serverStatus); - assert.commandWorked(testDB.runCommand(cmd)); - newStatus = assert.commandWorked(primary.adminCommand({serverStatus: 1})); - verifyServerStatusChange(serverStatus.opWriteConcernCounters, - newStatus.opWriteConcernCounters, - [opName + ".noneInfo.CWWC.wnum.1", opName + ".none"], - inc); - }); - - // Run command with no writeConcern and with CWWC set with (w: "myTag"). - assert.commandWorked(conn.adminCommand({ - setDefaultRWConcern: 1, - defaultWriteConcern: {w: "myTag"}, - writeConcern: {w: "majority"} - })); - cmdsWithNoWCProvided.forEach(cmd => { - resetCollection(setupCommand); - serverStatus = assert.commandWorked(primary.adminCommand({serverStatus: 1})); - verifyServerStatusFields(serverStatus); - assert.commandWorked(testDB.runCommand(cmd)); - newStatus = assert.commandWorked(primary.adminCommand({serverStatus: 1})); - verifyServerStatusChange(serverStatus.opWriteConcernCounters, - newStatus.opWriteConcernCounters, - [opName + ".noneInfo.CWWC.wtag.myTag", opName + ".none"], - inc); - }); - - // Run command with writeConcern {w: "majority"}. - resetCollection(setupCommand); - serverStatus = assert.commandWorked(primary.adminCommand({serverStatus: 1})); - verifyServerStatusFields(serverStatus); - assert.commandWorked( - testDB.runCommand(Object.assign(Object.assign({}, cmd), {writeConcern: {w: "majority"}}))); - newStatus = assert.commandWorked(primary.adminCommand({serverStatus: 1})); - verifyServerStatusChange(serverStatus.opWriteConcernCounters, - newStatus.opWriteConcernCounters, - [opName + ".wmajority"], - inc); - - // Run command with writeConcern {w: 0}. - resetCollection(setupCommand); - serverStatus = assert.commandWorked(primary.adminCommand({serverStatus: 1})); - verifyServerStatusFields(serverStatus); - assert.commandWorked( - testDB.runCommand(Object.assign(Object.assign({}, cmd), {writeConcern: {w: 0}}))); - // Because 'w:0' doesn't wait for an ack, the command might return before it got executed, hence - // retrying. - assert.soon(() => { - newStatus = assert.commandWorked(primary.adminCommand({serverStatus: 1})); - try { - verifyServerStatusChange(serverStatus.opWriteConcernCounters, - newStatus.opWriteConcernCounters, - // Mongos upgrade the writeConcern when it is w:0. - [opName + ".wnum.1"], - inc); - } catch (e) { - return false; - } - return true; - }); - - // Run command with writeConcern {w: 1}. - resetCollection(setupCommand); - serverStatus = assert.commandWorked(primary.adminCommand({serverStatus: 1})); - verifyServerStatusFields(serverStatus); - assert.commandWorked( - testDB.runCommand(Object.assign(Object.assign({}, cmd), {writeConcern: {w: 1}}))); - newStatus = assert.commandWorked(primary.adminCommand({serverStatus: 1})); - verifyServerStatusChange(serverStatus.opWriteConcernCounters, - newStatus.opWriteConcernCounters, - [opName + ".wnum.1"], - inc); - - // Run command with writeConcern {w: 2}. - resetCollection(setupCommand); - serverStatus = assert.commandWorked(primary.adminCommand({serverStatus: 1})); - verifyServerStatusFields(serverStatus); - assert.commandWorked( - testDB.runCommand(Object.assign(Object.assign({}, cmd), {writeConcern: {w: 2}}))); - newStatus = assert.commandWorked(primary.adminCommand({serverStatus: 1})); - verifyServerStatusChange(serverStatus.opWriteConcernCounters, - newStatus.opWriteConcernCounters, - [opName + ".wnum.2"], - inc); - - // Run command with writeConcern {w: "myTag"}. - resetCollection(setupCommand); - serverStatus = assert.commandWorked(primary.adminCommand({serverStatus: 1})); - verifyServerStatusFields(serverStatus); - assert.commandWorked( - testDB.runCommand(Object.assign(Object.assign({}, cmd), {writeConcern: {w: "myTag"}}))); - newStatus = assert.commandWorked(primary.adminCommand({serverStatus: 1})); - verifyServerStatusChange(serverStatus.opWriteConcernCounters, - newStatus.opWriteConcernCounters, - [opName + ".wtag.myTag"], - inc); - - // writeConcern metrics are not tracked on the secondary. - resetCollection(setupCommand); - serverStatus = assert.commandWorked(secondary.adminCommand({serverStatus: 1})); - verifyServerStatusFields(serverStatus); - assert.commandWorked(testDB.runCommand(cmd)); - newStatus = assert.commandWorked(secondary.adminCommand({serverStatus: 1})); - assert.eq(0, - bsonWoCompare(serverStatus.opWriteConcernCounters, newStatus.opWriteConcernCounters), - "expected no change in secondary writeConcern metrics, before: " + - tojson(serverStatus) + ", after: " + tojson(newStatus)); - - rst.stopSet(); - st.stop(); -} - -// Test single insert/update/delete. -testWriteConcernMetrics({insert: collName, documents: [{}]}, "insert", 1); -testWriteConcernMetrics({update: collName, updates: [{q: {}, u: {$set: {a: 1}}}]}, "update", 1); -testWriteConcernMetrics({delete: collName, deletes: [{q: {}, limit: 1}]}, "delete", 1); - -// Test batch writes. -testWriteConcernMetrics({insert: collName, documents: [{}, {}]}, "insert", 2); -testWriteConcernMetrics( - {update: collName, updates: [{q: {}, u: {$set: {a: 1}}}, {q: {}, u: {$set: {a: 1}}}]}, - "update", - 2); -testWriteConcernMetrics( - {delete: collName, deletes: [{q: {}, limit: 1}, {q: {}, limit: 1}]}, "delete", 2); |
