[Groonga-commit] groonga/express-kotoumi [master] Accept "Forward" type fluent messages

Back to archive index

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 



More information about the Groonga-commit mailing list
Back to archive index