diff options
author | Kshitij Gupta <kshitij.gupta@mongodb.com> | 2021-12-13 21:03:13 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-12-13 21:30:20 +0000 |
commit | 907d0bff8a62b6a2c7360ed96b2d4a780bfde936 (patch) | |
tree | a4066b6126ba0822baf1512cc94cd70a8376fcc8 /jstests/sharding/health_monitor | |
parent | 09d330def86f4467559cebbf0e91ecf038c296e6 (diff) | |
download | mongo-907d0bff8a62b6a2c7360ed96b2d4a780bfde936.tar.gz |
SERVER-59382: Enforce non-critical facets not entering ActiveFault state
Diffstat (limited to 'jstests/sharding/health_monitor')
-rw-r--r-- | jstests/sharding/health_monitor/non_critical_facet.js | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/jstests/sharding/health_monitor/non_critical_facet.js b/jstests/sharding/health_monitor/non_critical_facet.js new file mode 100644 index 00000000000..073cba2afa1 --- /dev/null +++ b/jstests/sharding/health_monitor/non_critical_facet.js @@ -0,0 +1,48 @@ +/** + * Tests behaviour of non-critical fault facet. + */ +(function() { +'use strict'; +const ACTIVE_FAULT_DURATION_SECS = 1; + +const params = { + setParameter: { + healthMonitoring: tojson({test: "non-critical", ldap: "off", dns: "off"}), + featureFlagHealthMonitoring: true + } +}; + +let st = new ShardingTest({ + mongos: [params], + shards: 1, +}); + +assert.commandWorked( + st.s0.adminCommand({"setParameter": 1, activeFaultDurationSecs: ACTIVE_FAULT_DURATION_SECS})); + +let result = assert.commandWorked(st.s0.adminCommand({serverStatus: 1})).health; +assert.eq(result.state, "Ok"); + +// Failpoint returns fault. +assert.commandWorked(st.s0.adminCommand({ + "configureFailPoint": 'testHealthObserver', + "data": {"code": "InternalError", "msg": "test msg"}, + "mode": "alwaysOn" +})); + +assert.soon(() => { + result = assert.commandWorked(st.s0.adminCommand({serverStatus: 1})).health; + return result.state == "TransientFault"; +}); + +// Sleep for twice as long as active fault duration (in Millis). +sleep(ACTIVE_FAULT_DURATION_SECS * 2000); + +// Still in transient fault. +result = assert.commandWorked(st.s0.adminCommand({serverStatus: 1})).health; +assert.eq(result.state, "TransientFault"); +assert( + result.faultInformation.facets.kTestObserver.description.includes("InternalError: test msg")); + +st.stop(); +})(); |