Skip to content

Commit 8b465a2

Browse files
authored
CSHARP-4830: Publish TopologyDescriptionChangedEvent on topology close (#1529)
1 parent 7609432 commit 8b465a2

16 files changed

+703
-6
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
{
2+
"description": "loadbalanced-emit-topology-description-changed-before-close",
3+
"schemaVersion": "1.20",
4+
"runOnRequirements": [
5+
{
6+
"topologies": [
7+
"load-balanced"
8+
],
9+
"minServerVersion": "4.4"
10+
}
11+
],
12+
"tests": [
13+
{
14+
"description": "Topology lifecycle",
15+
"operations": [
16+
{
17+
"name": "createEntities",
18+
"object": "testRunner",
19+
"arguments": {
20+
"entities": [
21+
{
22+
"client": {
23+
"id": "client",
24+
"observeEvents": [
25+
"topologyDescriptionChangedEvent",
26+
"topologyOpeningEvent",
27+
"topologyClosedEvent"
28+
]
29+
}
30+
}
31+
]
32+
}
33+
},
34+
{
35+
"name": "waitForEvent",
36+
"object": "testRunner",
37+
"arguments": {
38+
"client": "client",
39+
"event": {
40+
"topologyDescriptionChangedEvent": {}
41+
},
42+
"count": 2
43+
}
44+
},
45+
{
46+
"name": "close",
47+
"object": "client"
48+
}
49+
],
50+
"expectEvents": [
51+
{
52+
"client": "client",
53+
"eventType": "sdam",
54+
"events": [
55+
{
56+
"topologyOpeningEvent": {}
57+
},
58+
{
59+
"topologyDescriptionChangedEvent": {
60+
"previousDescription": {
61+
"type": "Unknown"
62+
},
63+
"newDescription": {}
64+
}
65+
},
66+
{
67+
"topologyDescriptionChangedEvent": {
68+
"newDescription": {
69+
"type": "LoadBalanced"
70+
}
71+
}
72+
},
73+
{
74+
"topologyDescriptionChangedEvent": {
75+
"newDescription": {
76+
"type": "Unknown"
77+
}
78+
}
79+
},
80+
{
81+
"topologyClosedEvent": {}
82+
}
83+
]
84+
}
85+
]
86+
}
87+
]
88+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
description: "loadbalanced-emit-topology-description-changed-before-close"
2+
3+
schemaVersion: "1.20"
4+
5+
runOnRequirements:
6+
- topologies:
7+
- load-balanced
8+
minServerVersion: "4.4" # awaitable hello
9+
10+
tests:
11+
- description: "Topology lifecycle"
12+
operations:
13+
- name: createEntities
14+
object: testRunner
15+
arguments:
16+
entities:
17+
- client:
18+
id: &client client
19+
observeEvents:
20+
- topologyDescriptionChangedEvent
21+
- topologyOpeningEvent
22+
- topologyClosedEvent
23+
# ensure the topology has been fully discovered before closing the client.
24+
# expected events are initial server discovery and server connect event.
25+
- name: waitForEvent
26+
object: testRunner
27+
arguments:
28+
client: *client
29+
event:
30+
topologyDescriptionChangedEvent: {}
31+
count: 2
32+
- name: close
33+
object: *client
34+
expectEvents:
35+
- client: *client
36+
eventType: sdam
37+
events:
38+
- topologyOpeningEvent: {}
39+
- topologyDescriptionChangedEvent: # unknown -> unknown w disconnected server
40+
previousDescription:
41+
type: "Unknown"
42+
newDescription: {}
43+
- topologyDescriptionChangedEvent: # unknown w disconnected server -> loadBalanced
44+
newDescription:
45+
type: "LoadBalanced"
46+
- topologyDescriptionChangedEvent: # loadbalanced -> unknown
47+
newDescription:
48+
type: "Unknown"
49+
- topologyClosedEvent: {}

specifications/server-discovery-and-monitoring/tests/unified/logging-loadbalanced.json

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"description": "loadbalanced-logging",
3-
"schemaVersion": "1.14",
3+
"schemaVersion": "1.16",
44
"runOnRequirements": [
55
{
66
"topologies": [
@@ -132,6 +132,22 @@
132132
}
133133
}
134134
},
135+
{
136+
"level": "debug",
137+
"component": "topology",
138+
"data": {
139+
"message": "Topology description changed",
140+
"topologyId": {
141+
"$$exists": true
142+
},
143+
"previousDescription": {
144+
"$$exists": true
145+
},
146+
"newDescription": {
147+
"$$exists": true
148+
}
149+
}
150+
},
135151
{
136152
"level": "debug",
137153
"component": "topology",

specifications/server-discovery-and-monitoring/tests/unified/logging-loadbalanced.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,15 @@ tests:
6767
topologyId: { $$exists: true }
6868
serverHost: { $$type: string }
6969
serverPort: { $$type: [int, long] }
70+
- level: debug
71+
component: topology
72+
data:
73+
message: "Topology description changed"
74+
topologyId: { $$exists: true }
75+
previousDescription: { $$exists: true } # loadBalanced topology
76+
newDescription: { $$exists: true } # unknown topology
7077
- level: debug
7178
component: topology
7279
data:
7380
message: "Stopped topology monitoring"
74-
topologyId: { $$exists: true }
81+
topologyId: { $$exists: true }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
{
2+
"description": "replicaset-emit-topology-description-changed-before-close",
3+
"schemaVersion": "1.20",
4+
"runOnRequirements": [
5+
{
6+
"topologies": [
7+
"replicaset"
8+
],
9+
"minServerVersion": "4.4"
10+
}
11+
],
12+
"tests": [
13+
{
14+
"description": "Topology lifecycle",
15+
"operations": [
16+
{
17+
"name": "createEntities",
18+
"object": "testRunner",
19+
"arguments": {
20+
"entities": [
21+
{
22+
"client": {
23+
"id": "client",
24+
"observeEvents": [
25+
"topologyDescriptionChangedEvent",
26+
"topologyOpeningEvent",
27+
"topologyClosedEvent"
28+
]
29+
}
30+
}
31+
]
32+
}
33+
},
34+
{
35+
"name": "waitForEvent",
36+
"object": "testRunner",
37+
"arguments": {
38+
"client": "client",
39+
"event": {
40+
"topologyDescriptionChangedEvent": {}
41+
},
42+
"count": 4
43+
}
44+
},
45+
{
46+
"name": "close",
47+
"object": "client"
48+
}
49+
],
50+
"expectEvents": [
51+
{
52+
"client": "client",
53+
"eventType": "sdam",
54+
"ignoreExtraEvents": false,
55+
"events": [
56+
{
57+
"topologyOpeningEvent": {}
58+
},
59+
{
60+
"topologyDescriptionChangedEvent": {}
61+
},
62+
{
63+
"topologyDescriptionChangedEvent": {}
64+
},
65+
{
66+
"topologyDescriptionChangedEvent": {}
67+
},
68+
{
69+
"topologyDescriptionChangedEvent": {}
70+
},
71+
{
72+
"topologyDescriptionChangedEvent": {
73+
"previousDescription": {
74+
"type": "ReplicaSetWithPrimary"
75+
},
76+
"newDescription": {
77+
"type": "Unknown"
78+
}
79+
}
80+
},
81+
{
82+
"topologyClosedEvent": {}
83+
}
84+
]
85+
}
86+
]
87+
}
88+
]
89+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
description: "replicaset-emit-topology-description-changed-before-close"
2+
3+
schemaVersion: "1.20"
4+
5+
runOnRequirements:
6+
- topologies:
7+
- replicaset
8+
minServerVersion: "4.4" # awaitable hello
9+
10+
tests:
11+
- description: "Topology lifecycle"
12+
operations:
13+
- name: createEntities
14+
object: testRunner
15+
arguments:
16+
entities:
17+
- client:
18+
id: &client client
19+
observeEvents:
20+
- topologyDescriptionChangedEvent
21+
- topologyOpeningEvent
22+
- topologyClosedEvent
23+
# ensure the topology has been fully discovered before closing the client.
24+
# expected events are initial server discovery and 3 server connect events.
25+
- name: waitForEvent
26+
object: testRunner
27+
arguments:
28+
client: *client
29+
event:
30+
topologyDescriptionChangedEvent: {}
31+
count: 4
32+
- name: close
33+
object: *client
34+
expectEvents:
35+
- client: *client
36+
eventType: sdam
37+
ignoreExtraEvents: false
38+
events:
39+
- topologyOpeningEvent: {}
40+
- topologyDescriptionChangedEvent: {} # unknown -> replset no primary
41+
- topologyDescriptionChangedEvent: {} # server connected
42+
- topologyDescriptionChangedEvent: {} # server connected
43+
- topologyDescriptionChangedEvent: {} # server connected
44+
- topologyDescriptionChangedEvent: # replicaset -> unknown
45+
previousDescription:
46+
type: "ReplicaSetWithPrimary"
47+
newDescription:
48+
type: "Unknown"
49+
- topologyClosedEvent: {}

0 commit comments

Comments
 (0)