summaryrefslogtreecommitdiff
path: root/jstests/sharding/health_monitor
diff options
context:
space:
mode:
authorKshitij Gupta <kshitij.gupta@mongodb.com>2021-12-13 21:03:13 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-12-13 21:30:20 +0000
commit907d0bff8a62b6a2c7360ed96b2d4a780bfde936 (patch)
treea4066b6126ba0822baf1512cc94cd70a8376fcc8 /jstests/sharding/health_monitor
parent09d330def86f4467559cebbf0e91ecf038c296e6 (diff)
downloadmongo-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.js48
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();
+})();