fluent-plugin-norikra 0.0.9 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,172 @@
1
+ require_relative 'norikra/input'
2
+ require_relative 'norikra/output'
3
+
4
+ require 'norikra-client'
5
+
6
+ module Fluent
7
+ class NorikraFilterOutput < Fluent::BufferedOutput
8
+ include Fluent::NorikraPlugin::InputMixin
9
+ include Fluent::NorikraPlugin::OutputMixin
10
+
11
+ Fluent::Plugin.register_output('norikra_filter', self)
12
+
13
+ config_set_default :flush_interval, 1 # 1sec
14
+
15
+ config_param :norikra, :string, :default => 'localhost:26571'
16
+
17
+ config_param :connect_timeout, :integer, :default => nil
18
+ config_param :send_timeout, :integer, :default => nil
19
+ config_param :receive_timeout, :integer, :default => nil
20
+
21
+ #<server>
22
+ attr_reader :execute_server, :execute_server_path
23
+
24
+ #for OutputMixin
25
+ config_param :remove_tag_prefix, :string, :default => nil
26
+ config_param :target_map_tag, :bool, :default => false
27
+ config_param :target_map_key, :string, :default => nil
28
+ config_param :target_string, :string, :default => nil
29
+
30
+ # <default>
31
+ # <target TARGET>
32
+
33
+ # <fetch> tags
34
+ # <fetch>
35
+ # method event
36
+ # target QUERY_NAME
37
+ # interval 5s
38
+ # tag query_name
39
+ # # tag field FIELDNAME
40
+ # # tag string FIXED_STRING
41
+ # tag_prefix norikra.event # actual tag: norikra.event.QUERYNAME
42
+ # </fetch>
43
+ # <fetch>
44
+ # method sweep
45
+ # target QUERY_GROUP # or unspecified => default
46
+ # interval 60s
47
+ # tag field group_by_key
48
+ # tag_prefix norikra.query
49
+ # </fetch>
50
+
51
+ def configure(conf)
52
+ super
53
+
54
+ @host,@port = @norikra.split(':', 2)
55
+ @port = @port.to_i
56
+
57
+ if !@target_map_tag && @target_map_key.nil? && @target_string.nil?
58
+ raise Fluent::ConfigError, 'target naming not specified (target_map_tag/target_map_key/target_string)'
59
+ end
60
+
61
+ @execute_server = false
62
+
63
+ conf.elements.each do |element|
64
+ case element.name
65
+ when 'default', 'target'
66
+ # ignore: processed in OutputMixin
67
+ when 'fetch'
68
+ # ignore: processed in InputMixin, and set @fetch_queue
69
+ when 'server'
70
+ @execute_server = true
71
+ @execute_jruby_path = element['jruby']
72
+ @execute_server_path = element['path']
73
+ @execute_server_opts = element['opts']
74
+ else
75
+ raise Fluent::ConfigError, "unknown configuration section name for this plugin: #{element.name}"
76
+ end
77
+ end
78
+
79
+ setup_output(conf, true) # <query> enabled in <default> and <target TARGET>
80
+ setup_input(conf)
81
+ end
82
+
83
+ def client(opts={})
84
+ Norikra::Client.new(@host, @port, {
85
+ :connect_timeout => opts[:connect_timeout] || @connect_timeout,
86
+ :send_timeout => opts[:send_timeout] || @send_timeout,
87
+ :receive_timeout => opts[:receive_timeout] || @receive_timeout,
88
+ })
89
+ end
90
+
91
+ def start
92
+ super
93
+
94
+ @norikra_started = false
95
+
96
+ if @execute_server
97
+ @norikra_pid = nil
98
+ @norikra_thread = Thread.new(&method(:server_starter))
99
+ # @norikra_started will be set in server_starter
100
+ else
101
+ @norikra_pid = nil
102
+ @norikra_thread = nil
103
+ @norikra_started = true
104
+ end
105
+
106
+ start_output
107
+ start_input
108
+ end
109
+
110
+ def shutdown
111
+ stop_output
112
+ stop_input
113
+ Process.kill(:TERM, @norikra_pid) if @execute_server
114
+
115
+ shutdown_output
116
+ shutdown_input
117
+
118
+ if @execute_server
119
+ begin
120
+ counter = 0
121
+ while !Process.waitpid(@norikra_pid, Process::WNOHANG)
122
+ sleep 1
123
+ break if counter > 3
124
+ end
125
+ rescue Errno::ECHILD
126
+ # norikra server process exited.
127
+ end
128
+ end
129
+ end
130
+
131
+ def server_starter
132
+ $log.info "starting Norikra server process #{@host}:#{@port}"
133
+ base_options = [@execute_server_path, 'start', '-H', @host, '-P', @port.to_s]
134
+ cmd,options = if @execute_jruby_path
135
+ [@execute_jruby_path, [@execute_server_path, 'start', '-H', @host, '-P', @port.to_s]]
136
+ else
137
+ [@execute_server_path, ['start', '-H', @host, '-P', @port.to_s]]
138
+ end
139
+ if @execute_server_opts
140
+ options += @execute_server_opts.split(/ +/)
141
+ end
142
+ @norikra_pid = fork do
143
+ ENV.keys.select{|k| k =~ /^(RUBY|GEM|BUNDLE|RBENV|RVM|rvm)/}.each {|k| ENV.delete(k)}
144
+ exec([cmd, 'norikra(fluentd)'], *options)
145
+ end
146
+ connecting = true
147
+ $log.info "trying to confirm norikra server status..."
148
+ while connecting
149
+ begin
150
+ $log.debug "start to connect norikra server #{@host}:#{@port}"
151
+ client(:connect_timeout => 1, :send_timeout => 1, :receive_timeout => 1).targets
152
+ # discard result: no exceptions is success
153
+ connecting = false
154
+ next
155
+ rescue HTTPClient::TimeoutError
156
+ $log.debug "Norikra server test connection timeout. retrying..."
157
+ rescue Errno::ECONNREFUSED
158
+ $log.debug "Norikra server test connection refused. retrying..."
159
+ rescue => e
160
+ $log.error "unknown error in confirming norikra server, #{e.class}:#{e.message}"
161
+ end
162
+ sleep 3
163
+ end
164
+ $log.info "confirmed that norikra server #{@host}:#{@port} started."
165
+ @norikra_started = true
166
+ end
167
+
168
+ def fetchable?
169
+ @norikra_started
170
+ end
171
+ end
172
+ end
data/test/helper.rb CHANGED
@@ -23,7 +23,9 @@ unless ENV.has_key?('VERBOSE')
23
23
  $log = nulllogger
24
24
  end
25
25
 
26
+ require 'fluent/plugin/in_norikra'
26
27
  require 'fluent/plugin/out_norikra'
28
+ require 'fluent/plugin/out_norikra_filter'
27
29
 
28
30
  class Test::Unit::TestCase
29
31
  end
@@ -0,0 +1,14 @@
1
+ require 'helper'
2
+
3
+ class NorikraInputTest < Test::Unit::TestCase
4
+ CONFIG = %[
5
+ ]
6
+
7
+ def create_driver(conf=CONFIG, tag='test')
8
+ Fluent::Test::InputTestDriver.new(Fluent::NorikraInput).configure(conf)
9
+ end
10
+
11
+ def test_init
12
+ create_driver
13
+ end
14
+ end
@@ -1,11 +1,15 @@
1
1
  require 'helper'
2
2
 
3
3
  class NorikraOutputTest < Test::Unit::TestCase
4
- CONF = %[
4
+ CONFIG = %[
5
5
  target_map_tag yes
6
6
  ]
7
7
 
8
8
  def create_driver(conf=CONFIG, tag='test')
9
9
  Fluent::Test::OutputTestDriver.new(Fluent::NorikraOutput, tag).configure(conf)
10
10
  end
11
+
12
+ def test_init
13
+ create_driver
14
+ end
11
15
  end
@@ -0,0 +1,15 @@
1
+ require 'helper'
2
+
3
+ class NorikraFilterOutputTest < Test::Unit::TestCase
4
+ CONFIG = %[
5
+ target_map_tag yes
6
+ ]
7
+
8
+ def create_driver(conf=CONFIG, tag='test')
9
+ Fluent::Test::OutputTestDriver.new(Fluent::NorikraFilterOutput, tag).configure(conf)
10
+ end
11
+
12
+ def test_init
13
+ create_driver
14
+ end
15
+ end
@@ -1,9 +1,9 @@
1
1
  require 'helper'
2
- require 'fluent/plugin/norikra_target'
2
+ require 'fluent/plugin/norikra/config_section'
3
3
 
4
4
  class ConfigSectionTest < Test::Unit::TestCase
5
5
  def setup
6
- @this = Fluent::NorikraOutput::ConfigSection
6
+ @this = Fluent::NorikraPlugin::ConfigSection
7
7
  end
8
8
 
9
9
  def test_init_default
@@ -23,23 +23,45 @@ class ConfigSectionTest < Test::Unit::TestCase
23
23
  'exclude_regexp' => 'f_.*',
24
24
  'field_string' => 's1,s2,s3',
25
25
  'field_boolean' => 'bool1,bool2',
26
- 'field_int' => 'i1,i2,i3,i4',
27
- 'field_long' => 'num1,num2',
28
- 'field_float' => 'f1,f2',
29
- 'field_double' => 'd'
26
+ 'field_integer' => 'i1,i2,i3,i4,num1,num2',
27
+ 'field_float' => 'f1,f2,d',
30
28
  }, [q1,q2])
31
29
  s1 = @this.new(c1)
32
30
 
33
31
  assert_nil s1.target
34
32
  assert_equal({:include => '*', :include_regexp => nil, :exclude => 'flag', :exclude_regexp => 'f_.*'}, s1.filter_params)
35
33
  assert_equal({
36
- :string => %w(s1 s2 s3), :boolean => %w(bool1 bool2), :int => %w(i1 i2 i3 i4), :long => %w(num1 num2),
37
- :float => %w(f1 f2), :double => %w(d)
34
+ :string => %w(s1 s2 s3), :boolean => %w(bool1 bool2), :integer => %w(i1 i2 i3 i4 num1 num2),
35
+ :float => %w(f1 f2 d),
38
36
  }, s1.field_definitions)
39
37
  assert_equal 2, s1.query_generators.size
40
38
  assert_equal (10 * 60 / 5), s1.query_generators.map(&:fetch_interval).sort.first
41
39
  end
42
40
 
41
+ def test_init_default_without_query
42
+ q1 = Fluent::Config::Element.new('query', nil, {
43
+ 'name' => 'q1_${target}',
44
+ 'expression' => 'SELECT * FROM ${target}.win:time_batch(10 min) WHERE q1',
45
+ 'tag' => 'q1.${target}'
46
+ }, [])
47
+ q2 = Fluent::Config::Element.new('query', nil, {
48
+ 'name' => 'q2_${target}',
49
+ 'expression' => 'SELECT * FROM ${target}.win:time_batch(50 min) WHERE q2.length() > 0',
50
+ 'tag' => 'q2.${target}'
51
+ }, [])
52
+ c1 = Fluent::Config::Element.new('default', nil, {
53
+ 'include' => '*',
54
+ 'exclude' => 'flag',
55
+ 'exclude_regexp' => 'f_.*',
56
+ 'field_string' => 's1,s2,s3',
57
+ 'field_boolean' => 'bool1,bool2',
58
+ 'field_integer' => 'i1,i2,i3,i4,num1,num2',
59
+ 'field_float' => 'f1,f2,d',
60
+ }, [q1,q2])
61
+ s1 = @this.new(c1, false)
62
+ assert_equal 0, s1.query_generators.size
63
+ end
64
+
43
65
  def test_init_target
44
66
  q3 = Fluent::Config::Element.new('query', nil, {
45
67
  'name' => 'q3_test2',
@@ -48,13 +70,13 @@ class ConfigSectionTest < Test::Unit::TestCase
48
70
  }, [])
49
71
  c2 = Fluent::Config::Element.new('target', 'test2', {
50
72
  'exclude_regexp' => '(f|g)_.*',
51
- 'field_double' => 'd1,d2,d3,d4'
73
+ 'field_float' => 'd1,d2,d3,d4'
52
74
  }, [q3])
53
75
  s2 = @this.new(c2)
54
76
 
55
77
  assert_equal 'test2', s2.target
56
78
  assert_equal({:include => nil, :include_regexp => nil, :exclude => nil, :exclude_regexp => '(f|g)_.*'}, s2.filter_params)
57
- assert_equal({:string => [], :boolean => [], :int => [], :long => [], :float => [], :double => %w(d1 d2 d3 d4)}, s2.field_definitions)
79
+ assert_equal({:string => [], :boolean => [], :integer => [], :float => %w(d1 d2 d3 d4)}, s2.field_definitions)
58
80
  assert_equal 1, s2.query_generators.size
59
81
  assert_equal (30 * 60 / 5), s2.query_generators.map(&:fetch_interval).sort.first
60
82
  end
@@ -71,19 +93,19 @@ class ConfigSectionTest < Test::Unit::TestCase
71
93
 
72
94
  assert_equal 'test3', s3.target
73
95
  assert_equal({:include => nil, :include_regexp => nil, :exclude => nil, :exclude_regexp => nil}, s3.filter_params)
74
- assert_equal({:string => [], :boolean => [], :int => [], :long => [], :float => [], :double => []}, s3.field_definitions)
96
+ assert_equal({:string => [], :boolean => [], :integer => [], :float => []}, s3.field_definitions)
75
97
  assert_equal 1, s3.query_generators.size
76
98
  end
77
99
 
78
100
  def test_init_target_without_query
79
101
  c4 = Fluent::Config::Element.new('target', 'test4', {
80
- 'field_int' => 'status'
102
+ 'field_integer' => 'status'
81
103
  }, [])
82
104
  s4 = @this.new(c4)
83
105
 
84
106
  assert_equal 'test4', s4.target
85
107
  assert_equal({:include => nil, :include_regexp => nil, :exclude => nil, :exclude_regexp => nil}, s4.filter_params)
86
- assert_equal({:string => [], :boolean => [], :int => ['status'], :long => [], :float => [], :double => []}, s4.field_definitions)
108
+ assert_equal({:string => [], :boolean => [], :integer => ['status'], :float => []}, s4.field_definitions)
87
109
  assert_equal 0, s4.query_generators.size
88
110
  end
89
111
 
@@ -93,7 +115,7 @@ class ConfigSectionTest < Test::Unit::TestCase
93
115
 
94
116
  assert_equal 'test5', s5.target
95
117
  assert_equal({:include => nil, :include_regexp => nil, :exclude => nil, :exclude_regexp => nil}, s5.filter_params)
96
- assert_equal({:string => [], :boolean => [], :int => [], :long => [], :float => [], :double => []}, s5.field_definitions)
118
+ assert_equal({:string => [], :boolean => [], :integer => [], :float => []}, s5.field_definitions)
97
119
  assert_equal 0, s5.query_generators.size
98
120
  end
99
121
 
@@ -114,10 +136,8 @@ class ConfigSectionTest < Test::Unit::TestCase
114
136
  'exclude_regexp' => 'f_.*',
115
137
  'field_string' => 's1,s2,s3',
116
138
  'field_boolean' => 'bool1,bool2',
117
- 'field_int' => 'i1,i2,i3,i4',
118
- 'field_long' => 'num1,num2',
119
- 'field_float' => 'f1,f2',
120
- 'field_double' => 'd'
139
+ 'field_integer' => 'i1,i2,i3,i4,num1,num2',
140
+ 'field_float' => 'f1,f2,d',
121
141
  }, [q1,q2])
122
142
  s1 = @this.new(c1)
123
143
 
@@ -128,7 +148,7 @@ class ConfigSectionTest < Test::Unit::TestCase
128
148
  }, [])
129
149
  c2 = Fluent::Config::Element.new('target', 'test', {
130
150
  'exclude_regexp' => '(f|g)_.*',
131
- 'field_double' => 'd1,d2,d3,d4'
151
+ 'field_float' => 'd1,d2,d3,d4'
132
152
  }, [q3])
133
153
  s2 = @this.new(c2)
134
154
 
@@ -137,8 +157,8 @@ class ConfigSectionTest < Test::Unit::TestCase
137
157
  assert_equal 'test', s.target
138
158
  assert_equal({:include => '*', :include_regexp => nil, :exclude => 'flag', :exclude_regexp => '(f|g)_.*'}, s.filter_params)
139
159
  assert_equal({
140
- :string => %w(s1 s2 s3), :boolean => %w(bool1 bool2), :int => %w(i1 i2 i3 i4), :long => %w(num1 num2),
141
- :float => %w(f1 f2), :double => %w(d d1 d2 d3 d4)
160
+ :string => %w(s1 s2 s3), :boolean => %w(bool1 bool2), :integer => %w(i1 i2 i3 i4 num1 num2),
161
+ :float => %w(f1 f2 d d1 d2 d3 d4)
142
162
  }, s.field_definitions)
143
163
  assert_equal 3, s.query_generators.size
144
164
  assert_equal (10 * 60 / 5), s.query_generators.map(&:fetch_interval).sort.first
@@ -161,10 +181,8 @@ class ConfigSectionTest < Test::Unit::TestCase
161
181
  'exclude_regexp' => 'f_.*',
162
182
  'field_string' => 's1,s2,s3',
163
183
  'field_boolean' => 'bool1,bool2',
164
- 'field_int' => 'i1,i2,i3,i4',
165
- 'field_long' => 'num1,num2',
166
- 'field_float' => 'f1,f2',
167
- 'field_double' => 'd'
184
+ 'field_integer' => 'i1,i2,i3,i4,num1,num2',
185
+ 'field_float' => 'f1,f2,d',
168
186
  }, [q1,q2])
169
187
  s1 = @this.new(c1)
170
188
 
@@ -176,4 +194,41 @@ class ConfigSectionTest < Test::Unit::TestCase
176
194
  assert_equal s1.query_generators.size, s.query_generators.size
177
195
  assert_equal s1.query_generators.map(&:fetch_interval).sort.first, s.query_generators.map(&:fetch_interval).sort.first
178
196
  end
197
+
198
+ def test_join_without_query
199
+ q1 = Fluent::Config::Element.new('query', nil, {
200
+ 'name' => 'q1_${target}',
201
+ 'expression' => 'SELECT * FROM ${target}.win:time_batch(10 min) WHERE q1',
202
+ 'tag' => 'q1.${target}'
203
+ }, [])
204
+ q2 = Fluent::Config::Element.new('query', nil, {
205
+ 'name' => 'q2_${target}',
206
+ 'expression' => 'SELECT * FROM ${target}.win:time_batch(50 min) WHERE q2.length() > 0',
207
+ 'tag' => 'q2.${target}'
208
+ }, [])
209
+ c1 = Fluent::Config::Element.new('default', nil, {
210
+ 'include' => '*',
211
+ 'exclude' => 'flag',
212
+ 'exclude_regexp' => 'f_.*',
213
+ 'field_string' => 's1,s2,s3',
214
+ 'field_boolean' => 'bool1,bool2',
215
+ 'field_integer' => 'i1,i2,i3,i4,num1,num2',
216
+ 'field_float' => 'f1,f2,d',
217
+ }, [q1,q2])
218
+ s1 = @this.new(c1, false)
219
+
220
+ q3 = Fluent::Config::Element.new('query', nil, {
221
+ 'name' => 'q3_test',
222
+ 'expression' => 'SELECT * FROM ${target}.win:time_batch(30 min) WHERE q3="/"',
223
+ 'tag' => 'q3.test'
224
+ }, [])
225
+ c2 = Fluent::Config::Element.new('target', 'test', {
226
+ 'exclude_regexp' => '(f|g)_.*',
227
+ 'field_float' => 'd1,d2,d3,d4'
228
+ }, [q3])
229
+ s2 = @this.new(c2, false)
230
+
231
+ s = s1 + s2
232
+ assert_equal 0, s.query_generators.size
233
+ end
179
234
  end
data/test/test_query.rb CHANGED
@@ -1,12 +1,16 @@
1
1
  require 'helper'
2
- require 'fluent/plugin/norikra_target'
2
+ require 'fluent/plugin/norikra/query'
3
3
 
4
4
  class QueryTest < Test::Unit::TestCase
5
5
  def test_init
6
- q = Fluent::NorikraOutput::Query.new('name', 'expression', 'tag', 10)
6
+ q = Fluent::NorikraPlugin::Query.new('name', nil, 'expression', 'tag', 10)
7
7
  assert_equal 'name', q.name
8
+ assert_nil q.group
8
9
  assert_equal 'expression', q.expression
9
10
  assert_equal 'tag', q.tag
10
11
  assert_equal 10, q.interval
12
+
13
+ q = Fluent::NorikraPlugin::Query.new('name', 'group', 'expression', 'tag', 10)
14
+ assert_equal 'group', q.group
11
15
  end
12
16
  end
@@ -1,9 +1,9 @@
1
1
  require 'helper'
2
- require 'fluent/plugin/norikra_target'
2
+ require 'fluent/plugin/norikra/query_generator'
3
3
 
4
4
  class QueryGeneratorTest < Test::Unit::TestCase
5
5
  def setup
6
- @this = Fluent::NorikraOutput::QueryGenerator
6
+ @this = Fluent::NorikraPlugin::QueryGenerator
7
7
  end
8
8
 
9
9
  def test_replace_target
@@ -35,15 +35,20 @@ class QueryGeneratorTest < Test::Unit::TestCase
35
35
  end
36
36
 
37
37
  def test_generate
38
- g = @this.new('query_${target}', 'SELECT * FROM ${target}.win:time_batch( 10 min ) WHERE x=1', 'tag.${target}')
38
+ g = @this.new('query_${target}', 'test_group', 'SELECT * FROM ${target}.win:time_batch( 10 min ) WHERE x=1', 'tag.${target}')
39
39
  q = g.generate('test', 'test')
40
40
  assert_equal 'query_test', q.name
41
+ assert_equal 'test_group', q.group
41
42
  assert_equal 'SELECT * FROM test.win:time_batch( 10 min ) WHERE x=1', q.expression
42
43
  assert_equal 'tag.test', q.tag
44
+
45
+ g = @this.new('query_${target}', nil, 'SELECT * FROM ${target}.win:time_batch( 10 min ) WHERE x=1', 'tag.${target}')
46
+ q = g.generate('test', 'test')
47
+ assert_nil q.group
43
48
  end
44
49
 
45
50
  def test_fetch_interval
46
- g = @this.new('query_${target}', 'SELECT * FROM ${target}.win:time_batch( 12 min ) WHERE x=1', 'tag.${target}')
51
+ g = @this.new('query_${target}', nil, 'SELECT * FROM ${target}.win:time_batch( 12 min ) WHERE x=1', 'tag.${target}')
47
52
  assert_equal (12*60/5), g.fetch_interval
48
53
  end
49
54
  end
@@ -1,9 +1,9 @@
1
1
  require 'helper'
2
- require 'fluent/plugin/norikra_target'
2
+ require 'fluent/plugin/norikra/record_filter'
3
3
 
4
4
  class RecordFilterTest < Test::Unit::TestCase
5
5
  def setup
6
- @this = Fluent::NorikraOutput::RecordFilter
6
+ @this = Fluent::NorikraPlugin::RecordFilter
7
7
  end
8
8
 
9
9
  def test_errors
data/test/test_target.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  require 'helper'
2
- require 'fluent/plugin/norikra_target'
2
+ require 'fluent/plugin/norikra/target'
3
3
 
4
4
  class TargetTest < Test::Unit::TestCase
5
5
  def setup
6
- @this = Fluent::NorikraOutput::Target
6
+ @this = Fluent::NorikraPlugin::Target
7
7
  end
8
8
 
9
9
  def test_target_name_escape
@@ -34,12 +34,10 @@ class TargetTest < Test::Unit::TestCase
34
34
  'exclude_regexp' => 'f_.*',
35
35
  'field_string' => 's1,s2,s3',
36
36
  'field_boolean' => 'bool1,bool2',
37
- 'field_int' => 'i1,i2,i3,i4',
38
- 'field_long' => 'num1,num2',
39
- 'field_float' => 'f1,f2',
40
- 'field_double' => 'd'
37
+ 'field_integer' => 'i1,i2,i3,i4,num1,num2',
38
+ 'field_float' => 'f1,f2,d',
41
39
  }, [Q1,Q2])
42
- S1 = Fluent::NorikraOutput::ConfigSection.new(C1)
40
+ S1 = Fluent::NorikraPlugin::ConfigSection.new(C1)
43
41
 
44
42
  Q3 = Fluent::Config::Element.new('query', nil, {
45
43
  'name' => 'q3_test',
@@ -48,17 +46,17 @@ class TargetTest < Test::Unit::TestCase
48
46
  }, [])
49
47
  C2 = Fluent::Config::Element.new('target', 'test', {
50
48
  'exclude_regexp' => '(f|g)_.*',
51
- 'field_double' => 'd1,d2,d3,d4'
49
+ 'field_float' => 'd1,d2,d3,d4'
52
50
  }, [Q3])
53
- S2 = Fluent::NorikraOutput::ConfigSection.new(C2)
51
+ S2 = Fluent::NorikraPlugin::ConfigSection.new(C2)
54
52
 
55
53
  def test_instanciate
56
54
  t = @this.new('test', S1 + S2)
57
55
 
58
56
  assert_equal 'test', t.name
59
57
  assert_equal({
60
- :string => %w(s1 s2 s3), :boolean => %w(bool1 bool2), :int => %w(i1 i2 i3 i4), :long => %w(num1 num2),
61
- :float => %w(f1 f2), :double => %w(d d1 d2 d3 d4)
58
+ :string => %w(s1 s2 s3), :boolean => %w(bool1 bool2), :integer => %w(i1 i2 i3 i4 num1 num2),
59
+ :float => %w(f1 f2 d d1 d2 d3 d4)
62
60
  }, t.fields)
63
61
  assert_equal 3, t.queries.size
64
62
 
@@ -70,9 +68,9 @@ class TargetTest < Test::Unit::TestCase
70
68
  assert_equal({
71
69
  's1' => 'string', 's2' => 'string', 's3' => 'string',
72
70
  'bool1' => 'boolean', 'bool2' => 'boolean',
73
- 'i1' => 'int', 'i2' => 'int', 'i3' => 'int', 'i4' => 'int', 'num1' => 'long', 'num2' => 'long',
71
+ 'i1' => 'integer', 'i2' => 'integer', 'i3' => 'integer', 'i4' => 'integer', 'num1' => 'integer', 'num2' => 'integer',
74
72
  'f1' => 'float', 'f2' => 'float',
75
- 'd' => 'double', 'd1' => 'double', 'd2' => 'double', 'd3' => 'double', 'd4' => 'double'
73
+ 'd' => 'float', 'd1' => 'float', 'd2' => 'float', 'd3' => 'float', 'd4' => 'float'
76
74
  }, t.reserve_fields)
77
75
  end
78
76
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-norikra
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - TAGOMORI Satoshi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-08 00:00:00.000000000 Z
11
+ date: 2013-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: norikra-client
@@ -81,15 +81,30 @@ files:
81
81
  - README.md
82
82
  - Rakefile
83
83
  - example/blank.conf
84
+ - example/blank.rb
84
85
  - example/blank2.conf
85
86
  - example/example1.conf
86
87
  - example/test1.conf
88
+ - example/test1.rb
87
89
  - example/test2.conf
90
+ - example/test_in_out.rb
88
91
  - fluent-plugin-norikra.gemspec
92
+ - lib/fluent/plugin/in_norikra.rb
93
+ - lib/fluent/plugin/norikra/config_section.rb
94
+ - lib/fluent/plugin/norikra/fetch_request.rb
95
+ - lib/fluent/plugin/norikra/input.rb
96
+ - lib/fluent/plugin/norikra/output.rb
97
+ - lib/fluent/plugin/norikra/query.rb
98
+ - lib/fluent/plugin/norikra/query_generator.rb
99
+ - lib/fluent/plugin/norikra/record_filter.rb
100
+ - lib/fluent/plugin/norikra/target.rb
89
101
  - lib/fluent/plugin/norikra_target.rb
90
102
  - lib/fluent/plugin/out_norikra.rb
103
+ - lib/fluent/plugin/out_norikra_filter.rb
91
104
  - test/helper.rb
105
+ - test/plugin/test_in_norikra.rb
92
106
  - test/plugin/test_out_norikra.rb
107
+ - test/plugin/test_out_norikra_filter.rb
93
108
  - test/test_config_section.rb
94
109
  - test/test_query.rb
95
110
  - test/test_query_generator.rb
@@ -121,7 +136,9 @@ specification_version: 4
121
136
  summary: Fluentd plugin to do CEP with norikra
122
137
  test_files:
123
138
  - test/helper.rb
139
+ - test/plugin/test_in_norikra.rb
124
140
  - test/plugin/test_out_norikra.rb
141
+ - test/plugin/test_out_norikra_filter.rb
125
142
  - test/test_config_section.rb
126
143
  - test/test_query.rb
127
144
  - test/test_query_generator.rb