...
1description: "standalone-logging"
2
3schemaVersion: "1.14"
4
5runOnRequirements:
6 - topologies:
7 - single
8
9createEntities:
10 - client:
11 id: &client client
12 uriOptions:
13 retryWrites: false # so we don't retry after hitting a failpoint
14 heartbeatFrequencyMS: 500
15 appName: &appName loggingClient
16 serverSelectionTimeoutMS: 2000 # avoid hanging for 30s in test expecting SS failure due to timeout
17 observeLogMessages:
18 serverSelection: debug
19 observeEvents:
20 - serverDescriptionChangedEvent
21 - topologyDescriptionChangedEvent
22 - database:
23 id: &database database
24 client: *client
25 databaseName: &databaseName logging-tests
26 - collection:
27 id: &collection collection
28 database: *database
29 collectionName: &collectionName server-selection
30 - client:
31 id: &failPointClient failPointClient
32
33tests:
34 - description: "A successful operation"
35 operations:
36 # ensure we've discovered the server so it is immediately available
37 # and no extra "waiting for suitable server" messages are emitted.
38 # expected topology events reflect initial server discovery and server connect event.
39 - name: waitForEvent
40 object: testRunner
41 arguments:
42 client: *client
43 event:
44 topologyDescriptionChangedEvent: {}
45 count: 2
46 - name: insertOne
47 object: *collection
48 arguments:
49 document: { x : 1 }
50 expectLogMessages:
51 - client: *client
52 messages:
53 - level: debug
54 component: serverSelection
55 data:
56 message: "Server selection started"
57 selector: { $$exists: true }
58 operation: insert
59 topologyDescription: { $$exists: true }
60 - level: debug
61 component: serverSelection
62 data:
63 message: "Server selection succeeded"
64 selector: { $$exists: true }
65 operation: insert
66 topologyDescription: { $$exists: true }
67 serverHost: { $$type: string }
68 serverPort: { $$type: [int, long] }
69
70 - description: "Failure due to unreachable server"
71 runOnRequirements:
72 - minServerVersion: "4.4" # failCommand appname support
73 operations:
74 # fail all hello/legacy hello commands for the main client.
75 - name: failPoint
76 object: testRunner
77 arguments:
78 client: *failPointClient
79 failPoint:
80 configureFailPoint: failCommand
81 mode: alwaysOn
82 data:
83 failCommands: ["hello", "ismaster"]
84 appName: *appName
85 closeConnection: true
86 # wait until we've marked the server unknown due
87 # to a failed heartbeat.
88 - name: waitForEvent
89 object: testRunner
90 arguments:
91 client: *client
92 event:
93 serverDescriptionChangedEvent:
94 newDescription:
95 type: Unknown
96 count: 1
97 - name: insertOne
98 object: *collection
99 arguments:
100 document: { x : 1 }
101 expectError:
102 isClientError: true # server selection timeout
103 expectLogMessages:
104 - client: *client
105 messages:
106 - level: debug
107 component: serverSelection
108 data:
109 message: "Server selection started"
110 selector: { $$exists: true }
111 operation: insert
112 topologyDescription: { $$exists: true }
113 - level: info
114 component: serverSelection
115 data:
116 message: "Waiting for suitable server to become available"
117 selector: { $$exists: true }
118 operation: insert
119 topologyDescription: { $$exists: true }
120 remainingTimeMS: { $$type: [int, long] }
121 - level: debug
122 component: serverSelection
123 data:
124 message: "Server selection failed"
125 selector: { $$exists: true }
126 operation: insert
127 topologyDescription: { $$exists: true }
128 failure: { $$exists: true }
View as plain text