1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
description: "standalone-logging"
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
tests:
- description: "A successful operation"
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: 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: "Failure due to unreachable server"
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: insertOne
object: *collection
arguments:
document: { x : 1 }
expectError:
isClientError: true # server selection timeout
expectLogMessages:
- client: *client
messages:
- level: debug
component: serverSelection
data:
message: "Server selection started"
selector: { $$exists: true }
operation: insert
topologyDescription: { $$exists: true }
- level: info
component: serverSelection
data:
message: "Waiting for suitable server to become available"
selector: { $$exists: true }
operation: insert
topologyDescription: { $$exists: true }
remainingTimeMS: { $$type: [int, long] }
- level: debug
component: serverSelection
data:
message: "Server selection failed"
selector: { $$exists: true }
operation: insert
topologyDescription: { $$exists: true }
failure: { $$exists: true }
|