2025-03-17 20:58:26 +01:00

174 lines
5.6 KiB
YAML

description: serverMonitoringMode
schemaVersion: "1.17"
# These tests cannot run on replica sets because the order of the expected
# SDAM events are non-deterministic when monitoring multiple servers.
# They also cannot run on Serverless or load balanced clusters where SDAM is disabled.
runOnRequirements:
- topologies: [single, sharded, sharded-replicaset]
serverless: forbid
tests:
- description: "connect with serverMonitoringMode=auto >=4.4"
runOnRequirements:
- minServerVersion: "4.4.0"
operations:
- name: createEntities
object: testRunner
arguments:
entities:
- client:
id: client
uriOptions:
serverMonitoringMode: "auto"
useMultipleMongoses: false
observeEvents:
- serverHeartbeatStartedEvent
- serverHeartbeatSucceededEvent
- serverHeartbeatFailedEvent
- database:
id: db
client: client
databaseName: sdam-tests
- &ping
name: runCommand
object: db
arguments:
commandName: ping
command: { ping: 1 }
expectResult: { ok: 1 }
# Wait for the second serverHeartbeatStartedEvent to ensure we start streaming.
- &waitForSecondHeartbeatStarted
name: waitForEvent
object: testRunner
arguments:
client: client
event:
serverHeartbeatStartedEvent: {}
count: 2
expectEvents: &streamingStartedEvents
- client: client
eventType: sdam
ignoreExtraEvents: true
events:
- serverHeartbeatStartedEvent:
awaited: False
- serverHeartbeatSucceededEvent:
awaited: False
- serverHeartbeatStartedEvent:
awaited: True
- description: "connect with serverMonitoringMode=auto <4.4"
runOnRequirements:
- maxServerVersion: "4.2.99"
operations:
- name: createEntities
object: testRunner
arguments:
entities:
- client:
id: client
uriOptions:
serverMonitoringMode: "auto"
heartbeatFrequencyMS: 500
useMultipleMongoses: false
observeEvents:
- serverHeartbeatStartedEvent
- serverHeartbeatSucceededEvent
- serverHeartbeatFailedEvent
- database:
id: db
client: client
databaseName: sdam-tests
- *ping
# Wait for the second serverHeartbeatStartedEvent to ensure we do not stream.
- *waitForSecondHeartbeatStarted
expectEvents: &pollingStartedEvents
- client: client
eventType: sdam
ignoreExtraEvents: true
events:
- serverHeartbeatStartedEvent:
awaited: False
- serverHeartbeatSucceededEvent:
awaited: False
- serverHeartbeatStartedEvent:
awaited: False
- description: "connect with serverMonitoringMode=stream >=4.4"
runOnRequirements:
- minServerVersion: "4.4.0"
operations:
- name: createEntities
object: testRunner
arguments:
entities:
- client:
id: client
uriOptions:
serverMonitoringMode: "stream"
useMultipleMongoses: false
observeEvents:
- serverHeartbeatStartedEvent
- serverHeartbeatSucceededEvent
- serverHeartbeatFailedEvent
- database:
id: db
client: client
databaseName: sdam-tests
- *ping
# Wait for the second serverHeartbeatStartedEvent to ensure we start streaming.
- *waitForSecondHeartbeatStarted
expectEvents: *streamingStartedEvents
- description: "connect with serverMonitoringMode=stream <4.4"
runOnRequirements:
- maxServerVersion: "4.2.99"
operations:
- name: createEntities
object: testRunner
arguments:
entities:
- client:
id: client
uriOptions:
serverMonitoringMode: "stream"
heartbeatFrequencyMS: 500
useMultipleMongoses: false
observeEvents:
- serverHeartbeatStartedEvent
- serverHeartbeatSucceededEvent
- serverHeartbeatFailedEvent
- database:
id: db
client: client
databaseName: sdam-tests
- *ping
# Wait for the second serverHeartbeatStartedEvent to ensure we do not stream.
- *waitForSecondHeartbeatStarted
expectEvents: *pollingStartedEvents
- description: "connect with serverMonitoringMode=poll"
operations:
- name: createEntities
object: testRunner
arguments:
entities:
- client:
id: client
uriOptions:
serverMonitoringMode: "poll"
heartbeatFrequencyMS: 500
useMultipleMongoses: false
observeEvents:
- serverHeartbeatStartedEvent
- serverHeartbeatSucceededEvent
- serverHeartbeatFailedEvent
- database:
id: db
client: client
databaseName: sdam-tests
- *ping
# Wait for the second serverHeartbeatStartedEvent to ensure we do not stream.
- *waitForSecondHeartbeatStarted
expectEvents: *pollingStartedEvents