fluent-plugin-scribe 0.10.0 → 0.10.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,17 +2,17 @@
2
2
 
3
3
  == Overview
4
4
 
5
- This is a plugin for fluent[https://github.com/fluent] event collector. This plugin adds the Scribe[https://github.com/facebook/scribe] compatible interface to fluent.
5
+ This is a plugin for fluentd[https://github.com/fluentd] event collector. This plugin adds the Scribe[https://github.com/facebook/scribe] compatible interface to fluentd.
6
6
 
7
7
  == What's Scribe?
8
8
 
9
9
  Scribe[https://github.com/facebook/scribe] is a server for aggregating log data streamed in real time from a large number of servers, developed at Facebook.
10
10
 
11
- It uses Thrift[http://thrift.apache.org/], cross-language RPC framework, to communicate between clients and servers.
11
+ It uses Thrift[http://thrift.apache.org/], a cross-language RPC framework, to communicate between clients and servers.
12
12
 
13
13
  == What's Scribe plugin for fluent?
14
14
 
15
- The Scribe plugin for fluent enables fluent daemon, to talk the Scribe protocol by using Thrift. The following shows the protocol itself, in thrift-idl format:
15
+ The Scribe plugin for fluentd, which enables fluentd to talk the Scribe protocol. Scribe protocol is defined as follows, in Thrift-IDL format:
16
16
 
17
17
  enum ResultCode
18
18
  {
@@ -31,11 +31,11 @@ The Scribe plugin for fluent enables fluent daemon, to talk the Scribe protocol
31
31
  ResultCode Log(1: list<LogEntry> messages);
32
32
  }
33
33
 
34
- The category field is used as fluent 'tag'.
34
+ The category field is used as fluentd 'tag'.
35
35
 
36
36
  == How to use?
37
37
 
38
- To use this plugin with fluent, please add the following configuration to fluent.conf.
38
+ Please add the following configurations to fluent.conf.
39
39
 
40
40
  # Scribe input
41
41
  <source>
@@ -43,12 +43,12 @@ To use this plugin with fluent, please add the following configuration to fluent
43
43
  port 1463
44
44
  </source>
45
45
 
46
- The following options are supported.
46
+ These options are supported.
47
47
 
48
48
  * port: port number (default: 1463)
49
49
  * bind: bind address (default: 0.0.0.0)
50
50
  * server_type: server architecture either in 'simple', 'threaded', 'thread_pool', 'nonblocking' (default: nonblocking)
51
- * framed: use framed protocol or not (default: true)
51
+ * is_framed: use framed protocol or not (default: true)
52
52
 
53
53
  == For Developers
54
54
 
@@ -64,6 +64,7 @@ Then please execute the sample client.
64
64
  == Contributors
65
65
 
66
66
  * {Satoshi Tagomori}[https://github.com/tagomoris]
67
+ * {Sadayuki Furuhashi}[https://github.com/frsyuki]
67
68
 
68
69
  == Copyright
69
70
 
data/Rakefile CHANGED
@@ -40,7 +40,7 @@ task "thrift_gen" do
40
40
  end
41
41
 
42
42
  Rake::TestTask.new(:test) do |t|
43
- t.test_files = Dir['test/*_test.rb']
43
+ t.test_files = Dir['test/plugin/*.rb']
44
44
  t.ruby_opts = ['-rubygems'] if defined? Gem
45
45
  t.ruby_opts << '-I.'
46
46
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.10.0
1
+ 0.10.1
@@ -21,6 +21,12 @@ module Fluent
21
21
  class ScribeInput < Input
22
22
  Plugin.register_input('scribe', self)
23
23
 
24
+ config_param :port, :integer, :default => 1463
25
+ config_param :bind, :string, :default => '0.0.0.0'
26
+ config_param :server_type, :string, :default => 'nonblocking'
27
+ config_param :is_framed, :bool, :default => true
28
+ config_param :body_size_limit, :size, :default => 32*1024*1024 # TODO default
29
+
24
30
  def initialize
25
31
  require 'thrift'
26
32
  $:.unshift File.join(File.dirname(__FILE__), 'thrift')
@@ -30,23 +36,11 @@ class ScribeInput < Input
30
36
  require 'scribe_types'
31
37
  require 'scribe_constants'
32
38
  require 'scribe'
33
-
34
- @port = 1463
35
- @bind = '0.0.0.0'
36
- @body_size_limit = 32*1024*1024 # TODO default
39
+ super
37
40
  end
38
41
 
39
42
  def configure(conf)
40
- @port = conf['port'] || @port
41
- @port = @port.to_i
42
- @bind = conf['bind'] || @bind
43
-
44
- @server_type = conf['server_type'] || 'nonblocking'
45
- @is_framed = conf['framed'].to_s != "false"
46
-
47
- if body_size_limit = conf['body_size_limit']
48
- @body_size_limit = Config.size_value(body_size_limit)
49
- end
43
+ super
50
44
  end
51
45
 
52
46
  def start
@@ -0,0 +1,57 @@
1
+ require 'test/unit'
2
+ require 'fluent/test'
3
+ require 'lib/fluent/plugin/in_scribe'
4
+
5
+ class ScribeInputTest < Test::Unit::TestCase
6
+ def setup
7
+ Fluent::Test.setup
8
+ end
9
+
10
+ CONFIG = %[
11
+ port 14630
12
+ bind 127.0.0.1
13
+ ]
14
+
15
+ def create_driver(conf=CONFIG)
16
+ Fluent::Test::InputTestDriver.new(Fluent::ScribeInput).configure(conf)
17
+ end
18
+
19
+ def test_configure
20
+ d = create_driver
21
+ assert_equal 14630, d.instance.port
22
+ assert_equal '127.0.0.1', d.instance.bind
23
+ end
24
+
25
+ def test_time
26
+ d = create_driver
27
+
28
+ time = Time.parse("2011-01-02 13:14:15 UTC").to_i
29
+ Fluent::Engine.now = time
30
+
31
+ d.expect_emit "tag1", time, {"message"=>'aiueo'}
32
+ d.expect_emit "tag2", time, {"message"=>'aiueo'}
33
+
34
+ d.run do
35
+ d.expected_emits.each { |tag, time, record|
36
+ res = send(tag, record['message'])
37
+ assert_equal ResultCode::OK, res
38
+ }
39
+ end
40
+ end
41
+
42
+ def send(tag, msg)
43
+ socket = Thrift::Socket.new '127.0.0.1', 14630
44
+ transport = Thrift::FramedTransport.new socket
45
+ protocol = Thrift::BinaryProtocol.new transport, false, false
46
+ client = Scribe::Client.new protocol
47
+ transport.open
48
+ raw_sock = socket.to_io
49
+ raw_sock.setsockopt Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1
50
+ entry = LogEntry.new
51
+ entry.category = tag
52
+ entry.message = msg.to_s
53
+ res = client.Log([entry])
54
+ transport.close
55
+ res
56
+ end
57
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-scribe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.10.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -14,7 +14,7 @@ default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: fluentd
17
- requirement: &2153379240 !ruby/object:Gem::Requirement
17
+ requirement: &2156672800 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 0.10.0
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2153379240
25
+ version_requirements: *2156672800
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: thrift
28
- requirement: &2153378640 !ruby/object:Gem::Requirement
28
+ requirement: &2156671600 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,7 +33,7 @@ dependencies:
33
33
  version: 0.7.0
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *2153378640
36
+ version_requirements: *2156671600
37
37
  description:
38
38
  email:
39
39
  executables: []
@@ -57,6 +57,7 @@ files:
57
57
  - lib/fluent/plugin/thrift/scribe.thrift
58
58
  - lib/fluent/plugin/thrift/scribe_constants.rb
59
59
  - lib/fluent/plugin/thrift/scribe_types.rb
60
+ - test/plugin/in_scribe.rb
60
61
  - README.rdoc
61
62
  has_rdoc: true
62
63
  homepage: https://github.com/fluent/fluent-plugin-scribe
@@ -83,4 +84,5 @@ rubygems_version: 1.6.2
83
84
  signing_key:
84
85
  specification_version: 3
85
86
  summary: Scribe plugin for Fluent event collector
86
- test_files: []
87
+ test_files:
88
+ - test/plugin/in_scribe.rb