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

224 lines
7.1 KiB
YAML

description: "operation-id"
schemaVersion: "1.14"
runOnRequirements:
- topologies:
- single
createEntities:
- client:
id: &client client
uriOptions:
retryWrites: false # so we don't retry after hitting a failpoint
heartbeatFrequencyMS: 500
appName: &appName loggingClient
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
_yamlAnchors:
namespace: &namespace "logging-tests.server-selection"
tests:
- description: "Successful bulkWrite operation: log messages have operationIds"
operations:
# ensure we've discovered the server so it is immediately available
# and no extra "waiting for suitable server" messages are emitted.
# expected topology events reflect initial server discovery and server connect event.
- name: waitForEvent
object: testRunner
arguments:
client: *client
event:
topologyDescriptionChangedEvent: {}
count: 2
- name: bulkWrite
object: *collection
arguments:
requests:
- insertOne:
document: { x: 1 }
expectLogMessages:
- client: *client
messages:
- level: debug
component: serverSelection
data:
message: "Server selection started"
operationId: { $$type: [int, long] }
operation: insert
- level: debug
component: serverSelection
data:
message: "Server selection succeeded"
operationId: { $$type: [int, long] }
operation: insert
- description: "Failed bulkWrite operation: log messages have operationIds"
runOnRequirements:
- minServerVersion: "4.4" # failCommand appname support
operations:
# fail all hello/legacy hello commands for the main client.
- name: failPoint
object: testRunner
arguments:
client: *failPointClient
failPoint:
configureFailPoint: failCommand
mode: alwaysOn
data:
failCommands: ["hello", "ismaster"]
appName: *appName
closeConnection: true
# wait until we've marked the server unknown due
# to a failed heartbeat.
- name: waitForEvent
object: testRunner
arguments:
client: *client
event:
serverDescriptionChangedEvent:
newDescription:
type: Unknown
count: 1
- name: bulkWrite
object: *collection
arguments:
requests:
- insertOne:
document: { x: 1 }
expectError:
isClientError: true # server selection timeout
expectLogMessages:
- client: *client
messages:
- level: debug
component: serverSelection
data:
message: "Server selection started"
operationId: { $$type: [int, long] }
operation: insert
- level: info
component: serverSelection
data:
message: "Waiting for suitable server to become available"
operationId: { $$type: [int, long] }
operation: insert
- level: debug
component: serverSelection
data:
message: "Server selection failed"
operationId: { $$type: [int, long] }
operation: insert
- description: "Successful client bulkWrite operation: log messages have operationIds"
runOnRequirements:
- minServerVersion: "8.0" # required for bulkWrite command
serverless: forbid
operations:
# ensure we've discovered the server so it is immediately available
# and no extra "waiting for suitable server" messages are emitted.
# expected topology events reflect initial server discovery and server connect event.
- name: waitForEvent
object: testRunner
arguments:
client: *client
event:
topologyDescriptionChangedEvent: {}
count: 2
- name: clientBulkWrite
object: *client
arguments:
models:
- insertOne:
namespace: *namespace
document: { x: 1 }
expectLogMessages:
- client: *client
messages:
- level: debug
component: serverSelection
data:
message: "Server selection started"
operationId: { $$type: [int, long] }
operation: bulkWrite
- level: debug
component: serverSelection
data:
message: "Server selection succeeded"
operationId: { $$type: [int, long] }
operation: bulkWrite
- description: "Failed client bulkWrite operation: log messages have operationIds"
runOnRequirements:
- minServerVersion: "8.0" # required for bulkWrite command
serverless: forbid
operations:
# fail all hello/legacy hello commands for the main client.
- name: failPoint
object: testRunner
arguments:
client: *failPointClient
failPoint:
configureFailPoint: failCommand
mode: alwaysOn
data:
failCommands: ["hello", "ismaster"]
appName: *appName
closeConnection: true
# wait until we've marked the server unknown due
# to a failed heartbeat.
- name: waitForEvent
object: testRunner
arguments:
client: *client
event:
serverDescriptionChangedEvent:
newDescription:
type: Unknown
count: 1
- name: clientBulkWrite
object: *client
arguments:
models:
- insertOne:
namespace: *namespace
document: { x: 1 }
expectError:
isClientError: true # server selection timeout
expectLogMessages:
- client: *client
messages:
- level: debug
component: serverSelection
data:
message: "Server selection started"
operationId: { $$type: [int, long] }
operation: bulkWrite
- level: info
component: serverSelection
data:
message: "Waiting for suitable server to become available"
operationId: { $$type: [int, long] }
operation: bulkWrite
- level: debug
component: serverSelection
data:
message: "Server selection failed"
operationId: { $$type: [int, long] }
operation: bulkWrite