fluent-plugin-kestrel 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -16,11 +16,11 @@ see https://github.com/robey/kestrel
16
16
 
17
17
  <match kestrel.**>
18
18
  type kestrel
19
+ host localhost # (required) kestrel host
20
+ queue test # (required) queue name of kestrel
19
21
 
20
- host localhost # kestrel host (required)
21
- queue test # queue name of kestrel (required)
22
-
23
- port 22133 # optional, default 22133
22
+ port 22133 # (optional) kestrel port. default 22133
23
+ ttl 100 # (optional) ttl(sec). default=0 (never expire)
24
24
  </match>
25
25
 
26
26
  == Data Format
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.2.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "fluent-plugin-kestrel"
8
- s.version = "0.1.1"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Junichiro Takagi"]
12
- s.date = "2012-05-20"
12
+ s.date = "2012-05-22"
13
13
  s.description = "fluentd output plugin for kestrel queue."
14
14
  s.email = "t.junichiro@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -24,8 +24,10 @@ Gem::Specification.new do |s|
24
24
  "Rakefile",
25
25
  "VERSION",
26
26
  "fluent-plugin-kestrel.gemspec",
27
+ "lib/fluent/plugin/in_kestrel.rb",
27
28
  "lib/fluent/plugin/out_kestrel.rb",
28
29
  "test/helper.rb",
30
+ "test/plugin/test_in_kestrel.rb",
29
31
  "test/plugin/test_out_kestrel.rb"
30
32
  ]
31
33
  s.homepage = "http://github.com/tjun/fluent-plugin-kestrel"
@@ -0,0 +1,64 @@
1
+ module Fluent
2
+ class KestrelInput < Input
3
+ Fluent::Plugin.register_input('kestrel', self)
4
+ attr_reader :kestrel
5
+
6
+ config_param :host, :string, :default => nil
7
+ config_param :port, :integer, :default => 22133
8
+ config_param :queue, :string, :default => nil
9
+ config_param :tag, :string, :default => nil
10
+
11
+ config_param :raw, :bool, :default => true
12
+ config_param :peek, :bool, :default => false
13
+ config_param :timeout, :integer, :default => 10
14
+
15
+ def initialize
16
+ super
17
+ require 'kestrel'
18
+ require 'time'
19
+ end
20
+
21
+ def configure(conf)
22
+ super
23
+
24
+ unless @queue && @host
25
+ raise ConfigError, "[kestrel config error]:'host' and 'queue' option is required."
26
+ end
27
+ unless @tag
28
+ raise ConfigError, "[kestrel config error]:'tag' option is required."
29
+ end
30
+ @timef = TimeFormatter.new(@time_format, @localtime)
31
+ @options = {
32
+ :raw => @raw,
33
+ :peek => @peek,
34
+ :timeout => @timeout
35
+ }.freeze
36
+ end
37
+
38
+ def start
39
+ super
40
+
41
+ @kestrel = Kestrel::Client.new(@host + ":" + @port.to_s)
42
+ @thread = Thread.new(&method(:run))
43
+ end
44
+
45
+ def shutdown
46
+ @thread.join
47
+ super
48
+ end
49
+
50
+ def run
51
+ loop do
52
+ data = @kestrel.get(@queue, @options)
53
+ unless data
54
+ sleep 1
55
+ else
56
+ Engine.emit(@tag, Engine.now, data)
57
+ end
58
+ end
59
+ rescue
60
+ $log.error "unexpected error.", :error=>$!.to_s
61
+ $log.error_backtrace
62
+ end
63
+ end
64
+ end
@@ -10,8 +10,6 @@ module Fluent
10
10
  config_param :raw, :bool, :default => true
11
11
  config_param :time_format, :string, :default => nil
12
12
 
13
-
14
-
15
13
  def initialize
16
14
  super
17
15
  require 'kestrel'
@@ -22,7 +20,7 @@ module Fluent
22
20
  super
23
21
 
24
22
  unless @queue && @host
25
- raise ConfigError, "[kestrel config error]:'host' and 'queue' parameter must be specified."
23
+ raise ConfigError, "[kestrel config error]:'host' and 'queue' option is required."
26
24
  end
27
25
  @timef = TimeFormatter.new(@time_format, @localtime)
28
26
  end
data/test/helper.rb CHANGED
@@ -1,22 +1,10 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
1
3
  require 'rubygems'
2
4
  require 'bundler'
3
- begin
4
- Bundler.setup(:default, :development)
5
- rescue Bundler::BundlerError => e
6
- $stderr.puts e.message
7
- $stderr.puts "Run `bundle install` to install missing gems"
8
- exit e.status_code
9
- end
10
5
  require 'test/unit'
11
6
  require 'shoulda'
12
-
13
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
- $LOAD_PATH.unshift(File.dirname(__FILE__))
15
7
  require 'fluent/test'
16
- require 'fluent/plugin/out_kestrel'
17
-
18
- class Test::Unit::TestCase
19
- end
20
8
 
21
9
  if ENV['SIMPLE_COV']
22
10
  require 'simplecov'
@@ -25,3 +13,14 @@ if ENV['SIMPLE_COV']
25
13
  add_filter 'pkg/'
26
14
  end
27
15
  end
16
+
17
+ begin
18
+ Bundler.setup(:default, :development)
19
+ rescue Bundler::BundlerError => e
20
+ $stderr.puts e.message
21
+ $stderr.puts "Run `bundle install` to install missing gems"
22
+ exit e.status_code
23
+ end
24
+
25
+ class Test::Unit::TestCase
26
+ end
@@ -0,0 +1,39 @@
1
+ require 'helper'
2
+
3
+ class TestFluentPluginInKestrel < Test::Unit::TestCase
4
+ def setup
5
+ Fluent::Test.setup
6
+ require 'fluent/plugin/in_kestrel'
7
+ end
8
+
9
+ CONFIG = %[
10
+ type kestrel
11
+ host localhost
12
+ port 22133
13
+ queue fluent-test
14
+ tag fluent.test
15
+ ]
16
+
17
+ def create_driver(conf = CONFIG)
18
+ Fluent::Test::InputTestDriver.new(Fluent::KestrelInput).configure(conf)
19
+ end
20
+
21
+ def test_configure
22
+ d = create_driver(%[
23
+ type kestrel
24
+ host localhost
25
+ port 22133
26
+ queue fluent-test
27
+ tag fluent.test
28
+ ])
29
+
30
+ assert_equal 'localhost', d.instance.host
31
+ assert_equal 22133, d.instance.port
32
+ assert_equal "fluent-test", d.instance.queue
33
+ assert_equal "fluent.test", d.instance.tag
34
+ end
35
+
36
+ # def test_emit
37
+ # ToDo
38
+ # end
39
+ end
@@ -1,6 +1,6 @@
1
1
  require 'helper'
2
2
 
3
- class TestFluentPluginKestrel < Test::Unit::TestCase
3
+ class TestFluentPluginOutKestrel < Test::Unit::TestCase
4
4
  def setup
5
5
  Fluent::Test.setup
6
6
  require 'fluent/plugin/out_kestrel'
@@ -28,7 +28,8 @@ class TestFluentPluginKestrel < Test::Unit::TestCase
28
28
  assert_equal 'localhost', d.instance.host
29
29
  assert_equal 22133, d.instance.port
30
30
  assert_equal "fluent-test", d.instance.queue
31
-
31
+ d.run
32
+ d.instance.kestrel.flush("fluent-test")
32
33
  end
33
34
 
34
35
  def test_format
@@ -54,6 +55,6 @@ class TestFluentPluginKestrel < Test::Unit::TestCase
54
55
  assert_equal "2011-01-02T13:14:15Z\ttest\t{\"a\":1}", d.instance.kestrel.get("fluent-test", opts=get_opt)
55
56
  assert_equal "2011-01-02T13:14:15Z\ttest\t{\"a\":2}", d.instance.kestrel.get("fluent-test", opts=get_opt)
56
57
  assert_equal "2011-01-02T13:14:15Z\ttest\t{\"a\":3}", d.instance.kestrel.get("fluent-test", opts=get_opt)
57
-
58
+ d.instance.kestrel.flush("fluent-test")
58
59
  end
59
60
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-kestrel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-20 00:00:00.000000000 Z
12
+ date: 2012-05-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: kestrel-client
@@ -154,8 +154,10 @@ files:
154
154
  - Rakefile
155
155
  - VERSION
156
156
  - fluent-plugin-kestrel.gemspec
157
+ - lib/fluent/plugin/in_kestrel.rb
157
158
  - lib/fluent/plugin/out_kestrel.rb
158
159
  - test/helper.rb
160
+ - test/plugin/test_in_kestrel.rb
159
161
  - test/plugin/test_out_kestrel.rb
160
162
  homepage: http://github.com/tjun/fluent-plugin-kestrel
161
163
  licenses:
@@ -172,7 +174,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
172
174
  version: '0'
173
175
  segments:
174
176
  - 0
175
- hash: 3129241088669939202
177
+ hash: -1831959958403091659
176
178
  required_rubygems_version: !ruby/object:Gem::Requirement
177
179
  none: false
178
180
  requirements: