From 9b84fa238026e733660899545554865208762d8e Mon Sep 17 00:00:00 2001 From: Cheahuychou Mao Date: Tue, 21 Apr 2020 13:19:51 -0400 Subject: SERVER-47049 Test split horizon reconfig --- jstests/noPassthrough/rsm_horizon_change.js | 35 +++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 jstests/noPassthrough/rsm_horizon_change.js diff --git a/jstests/noPassthrough/rsm_horizon_change.js b/jstests/noPassthrough/rsm_horizon_change.js new file mode 100644 index 00000000000..5ff364277f2 --- /dev/null +++ b/jstests/noPassthrough/rsm_horizon_change.js @@ -0,0 +1,35 @@ +/* + * Tests that split horizon reconfig results in unknown ServerDescription in + * StreamableReplicaSetMonitor. + */ +(function() { +'use strict'; + +const st = new ShardingTest( + {mongos: [{setParameter: {replicaSetMonitorProtocol: "streamable"}}], config: 1, shards: 0}); +const configRSPrimary = st.configRS.getPrimary(); + +const unknownTopologyChangeRegex = new RegExp( + `Topology Change.*${st.configRS.name}.*topologyType:.*ReplicaSetNoPrimary.*type:.*Unknown`); +const knownTopologyChangeRegex = new RegExp( + `Topology Change.*${st.configRS.name}.*topologyType:.*ReplicaSetWithPrimary.*type:.*RSPrimary`); + +jsTest.log("Wait until the RSM on the mongos finds out about the config server primary"); +checkLog.contains(st.s, knownTopologyChangeRegex); + +jsTest.log("Run split horizon reconfig and verify that it results in unknown server description"); +const rsConfig = configRSPrimary.getDB("local").system.replset.findOne(); +for (let i = 0; i < rsConfig.members.length; i++) { + rsConfig.members[i].horizons = {specialHorizon: 'horizon.com:100' + i}; +} +rsConfig.version++; + +assert.commandWorked(st.s.adminCommand({clearLog: 'global'})); +assert.commandWorked(configRSPrimary.adminCommand({replSetReconfig: rsConfig})); + +checkLog.contains(st.s, unknownTopologyChangeRegex); + +jsTest.log("Verify that the RSM eventually has the right topology description again"); +checkLog.contains(st.s, knownTopologyChangeRegex); +st.stop(); +})(); -- cgit v1.2.1