...
1description: "replicaset-logging"
2
3schemaVersion: "1.16"
4
5runOnRequirements:
6 - topologies:
7 - replicaset
8 minServerVersion: "4.4" # awaitable hello
9
10createEntities:
11 - client:
12 id: &setupClient setupClient
13
14tests:
15 - description: "Topology lifecycle"
16 operations:
17 - name: createEntities
18 object: testRunner
19 arguments:
20 entities:
21 - client:
22 id: &client client
23 observeLogMessages:
24 topology: debug
25 observeEvents:
26 - topologyDescriptionChangedEvent
27 # ensure the topology has been fully discovered before closing the client.
28 # expected events are initial cluster type change from unknown to ReplicaSet, and connect events for each of 3 servers.
29 - name: waitForEvent
30 object: testRunner
31 arguments:
32 client: *client
33 event:
34 topologyDescriptionChangedEvent: {}
35 count: 4
36 - name: close
37 object: *client
38 expectLogMessages:
39 - client: *client
40 ignoreMessages:
41 - level: debug
42 component: topology
43 data:
44 message: "Starting server monitoring"
45 - level: debug
46 component: topology
47 data:
48 message: "Server heartbeat started"
49 - level: debug
50 component: topology
51 data:
52 message: "Server heartbeat succeeded"
53 - level: debug
54 component: topology
55 data:
56 message: "Server heartbeat failed"
57 messages:
58 - level: debug
59 component: topology
60 data:
61 message: "Starting topology monitoring"
62 topologyId: { $$exists: true }
63 - level: debug
64 component: topology
65 data:
66 message: "Topology description changed"
67 topologyId: { $$exists: true }
68 previousDescription: { $$exists: true } # unknown topology
69 newDescription: { $$exists: true } # ReplicaSet topology
70 - level: debug
71 component: topology
72 data:
73 message: "Topology description changed"
74 topologyId: { $$exists: true }
75 previousDescription: { $$exists: true }
76 newDescription: { $$exists: true } # server connected
77 - level: debug
78 component: topology
79 data:
80 message: "Topology description changed"
81 topologyId: { $$exists: true }
82 previousDescription: { $$exists: true }
83 newDescription: { $$exists: true } # server connected
84 - level: debug
85 component: topology
86 data:
87 message: "Topology description changed"
88 topologyId: { $$exists: true }
89 previousDescription: { $$exists: true }
90 newDescription: { $$exists: true } # server connected
91 - level: debug
92 component: topology
93 data:
94 message: "Stopped server monitoring"
95 topologyId: { $$exists: true }
96 serverHost: { $$type: string }
97 serverPort: { $$type: [int, long] }
98 - level: debug
99 component: topology
100 data:
101 message: "Stopped server monitoring"
102 topologyId: { $$exists: true }
103 serverHost: { $$type: string }
104 serverPort: { $$type: [int, long] }
105 - level: debug
106 component: topology
107 data:
108 message: "Stopped server monitoring"
109 topologyId: { $$exists: true }
110 serverHost: { $$type: string }
111 serverPort: { $$type: [int, long] }
112 # TODO(GODRIVER-2967): The following log message has been removed from
113 # the JSON analogue because it assumes that
114 # "TopologyDescriptionChangedEvent" should occur when a topolgoy is
115 # closed. This behavior is not clearly defined anywhere and some
116 # drivers support and some don't.
117 #
118 # Need to sync whenever GODRIVER-2967 is unblocked.
119 - level: debug
120 component: topology
121 data:
122 message: "Topology description changed"
123 topologyId: { $$exists: true }
124 previousDescription: { $$exists: true } # ReplicaSet topology
125 newDescription: { $$exists: true } # unknown topology
126 - level: debug
127 component: topology
128 data:
129 message: "Stopped topology monitoring"
130 topologyId: { $$exists: true }
131 - description: Successful heartbeat
132 operations:
133 - name: createEntities
134 object: testRunner
135 arguments:
136 entities:
137 - client:
138 id: *client
139 observeLogMessages:
140 topology: debug
141 observeEvents:
142 - serverHeartbeatSucceededEvent
143 - name: waitForEvent
144 object: testRunner
145 arguments:
146 client: *client
147 event:
148 serverHeartbeatSucceededEvent: {}
149 count: 3
150 expectLogMessages:
151 - client: *client
152 ignoreExtraMessages: true
153 ignoreMessages:
154 - level: debug
155 component: topology
156 data:
157 message: "Server heartbeat started"
158 - level: debug
159 component: topology
160 data:
161 message: "Starting server monitoring"
162 - level: debug
163 component: topology
164 data:
165 message: "Stopped server monitoring"
166 - level: debug
167 component: topology
168 data:
169 message: "Topology description changed"
170 messages:
171 - level: debug
172 component: topology
173 data:
174 message: "Starting topology monitoring"
175 topologyId: { $$exists: true }
176 - level: debug
177 component: topology
178 data:
179 message: "Server heartbeat succeeded"
180 awaited: { $$exists: true }
181 topologyId: { $$exists: true }
182 serverHost: { $$type: string }
183 serverPort: { $$type: [int, long] }
184 driverConnectionId: { $$exists: true }
185 serverConnectionId: { $$exists: true }
186 durationMS: { $$type: [int, long] }
187 reply:
188 $$matchAsDocument:
189 "$$matchAsRoot":
190 ok: 1
191 - level: debug
192 component: topology
193 data:
194 message: "Server heartbeat succeeded"
195 awaited: { $$exists: true }
196 topologyId: { $$exists: true }
197 serverHost: { $$type: string }
198 serverPort: { $$type: [int, long] }
199 driverConnectionId: { $$exists: true }
200 serverConnectionId: { $$exists: true }
201 durationMS: { $$type: [int, long] }
202 reply:
203 $$matchAsDocument:
204 "$$matchAsRoot":
205 ok: 1
206 - level: debug
207 component: topology
208 data:
209 message: "Server heartbeat succeeded"
210 awaited: { $$exists: true }
211 topologyId: { $$exists: true }
212 serverHost: { $$type: string }
213 serverPort: { $$type: [int, long] }
214 driverConnectionId: { $$exists: true }
215 serverConnectionId: { $$exists: true }
216 durationMS: { $$type: [int, long] }
217 reply:
218 $$matchAsDocument:
219 "$$matchAsRoot":
220 ok: 1
221 - description: Failing heartbeat
222 operations:
223 - name: createEntities
224 object: testRunner
225 arguments:
226 entities:
227 - client:
228 id: *client
229 observeLogMessages:
230 topology: debug
231 observeEvents:
232 - serverHeartbeatFailedEvent
233 uriOptions:
234 appname: failingHeartbeatLoggingTest
235 - name: failPoint
236 object: testRunner
237 arguments:
238 failPoint:
239 configureFailPoint: failCommand
240 mode: "alwaysOn"
241 data:
242 failCommands:
243 - hello
244 - isMaster
245 appName: failingHeartbeatLoggingTest
246 closeConnection: true
247 client: *setupClient
248 - name: waitForEvent
249 object: testRunner
250 arguments:
251 client: *client
252 event:
253 serverHeartbeatFailedEvent: {}
254 count: 1
255 expectLogMessages:
256 - client: *client
257 ignoreExtraMessages: true
258 ignoreMessages:
259 - level: debug
260 component: topology
261 data:
262 message: "Server heartbeat started"
263 - level: debug
264 component: topology
265 data:
266 message: "Server heartbeat succeeded"
267 - level: debug
268 component: topology
269 data:
270 message: "Starting server monitoring"
271 - level: debug
272 component: topology
273 data:
274 message: "Stopped server monitoring"
275 - level: debug
276 component: topology
277 data:
278 message: "Topology description changed"
279 messages:
280 - level: debug
281 component: topology
282 data:
283 message: "Starting topology monitoring"
284 topologyId:
285 "$$exists": true
286 - level: debug
287 component: topology
288 data:
289 message: "Server heartbeat failed"
290 awaited: { $$exists: true }
291 topologyId: { $$exists: true }
292 serverHost: { $$type: string }
293 serverPort: { $$type: [int, long] }
294 driverConnectionId: { $$exists: true }
295 durationMS: { $$type: [int, long] }
296 failure: { $$exists: true }
View as plain text