Files
axyz/tools/LiveTexturing/node_modules/zmq/test/socket.router.js
T
2016-03-18 10:14:02 +01:00

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();
});
});