Skip to content
This repository has been archived by the owner on Feb 4, 2022. It is now read-only.

Commit

Permalink
refactor(mock-tests): ensure tests are run within co routine
Browse files Browse the repository at this point in the history
  • Loading branch information
mbroadst committed Sep 17, 2017
1 parent 9c7f70e commit c9fa89c
Show file tree
Hide file tree
Showing 17 changed files with 2,309 additions and 2,757 deletions.
128 changes: 62 additions & 66 deletions test/tests/functional/mongos_mocks/mixed_seed_list_tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,40 +63,38 @@ describe('Mongos Mixed Seed List (mocks)', function() {
request.reply({ ok: 1, n: doc.documents, lastOp: new Date() });
}
});
});

// Attempt to connect
var server = new Mongos(
[{ host: 'localhost', port: 52005 }, { host: 'localhost', port: 52006 }],
{
connectionTimeout: 3000,
socketTimeout: 1000,
haInterval: 1000,
localThresholdMS: 500,
size: 1
}
);

var logger = Logger.currentLogger();
Logger.setCurrentLogger(function(msg, state) {
expect(state.type).to.equal('warn');
expect(state.message).to.equal(
'expected mongos proxy, but found replicaset member mongod for server localhost:52006'
// Attempt to connect
var server = new Mongos(
[{ host: 'localhost', port: 52005 }, { host: 'localhost', port: 52006 }],
{
connectionTimeout: 3000,
socketTimeout: 1000,
haInterval: 1000,
localThresholdMS: 500,
size: 1
}
);
});

// Add event listeners
server.once('connect', function() {
Logger.setCurrentLogger(logger);
var logger = Logger.currentLogger();
Logger.setCurrentLogger(function(msg, state) {
expect(state.type).to.equal('warn');
expect(state.message).to.equal(
'expected mongos proxy, but found replicaset member mongod for server localhost:52006'
);
});

server.destroy();
done();
});
// Add event listeners
server.once('connect', function() {
Logger.setCurrentLogger(logger);

server.on('error', done);
setTimeout(function() {
server.destroy();
done();
});

server.on('error', done);
server.connect();
}, 100);
});
}
});

Expand Down Expand Up @@ -151,48 +149,46 @@ describe('Mongos Mixed Seed List (mocks)', function() {
request.reply({ ok: 1, n: doc.documents, lastOp: new Date() });
}
});
});

// Attempt to connect
var server = new Mongos(
[{ host: 'localhost', port: 52002 }, { host: 'localhost', port: 52003 }],
{
connectionTimeout: 3000,
socketTimeout: 1000,
haInterval: 1000,
localThresholdMS: 500,
size: 1
}
);

var warnings = [];
var logger = Logger.currentLogger();
Logger.setCurrentLogger(function(msg, state) {
console.log('pushed: ', state);
expect(state.type).to.equal('warn');
warnings.push(state);
});
// Attempt to connect
var server = new Mongos(
[{ host: 'localhost', port: 52002 }, { host: 'localhost', port: 52003 }],
{
connectionTimeout: 3000,
socketTimeout: 1000,
haInterval: 1000,
localThresholdMS: 500,
size: 1
}
);

server.on('error', function() {
Logger.setCurrentLogger(logger);
var errors = [
'expected mongos proxy, but found replicaset member mongod for server localhost:52002',
'expected mongos proxy, but found replicaset member mongod for server localhost:52003',
'no mongos proxies found in seed list, did you mean to connect to a replicaset'
];

expect(warnings).to.have.length(3);
expect(warnings[0].message).to.be.oneOf(errors);
expect(warnings[1].message).to.be.oneOf(errors);
expect(warnings[2].message).to.be.oneOf(errors);

server.destroy();
done();
});
var warnings = [];
var logger = Logger.currentLogger();
Logger.setCurrentLogger(function(msg, state) {
console.log('pushed: ', state);
expect(state.type).to.equal('warn');
warnings.push(state);
});

server.on('error', function() {
Logger.setCurrentLogger(logger);
var errors = [
'expected mongos proxy, but found replicaset member mongod for server localhost:52002',
'expected mongos proxy, but found replicaset member mongod for server localhost:52003',
'no mongos proxies found in seed list, did you mean to connect to a replicaset'
];

expect(warnings).to.have.length(3);
expect(warnings[0].message).to.be.oneOf(errors);
expect(warnings[1].message).to.be.oneOf(errors);
expect(warnings[2].message).to.be.oneOf(errors);

server.destroy();
done();
});

setTimeout(function() {
server.connect();
}, 100);
});
}
});
});
200 changes: 93 additions & 107 deletions test/tests/functional/mongos_mocks/multiple_proxies_tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,47 +51,47 @@ describe('Mongos Multiple Proxies (mocks)', function() {
request.reply({ ok: 1, n: doc.documents, lastOp: new Date() });
}
});
});

// Attempt to connect
var server = new Mongos(
[{ host: 'localhost', port: 11000 }, { host: 'localhost', port: 11001 }],
{
connectionTimeout: 3000,
socketTimeout: 1000,
haInterval: 1000,
localThresholdMS: 500,
size: 1
}
);

var lastPort;

// Add event listeners
server.once('connect', function(_server) {
_server.insert('test.test', [{ created: new Date() }], function(err, r) {
expect(err).to.be.null;
expect(r.connection.port).to.be.oneOf([11000, 11001]);
lastPort = r.connection.port === 11000 ? 11001 : 11000;

_server.insert('test.test', [{ created: new Date() }], function(_err, _r) {
expect(_err).to.be.null;
expect(_r.connection.port).to.equal(lastPort);
lastPort = _r.connection.port === 11000 ? 11001 : 11000;

_server.insert('test.test', [{ created: new Date() }], function(__err, __r) {
expect(__err).to.be.null;
expect(__r.connection.port).to.equal(lastPort);
// Attempt to connect
var server = new Mongos(
[{ host: 'localhost', port: 11000 }, { host: 'localhost', port: 11001 }],
{
connectionTimeout: 3000,
socketTimeout: 1000,
haInterval: 1000,
localThresholdMS: 500,
size: 1
}
);

var lastPort;

server.destroy();
done();
// Add event listeners
server.once('connect', function(_server) {
_server.insert('test.test', [{ created: new Date() }], function(err, r) {
expect(err).to.be.null;
expect(r.connection.port).to.be.oneOf([11000, 11001]);
lastPort = r.connection.port === 11000 ? 11001 : 11000;

_server.insert('test.test', [{ created: new Date() }], function(_err, _r) {
expect(_err).to.be.null;
expect(_r.connection.port).to.equal(lastPort);
lastPort = _r.connection.port === 11000 ? 11001 : 11000;

_server.insert('test.test', [{ created: new Date() }], function(__err, __r) {
expect(__err).to.be.null;
expect(__r.connection.port).to.equal(lastPort);

server.destroy();
done();
});
});
});
});
});

server.on('error', done);
server.connect();
server.on('error', done);
server.connect();
});
}
});

Expand All @@ -106,29 +106,17 @@ describe('Mongos Multiple Proxies (mocks)', function() {
test: function(done) {
var Mongos = this.configuration.mongo.Mongos;

// Contain mock server
var mongos1 = null;
var mongos2 = null;

// Default message fields
var defaultFields = {
ismaster: true,
msg: 'isdbgrid',
maxBsonObjectSize: 16777216,
maxMessageSizeBytes: 48000000,
maxWriteBatchSize: 1000,
localTime: new Date(),
maxWireVersion: 3,
minWireVersion: 0,
ok: 1
};
var defaultFields = assign({}, mock.DEFAULT_ISMASTER, {
msg: 'isdbgrid'
});

// Primary server states
var serverIsMaster = [assign({}, defaultFields)];
// Boot the mock
co(function*() {
mongos1 = yield mock.createServer(11002, 'localhost');
mongos2 = yield mock.createServer(11003, 'localhost');
const mongos1 = yield mock.createServer(11002, 'localhost');
const mongos2 = yield mock.createServer(11003, 'localhost');

mongos1.setMessageHandler(request => {
var doc = request.document;
Expand All @@ -149,71 +137,69 @@ describe('Mongos Multiple Proxies (mocks)', function() {
}
}, 500);
});
});

// Attempt to connect
var server = new Mongos(
[{ host: 'localhost', port: 11002 }, { host: 'localhost', port: 11003 }],
{
connectionTimeout: 3000,
localThresholdMS: 50,
socketTimeout: 1000,
haInterval: 1000,
size: 1
}
);

// Add event listeners
server.once('fullsetup', function() {
server.insert('test.test', [{ created: new Date() }], function(err, r) {
expect(err).to.be.null;
expect(r.connection.port).to.equal(11002);

server.insert('test.test', [{ created: new Date() }], function(_err, _r) {
expect(_err).to.be.null;
expect(_r.connection.port).to.equal(11002);
server.destroy();

// Attempt to connect
var server2 = new Mongos(
[{ host: 'localhost', port: 11002 }, { host: 'localhost', port: 11003 }],
{
connectionTimeout: 3000,
localThresholdMS: 1000,
socketTimeout: 1000,
haInterval: 1000,
size: 1
}
);

// Add event listeners
server2.once('fullsetup', function() {
server2.insert('test.test', [{ created: new Date() }], function(__err, __r) {
expect(__err).to.be.null;
expect(__r.connection.port).to.equal(11002);
// Attempt to connect
var server = new Mongos(
[{ host: 'localhost', port: 11002 }, { host: 'localhost', port: 11003 }],
{
connectionTimeout: 3000,
localThresholdMS: 50,
socketTimeout: 1000,
haInterval: 1000,
size: 1
}
);

// Add event listeners
server.once('fullsetup', function() {
server.insert('test.test', [{ created: new Date() }], function(err, r) {
expect(err).to.be.null;
expect(r.connection.port).to.equal(11002);

server2.insert('test.test', [{ created: new Date() }], function(___err, ___r) {
expect(___err).to.be.null;
expect(___r.connection.port).to.equal(11003);
server.insert('test.test', [{ created: new Date() }], function(_err, _r) {
expect(_err).to.be.null;
expect(_r.connection.port).to.equal(11002);
server.destroy();

server.destroy();
server2.destroy();
done();
// Attempt to connect
var server2 = new Mongos(
[{ host: 'localhost', port: 11002 }, { host: 'localhost', port: 11003 }],
{
connectionTimeout: 3000,
localThresholdMS: 1000,
socketTimeout: 1000,
haInterval: 1000,
size: 1
}
);

// Add event listeners
server2.once('fullsetup', function() {
server2.insert('test.test', [{ created: new Date() }], function(__err, __r) {
expect(__err).to.be.null;
expect(__r.connection.port).to.equal(11002);

server2.insert('test.test', [{ created: new Date() }], function(___err, ___r) {
expect(___err).to.be.null;
expect(___r.connection.port).to.equal(11003);

server.destroy();
server2.destroy();
done();
});
});
});
});

setTimeout(function() {
server2.connect();
}, 100);
setTimeout(function() {
server2.connect();
}, 100);
});
});
});
});

server.on('error', done);
setTimeout(function() {
server.on('error', done);
server.connect();
}, 100);
});
}
});
});

0 comments on commit c9fa89c

Please sign in to comment.