mongo/jstests/sharding/move_collection_balancer_me...

65 lines
2.2 KiB
JavaScript

/**
* Tests that _configvrReshardCollection command with provenance set to balancerMoveCollection
* increments the appropriate metrics in the server status.
*
* @tags: [
* uses_atclustertime,
* requires_fcv_80,
* featureFlagMoveCollection,
* assumes_balancer_off,
* ]
*/
import {DiscoverTopology} from "jstests/libs/discover_topology.js";
import {ReshardingTest} from "jstests/sharding/libs/resharding_test_fixture.js";
const reshardingTest = new ReshardingTest();
reshardingTest.setup();
const dbName = "test";
const collName = "foo";
const ns = dbName + "." + collName;
const donorShardNames = reshardingTest.donorShardNames;
const recipientShardNames = reshardingTest.recipientShardNames;
const sourceCollection = reshardingTest.createUnshardedCollection({ns: ns, primaryShardName: donorShardNames[0]});
const mongos = sourceCollection.getMongo();
const topology = DiscoverTopology.findConnectedNodes(mongos);
const configsvr = new Mongo(topology.configsvr.nodes[0]);
const donorShard = new Mongo(topology.shards[donorShardNames[0]].nodes[0]);
const dbVersion = mongos.getDB("config")["databases"].findOne({_id: dbName}).version;
// Register collection in the sharding catalog because invoking directly _configvrReshardCollection
assert.commandWorked(
donorShard.getDB(dbName).runCommand({
_shardsvrCreateCollection: collName,
unsplittable: true,
registerExistingCollectionInGlobalCatalog: true,
writeConcern: {w: "majority"},
databaseVersion: dbVersion,
}),
);
assert.commandWorked(
configsvr.adminCommand({
_configsvrReshardCollection: ns,
key: {_id: 1},
numInitialChunks: 1,
shardDistribution: [{shard: recipientShardNames[0]}],
forceRedistribution: true,
provenance: "balancerMoveCollection",
writeConcern: {w: "majority"},
}),
);
const shardingMetrics = configsvr.getDB("admin").serverStatus({}).shardingStatistics;
assert.eq(shardingMetrics.moveCollection, undefined);
const balancerMetrics = shardingMetrics.balancerMoveCollection;
assert.eq(balancerMetrics.countStarted, 1);
assert.eq(balancerMetrics.countSucceeded, 1);
assert.eq(balancerMetrics.countFailed, 0);
assert.eq(balancerMetrics.countCanceled, 0);
reshardingTest.teardown();