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

127 lines
4.5 KiB
YAML

description: "replica-set-logging"
schemaVersion: "1.14"
runOnRequirements:
- topologies:
- replicaset
createEntities:
- client:
id: &client client
uriOptions:
retryWrites: false # so we don't retry after hitting a failpoint
heartbeatFrequencyMS: 500
serverSelectionTimeoutMS: 2000 # avoid hanging for 30s in test expecting SS failure due to timeout
observeLogMessages:
serverSelection: debug
observeEvents:
- serverDescriptionChangedEvent
- topologyDescriptionChangedEvent
- database:
id: &database database
client: *client
databaseName: &databaseName logging-tests
- collection:
id: &collection collection
database: *database
collectionName: &collectionName server-selection
- client:
id: &failPointClient failPointClient
- collection:
id: &unsatisfiableRPColl unsatisfiableRPColl
database: *database
collectionName: &unsatisfiableRPColl unsatisfiableRPColl
collectionOptions:
readPreference:
mode: Secondary
tagSets:
- { nonexistenttag : a }
tests:
- description: "A successful operation"
operations:
# ensure we've discovered the primary before starting, so we don't get an unexpected "waiting" message
# when server selection happens for the insert, or have extra logs from the driver performing server
# expected events are initial cluster type change from unknown to ReplicaSet, and connect events for each of 3 servers.
- name: waitForEvent
object: testRunner
arguments:
client: *client
event:
topologyDescriptionChangedEvent: {}
count: 4
- name: insertOne
object: *collection
arguments:
document: { x : 1 }
expectLogMessages:
- client: *client
messages:
- level: debug
component: serverSelection
data:
message: "Server selection started"
selector: { $$exists: true }
operation: insert
topologyDescription: { $$exists: true }
- level: debug
component: serverSelection
data:
message: "Server selection succeeded"
selector: { $$exists: true }
operation: insert
topologyDescription: { $$exists: true }
serverHost: { $$type: string }
serverPort: { $$type: [int, long] }
- description: "Server selection fails due to unsatisfiable read preference"
runOnRequirements:
- minServerVersion: "4.0" # min version for failCommand on mongod
operations:
# ensure we've discovered the primary before starting, so we don't get an unexpected "waiting" message
# when server selection happens for the insert, or have extra logs from the driver performing server
# expected events are initial cluster type change from unknown to ReplicaSet, and connect events for each of 3 servers.
- name: waitForEvent
object: testRunner
arguments:
client: *client
event:
topologyDescriptionChangedEvent: {}
count: 4
# the `find` should never succeed due to the unsatisfiable read preference.
- name: find
object: *unsatisfiableRPColl
arguments:
filter: { x : 1 }
expectError:
isClientError: true # server selection error
expectLogMessages:
# the topology won't change during this time, so although we exhaust
# serverSelectionTimeoutMS we only expect a single message.
- client: *client
messages:
- level: debug
component: serverSelection
data:
message: "Server selection started"
selector: { $$exists: true }
operation: find
topologyDescription: { $$exists: true }
- level: info
component: serverSelection
data:
message: "Waiting for suitable server to become available"
selector: { $$exists: true }
operation: find
topologyDescription: { $$exists: true }
remainingTimeMS: { $$type: [int, long] }
- level: debug
component: serverSelection
data:
message: "Server selection failed"
selector: { $$exists: true }
operation: find
topologyDescription: { $$exists: true }
failure: { $$exists: true }