This repository has been archived by the owner on Feb 4, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 108
/
events_tests.js
54 lines (46 loc) · 1.57 KB
/
events_tests.js
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
'use strict';
const expect = require('chai').expect;
const Mongos = require('../../../../lib/topologies/mongos');
const mock = require('../../../mock');
const MongosFixture = require('../common').MongosFixture;
const test = new MongosFixture();
describe('EventEmitters (Mongos)', function() {
afterEach(() => mock.cleanup());
beforeEach(() => {
return mock.createServer().then(mockServer => {
test.server = mockServer;
});
});
it('should remove `serverDescriptionChanged` listeners when server is closed', {
metadata: { requires: { topology: ['single'] } },
test: function(done) {
test.server.setMessageHandler(req => {
const doc = req.document;
if (doc.ismaster) {
req.reply(Object.assign({}, test.defaultFields));
}
});
const mongos = new Mongos([test.server.address()], {
connectionTimeout: 30000,
socketTimeout: 30000,
haInterval: 500,
size: 1
});
mongos.on('error', done);
mongos.once('connect', () => {
expect(mongos.disconnectedProxies).to.have.length(1);
expect(mongos.disconnectedProxies[0].listenerCount('serverDescriptionChanged')).to.equal(1);
// After we connect, destroy/close the server
mongos.destroy();
mongos.on('topologyClosed', () => {
expect(mongos.disconnectedProxies).to.have.length(1);
expect(mongos.disconnectedProxies[0].listenerCount('serverDescriptionChanged')).to.equal(
0
);
});
done();
});
mongos.connect();
}
});
});