fluentd 0.14.3 → 0.14.4

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.

Potentially problematic release.


This version of fluentd might be problematic. Click here for more details.

Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +59 -1131
  3. data/Rakefile +15 -0
  4. data/appveyor.yml +2 -2
  5. data/example/multi_filters.conf +61 -0
  6. data/fluentd.gemspec +19 -16
  7. data/lib/fluent/agent.rb +3 -0
  8. data/lib/fluent/command/debug.rb +4 -4
  9. data/lib/fluent/compat/handle_tag_and_time_mixin.rb +2 -0
  10. data/lib/fluent/compat/output.rb +5 -2
  11. data/lib/fluent/config/configure_proxy.rb +26 -5
  12. data/lib/fluent/config/error.rb +3 -0
  13. data/lib/fluent/config/section.rb +15 -0
  14. data/lib/fluent/event_router.rb +77 -4
  15. data/lib/fluent/plugin/base.rb +12 -3
  16. data/lib/fluent/plugin/filter.rb +48 -6
  17. data/lib/fluent/plugin/filter_record_transformer.rb +3 -1
  18. data/lib/fluent/plugin/filter_stdout.rb +0 -4
  19. data/lib/fluent/plugin/in_debug_agent.rb +5 -5
  20. data/lib/fluent/plugin/in_dummy.rb +9 -1
  21. data/lib/fluent/plugin/in_forward.rb +32 -14
  22. data/lib/fluent/plugin/in_monitor_agent.rb +31 -77
  23. data/lib/fluent/plugin/in_tail.rb +37 -9
  24. data/lib/fluent/plugin/out_forward.rb +2 -13
  25. data/lib/fluent/plugin/output.rb +16 -1
  26. data/lib/fluent/plugin/storage_local.rb +16 -0
  27. data/lib/fluent/plugin_helper/timer.rb +6 -1
  28. data/lib/fluent/root_agent.rb +3 -0
  29. data/lib/fluent/supervisor.rb +62 -9
  30. data/lib/fluent/test/base.rb +3 -0
  31. data/lib/fluent/test/driver/base.rb +5 -0
  32. data/lib/fluent/test/formatter_test.rb +2 -0
  33. data/lib/fluent/test/parser_test.rb +2 -0
  34. data/lib/fluent/version.rb +1 -1
  35. data/lib/fluent/winsvc.rb +1 -2
  36. data/test/compat/test_calls_super.rb +2 -0
  37. data/test/config/test_configurable.rb +88 -0
  38. data/test/config/test_types.rb +7 -3
  39. data/test/plugin/test_filter.rb +121 -23
  40. data/test/plugin/test_filter_record_transformer.rb +22 -6
  41. data/test/plugin/test_in_debug_agent.rb +2 -2
  42. data/test/plugin/test_in_forward.rb +54 -6
  43. data/test/plugin/test_in_monitor_agent.rb +329 -0
  44. data/test/plugin/test_in_tail.rb +73 -0
  45. data/test/plugin/test_out_forward.rb +1 -0
  46. data/test/plugin/test_output.rb +53 -0
  47. data/test/plugin/test_output_as_buffered.rb +13 -0
  48. data/test/plugin/test_output_as_buffered_overflow.rb +3 -0
  49. data/test/plugin/test_output_as_buffered_retries.rb +11 -0
  50. data/test/plugin/test_output_as_buffered_secondary.rb +12 -0
  51. data/test/plugin/test_output_as_standard.rb +12 -0
  52. data/test/plugin_helper/test_compat_parameters.rb +2 -0
  53. data/test/plugin_helper/test_timer.rb +31 -0
  54. data/test/test_event_router.rb +87 -0
  55. data/test/test_filter.rb +48 -6
  56. data/test/test_log.rb +5 -2
  57. data/test/test_output.rb +41 -1
  58. data/test/test_plugin_classes.rb +17 -9
  59. data/test/test_root_agent.rb +146 -0
  60. metadata +51 -67
@@ -23,17 +23,57 @@ class FilterTest < Test::Unit::TestCase
23
23
  end
24
24
 
25
25
  sub_test_case 'configure' do
26
- test 'check default' do
27
- assert_nothing_raised { create_driver }
26
+ test 'check to implement `filter` method' do
27
+ klass = Class.new(Fluent::Filter) do |c|
28
+ def filter(tag, time, record); end
29
+ end
30
+
31
+ assert_nothing_raised do
32
+ klass.new
33
+ end
34
+ end
35
+
36
+ test 'check to implement `filter_with_time` method' do
37
+ klass = Class.new(Fluent::Filter) do |c|
38
+ def filter_with_time(tag, time, record); end
39
+ end
40
+
41
+ assert_nothing_raised do
42
+ klass.new
43
+ end
44
+ end
45
+
46
+ test 'DO NOT check when implement `filter_stream`' do
47
+ klass = Class.new(Fluent::Filter) do |c|
48
+ def filter_stream(tag, es); end
49
+ end
50
+
51
+ assert_nothing_raised do
52
+ klass.new
53
+ end
28
54
  end
29
- end
30
55
 
31
- sub_test_case 'filter' do
32
56
  test 'NotImplementedError' do
33
- not_implemented_filter = Class.new(Fluent::Filter)
34
- assert_raise(NotImplementedError) { emit(not_implemented_filter, ['foo']) }
57
+ klass = Class.new(Fluent::Filter)
58
+
59
+ assert_raise NotImplementedError do
60
+ klass.new
61
+ end
62
+ end
63
+
64
+ test 'duplicated method implementation' do
65
+ klass = Class.new(Fluent::Filter) do |c|
66
+ def filter(tag, time, record); end
67
+ def filter_with_time(tag, time, record); end
68
+ end
69
+
70
+ assert_raise do
71
+ klass.new
72
+ end
35
73
  end
74
+ end
36
75
 
76
+ sub_test_case 'filter' do
37
77
  test 'null filter' do
38
78
  null_filter = Class.new(Fluent::Filter) do |c|
39
79
  def filter(tag, time, record)
@@ -61,6 +101,7 @@ class FilterTest < Test::Unit::TestCase
61
101
  def filter_stream(tag, es)
62
102
  MultiEventStream.new
63
103
  end
104
+ def filter(tag, time, record); record; end
64
105
  end
65
106
  es = emit(null_filter, ['foo'])
66
107
  assert_equal(0, es.instance_variable_get(:@record_array).size)
@@ -71,6 +112,7 @@ class FilterTest < Test::Unit::TestCase
71
112
  def filter_stream(tag, es)
72
113
  es
73
114
  end
115
+ def filter(tag, time, record); record; end
74
116
  end
75
117
  es = emit(pass_filter, ['foo'])
76
118
  assert_equal(1, es.instance_variable_get(:@record_array).size)
@@ -1,17 +1,19 @@
1
1
  require_relative 'helper'
2
2
  require 'fluent/engine'
3
3
  require 'fluent/log'
4
+ require 'timecop'
4
5
 
5
6
  class LogTest < Test::Unit::TestCase
6
7
  def setup
7
8
  @log_device = Fluent::Test::DummyLogDevice.new
8
9
  @timestamp = Time.parse("2016-04-21 11:58:41 +0900")
9
10
  @timestamp_str = @timestamp.strftime("%Y-%m-%d %H:%M:%S %z")
10
- stub(Time).now { @timestamp }
11
+ Timecop.freeze(@timestamp)
11
12
  end
12
13
 
13
14
  def teardown
14
15
  @log_device.reset
16
+ Timecop.return
15
17
  Thread.current[:last_repeated_stacktrace] = nil
16
18
  end
17
19
 
@@ -409,7 +411,7 @@ class PluginLoggerTest < Test::Unit::TestCase
409
411
  @log_device = Fluent::Test::DummyLogDevice.new
410
412
  @timestamp = Time.parse("2016-04-21 11:58:41 +0900")
411
413
  @timestamp_str = @timestamp.strftime("%Y-%m-%d %H:%M:%S %z")
412
- stub(Time).now { @timestamp }
414
+ Timecop.freeze(@timestamp)
413
415
  dl_opts = {}
414
416
  dl_opts[:log_level] = ServerEngine::DaemonLogger::TRACE
415
417
  logdev = @log_device
@@ -419,6 +421,7 @@ class PluginLoggerTest < Test::Unit::TestCase
419
421
 
420
422
  def teardown
421
423
  @log_device.reset
424
+ Timecop.return
422
425
  Thread.current[:last_repeated_stacktrace] = nil
423
426
  end
424
427
 
@@ -65,6 +65,20 @@ module FluentOutputTest
65
65
  # assert_equal Float, d.instance.retry_wait.class
66
66
  end
67
67
 
68
+ class FormatterInjectTestOutput < Fluent::Output
69
+ def initialize
70
+ super
71
+ @formatter = nil
72
+ end
73
+ end
74
+ def test_start
75
+ i = FormatterInjectTestOutput.new
76
+ i.configure(config_element('ROOT', '', {}, [config_element('inject', '', {'hostname_key' => "host"})]))
77
+ assert_nothing_raised do
78
+ i.start
79
+ end
80
+ end
81
+
68
82
  def create_mock_driver(conf=CONFIG)
69
83
  Fluent::Test::BufferedOutputTestDriver.new(Fluent::BufferedOutput) do
70
84
  attr_accessor :submit_flush_threads
@@ -95,12 +109,37 @@ module FluentOutputTest
95
109
  end
96
110
 
97
111
  def test_secondary
98
- d = create_driver(CONFIG + %[
112
+ d = Fluent::Test::BufferedOutputTestDriver.new(Fluent::BufferedOutput) do
113
+ def write(chunk)
114
+ chunk.read
115
+ end
116
+ end
117
+
118
+ mock(d.instance.log).warn("secondary type should be same with primary one",
119
+ { primary: d.instance.class.to_s, secondary: "Fluent::Plugin::Test2Output" })
120
+ d.configure(CONFIG + %[
99
121
  <secondary>
100
122
  type test2
101
123
  name c0
102
124
  </secondary>
103
125
  ])
126
+
127
+ assert_not_nil d.instance.instance_variable_get(:@secondary).router
128
+ end
129
+
130
+ def test_secondary_with_no_warn_log
131
+ # ObjectBufferedOutput doesn't implemnt `custom_filter`
132
+ d = Fluent::Test::BufferedOutputTestDriver.new(Fluent::ObjectBufferedOutput)
133
+
134
+ mock(d.instance.log).warn("secondary type should be same with primary one",
135
+ { primary: d.instance.class.to_s, secondary: "Fluent::Plugin::Test2Output" }).never
136
+ d.configure(CONFIG + %[
137
+ <secondary>
138
+ type test2
139
+ name c0
140
+ </secondary>
141
+ ])
142
+
104
143
  assert_not_nil d.instance.instance_variable_get(:@secondary).router
105
144
  end
106
145
  end
@@ -165,6 +204,7 @@ module FluentOutputTest
165
204
  test "emit with invalid event" do
166
205
  d = create_driver
167
206
  d.instance.start
207
+ d.instance.after_start
168
208
  assert_raise ArgumentError, "time must be a Fluent::EventTime (or Integer)" do
169
209
  d.instance.emit_events('test', OneEventStream.new('string', 10))
170
210
  end
@@ -1,24 +1,26 @@
1
1
  require_relative 'helper'
2
- require 'fluent/input'
3
- require 'fluent/output'
4
- require 'fluent/filter'
2
+ require 'fluent/plugin/input'
3
+ require 'fluent/plugin/output'
4
+ require 'fluent/plugin/filter'
5
5
 
6
6
  module FluentTest
7
- class FluentTestInput < ::Fluent::Input
7
+ class FluentTestInput < ::Fluent::Plugin::Input
8
8
  ::Fluent::Plugin.register_input('test_in', self)
9
9
 
10
10
  attr_reader :started
11
11
 
12
12
  def start
13
+ super
13
14
  @started = true
14
15
  end
15
16
 
16
17
  def shutdown
17
18
  @started = false
19
+ super
18
20
  end
19
21
  end
20
22
 
21
- class FluentTestOutput < ::Fluent::Output
23
+ class FluentTestOutput < ::Fluent::Plugin::Output
22
24
  ::Fluent::Plugin.register_output('test_out', self)
23
25
 
24
26
  def initialize
@@ -30,21 +32,23 @@ module FluentTest
30
32
  attr_reader :started
31
33
 
32
34
  def start
35
+ super
33
36
  @started = true
34
37
  end
35
38
 
36
39
  def shutdown
37
40
  @started = false
41
+ super
38
42
  end
39
43
 
40
- def emit(tag, es, chain)
41
- es.each { |time, record|
44
+ def process(tag, es)
45
+ es.each do |time, record|
42
46
  @events[tag] << record
43
- }
47
+ end
44
48
  end
45
49
  end
46
50
 
47
- class FluentTestErrorOutput < ::Fluent::BufferedOutput
51
+ class FluentTestErrorOutput < ::Fluent::Plugin::Output
48
52
  ::Fluent::Plugin.register_output('test_out_error', self)
49
53
 
50
54
  def format(tag, time, record)
@@ -69,11 +73,13 @@ module FluentTest
69
73
  attr_reader :started
70
74
 
71
75
  def start
76
+ super
72
77
  @started = true
73
78
  end
74
79
 
75
80
  def shutdown
76
81
  @started = false
82
+ super
77
83
  end
78
84
 
79
85
  def filter(tag, time, record)
@@ -96,11 +102,13 @@ module FluentTest
96
102
  attr_reader :started
97
103
 
98
104
  def start
105
+ super
99
106
  @started = true
100
107
  end
101
108
 
102
109
  def shutdown
103
110
  @started = false
111
+ super
104
112
  end
105
113
 
106
114
  def filter(tag, time, record)
@@ -129,4 +129,150 @@ EOC
129
129
  assert_false @ra.outputs.first.started
130
130
  end
131
131
  end
132
+
133
+ sub_test_case 'configured with MultiOutput plugins' do
134
+ setup do
135
+ @ra = RootAgent.new(log: $log)
136
+ stub(Engine).root_agent { @ra }
137
+ @ra.configure(Config.parse(<<-EOC, "(test)", "(test_dir)", true))
138
+ <source>
139
+ @type test_in
140
+ @id test_in
141
+ </source>
142
+ <filter>
143
+ @type test_filter
144
+ @id test_filter
145
+ </filter>
146
+ <match **>
147
+ @type copy
148
+ @id test_copy
149
+ <store>
150
+ @type test_out
151
+ @id test_out1
152
+ </store>
153
+ <store>
154
+ @type test_out
155
+ @id test_out2
156
+ </store>
157
+ </match>
158
+ EOC
159
+ @ra
160
+ end
161
+
162
+ test 'plugin status with multi output' do
163
+ assert_equal 1, @ra.inputs.size
164
+ assert_equal 1, @ra.filters.size
165
+ assert_equal 3, @ra.outputs.size
166
+
167
+ @ra.start
168
+ assert_equal [true], @ra.inputs.map{|i| i.started? }
169
+ assert_equal [true], @ra.filters.map{|i| i.started? }
170
+ assert_equal [true, true, true], @ra.outputs.map{|i| i.started? }
171
+
172
+ assert_equal [true], @ra.inputs.map{|i| i.after_started? }
173
+ assert_equal [true], @ra.filters.map{|i| i.after_started? }
174
+ assert_equal [true, true, true], @ra.outputs.map{|i| i.after_started? }
175
+
176
+ @ra.shutdown
177
+ assert_equal [true], @ra.inputs.map{|i| i.stopped? }
178
+ assert_equal [true], @ra.filters.map{|i| i.stopped? }
179
+ assert_equal [true, true, true], @ra.outputs.map{|i| i.stopped? }
180
+
181
+ assert_equal [true], @ra.inputs.map{|i| i.before_shutdown? }
182
+ assert_equal [true], @ra.filters.map{|i| i.before_shutdown? }
183
+ assert_equal [true, true, true], @ra.outputs.map{|i| i.before_shutdown? }
184
+
185
+ assert_equal [true], @ra.inputs.map{|i| i.shutdown? }
186
+ assert_equal [true], @ra.filters.map{|i| i.shutdown? }
187
+ assert_equal [true, true, true], @ra.outputs.map{|i| i.shutdown? }
188
+
189
+ assert_equal [true], @ra.inputs.map{|i| i.after_shutdown? }
190
+ assert_equal [true], @ra.filters.map{|i| i.after_shutdown? }
191
+ assert_equal [true, true, true], @ra.outputs.map{|i| i.after_shutdown? }
192
+
193
+ assert_equal [true], @ra.inputs.map{|i| i.closed? }
194
+ assert_equal [true], @ra.filters.map{|i| i.closed? }
195
+ assert_equal [true, true, true], @ra.outputs.map{|i| i.closed? }
196
+
197
+ assert_equal [true], @ra.inputs.map{|i| i.terminated? }
198
+ assert_equal [true], @ra.filters.map{|i| i.terminated? }
199
+ assert_equal [true, true, true], @ra.outputs.map{|i| i.terminated? }
200
+ end
201
+ end
202
+
203
+ sub_test_case 'configured with MultiOutput plugins and labels' do
204
+ setup do
205
+ @ra = RootAgent.new(log: $log)
206
+ stub(Engine).root_agent { @ra }
207
+ @ra.configure(Config.parse(<<-EOC, "(test)", "(test_dir)", true))
208
+ <source>
209
+ @type test_in
210
+ @id test_in
211
+ @label @testing
212
+ </source>
213
+ <label @testing>
214
+ <filter>
215
+ @type test_filter
216
+ @id test_filter
217
+ </filter>
218
+ <match **>
219
+ @type copy
220
+ @id test_copy
221
+ <store>
222
+ @type test_out
223
+ @id test_out1
224
+ </store>
225
+ <store>
226
+ @type test_out
227
+ @id test_out2
228
+ </store>
229
+ </match>
230
+ </label>
231
+ EOC
232
+ @ra
233
+ end
234
+
235
+ test 'plugin status with multi output' do
236
+ assert_equal 1, @ra.inputs.size
237
+ assert_equal 0, @ra.filters.size
238
+ assert_equal 0, @ra.outputs.size
239
+ assert_equal 1, @ra.labels.size
240
+ assert_equal '@testing', @ra.labels.keys.first
241
+ assert_equal 1, @ra.labels.values.first.filters.size
242
+ assert_equal 3, @ra.labels.values.first.outputs.size
243
+
244
+ label_filters = @ra.labels.values.first.filters
245
+ label_outputs = @ra.labels.values.first.outputs
246
+
247
+ @ra.start
248
+ assert_equal [true], @ra.inputs.map{|i| i.started? }
249
+ assert_equal [true], label_filters.map{|i| i.started? }
250
+ assert_equal [true, true, true], label_outputs.map{|i| i.started? }
251
+
252
+ @ra.shutdown
253
+ assert_equal [true], @ra.inputs.map{|i| i.stopped? }
254
+ assert_equal [true], label_filters.map{|i| i.stopped? }
255
+ assert_equal [true, true, true], label_outputs.map{|i| i.stopped? }
256
+
257
+ assert_equal [true], @ra.inputs.map{|i| i.before_shutdown? }
258
+ assert_equal [true], label_filters.map{|i| i.before_shutdown? }
259
+ assert_equal [true, true, true], label_outputs.map{|i| i.before_shutdown? }
260
+
261
+ assert_equal [true], @ra.inputs.map{|i| i.shutdown? }
262
+ assert_equal [true], label_filters.map{|i| i.shutdown? }
263
+ assert_equal [true, true, true], label_outputs.map{|i| i.shutdown? }
264
+
265
+ assert_equal [true], @ra.inputs.map{|i| i.after_shutdown? }
266
+ assert_equal [true], label_filters.map{|i| i.after_shutdown? }
267
+ assert_equal [true, true, true], label_outputs.map{|i| i.after_shutdown? }
268
+
269
+ assert_equal [true], @ra.inputs.map{|i| i.closed? }
270
+ assert_equal [true], label_filters.map{|i| i.closed? }
271
+ assert_equal [true, true, true], label_outputs.map{|i| i.closed? }
272
+
273
+ assert_equal [true], @ra.inputs.map{|i| i.terminated? }
274
+ assert_equal [true], label_filters.map{|i| i.terminated? }
275
+ assert_equal [true, true, true], label_outputs.map{|i| i.terminated? }
276
+ end
277
+ end
132
278
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluentd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.3
4
+ version: 0.14.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sadayuki Furuhashi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-30 00:00:00.000000000 Z
11
+ date: 2016-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -17,6 +17,9 @@ dependencies:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.7.0
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: 2.0.0
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -24,20 +27,9 @@ dependencies:
24
27
  - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: 0.7.0
27
- - !ruby/object:Gem::Dependency
28
- name: json
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 1.4.3
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
30
+ - - "<"
39
31
  - !ruby/object:Gem::Version
40
- version: 1.4.3
32
+ version: 2.0.0
41
33
  - !ruby/object:Gem::Dependency
42
34
  name: yajl-ruby
43
35
  requirement: !ruby/object:Gem::Requirement
@@ -56,42 +48,30 @@ dependencies:
56
48
  name: cool.io
57
49
  requirement: !ruby/object:Gem::Requirement
58
50
  requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: 1.4.3
62
- - - "<"
51
+ - - "~>"
63
52
  - !ruby/object:Gem::Version
64
- version: 2.0.0
53
+ version: 1.4.5
65
54
  type: :runtime
66
55
  prerelease: false
67
56
  version_requirements: !ruby/object:Gem::Requirement
68
57
  requirements:
69
- - - ">="
70
- - !ruby/object:Gem::Version
71
- version: 1.4.3
72
- - - "<"
58
+ - - "~>"
73
59
  - !ruby/object:Gem::Version
74
- version: 2.0.0
60
+ version: 1.4.5
75
61
  - !ruby/object:Gem::Dependency
76
62
  name: serverengine
77
63
  requirement: !ruby/object:Gem::Requirement
78
64
  requirements:
79
- - - ">="
80
- - !ruby/object:Gem::Version
81
- version: 1.6.4
82
- - - "<"
65
+ - - "~>"
83
66
  - !ruby/object:Gem::Version
84
- version: 2.0.0
67
+ version: '2.0'
85
68
  type: :runtime
86
69
  prerelease: false
87
70
  version_requirements: !ruby/object:Gem::Requirement
88
71
  requirements:
89
- - - ">="
90
- - !ruby/object:Gem::Version
91
- version: 1.6.4
92
- - - "<"
72
+ - - "~>"
93
73
  - !ruby/object:Gem::Version
94
- version: 2.0.0
74
+ version: '2.0'
95
75
  - !ruby/object:Gem::Dependency
96
76
  name: http_parser.rb
97
77
  requirement: !ruby/object:Gem::Requirement
@@ -130,84 +110,84 @@ dependencies:
130
110
  name: tzinfo
131
111
  requirement: !ruby/object:Gem::Requirement
132
112
  requirements:
133
- - - ">="
113
+ - - "~>"
134
114
  - !ruby/object:Gem::Version
135
- version: 1.0.0
115
+ version: '1.0'
136
116
  type: :runtime
137
117
  prerelease: false
138
118
  version_requirements: !ruby/object:Gem::Requirement
139
119
  requirements:
140
- - - ">="
120
+ - - "~>"
141
121
  - !ruby/object:Gem::Version
142
- version: 1.0.0
122
+ version: '1.0'
143
123
  - !ruby/object:Gem::Dependency
144
124
  name: tzinfo-data
145
125
  requirement: !ruby/object:Gem::Requirement
146
126
  requirements:
147
- - - ">="
127
+ - - "~>"
148
128
  - !ruby/object:Gem::Version
149
- version: 1.0.0
129
+ version: '1.0'
150
130
  type: :runtime
151
131
  prerelease: false
152
132
  version_requirements: !ruby/object:Gem::Requirement
153
133
  requirements:
154
- - - ">="
134
+ - - "~>"
155
135
  - !ruby/object:Gem::Version
156
- version: 1.0.0
136
+ version: '1.0'
157
137
  - !ruby/object:Gem::Dependency
158
138
  name: strptime
159
139
  requirement: !ruby/object:Gem::Requirement
160
140
  requirements:
161
- - - ">="
141
+ - - "~>"
162
142
  - !ruby/object:Gem::Version
163
143
  version: 0.1.7
164
144
  type: :runtime
165
145
  prerelease: false
166
146
  version_requirements: !ruby/object:Gem::Requirement
167
147
  requirements:
168
- - - ">="
148
+ - - "~>"
169
149
  - !ruby/object:Gem::Version
170
150
  version: 0.1.7
171
151
  - !ruby/object:Gem::Dependency
172
152
  name: rake
173
153
  requirement: !ruby/object:Gem::Requirement
174
154
  requirements:
175
- - - ">="
155
+ - - "~>"
176
156
  - !ruby/object:Gem::Version
177
- version: 0.9.2
157
+ version: '11.0'
178
158
  type: :development
179
159
  prerelease: false
180
160
  version_requirements: !ruby/object:Gem::Requirement
181
161
  requirements:
182
- - - ">="
162
+ - - "~>"
183
163
  - !ruby/object:Gem::Version
184
- version: 0.9.2
164
+ version: '11.0'
185
165
  - !ruby/object:Gem::Dependency
186
166
  name: flexmock
187
167
  requirement: !ruby/object:Gem::Requirement
188
168
  requirements:
189
169
  - - "~>"
190
170
  - !ruby/object:Gem::Version
191
- version: 2.0.5
171
+ version: '2.0'
192
172
  type: :development
193
173
  prerelease: false
194
174
  version_requirements: !ruby/object:Gem::Requirement
195
175
  requirements:
196
176
  - - "~>"
197
177
  - !ruby/object:Gem::Version
198
- version: 2.0.5
178
+ version: '2.0'
199
179
  - !ruby/object:Gem::Dependency
200
180
  name: parallel_tests
201
181
  requirement: !ruby/object:Gem::Requirement
202
182
  requirements:
203
- - - ">="
183
+ - - "~>"
204
184
  - !ruby/object:Gem::Version
205
185
  version: 0.15.3
206
186
  type: :development
207
187
  prerelease: false
208
188
  version_requirements: !ruby/object:Gem::Requirement
209
189
  requirements:
210
- - - ">="
190
+ - - "~>"
211
191
  - !ruby/object:Gem::Version
212
192
  version: 0.15.3
213
193
  - !ruby/object:Gem::Dependency
@@ -216,70 +196,70 @@ dependencies:
216
196
  requirements:
217
197
  - - "~>"
218
198
  - !ruby/object:Gem::Version
219
- version: 0.6.4
199
+ version: '0.7'
220
200
  type: :development
221
201
  prerelease: false
222
202
  version_requirements: !ruby/object:Gem::Requirement
223
203
  requirements:
224
204
  - - "~>"
225
205
  - !ruby/object:Gem::Version
226
- version: 0.6.4
206
+ version: '0.7'
227
207
  - !ruby/object:Gem::Dependency
228
208
  name: rr
229
209
  requirement: !ruby/object:Gem::Requirement
230
210
  requirements:
231
- - - ">="
211
+ - - "~>"
232
212
  - !ruby/object:Gem::Version
233
- version: 1.0.0
213
+ version: '1.0'
234
214
  type: :development
235
215
  prerelease: false
236
216
  version_requirements: !ruby/object:Gem::Requirement
237
217
  requirements:
238
- - - ">="
218
+ - - "~>"
239
219
  - !ruby/object:Gem::Version
240
- version: 1.0.0
220
+ version: '1.0'
241
221
  - !ruby/object:Gem::Dependency
242
222
  name: timecop
243
223
  requirement: !ruby/object:Gem::Requirement
244
224
  requirements:
245
- - - ">="
225
+ - - "~>"
246
226
  - !ruby/object:Gem::Version
247
- version: 0.3.0
227
+ version: '0.3'
248
228
  type: :development
249
229
  prerelease: false
250
230
  version_requirements: !ruby/object:Gem::Requirement
251
231
  requirements:
252
- - - ">="
232
+ - - "~>"
253
233
  - !ruby/object:Gem::Version
254
- version: 0.3.0
234
+ version: '0.3'
255
235
  - !ruby/object:Gem::Dependency
256
236
  name: test-unit
257
237
  requirement: !ruby/object:Gem::Requirement
258
238
  requirements:
259
239
  - - "~>"
260
240
  - !ruby/object:Gem::Version
261
- version: 3.1.4
241
+ version: '3.2'
262
242
  type: :development
263
243
  prerelease: false
264
244
  version_requirements: !ruby/object:Gem::Requirement
265
245
  requirements:
266
246
  - - "~>"
267
247
  - !ruby/object:Gem::Version
268
- version: 3.1.4
248
+ version: '3.2'
269
249
  - !ruby/object:Gem::Dependency
270
250
  name: test-unit-rr
271
251
  requirement: !ruby/object:Gem::Requirement
272
252
  requirements:
273
253
  - - "~>"
274
254
  - !ruby/object:Gem::Version
275
- version: 1.0.3
255
+ version: '1.0'
276
256
  type: :development
277
257
  prerelease: false
278
258
  version_requirements: !ruby/object:Gem::Requirement
279
259
  requirements:
280
260
  - - "~>"
281
261
  - !ruby/object:Gem::Version
282
- version: 1.0.3
262
+ version: '1.0'
283
263
  - !ruby/object:Gem::Dependency
284
264
  name: oj
285
265
  requirement: !ruby/object:Gem::Requirement
@@ -331,6 +311,7 @@ files:
331
311
  - example/in_tail.conf
332
312
  - example/in_tcp.conf
333
313
  - example/in_udp.conf
314
+ - example/multi_filters.conf
334
315
  - example/out_buffered_null.conf
335
316
  - example/out_copy.conf
336
317
  - example/out_file.conf
@@ -554,6 +535,7 @@ files:
554
535
  - test/plugin/test_in_forward.rb
555
536
  - test/plugin/test_in_gc_stat.rb
556
537
  - test/plugin/test_in_http.rb
538
+ - test/plugin/test_in_monitor_agent.rb
557
539
  - test/plugin/test_in_object_space.rb
558
540
  - test/plugin/test_in_syslog.rb
559
541
  - test/plugin/test_in_tail.rb
@@ -702,6 +684,7 @@ test_files:
702
684
  - test/plugin/test_in_forward.rb
703
685
  - test/plugin/test_in_gc_stat.rb
704
686
  - test/plugin/test_in_http.rb
687
+ - test/plugin/test_in_monitor_agent.rb
705
688
  - test/plugin/test_in_object_space.rb
706
689
  - test/plugin/test_in_syslog.rb
707
690
  - test/plugin/test_in_tail.rb
@@ -781,3 +764,4 @@ test_files:
781
764
  - test/test_supervisor.rb
782
765
  - test/test_time_formatter.rb
783
766
  - test/test_unique_id.rb
767
+ has_rdoc: false