74 lines
1.8 KiB
JavaScript
74 lines
1.8 KiB
JavaScript
var zmq = require('..')
|
|
, should = require('should')
|
|
, semver = require('semver');
|
|
|
|
describe('socket.router', function(){
|
|
it('should handle the unroutable', function(done){
|
|
var complete = 0;
|
|
|
|
if (!semver.gte(zmq.version, '3.2.0')) {
|
|
done();
|
|
return console.warn('Test requires libzmq >= 3.2.0');
|
|
}
|
|
|
|
if (semver.eq(zmq.version, '3.2.1')) {
|
|
done();
|
|
return console.warn('ZMQ_ROUTER_MANDATORY is broken in libzmq = 3.2.1');
|
|
}
|
|
|
|
var envelope = '12384982398293';
|
|
var errMsg = 'No route to host';
|
|
if (require('os').platform() == 'win32') errMsg = 'Unknown error';
|
|
|
|
// should emit an error event on unroutable msgs if mandatory = 1 and error handler is set
|
|
|
|
(function(){
|
|
var sock = zmq.socket('router');
|
|
sock.on('error', function(err){
|
|
err.message.should.equal(errMsg);
|
|
sock.close();
|
|
if (++complete === 2) done();
|
|
});
|
|
|
|
sock.setsockopt(zmq.ZMQ_ROUTER_MANDATORY, 1);
|
|
|
|
sock.send([envelope, '']);
|
|
})();
|
|
|
|
// should throw an error on unroutable msgs if mandatory = 1 and no error handler is set
|
|
|
|
(function(){
|
|
var sock = zmq.socket('router');
|
|
|
|
sock.setsockopt(zmq.ZMQ_ROUTER_MANDATORY, 1);
|
|
|
|
(function(){
|
|
sock.send([envelope, '']);
|
|
}).should.throw(errMsg);
|
|
|
|
(function(){
|
|
sock.send([envelope, '']);
|
|
}).should.throw(errMsg);
|
|
|
|
(function(){
|
|
sock.send([envelope, '']);
|
|
}).should.throw(errMsg);
|
|
|
|
sock.close();
|
|
})();
|
|
|
|
// should silently ignore unroutable msgs if mandatory = 0
|
|
|
|
(function(){
|
|
var sock = zmq.socket('router');
|
|
|
|
(function(){
|
|
sock.send([envelope, '']);
|
|
sock.close();
|
|
}).should.not.throw(errMsg);
|
|
})();
|
|
if (++complete === 2) done();
|
|
});
|
|
|
|
});
|