UNPKG

bonree-zmq

Version:

Bindings for node.js and io.js to ZeroMQ

53 lines (45 loc) 1.33 kB
var zmq = require('..') , should = require('should'); it('should cooperate with gc', function(done){ var a = zmq.socket('dealer') , b = zmq.socket('dealer'); /** * We create 2 dealer sockets. * One of them (`a`) is not referenced explicitly after the main loop * finishes so it's a pretender for garbage collection. * This test performs gc() explicitly and then tries to send a message * to a dealer socket that could be destroyed and collected. * If a message is delivered, than everything is ok. Otherwise the guard * timeout will make the test fail. */ a.on('message', function(msg){ msg.should.be.an.instanceof(Buffer); msg.toString().should.equal('hello'); this.close(); b.close(); clearTimeout(timeout); done(); }); var bound = false; a.bind('tcp://127.0.0.1:5555', function(e){ if (e) { clearInterval(interval); done(e); } else { bound = true; } }); var interval = setInterval(function(){ gc(); if (bound) { clearInterval(interval); b.connect('tcp://127.0.0.1:5555'); b.send('hello'); } }, 100); // guard against hanging var timeout = setTimeout(function(){ clearInterval(interval); done(new Error('timeout of 5000ms exceeded (bound: ' + bound + ')')); }, 15000); });