summaryrefslogtreecommitdiff
path: root/jstests/sharding/catalog_cache_refresh_counters.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/sharding/catalog_cache_refresh_counters.js')
-rw-r--r--jstests/sharding/catalog_cache_refresh_counters.js114
1 files changed, 0 insertions, 114 deletions
diff --git a/jstests/sharding/catalog_cache_refresh_counters.js b/jstests/sharding/catalog_cache_refresh_counters.js
deleted file mode 100644
index 028ef2f2c59..00000000000
--- a/jstests/sharding/catalog_cache_refresh_counters.js
+++ /dev/null
@@ -1,114 +0,0 @@
-/**
- * Test that operations that get blocked by catalog cache refreshes get logged to
- * shardingStatistics.
- */
-
-(function() {
-'use strict';
-
-load('jstests/sharding/libs/sharded_transactions_helpers.js');
-load("jstests/sharding/libs/chunk_bounds_util.js");
-load("jstests/sharding/libs/find_chunks_util.js");
-
-let st = new ShardingTest({mongos: 2, shards: 2});
-const configDB = st.s.getDB('config');
-const dbName = "test";
-const collName = "foo";
-const ns = dbName + "." + collName;
-const mongos0DB = st.s0.getDB(dbName);
-const mongos1DB = st.s1.getDB(dbName);
-const mongos0Coll = mongos0DB[collName];
-const mongos1Coll = mongos1DB[collName];
-
-let setUp = () => {
- /**
- * Sets up a test by moving chunks to such that one chunk is on each
- * shard, with the following distribution:
- * shard0: [-inf, 0)
- * shard1: [0, inf)
- */
- assert.commandWorked(st.s0.adminCommand({enableSharding: dbName}));
- assert.commandWorked(st.s0.adminCommand({movePrimary: dbName, to: st.shard0.shardName}));
- assert.commandWorked(st.s0.adminCommand({shardCollection: ns, key: {x: 1}}));
- assert.commandWorked(st.s0.adminCommand({split: ns, middle: {x: 0}}));
-
- flushRoutersAndRefreshShardMetadata(st, {ns});
-};
-
-let getOpsBlockedByRefresh = () => {
- return assert.commandWorked(st.s1.adminCommand({serverStatus: 1}))
- .shardingStatistics.catalogCache.operationsBlockedByRefresh;
-};
-
-let verifyBlockedOperationsChange = (oldOperationsCount, increasedOps) => {
- let newOperationsCount = getOpsBlockedByRefresh();
- increasedOps.forEach(op => {
- assert.eq(newOperationsCount[op.opType], oldOperationsCount[op.opType] + op.increase);
- });
-};
-
-let getShardToTargetForMoveChunk = () => {
- const chunkDocs = findChunksUtil.findChunksByNs(configDB, ns).toArray();
- const shardChunkBounds = chunkBoundsUtil.findShardChunkBounds(chunkDocs);
- const shardThatOwnsChunk = chunkBoundsUtil.findShardForShardKey(st, shardChunkBounds, {x: 100});
- return st.getOther(shardThatOwnsChunk).shardName;
-};
-
-let runTest = (operationToRunFn, expectedOpIncreases) => {
- let opsBlockedByRefresh = getOpsBlockedByRefresh();
-
- // Move chunk to ensure stale shard version for the next operation.
- assert.commandWorked(
- st.s0.adminCommand({moveChunk: ns, find: {x: 100}, to: getShardToTargetForMoveChunk()}));
-
- operationToRunFn();
- verifyBlockedOperationsChange(opsBlockedByRefresh, expectedOpIncreases);
-};
-
-setUp();
-
-/**
- * Verify that insert operations get logged when blocked by a refresh.
- */
-runTest(() => assert.commandWorked(mongos1Coll.insert({x: 250})), [
- {opType: 'countAllOperations', increase: 2},
- {opType: 'countInserts', increase: 1},
- {opType: 'countCommands', increase: 1}
-]);
-
-/**
- * Verify that queries get logged when blocked by a refresh.
- */
-runTest(() => mongos1Coll.findOne({x: 250}),
- [{opType: 'countAllOperations', increase: 1}, {opType: 'countQueries', increase: 1}]);
-
-/**
- * Verify that updates get logged when blocked by a refresh.
- */
-runTest(() => assert.commandWorked(mongos1Coll.update({x: 250}, {$set: {a: 1}})), [
- {opType: 'countAllOperations', increase: 2},
- {opType: 'countUpdates', increase: 1},
- {opType: 'countCommands', increase: 1}
-]);
-
-/**
- * Verify that deletes get logged when blocked by a refresh.
- */
-runTest(() => assert.commandWorked(mongos1Coll.remove({x: 250})), [
- {opType: 'countAllOperations', increase: 2},
- {opType: 'countDeletes', increase: 1},
- {opType: 'countCommands', increase: 1}
-]);
-
-/**
- * Verify that non-CRUD commands get logged when blocked by a refresh.
- */
-runTest(() => assert.commandWorked(mongos1DB.runCommand(
- {createIndexes: collName, indexes: [{key: {a: 1}, name: 'index'}]})),
- [
- {opType: 'countAllOperations', increase: 1},
- {opType: 'countCommands', increase: 1},
- ]);
-
-st.stop();
-})();