UNPKG

tcpnet

Version:

Creates TCP connections between nodes without configuration

68 lines (53 loc) 1.49 kB
var tcpnet = require('../../tcpnet.js'); var test = require('tap').test; var async = require('async'); var serviceA = tcpnet('test-service'); serviceA.listen(); var serviceB = tcpnet('test-service'); serviceB.listen(); test('got connection in both services', function (t) { async.parallel({ a: function (done) { serviceA.once('connection', function (socket) { done(null, socket); }); }, b: function (done) { serviceB.once('connection', function (socket) { done(null, socket); }); } }, function (err, sockets) { t.equal(err, null); t.equal(serviceA.connections.length, 1); t.equal(serviceA.connections[0], sockets.a); t.equal(serviceB.connections.length, 1); t.equal(serviceB.connections[0], sockets.b); t.end(); }); }); test('can perform two way communication', function (t) { var socketA = serviceA.connections[0]; var socketB = serviceB.connections[0]; // data transfer A -> B socketA.write('a sends'); socketB.once('data', function (chunk) { t.equal(chunk.toString(), 'a sends'); // data transfer B -> A socketB.write('b sends'); socketA.once('data', function (chunk) { t.equal(chunk.toString(), 'b sends'); // done t.end(); }); }); }); test('close services', function (t) { async.parallel([ serviceA.close.bind(serviceA), serviceB.close.bind(serviceB) ], function (err) { t.equal(err, null); t.end(); }); });