fluentd 0.14.0 → 0.14.1
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.
- checksums.yaml +4 -4
- data/example/copy_roundrobin.conf +39 -0
- data/example/filter_stdout.conf +5 -5
- data/example/in_forward.conf +2 -2
- data/example/in_http.conf +2 -2
- data/example/in_syslog.conf +2 -2
- data/example/in_tail.conf +2 -2
- data/example/in_tcp.conf +2 -2
- data/example/in_udp.conf +2 -2
- data/example/out_buffered_null.conf +32 -0
- data/example/out_copy.conf +4 -4
- data/example/out_file.conf +2 -2
- data/example/out_forward.conf +2 -2
- data/example/v0_12_filter.conf +8 -8
- data/fluentd.gemspec +1 -1
- data/lib/fluent/command/fluentd.rb +6 -1
- data/lib/fluent/compat/handle_tag_name_mixin.rb +53 -0
- data/lib/fluent/compat/input.rb +1 -0
- data/lib/fluent/compat/output.rb +1 -0
- data/lib/fluent/compat/record_filter_mixin.rb +34 -0
- data/lib/fluent/compat/set_tag_key_mixin.rb +50 -0
- data/lib/fluent/compat/set_time_key_mixin.rb +69 -0
- data/lib/fluent/compat/type_converter.rb +90 -0
- data/lib/fluent/config/configure_proxy.rb +24 -4
- data/lib/fluent/config/dsl.rb +18 -1
- data/lib/fluent/config/v1_parser.rb +3 -2
- data/lib/fluent/configurable.rb +1 -1
- data/lib/fluent/event.rb +37 -9
- data/lib/fluent/mixin.rb +12 -286
- data/lib/fluent/plugin/buffer.rb +2 -2
- data/lib/fluent/plugin/in_dummy.rb +5 -1
- data/lib/fluent/plugin/in_gc_stat.rb +7 -37
- data/lib/fluent/plugin/in_http.rb +2 -0
- data/lib/fluent/plugin/{in_stream.rb → in_unix.rb} +0 -0
- data/lib/fluent/plugin/out_buffered_stdout.rb +60 -0
- data/lib/fluent/plugin/out_copy.rb +8 -51
- data/lib/fluent/plugin/out_null.rb +5 -5
- data/lib/fluent/plugin/out_relabel.rb +5 -5
- data/lib/fluent/plugin/out_roundrobin.rb +13 -40
- data/lib/fluent/plugin/output.rb +9 -0
- data/lib/fluent/plugin_helper.rb +2 -0
- data/lib/fluent/plugin_helper/formatter.rb +138 -0
- data/lib/fluent/plugin_helper/inject.rb +112 -0
- data/lib/fluent/plugin_helper/parser.rb +138 -0
- data/lib/fluent/plugin_helper/storage.rb +64 -50
- data/lib/fluent/process.rb +6 -1
- data/lib/fluent/registry.rb +1 -1
- data/lib/fluent/supervisor.rb +20 -2
- data/lib/fluent/test.rb +30 -5
- data/lib/fluent/test/base.rb +2 -66
- data/lib/fluent/test/driver/base.rb +3 -0
- data/lib/fluent/test/driver/base_owned.rb +106 -0
- data/lib/fluent/test/driver/formatter.rb +30 -0
- data/lib/fluent/test/driver/multi_output.rb +52 -0
- data/lib/fluent/test/driver/owner.rb +32 -0
- data/lib/fluent/test/driver/parser.rb +30 -0
- data/lib/fluent/test/helpers.rb +54 -0
- data/lib/fluent/test/log.rb +73 -0
- data/lib/fluent/time.rb +71 -0
- data/lib/fluent/version.rb +1 -1
- data/test/compat/test_parser.rb +82 -0
- data/test/config/test_configure_proxy.rb +15 -0
- data/test/config/test_dsl.rb +180 -2
- data/test/helper.rb +2 -24
- data/test/plugin/test_in_gc_stat.rb +6 -6
- data/test/plugin/test_in_http.rb +49 -32
- data/test/plugin/{test_in_stream.rb → test_in_unix.rb} +1 -1
- data/test/plugin/test_out_buffered_stdout.rb +108 -0
- data/test/plugin/test_out_copy.rb +88 -127
- data/test/plugin/test_out_null.rb +29 -0
- data/test/plugin/test_out_relabel.rb +28 -0
- data/test/plugin/test_out_roundrobin.rb +35 -29
- data/test/plugin/test_out_stdout.rb +4 -4
- data/test/plugin/test_output_as_buffered.rb +51 -0
- data/test/plugin/test_output_as_buffered_secondary.rb +13 -0
- data/test/plugin/test_parser_apache.rb +38 -0
- data/test/plugin/test_parser_apache2.rb +38 -0
- data/test/plugin/test_parser_apache_error.rb +40 -0
- data/test/plugin/test_parser_base.rb +32 -0
- data/test/plugin/test_parser_csv.rb +94 -0
- data/test/plugin/test_parser_json.rb +107 -0
- data/test/plugin/test_parser_labeled_tsv.rb +129 -0
- data/test/plugin/test_parser_multiline.rb +100 -0
- data/test/plugin/test_parser_nginx.rb +42 -0
- data/test/plugin/test_parser_none.rb +53 -0
- data/test/plugin/test_parser_regexp.rb +110 -0
- data/test/plugin/test_parser_syslog.rb +66 -0
- data/test/plugin/test_parser_time.rb +46 -0
- data/test/plugin/test_parser_tsv.rb +125 -0
- data/test/plugin_helper/test_child_process.rb +11 -2
- data/test/plugin_helper/test_formatter.rb +212 -0
- data/test/plugin_helper/test_inject.rb +388 -0
- data/test/plugin_helper/test_parser.rb +223 -0
- data/test/plugin_helper/test_retry_state.rb +40 -40
- data/test/plugin_helper/test_storage.rb +77 -10
- data/test/scripts/fluent/plugin/out_test.rb +22 -17
- data/test/scripts/fluent/plugin/out_test2.rb +80 -0
- data/test/test_event.rb +57 -0
- data/test/test_formatter.rb +0 -178
- data/test/test_output.rb +2 -152
- data/test/test_root_agent.rb +3 -2
- data/test/test_supervisor.rb +93 -26
- data/test/test_time_formatter.rb +186 -0
- metadata +69 -7
- data/test/test_parser.rb +0 -1087
|
@@ -4,16 +4,16 @@ require 'fluent/plugin/base'
|
|
|
4
4
|
|
|
5
5
|
require 'time'
|
|
6
6
|
|
|
7
|
-
class
|
|
8
|
-
def override_current_time(time)
|
|
9
|
-
|
|
10
|
-
alias_method(:current_time_orig, :current_time)
|
|
7
|
+
class RetryStateHelperTest < Test::Unit::TestCase
|
|
8
|
+
def override_current_time(state, time)
|
|
9
|
+
mojule = Module.new do
|
|
11
10
|
define_method(:current_time){ time }
|
|
12
11
|
end
|
|
12
|
+
state.singleton_class.module_eval do
|
|
13
|
+
prepend mojule
|
|
14
|
+
end
|
|
13
15
|
end
|
|
14
|
-
end
|
|
15
16
|
|
|
16
|
-
class RetryStateHelperTest < Test::Unit::TestCase
|
|
17
17
|
class Dummy < Fluent::Plugin::TestBase
|
|
18
18
|
helpers :retry_state
|
|
19
19
|
end
|
|
@@ -55,7 +55,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
55
55
|
test 'periodic retries' do
|
|
56
56
|
s = @d.retry_state_create(:t2, :periodic, 3, 29, randomize: false)
|
|
57
57
|
dummy_current_time = s.start
|
|
58
|
-
|
|
58
|
+
override_current_time(s, dummy_current_time)
|
|
59
59
|
|
|
60
60
|
assert_equal dummy_current_time, s.current_time
|
|
61
61
|
assert_equal (dummy_current_time + 29), s.timeout_at
|
|
@@ -63,7 +63,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
63
63
|
|
|
64
64
|
i = 1
|
|
65
65
|
while i < 9
|
|
66
|
-
|
|
66
|
+
override_current_time(s, s.next_time)
|
|
67
67
|
s.step
|
|
68
68
|
assert_equal i, s.steps
|
|
69
69
|
assert_equal (s.current_time + 3), s.next_time
|
|
@@ -72,7 +72,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
72
72
|
end
|
|
73
73
|
|
|
74
74
|
assert_equal 9, i
|
|
75
|
-
|
|
75
|
+
override_current_time(s, s.next_time)
|
|
76
76
|
s.step
|
|
77
77
|
assert_equal s.timeout_at, s.next_time
|
|
78
78
|
assert s.limit?
|
|
@@ -81,7 +81,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
81
81
|
test 'periodic retries with max_steps' do
|
|
82
82
|
s = @d.retry_state_create(:t2, :periodic, 3, 29, randomize: false, max_steps: 5)
|
|
83
83
|
dummy_current_time = s.start
|
|
84
|
-
|
|
84
|
+
override_current_time(s, dummy_current_time)
|
|
85
85
|
|
|
86
86
|
assert_equal dummy_current_time, s.current_time
|
|
87
87
|
assert_equal (dummy_current_time + 29), s.timeout_at
|
|
@@ -89,7 +89,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
89
89
|
|
|
90
90
|
i = 1
|
|
91
91
|
while i < 5
|
|
92
|
-
|
|
92
|
+
override_current_time(s, s.next_time)
|
|
93
93
|
s.step
|
|
94
94
|
assert_equal i, s.steps
|
|
95
95
|
assert_equal (s.current_time + 3), s.next_time
|
|
@@ -98,7 +98,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
98
98
|
end
|
|
99
99
|
|
|
100
100
|
assert_equal 5, i
|
|
101
|
-
|
|
101
|
+
override_current_time(s, s.next_time)
|
|
102
102
|
s.step
|
|
103
103
|
assert_equal (s.current_time + 3), s.next_time
|
|
104
104
|
assert s.limit?
|
|
@@ -107,7 +107,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
107
107
|
test 'periodic retries with secondary' do
|
|
108
108
|
s = @d.retry_state_create(:t3, :periodic, 3, 100, randomize: false, secondary: true) # threshold 0.8
|
|
109
109
|
dummy_current_time = s.start
|
|
110
|
-
|
|
110
|
+
override_current_time(s, dummy_current_time)
|
|
111
111
|
|
|
112
112
|
assert_equal dummy_current_time, s.current_time
|
|
113
113
|
assert_equal (dummy_current_time + 100), s.timeout_at
|
|
@@ -118,7 +118,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
118
118
|
|
|
119
119
|
i = 1
|
|
120
120
|
while i < 26
|
|
121
|
-
|
|
121
|
+
override_current_time(s, s.next_time)
|
|
122
122
|
assert !s.secondary?
|
|
123
123
|
|
|
124
124
|
s.step
|
|
@@ -129,7 +129,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
129
129
|
end
|
|
130
130
|
|
|
131
131
|
assert_equal 26, i
|
|
132
|
-
|
|
132
|
+
override_current_time(s, s.next_time) # 78
|
|
133
133
|
assert !s.secondary?
|
|
134
134
|
|
|
135
135
|
s.step
|
|
@@ -139,7 +139,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
139
139
|
|
|
140
140
|
i += 1
|
|
141
141
|
assert_equal 27, i
|
|
142
|
-
|
|
142
|
+
override_current_time(s, s.next_time) # 80
|
|
143
143
|
assert s.secondary?
|
|
144
144
|
|
|
145
145
|
s.step
|
|
@@ -150,7 +150,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
150
150
|
i += 1
|
|
151
151
|
|
|
152
152
|
while i < 33
|
|
153
|
-
|
|
153
|
+
override_current_time(s, s.next_time)
|
|
154
154
|
assert s.secondary?
|
|
155
155
|
|
|
156
156
|
s.step
|
|
@@ -160,7 +160,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
160
160
|
end
|
|
161
161
|
|
|
162
162
|
assert_equal 33, i
|
|
163
|
-
|
|
163
|
+
override_current_time(s, s.next_time) # 98
|
|
164
164
|
assert s.secondary?
|
|
165
165
|
|
|
166
166
|
s.step
|
|
@@ -171,7 +171,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
171
171
|
test 'periodic retries with secondary and specified threshold' do
|
|
172
172
|
s = @d.retry_state_create(:t3, :periodic, 3, 100, randomize: false, secondary: true, secondary_threshold: 0.75)
|
|
173
173
|
dummy_current_time = s.start
|
|
174
|
-
|
|
174
|
+
override_current_time(s, dummy_current_time)
|
|
175
175
|
|
|
176
176
|
assert_equal dummy_current_time, s.current_time
|
|
177
177
|
assert_equal (dummy_current_time + 100), s.timeout_at
|
|
@@ -181,7 +181,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
181
181
|
test 'exponential backoff forever without randomization' do
|
|
182
182
|
s = @d.retry_state_create(:t11, :exponential_backoff, 0.1, 300, randomize: false, forever: true, backoff_base: 2)
|
|
183
183
|
dummy_current_time = s.start
|
|
184
|
-
|
|
184
|
+
override_current_time(s, dummy_current_time)
|
|
185
185
|
|
|
186
186
|
assert_equal dummy_current_time, s.current_time
|
|
187
187
|
|
|
@@ -201,7 +201,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
201
201
|
test 'exponential backoff with max_interval' do
|
|
202
202
|
s = @d.retry_state_create(:t12, :exponential_backoff, 0.1, 300, randomize: false, forever: true, backoff_base: 2, max_interval: 100)
|
|
203
203
|
dummy_current_time = s.start
|
|
204
|
-
|
|
204
|
+
override_current_time(s, dummy_current_time)
|
|
205
205
|
|
|
206
206
|
assert_equal dummy_current_time, s.current_time
|
|
207
207
|
|
|
@@ -230,7 +230,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
230
230
|
test 'exponential backoff with shorter timeout' do
|
|
231
231
|
s = @d.retry_state_create(:t13, :exponential_backoff, 1, 12, randomize: false, backoff_base: 2, max_interval: 10)
|
|
232
232
|
dummy_current_time = s.start
|
|
233
|
-
|
|
233
|
+
override_current_time(s, dummy_current_time)
|
|
234
234
|
|
|
235
235
|
assert_equal dummy_current_time, s.current_time
|
|
236
236
|
|
|
@@ -241,17 +241,17 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
241
241
|
|
|
242
242
|
# 1 + 1 + 2 + 4 (=8)
|
|
243
243
|
|
|
244
|
-
|
|
244
|
+
override_current_time(s, s.next_time)
|
|
245
245
|
s.step
|
|
246
246
|
assert_equal 1, s.steps
|
|
247
247
|
assert_equal (s.current_time + 1), s.next_time
|
|
248
248
|
|
|
249
|
-
|
|
249
|
+
override_current_time(s, s.next_time)
|
|
250
250
|
s.step
|
|
251
251
|
assert_equal 2, s.steps
|
|
252
252
|
assert_equal (s.current_time + 2), s.next_time
|
|
253
253
|
|
|
254
|
-
|
|
254
|
+
override_current_time(s, s.next_time)
|
|
255
255
|
s.step
|
|
256
256
|
assert_equal 3, s.steps
|
|
257
257
|
assert_equal (s.current_time + 4), s.next_time
|
|
@@ -260,7 +260,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
260
260
|
|
|
261
261
|
# + 8 (=16) > 12
|
|
262
262
|
|
|
263
|
-
|
|
263
|
+
override_current_time(s, s.next_time)
|
|
264
264
|
s.step
|
|
265
265
|
assert_equal 4, s.steps
|
|
266
266
|
assert_equal s.timeout_at, s.next_time
|
|
@@ -271,7 +271,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
271
271
|
test 'exponential backoff with max_steps' do
|
|
272
272
|
s = @d.retry_state_create(:t14, :exponential_backoff, 1, 120, randomize: false, backoff_base: 2, max_interval: 10, max_steps: 6)
|
|
273
273
|
dummy_current_time = s.start
|
|
274
|
-
|
|
274
|
+
override_current_time(s, dummy_current_time)
|
|
275
275
|
|
|
276
276
|
assert_equal dummy_current_time, s.current_time
|
|
277
277
|
|
|
@@ -280,38 +280,38 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
280
280
|
assert_equal 0, s.steps
|
|
281
281
|
assert_equal (dummy_current_time + 1), s.next_time
|
|
282
282
|
|
|
283
|
-
|
|
283
|
+
override_current_time(s, s.next_time)
|
|
284
284
|
s.step
|
|
285
285
|
assert_equal 1, s.steps
|
|
286
286
|
assert_equal (s.current_time + 1), s.next_time
|
|
287
287
|
|
|
288
|
-
|
|
288
|
+
override_current_time(s, s.next_time)
|
|
289
289
|
s.step
|
|
290
290
|
assert_equal 2, s.steps
|
|
291
291
|
assert_equal (s.current_time + 2), s.next_time
|
|
292
292
|
|
|
293
|
-
|
|
293
|
+
override_current_time(s, s.next_time)
|
|
294
294
|
s.step
|
|
295
295
|
assert_equal 3, s.steps
|
|
296
296
|
assert_equal (s.current_time + 4), s.next_time
|
|
297
297
|
|
|
298
298
|
assert !s.limit?
|
|
299
299
|
|
|
300
|
-
|
|
300
|
+
override_current_time(s, s.next_time)
|
|
301
301
|
s.step
|
|
302
302
|
assert_equal 4, s.steps
|
|
303
303
|
assert_equal (s.current_time + 8), s.next_time
|
|
304
304
|
|
|
305
305
|
assert !s.limit?
|
|
306
306
|
|
|
307
|
-
|
|
307
|
+
override_current_time(s, s.next_time)
|
|
308
308
|
s.step
|
|
309
309
|
assert_equal 5, s.steps
|
|
310
310
|
assert_equal (s.current_time + 10), s.next_time
|
|
311
311
|
|
|
312
312
|
assert !s.limit?
|
|
313
313
|
|
|
314
|
-
|
|
314
|
+
override_current_time(s, s.next_time)
|
|
315
315
|
s.step
|
|
316
316
|
assert_equal 6, s.steps
|
|
317
317
|
assert_equal (s.current_time + 10), s.next_time
|
|
@@ -322,7 +322,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
322
322
|
test 'exponential backoff retries with secondary' do
|
|
323
323
|
s = @d.retry_state_create(:t15, :exponential_backoff, 1, 100, randomize: false, backoff_base: 2, secondary: true) # threshold 0.8
|
|
324
324
|
dummy_current_time = s.start
|
|
325
|
-
|
|
325
|
+
override_current_time(s, dummy_current_time)
|
|
326
326
|
|
|
327
327
|
assert_equal dummy_current_time, s.current_time
|
|
328
328
|
assert_equal (dummy_current_time + 100), s.timeout_at
|
|
@@ -334,7 +334,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
334
334
|
# 1, 1(2), 2(4), 4(8), 8(16), 16(32), 32(64), (80), (81), (83), (87), (95), (100)
|
|
335
335
|
i = 1
|
|
336
336
|
while i < 7
|
|
337
|
-
|
|
337
|
+
override_current_time(s, s.next_time)
|
|
338
338
|
assert !s.secondary?
|
|
339
339
|
|
|
340
340
|
s.step
|
|
@@ -345,7 +345,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
345
345
|
end
|
|
346
346
|
|
|
347
347
|
assert_equal 7, i
|
|
348
|
-
|
|
348
|
+
override_current_time(s, s.next_time) # 64
|
|
349
349
|
assert !s.secondary?
|
|
350
350
|
|
|
351
351
|
s.step
|
|
@@ -355,7 +355,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
355
355
|
|
|
356
356
|
i += 1
|
|
357
357
|
assert_equal 8, i
|
|
358
|
-
|
|
358
|
+
override_current_time(s, s.next_time) # 80
|
|
359
359
|
assert s.secondary?
|
|
360
360
|
|
|
361
361
|
s.step
|
|
@@ -367,7 +367,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
367
367
|
# 81, 82, 84, 88, 96, 100
|
|
368
368
|
j = 1
|
|
369
369
|
while j < 4
|
|
370
|
-
|
|
370
|
+
override_current_time(s, s.next_time)
|
|
371
371
|
assert s.secondary?
|
|
372
372
|
assert_equal :secondary, s.current
|
|
373
373
|
|
|
@@ -379,7 +379,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
379
379
|
end
|
|
380
380
|
|
|
381
381
|
assert_equal 4, j
|
|
382
|
-
|
|
382
|
+
override_current_time(s, s.next_time) # 96
|
|
383
383
|
assert s.secondary?
|
|
384
384
|
|
|
385
385
|
s.step
|
|
@@ -390,7 +390,7 @@ class RetryStateHelperTest < Test::Unit::TestCase
|
|
|
390
390
|
test 'exponential backoff retries with secondary and specified threshold' do
|
|
391
391
|
s = @d.retry_state_create(:t16, :exponential_backoff, 1, 100, randomize: false, secondary: true, backoff_base: 2, secondary_threshold: 0.75)
|
|
392
392
|
dummy_current_time = s.start
|
|
393
|
-
|
|
393
|
+
override_current_time(s, dummy_current_time)
|
|
394
394
|
|
|
395
395
|
assert_equal dummy_current_time, s.current_time
|
|
396
396
|
assert_equal (dummy_current_time + 100), s.timeout_at
|
|
@@ -169,16 +169,6 @@ class StorageHelperTest < Test::Unit::TestCase
|
|
|
169
169
|
assert{ s.implementation.is_a? ExampleStorage }
|
|
170
170
|
end
|
|
171
171
|
|
|
172
|
-
test 'raises exception for storage creation without explicit type specification' do
|
|
173
|
-
@d = d = Dummy.new
|
|
174
|
-
d.configure(config_element())
|
|
175
|
-
d.start
|
|
176
|
-
|
|
177
|
-
assert_raises ArgumentError do
|
|
178
|
-
d.storage_create(usage: 'mydata', conf: config_element('storage', 'mydata', {'@type' => 'example'}))
|
|
179
|
-
end
|
|
180
|
-
end
|
|
181
|
-
|
|
182
172
|
test 'creates 2 or more storage plugin instances' do
|
|
183
173
|
@d = d = Dummy.new
|
|
184
174
|
conf = config_element('ROOT', '', {}, [
|
|
@@ -369,6 +359,8 @@ class StorageHelperTest < Test::Unit::TestCase
|
|
|
369
359
|
assert_equal 1, s.implementation.load_times
|
|
370
360
|
assert_equal 0, s.implementation.save_times
|
|
371
361
|
|
|
362
|
+
d.before_shutdown
|
|
363
|
+
|
|
372
364
|
d.shutdown
|
|
373
365
|
|
|
374
366
|
assert_equal 1, s.implementation.load_times
|
|
@@ -408,4 +400,79 @@ class StorageHelperTest < Test::Unit::TestCase
|
|
|
408
400
|
assert_equal 0, s.implementation.data.size
|
|
409
401
|
assert_equal 0, s.implementation.saved.size
|
|
410
402
|
end
|
|
403
|
+
|
|
404
|
+
test 'calls lifecycle methods for all plugin instances via owner plugin' do
|
|
405
|
+
@d = d = Dummy.new
|
|
406
|
+
conf = config_element('ROOT', '', {}, [ config_element('storage', '', {'@type' => 'example'}), config_element('storage', 'e2', {'@type' => 'example'}) ])
|
|
407
|
+
d.configure(conf)
|
|
408
|
+
d.start
|
|
409
|
+
|
|
410
|
+
i1 = d.storage_create(usage: '')
|
|
411
|
+
i2 = d.storage_create(usage: 'e2')
|
|
412
|
+
i3 = d.storage_create(usage: 'e3', type: 'ex2')
|
|
413
|
+
|
|
414
|
+
assert i1.started?
|
|
415
|
+
assert i2.started?
|
|
416
|
+
assert i3.started?
|
|
417
|
+
|
|
418
|
+
assert !i1.stopped?
|
|
419
|
+
assert !i2.stopped?
|
|
420
|
+
assert !i3.stopped?
|
|
421
|
+
|
|
422
|
+
d.stop
|
|
423
|
+
|
|
424
|
+
assert i1.stopped?
|
|
425
|
+
assert i2.stopped?
|
|
426
|
+
assert i3.stopped?
|
|
427
|
+
|
|
428
|
+
assert !i1.before_shutdown?
|
|
429
|
+
assert !i2.before_shutdown?
|
|
430
|
+
assert !i3.before_shutdown?
|
|
431
|
+
|
|
432
|
+
d.before_shutdown
|
|
433
|
+
|
|
434
|
+
assert i1.before_shutdown?
|
|
435
|
+
assert i2.before_shutdown?
|
|
436
|
+
assert i3.before_shutdown?
|
|
437
|
+
|
|
438
|
+
assert !i1.shutdown?
|
|
439
|
+
assert !i2.shutdown?
|
|
440
|
+
assert !i3.shutdown?
|
|
441
|
+
|
|
442
|
+
d.shutdown
|
|
443
|
+
|
|
444
|
+
assert i1.shutdown?
|
|
445
|
+
assert i2.shutdown?
|
|
446
|
+
assert i3.shutdown?
|
|
447
|
+
|
|
448
|
+
assert !i1.after_shutdown?
|
|
449
|
+
assert !i2.after_shutdown?
|
|
450
|
+
assert !i3.after_shutdown?
|
|
451
|
+
|
|
452
|
+
d.after_shutdown
|
|
453
|
+
|
|
454
|
+
assert i1.after_shutdown?
|
|
455
|
+
assert i2.after_shutdown?
|
|
456
|
+
assert i3.after_shutdown?
|
|
457
|
+
|
|
458
|
+
assert !i1.closed?
|
|
459
|
+
assert !i2.closed?
|
|
460
|
+
assert !i3.closed?
|
|
461
|
+
|
|
462
|
+
d.close
|
|
463
|
+
|
|
464
|
+
assert i1.closed?
|
|
465
|
+
assert i2.closed?
|
|
466
|
+
assert i3.closed?
|
|
467
|
+
|
|
468
|
+
assert !i1.terminated?
|
|
469
|
+
assert !i2.terminated?
|
|
470
|
+
assert !i3.terminated?
|
|
471
|
+
|
|
472
|
+
d.terminate
|
|
473
|
+
|
|
474
|
+
assert i1.terminated?
|
|
475
|
+
assert i2.terminated?
|
|
476
|
+
assert i3.terminated?
|
|
477
|
+
end
|
|
411
478
|
end
|
|
@@ -14,17 +14,25 @@
|
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
#
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
require 'fluent/plugin/output'
|
|
18
|
+
require 'fluent/event'
|
|
19
|
+
|
|
20
|
+
module Fluent::Plugin
|
|
18
21
|
class TestOutput < Output
|
|
19
|
-
Plugin.register_output('test', self)
|
|
22
|
+
Fluent::Plugin.register_output('test', self)
|
|
23
|
+
|
|
24
|
+
config_param :name, :string
|
|
25
|
+
|
|
26
|
+
config_section :buffer do
|
|
27
|
+
config_set_default :chunk_keys, ['tag']
|
|
28
|
+
end
|
|
20
29
|
|
|
21
30
|
def initialize
|
|
22
31
|
super
|
|
23
32
|
@emit_streams = []
|
|
24
|
-
@name = nil
|
|
25
33
|
end
|
|
26
34
|
|
|
27
|
-
attr_reader :emit_streams
|
|
35
|
+
attr_reader :emit_streams
|
|
28
36
|
|
|
29
37
|
def emits
|
|
30
38
|
all = []
|
|
@@ -54,23 +62,20 @@ module Fluent
|
|
|
54
62
|
all
|
|
55
63
|
end
|
|
56
64
|
|
|
57
|
-
def
|
|
58
|
-
|
|
59
|
-
@name = name
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def start
|
|
64
|
-
super
|
|
65
|
+
def prefer_buffered_processing
|
|
66
|
+
false
|
|
65
67
|
end
|
|
66
68
|
|
|
67
|
-
def
|
|
68
|
-
|
|
69
|
+
def process(tag, es)
|
|
70
|
+
@emit_streams << [tag, es.to_a]
|
|
69
71
|
end
|
|
70
72
|
|
|
71
|
-
def
|
|
72
|
-
|
|
73
|
-
|
|
73
|
+
def write(chunk)
|
|
74
|
+
es = Fluent::ArrayEventStream.new
|
|
75
|
+
chunk.each do |time, record|
|
|
76
|
+
es.add(time, record)
|
|
77
|
+
end
|
|
78
|
+
@emit_streams << [tag, es]
|
|
74
79
|
end
|
|
75
80
|
end
|
|
76
81
|
end
|