YUKI Hiroshi
null+****@clear*****
Fri Feb 1 17:39:24 JST 2013
YUKI Hiroshi 2013-02-01 17:39:24 +0900 (Fri, 01 Feb 2013) New Revision: 6d546fffa084af40cdd19b09b08d64ba2dd819e3 https://github.com/groonga/express-kotoumi/commit/6d546fffa084af40cdd19b09b08d64ba2dd819e3 Log: Accept "Forward" type fluent messages Modified files: lib/backend/receiver.js test/backend-receiver.test.js Modified: lib/backend/receiver.js (+15 -1) =================================================================== --- lib/backend/receiver.js 2013-02-01 11:12:50 +0900 (8ac4510) +++ lib/backend/receiver.js 2013-02-01 17:39:24 +0900 (9a39ac5) @@ -52,6 +52,13 @@ MsgPackReceiver.prototype.close = function() { exports.MsgPackReceiver = MsgPackReceiver; +/** + * Supports two type packets: + * Forward (used by fluent-cat and fluent-plugin-kotoumi) + * [tag, [[time, data], [time,data], ...]] + * Message (used by fluent-logger-node) + * [tag, time, data] + */ function FluentReceiver(port) { MsgPackReceiver.apply(this, arguments); } @@ -60,7 +67,14 @@ FluentReceiver.prototype = Object.create(MsgPackReceiver.prototype); FluentReceiver.prototype._onMessageReceive = function(packet) { MsgPackReceiver.prototype._onMessageReceive.call(this, packet); - this.emit(packet[0], packet[2]); + if (packet.length == 3) { // Message type + this.emit(packet[0], packet[2]); + } + else { // Forward type + packet[1].forEach(function(entry) { + this.emit(packet[0], entry[1]); + }, this); + } }; exports.FluentReceiver = FluentReceiver; Modified: test/backend-receiver.test.js (+38 -4) =================================================================== --- test/backend-receiver.test.js 2013-02-01 11:12:50 +0900 (11706f8) +++ test/backend-receiver.test.js 2013-02-01 17:39:24 +0900 (91e0378) @@ -16,7 +16,7 @@ suite('FluentReceiver', function() { } }); - test('receiving packed message', function(done) { + test('receiving packed message (Message type)', function(done) { var mockedReceiver = nodemock .mock('start') .mock('receive') @@ -35,7 +35,41 @@ suite('FluentReceiver', function() { .next(function() { assert.notEqual(receiver.port, undefined); - var rawPacket = ['kotoumi.message', Number, { message: true }]; + var rawPacket = ['kotoumi.message', Date.now(), { message: true }]; + return utils.sendPacketTo(rawPacket, receiver.port); + }) + .next(function() { + mockedReceiver.assertThrows(); + done(); + }) + .error(function(error) { + done(error); + }); + }); + + test('receiving packed message (Forward type)', function(done) { + var mockedReceiver = nodemock + .mock('start') + .mock('receive') + .takes({ message1: true }) + .mock('receive') + .takes({ message2: true }); + + receiver = new FluentReceiver(); + receiver.on('kotoumi.message', function(data) { + mockedReceiver.receive(data); + }); + receiver.listen(function() { + mockedReceiver.start(); + }); + + Deferred + .wait(0.01) + .next(function() { + assert.notEqual(receiver.port, undefined); + + var rawPacket = ['kotoumi.message', [[Date.now(), { message1: true }], + [Date.now(), { message2: true }]]]; return utils.sendPacketTo(rawPacket, receiver.port); }) .next(function() { @@ -68,11 +102,11 @@ suite('FluentReceiver', function() { .next(function() { assert.notEqual(receiver.port, undefined); - var rawPacket = ['kotoumi.message', Number, { message1: true }]; + var rawPacket = ['kotoumi.message', Date.now(), { message1: true }]; return utils.sendPacketTo(rawPacket, receiver.port); }) .next(function() { - var rawPacket = ['kotoumi.message', Number, { message2: true }]; + var rawPacket = ['kotoumi.message', Date.now(), { message2: true }]; return utils.sendPacketTo(rawPacket, receiver.port); }) .next(function() { -------------- next part -------------- HTML����������������������������...Download