@@ -99,11 +99,41 @@ describe.skip('MongoClient.close() Integration', () => {
99
99
100
100
describe ( 'Connection Monitoring' , ( ) => {
101
101
describe ( 'Node.js resource: Socket' , ( ) => {
102
- it ( 'no sockets remain after client.close()' , metadata , async function ( ) { } ) ;
102
+ it ( 'no sockets remain after client.close()' , metadata , async function ( ) {
103
+ await runScriptAndGetProcessInfo (
104
+ 'socket-connection-monitoring' ,
105
+ config ,
106
+ async function run ( { MongoClient, uri, log, chai } ) {
107
+ const client = new MongoClient ( uri , { serverMonitoringMode : 'auto' } ) ;
108
+ await client . connect ( ) ;
109
+
110
+ // returns all active tcp endpoints
111
+ const connectionMonitoringReport = ( ) => process . report . getReport ( ) . libuv . filter ( r => r . type === 'tcp' && r . is_active ) . map ( r => r . remoteEndpoint ) ;
112
+
113
+ log ( { report : connectionMonitoringReport ( ) } ) ;
114
+ // assert socket creation
115
+ const servers = client . topology ?. s . servers ;
116
+ for ( const server of servers ) {
117
+ let { host, port } = server [ 1 ] . s . description . hostAddress ;
118
+ chai . expect ( connectionMonitoringReport ( ) ) . to . deep . include ( { host, port } ) ;
119
+ }
120
+
121
+ await client . close ( ) ;
122
+
123
+ // assert socket destruction
124
+ for ( const server of servers ) {
125
+ let { host, port } = server [ 1 ] . s . description . hostAddress ;
126
+ chai . expect ( connectionMonitoringReport ( ) ) . to . not . deep . include ( { host, port } ) ;
127
+ }
128
+ }
129
+ ) ;
130
+ } ) ;
103
131
} ) ;
104
132
105
133
describe ( 'Server resource: connection thread' , ( ) => {
106
- it ( 'no connection threads remain after client.close()' , metadata , async ( ) => { } ) ;
134
+ it ( 'no connection threads remain after client.close()' , metadata , async ( ) => {
135
+
136
+ } ) ;
107
137
} ) ;
108
138
} ) ;
109
139
@@ -112,14 +142,48 @@ describe.skip('MongoClient.close() Integration', () => {
112
142
describe ( 'after entering monitor streaming mode ' , ( ) => {
113
143
it ( 'the rtt pinger timer is cleaned up by client.close()' , async ( ) => {
114
144
// helloReply has a topologyVersion defined
115
- } ) ;
145
+ await runScriptAndGetProcessInfo (
146
+ 'socket-connection-monitoring' ,
147
+ config ,
148
+ async function run ( { MongoClient, uri, expect } ) {
149
+ const client = new MongoClient ( uri , { serverMonitoringMode : 'stream' , minHeartbeatFrequencyMS : 10000 } ) ;
150
+ await client . connect ( ) ;
151
+ } ) ;
116
152
} ) ;
117
153
} ) ;
118
154
119
155
describe ( 'Connection' , ( ) => {
120
156
describe ( 'Node.js resource: Socket' , ( ) => {
121
157
describe ( 'when rtt monitoring is turned on' , ( ) => {
122
- it ( 'no sockets remain after client.close()' , async ( ) => { } ) ;
158
+ it ( 'no sockets remain after client.close()' , async ( ) => {
159
+ await runScriptAndGetProcessInfo (
160
+ 'socket-connection-monitoring' ,
161
+ config ,
162
+ async function run ( { MongoClient, uri, log, expect } ) {
163
+ const client = new MongoClient ( uri , { serverMonitoringMode : 'stream' , minHeartbeatFrequencyMS : 10000 } ) ;
164
+ await client . connect ( ) ;
165
+
166
+ // returns all active tcp endpoints
167
+ const connectionMonitoringReport = ( ) => process . report . getReport ( ) . libuv . filter ( r => r . type === 'tcp' && r . is_active ) . map ( r => r . remoteEndpoint ) ;
168
+
169
+ log ( { report : connectionMonitoringReport ( ) } ) ;
170
+ // assert socket creation
171
+ const servers = client . topology ?. s . servers ;
172
+ for ( const server of servers ) {
173
+ let { host, port } = server [ 1 ] . s . description . hostAddress ;
174
+ chai . expect ( connectionMonitoringReport ( ) ) . to . deep . include ( { host, port } ) ;
175
+ }
176
+
177
+ await client . close ( ) ;
178
+
179
+ // assert socket destruction
180
+ for ( const server of servers ) {
181
+ let { host, port } = server [ 1 ] . s . description . hostAddress ;
182
+ chai . expect ( connectionMonitoringReport ( ) ) . to . not . deep . include ( { host, port } ) ;
183
+ }
184
+ }
185
+ ) ;
186
+ } ) ;
123
187
} ) ;
124
188
} ) ;
125
189
0 commit comments