fluentd 1.17.0-x86-mingw32 → 1.17.1-x86-mingw32
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/CHANGELOG.md +46 -0
- data/README.md +1 -0
- data/SECURITY.md +2 -2
- data/fluent.conf +14 -14
- data/lib/fluent/command/cap_ctl.rb +4 -4
- data/lib/fluent/compat/call_super_mixin.rb +3 -3
- data/lib/fluent/compat/propagate_default.rb +4 -4
- data/lib/fluent/config/yaml_parser/parser.rb +4 -0
- data/lib/fluent/log/console_adapter.rb +4 -2
- data/lib/fluent/plugin/in_exec.rb +14 -2
- data/lib/fluent/plugin/in_http.rb +1 -1
- data/lib/fluent/plugin/in_sample.rb +13 -7
- data/lib/fluent/plugin/in_tail.rb +65 -23
- data/lib/fluent/plugin/out_copy.rb +1 -1
- data/lib/fluent/plugin/out_file.rb +8 -0
- data/lib/fluent/plugin/out_http.rb +12 -0
- data/lib/fluent/plugin/parser_json.rb +4 -12
- data/lib/fluent/plugin_helper/http_server/server.rb +1 -1
- data/lib/fluent/version.rb +1 -1
- data/templates/new_gem/fluent-plugin.gemspec.erb +6 -5
- metadata +25 -472
- data/.github/DISCUSSION_TEMPLATE/q-a-japanese.yml +0 -50
- data/.github/DISCUSSION_TEMPLATE/q-a.yml +0 -47
- data/.github/ISSUE_TEMPLATE/bug_report.yml +0 -71
- data/.github/ISSUE_TEMPLATE/config.yml +0 -5
- data/.github/ISSUE_TEMPLATE/feature_request.yml +0 -39
- data/.github/ISSUE_TEMPLATE.md +0 -17
- data/.github/PULL_REQUEST_TEMPLATE.md +0 -14
- data/.github/workflows/stale-actions.yml +0 -24
- data/.github/workflows/test-ruby-head.yml +0 -31
- data/.github/workflows/test.yml +0 -32
- data/.gitignore +0 -30
- data/Gemfile +0 -9
- data/fluentd.gemspec +0 -62
- data/test/command/test_binlog_reader.rb +0 -362
- data/test/command/test_ca_generate.rb +0 -70
- data/test/command/test_cap_ctl.rb +0 -100
- data/test/command/test_cat.rb +0 -128
- data/test/command/test_ctl.rb +0 -56
- data/test/command/test_fluentd.rb +0 -1291
- data/test/command/test_plugin_config_formatter.rb +0 -397
- data/test/command/test_plugin_generator.rb +0 -109
- data/test/compat/test_calls_super.rb +0 -166
- data/test/compat/test_parser.rb +0 -92
- data/test/config/assertions.rb +0 -42
- data/test/config/test_config_parser.rb +0 -551
- data/test/config/test_configurable.rb +0 -1784
- data/test/config/test_configure_proxy.rb +0 -604
- data/test/config/test_dsl.rb +0 -415
- data/test/config/test_element.rb +0 -518
- data/test/config/test_literal_parser.rb +0 -309
- data/test/config/test_plugin_configuration.rb +0 -56
- data/test/config/test_section.rb +0 -191
- data/test/config/test_system_config.rb +0 -195
- data/test/config/test_types.rb +0 -408
- data/test/counter/test_client.rb +0 -563
- data/test/counter/test_error.rb +0 -44
- data/test/counter/test_mutex_hash.rb +0 -179
- data/test/counter/test_server.rb +0 -589
- data/test/counter/test_store.rb +0 -258
- data/test/counter/test_validator.rb +0 -137
- data/test/helper.rb +0 -155
- data/test/helpers/fuzzy_assert.rb +0 -89
- data/test/helpers/process_extenstion.rb +0 -33
- data/test/log/test_console_adapter.rb +0 -117
- data/test/plugin/data/2010/01/20100102-030405.log +0 -0
- data/test/plugin/data/2010/01/20100102-030406.log +0 -0
- data/test/plugin/data/2010/01/20100102.log +0 -0
- data/test/plugin/data/log/bar +0 -0
- data/test/plugin/data/log/foo/bar.log +0 -0
- data/test/plugin/data/log/foo/bar2 +0 -0
- data/test/plugin/data/log/test.log +0 -0
- data/test/plugin/data/log_numeric/01.log +0 -0
- data/test/plugin/data/log_numeric/02.log +0 -0
- data/test/plugin/data/log_numeric/12.log +0 -0
- data/test/plugin/data/log_numeric/14.log +0 -0
- data/test/plugin/data/sd_file/config +0 -11
- data/test/plugin/data/sd_file/config.json +0 -17
- data/test/plugin/data/sd_file/config.yaml +0 -11
- data/test/plugin/data/sd_file/config.yml +0 -11
- data/test/plugin/data/sd_file/invalid_config.yml +0 -7
- data/test/plugin/in_tail/test_fifo.rb +0 -121
- data/test/plugin/in_tail/test_io_handler.rb +0 -150
- data/test/plugin/in_tail/test_position_file.rb +0 -346
- data/test/plugin/out_forward/test_ack_handler.rb +0 -140
- data/test/plugin/out_forward/test_connection_manager.rb +0 -145
- data/test/plugin/out_forward/test_handshake_protocol.rb +0 -112
- data/test/plugin/out_forward/test_load_balancer.rb +0 -106
- data/test/plugin/out_forward/test_socket_cache.rb +0 -174
- data/test/plugin/test_bare_output.rb +0 -131
- data/test/plugin/test_base.rb +0 -247
- data/test/plugin/test_buf_file.rb +0 -1314
- data/test/plugin/test_buf_file_single.rb +0 -898
- data/test/plugin/test_buf_memory.rb +0 -42
- data/test/plugin/test_buffer.rb +0 -1493
- data/test/plugin/test_buffer_chunk.rb +0 -209
- data/test/plugin/test_buffer_file_chunk.rb +0 -871
- data/test/plugin/test_buffer_file_single_chunk.rb +0 -611
- data/test/plugin/test_buffer_memory_chunk.rb +0 -339
- data/test/plugin/test_compressable.rb +0 -87
- data/test/plugin/test_file_util.rb +0 -96
- data/test/plugin/test_filter.rb +0 -368
- data/test/plugin/test_filter_grep.rb +0 -697
- data/test/plugin/test_filter_parser.rb +0 -731
- data/test/plugin/test_filter_record_transformer.rb +0 -577
- data/test/plugin/test_filter_stdout.rb +0 -207
- data/test/plugin/test_formatter_csv.rb +0 -136
- data/test/plugin/test_formatter_hash.rb +0 -38
- data/test/plugin/test_formatter_json.rb +0 -61
- data/test/plugin/test_formatter_ltsv.rb +0 -70
- data/test/plugin/test_formatter_msgpack.rb +0 -28
- data/test/plugin/test_formatter_out_file.rb +0 -116
- data/test/plugin/test_formatter_single_value.rb +0 -44
- data/test/plugin/test_formatter_tsv.rb +0 -76
- data/test/plugin/test_in_debug_agent.rb +0 -49
- data/test/plugin/test_in_exec.rb +0 -261
- data/test/plugin/test_in_forward.rb +0 -1178
- data/test/plugin/test_in_gc_stat.rb +0 -62
- data/test/plugin/test_in_http.rb +0 -1124
- data/test/plugin/test_in_monitor_agent.rb +0 -922
- data/test/plugin/test_in_object_space.rb +0 -66
- data/test/plugin/test_in_sample.rb +0 -190
- data/test/plugin/test_in_syslog.rb +0 -505
- data/test/plugin/test_in_tail.rb +0 -3429
- data/test/plugin/test_in_tcp.rb +0 -328
- data/test/plugin/test_in_udp.rb +0 -296
- data/test/plugin/test_in_unix.rb +0 -181
- data/test/plugin/test_input.rb +0 -137
- data/test/plugin/test_metadata.rb +0 -89
- data/test/plugin/test_metrics.rb +0 -294
- data/test/plugin/test_metrics_local.rb +0 -96
- data/test/plugin/test_multi_output.rb +0 -204
- data/test/plugin/test_out_copy.rb +0 -308
- data/test/plugin/test_out_exec.rb +0 -312
- data/test/plugin/test_out_exec_filter.rb +0 -606
- data/test/plugin/test_out_file.rb +0 -1038
- data/test/plugin/test_out_forward.rb +0 -1349
- data/test/plugin/test_out_http.rb +0 -557
- data/test/plugin/test_out_null.rb +0 -105
- data/test/plugin/test_out_relabel.rb +0 -28
- data/test/plugin/test_out_roundrobin.rb +0 -146
- data/test/plugin/test_out_secondary_file.rb +0 -458
- data/test/plugin/test_out_stdout.rb +0 -205
- data/test/plugin/test_out_stream.rb +0 -103
- data/test/plugin/test_output.rb +0 -1334
- data/test/plugin/test_output_as_buffered.rb +0 -2024
- data/test/plugin/test_output_as_buffered_backup.rb +0 -363
- data/test/plugin/test_output_as_buffered_compress.rb +0 -179
- data/test/plugin/test_output_as_buffered_overflow.rb +0 -250
- data/test/plugin/test_output_as_buffered_retries.rb +0 -966
- data/test/plugin/test_output_as_buffered_secondary.rb +0 -882
- data/test/plugin/test_output_as_standard.rb +0 -374
- data/test/plugin/test_owned_by.rb +0 -34
- data/test/plugin/test_parser.rb +0 -399
- data/test/plugin/test_parser_apache.rb +0 -42
- data/test/plugin/test_parser_apache2.rb +0 -47
- data/test/plugin/test_parser_apache_error.rb +0 -45
- data/test/plugin/test_parser_csv.rb +0 -200
- data/test/plugin/test_parser_json.rb +0 -244
- data/test/plugin/test_parser_labeled_tsv.rb +0 -160
- data/test/plugin/test_parser_msgpack.rb +0 -127
- data/test/plugin/test_parser_multiline.rb +0 -111
- data/test/plugin/test_parser_nginx.rb +0 -88
- data/test/plugin/test_parser_none.rb +0 -52
- data/test/plugin/test_parser_regexp.rb +0 -284
- data/test/plugin/test_parser_syslog.rb +0 -650
- data/test/plugin/test_parser_tsv.rb +0 -122
- data/test/plugin/test_sd_file.rb +0 -228
- data/test/plugin/test_sd_srv.rb +0 -230
- data/test/plugin/test_storage.rb +0 -166
- data/test/plugin/test_storage_local.rb +0 -335
- data/test/plugin/test_string_util.rb +0 -26
- data/test/plugin_helper/data/cert/cert-key.pem +0 -27
- data/test/plugin_helper/data/cert/cert-with-CRLF.pem +0 -19
- data/test/plugin_helper/data/cert/cert-with-no-newline.pem +0 -19
- data/test/plugin_helper/data/cert/cert.pem +0 -19
- data/test/plugin_helper/data/cert/cert_chains/ca-cert-key.pem +0 -27
- data/test/plugin_helper/data/cert/cert_chains/ca-cert.pem +0 -20
- data/test/plugin_helper/data/cert/cert_chains/cert-key.pem +0 -27
- data/test/plugin_helper/data/cert/cert_chains/cert.pem +0 -40
- data/test/plugin_helper/data/cert/empty.pem +0 -0
- data/test/plugin_helper/data/cert/generate_cert.rb +0 -125
- data/test/plugin_helper/data/cert/with_ca/ca-cert-key-pass.pem +0 -30
- data/test/plugin_helper/data/cert/with_ca/ca-cert-key.pem +0 -27
- data/test/plugin_helper/data/cert/with_ca/ca-cert-pass.pem +0 -20
- data/test/plugin_helper/data/cert/with_ca/ca-cert.pem +0 -20
- data/test/plugin_helper/data/cert/with_ca/cert-key-pass.pem +0 -30
- data/test/plugin_helper/data/cert/with_ca/cert-key.pem +0 -27
- data/test/plugin_helper/data/cert/with_ca/cert-pass.pem +0 -21
- data/test/plugin_helper/data/cert/with_ca/cert.pem +0 -21
- data/test/plugin_helper/data/cert/without_ca/cert-key-pass.pem +0 -30
- data/test/plugin_helper/data/cert/without_ca/cert-key.pem +0 -27
- data/test/plugin_helper/data/cert/without_ca/cert-pass.pem +0 -20
- data/test/plugin_helper/data/cert/without_ca/cert.pem +0 -20
- data/test/plugin_helper/http_server/test_app.rb +0 -65
- data/test/plugin_helper/http_server/test_route.rb +0 -32
- data/test/plugin_helper/service_discovery/test_manager.rb +0 -93
- data/test/plugin_helper/service_discovery/test_round_robin_balancer.rb +0 -21
- data/test/plugin_helper/test_cert_option.rb +0 -25
- data/test/plugin_helper/test_child_process.rb +0 -862
- data/test/plugin_helper/test_compat_parameters.rb +0 -358
- data/test/plugin_helper/test_event_emitter.rb +0 -80
- data/test/plugin_helper/test_event_loop.rb +0 -52
- data/test/plugin_helper/test_extract.rb +0 -194
- data/test/plugin_helper/test_formatter.rb +0 -255
- data/test/plugin_helper/test_http_server_helper.rb +0 -372
- data/test/plugin_helper/test_inject.rb +0 -561
- data/test/plugin_helper/test_metrics.rb +0 -137
- data/test/plugin_helper/test_parser.rb +0 -264
- data/test/plugin_helper/test_record_accessor.rb +0 -238
- data/test/plugin_helper/test_retry_state.rb +0 -1006
- data/test/plugin_helper/test_server.rb +0 -1895
- data/test/plugin_helper/test_service_discovery.rb +0 -165
- data/test/plugin_helper/test_socket.rb +0 -146
- data/test/plugin_helper/test_storage.rb +0 -542
- data/test/plugin_helper/test_thread.rb +0 -164
- data/test/plugin_helper/test_timer.rb +0 -130
- data/test/scripts/exec_script.rb +0 -32
- data/test/scripts/fluent/plugin/formatter1/formatter_test1.rb +0 -7
- data/test/scripts/fluent/plugin/formatter2/formatter_test2.rb +0 -7
- data/test/scripts/fluent/plugin/formatter_known.rb +0 -8
- data/test/scripts/fluent/plugin/out_test.rb +0 -81
- data/test/scripts/fluent/plugin/out_test2.rb +0 -80
- data/test/scripts/fluent/plugin/parser_known.rb +0 -4
- data/test/test_capability.rb +0 -74
- data/test/test_clock.rb +0 -164
- data/test/test_config.rb +0 -369
- data/test/test_configdsl.rb +0 -148
- data/test/test_daemonizer.rb +0 -91
- data/test/test_engine.rb +0 -203
- data/test/test_event.rb +0 -531
- data/test/test_event_router.rb +0 -348
- data/test/test_event_time.rb +0 -199
- data/test/test_file_wrapper.rb +0 -53
- data/test/test_filter.rb +0 -121
- data/test/test_fluent_log_event_router.rb +0 -99
- data/test/test_formatter.rb +0 -369
- data/test/test_input.rb +0 -31
- data/test/test_log.rb +0 -1076
- data/test/test_match.rb +0 -148
- data/test/test_mixin.rb +0 -351
- data/test/test_msgpack_factory.rb +0 -50
- data/test/test_oj_options.rb +0 -55
- data/test/test_output.rb +0 -278
- data/test/test_plugin.rb +0 -251
- data/test/test_plugin_classes.rb +0 -370
- data/test/test_plugin_helper.rb +0 -81
- data/test/test_plugin_id.rb +0 -119
- data/test/test_process.rb +0 -14
- data/test/test_root_agent.rb +0 -951
- data/test/test_static_config_analysis.rb +0 -177
- data/test/test_supervisor.rb +0 -821
- data/test/test_test_drivers.rb +0 -136
- data/test/test_time_formatter.rb +0 -301
- data/test/test_time_parser.rb +0 -362
- data/test/test_tls.rb +0 -65
- data/test/test_unique_id.rb +0 -47
- data/test/test_variable_store.rb +0 -65
data/test/test_filter.rb
DELETED
@@ -1,121 +0,0 @@
|
|
1
|
-
require_relative 'helper'
|
2
|
-
require 'fluent/filter'
|
3
|
-
|
4
|
-
class FilterTest < Test::Unit::TestCase
|
5
|
-
include Fluent
|
6
|
-
|
7
|
-
setup do
|
8
|
-
Fluent::Test.setup
|
9
|
-
@time = Fluent::Engine.now
|
10
|
-
end
|
11
|
-
|
12
|
-
def create_driver(klass = Fluent::Filter, conf = '')
|
13
|
-
Test::FilterTestDriver.new(klass).configure(conf, true)
|
14
|
-
end
|
15
|
-
|
16
|
-
def emit(klass, msgs, conf = '')
|
17
|
-
d = create_driver(klass, conf)
|
18
|
-
d.run {
|
19
|
-
msgs.each {|msg|
|
20
|
-
d.emit({'message' => msg}, @time)
|
21
|
-
}
|
22
|
-
}.filtered
|
23
|
-
end
|
24
|
-
|
25
|
-
sub_test_case 'configure' do
|
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
|
54
|
-
end
|
55
|
-
|
56
|
-
test 'NotImplementedError' do
|
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
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
sub_test_case 'filter' do
|
77
|
-
test 'null filter' do
|
78
|
-
null_filter = Class.new(Fluent::Filter) do |c|
|
79
|
-
def filter(tag, time, record)
|
80
|
-
nil
|
81
|
-
end
|
82
|
-
end
|
83
|
-
es = emit(null_filter, ['foo'])
|
84
|
-
assert_equal(0, es.instance_variable_get(:@record_array).size)
|
85
|
-
end
|
86
|
-
|
87
|
-
test 'pass filter' do
|
88
|
-
pass_filter = Class.new(Fluent::Filter) do |c|
|
89
|
-
def filter(tag, time, record)
|
90
|
-
record
|
91
|
-
end
|
92
|
-
end
|
93
|
-
es = emit(pass_filter, ['foo'])
|
94
|
-
assert_equal(1, es.instance_variable_get(:@record_array).size)
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
sub_test_case 'filter_stream' do
|
99
|
-
test 'null filter' do
|
100
|
-
null_filter = Class.new(Fluent::Filter) do |c|
|
101
|
-
def filter_stream(tag, es)
|
102
|
-
MultiEventStream.new
|
103
|
-
end
|
104
|
-
def filter(tag, time, record); record; end
|
105
|
-
end
|
106
|
-
es = emit(null_filter, ['foo'])
|
107
|
-
assert_equal(0, es.instance_variable_get(:@record_array).size)
|
108
|
-
end
|
109
|
-
|
110
|
-
test 'pass filter' do
|
111
|
-
pass_filter = Class.new(Fluent::Filter) do |c|
|
112
|
-
def filter_stream(tag, es)
|
113
|
-
es
|
114
|
-
end
|
115
|
-
def filter(tag, time, record); record; end
|
116
|
-
end
|
117
|
-
es = emit(pass_filter, ['foo'])
|
118
|
-
assert_equal(1, es.instance_variable_get(:@record_array).size)
|
119
|
-
end
|
120
|
-
end
|
121
|
-
end
|
@@ -1,99 +0,0 @@
|
|
1
|
-
require_relative 'helper'
|
2
|
-
require 'fluent/fluent_log_event_router'
|
3
|
-
require 'fluent/root_agent'
|
4
|
-
require 'fluent/system_config'
|
5
|
-
|
6
|
-
class FluentLogEventRouterTest < ::Test::Unit::TestCase
|
7
|
-
# @param config [String]
|
8
|
-
def build_config(config)
|
9
|
-
Fluent::Config.parse(config, 'fluent_log_event', '', syntax: :v1)
|
10
|
-
end
|
11
|
-
|
12
|
-
sub_test_case 'NullFluentLogEventRouter does nothing' do
|
13
|
-
test 'emittable? returns false but others does nothing' do
|
14
|
-
null_event_router = Fluent::NullFluentLogEventRouter.new
|
15
|
-
null_event_router.start
|
16
|
-
null_event_router.stop
|
17
|
-
null_event_router.graceful_stop
|
18
|
-
null_event_router.emit_event(nil)
|
19
|
-
assert_false null_event_router.emittable?
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
sub_test_case '#build' do
|
24
|
-
test 'NullFluentLogEventRouter if root_agent have not internal logger' do
|
25
|
-
root_agent = Fluent::RootAgent.new(log: $log, system_config: Fluent::SystemConfig.new)
|
26
|
-
root_agent.configure(build_config(''))
|
27
|
-
|
28
|
-
d = Fluent::FluentLogEventRouter.build(root_agent)
|
29
|
-
assert_equal Fluent::NullFluentLogEventRouter, d.class
|
30
|
-
end
|
31
|
-
|
32
|
-
test 'FluentLogEventRouter if <match fluent.*> exists in config' do
|
33
|
-
root_agent = Fluent::RootAgent.new(log: $log, system_config: Fluent::SystemConfig.new)
|
34
|
-
root_agent.configure(build_config(<<-CONFIG))
|
35
|
-
<match fluent.*>
|
36
|
-
@type null
|
37
|
-
</match>
|
38
|
-
CONFIG
|
39
|
-
|
40
|
-
d = Fluent::FluentLogEventRouter.build(root_agent)
|
41
|
-
assert_equal Fluent::FluentLogEventRouter, d.class
|
42
|
-
end
|
43
|
-
|
44
|
-
test 'FluentLogEventRouter if <label @FLUENT_LOG> exists in config' do
|
45
|
-
root_agent = Fluent::RootAgent.new(log: $log, system_config: Fluent::SystemConfig.new)
|
46
|
-
root_agent.configure(build_config(<<-CONFIG))
|
47
|
-
<label @FLUENT_LOG>
|
48
|
-
<match *>
|
49
|
-
@type null
|
50
|
-
</match>
|
51
|
-
</label>
|
52
|
-
CONFIG
|
53
|
-
|
54
|
-
d = Fluent::FluentLogEventRouter.build(root_agent)
|
55
|
-
assert_equal Fluent::FluentLogEventRouter, d.class
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
test 'when calling graceful_stop, it flushes all events' do
|
60
|
-
event_router = []
|
61
|
-
stub(event_router).emit do |tag, time, record|
|
62
|
-
event_router.push([tag, time, record])
|
63
|
-
end
|
64
|
-
|
65
|
-
d = Fluent::FluentLogEventRouter.new(event_router)
|
66
|
-
|
67
|
-
t = Time.now
|
68
|
-
msg = ['tag', t, { 'key' => 'value' }]
|
69
|
-
d.emit_event(msg)
|
70
|
-
d.graceful_stop
|
71
|
-
d.emit_event(msg)
|
72
|
-
d.start
|
73
|
-
|
74
|
-
d.graceful_stop # to call join
|
75
|
-
assert_equal 2, event_router.size
|
76
|
-
assert_equal msg, event_router[0]
|
77
|
-
assert_equal msg, event_router[1]
|
78
|
-
end
|
79
|
-
|
80
|
-
test 'when calling stop, it ignores existing events' do
|
81
|
-
event_router = []
|
82
|
-
stub(event_router).emit do |tag, time, record|
|
83
|
-
event_router.push([tag, time, record])
|
84
|
-
end
|
85
|
-
|
86
|
-
d = Fluent::FluentLogEventRouter.new(event_router)
|
87
|
-
|
88
|
-
t = Time.now
|
89
|
-
msg = ['tag', t, { 'key' => 'value' }]
|
90
|
-
d.emit_event(msg)
|
91
|
-
d.stop
|
92
|
-
d.emit_event(msg)
|
93
|
-
d.start
|
94
|
-
|
95
|
-
d.stop # to call join
|
96
|
-
assert_equal 1, event_router.size
|
97
|
-
assert_equal msg, event_router[0]
|
98
|
-
end
|
99
|
-
end
|
data/test/test_formatter.rb
DELETED
@@ -1,369 +0,0 @@
|
|
1
|
-
require_relative 'helper'
|
2
|
-
require 'fluent/test'
|
3
|
-
require 'fluent/formatter'
|
4
|
-
|
5
|
-
module FormatterTest
|
6
|
-
include Fluent
|
7
|
-
|
8
|
-
def tag
|
9
|
-
'tag'
|
10
|
-
end
|
11
|
-
|
12
|
-
def record
|
13
|
-
{'message' => 'awesome', 'greeting' => 'hello'}
|
14
|
-
end
|
15
|
-
|
16
|
-
class BaseFormatterTest < ::Test::Unit::TestCase
|
17
|
-
include FormatterTest
|
18
|
-
|
19
|
-
def test_call
|
20
|
-
formatter = Formatter.new
|
21
|
-
formatter.configure(config_element())
|
22
|
-
assert_raise NotImplementedError do
|
23
|
-
formatter.format('tag', Engine.now, {})
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
class BaseFormatterTestWithTestDriver < ::Test::Unit::TestCase
|
29
|
-
include FormatterTest
|
30
|
-
|
31
|
-
def create_driver(conf={})
|
32
|
-
Fluent::Test::FormatterTestDriver.new(Formatter).configure(conf)
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_call
|
36
|
-
d = create_driver
|
37
|
-
assert_raise NotImplementedError do
|
38
|
-
d.format('tag', Engine.now, {})
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_call_with_string_literal_configure
|
43
|
-
d = create_driver('')
|
44
|
-
assert_raise NotImplementedError do
|
45
|
-
d.format('tag', Engine.now, {})
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
class OutFileFormatterTest < ::Test::Unit::TestCase
|
51
|
-
include FormatterTest
|
52
|
-
|
53
|
-
def setup
|
54
|
-
@formatter = Fluent::Test::FormatterTestDriver.new('out_file')
|
55
|
-
@time = Engine.now
|
56
|
-
@newline = if Fluent.windows?
|
57
|
-
"\r\n"
|
58
|
-
else
|
59
|
-
"\n"
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
def configure(conf)
|
64
|
-
@formatter.configure({'utc' => true}.merge(conf))
|
65
|
-
end
|
66
|
-
|
67
|
-
def test_format
|
68
|
-
configure({})
|
69
|
-
formatted = @formatter.format(tag, @time, record)
|
70
|
-
|
71
|
-
assert_equal("#{time2str(@time)}\t#{tag}\t#{Yajl.dump(record)}#{@newline}", formatted)
|
72
|
-
end
|
73
|
-
|
74
|
-
def test_format_without_time
|
75
|
-
configure('output_time' => 'false')
|
76
|
-
formatted = @formatter.format(tag, @time, record)
|
77
|
-
|
78
|
-
assert_equal("#{tag}\t#{Yajl.dump(record)}#{@newline}", formatted)
|
79
|
-
end
|
80
|
-
|
81
|
-
def test_format_without_tag
|
82
|
-
configure('output_tag' => 'false')
|
83
|
-
formatted = @formatter.format(tag, @time, record)
|
84
|
-
|
85
|
-
assert_equal("#{time2str(@time)}\t#{Yajl.dump(record)}#{@newline}", formatted)
|
86
|
-
end
|
87
|
-
|
88
|
-
def test_format_without_time_and_tag
|
89
|
-
configure('output_tag' => 'false', 'output_time' => 'false')
|
90
|
-
formatted = @formatter.format('tag', @time, record)
|
91
|
-
|
92
|
-
assert_equal("#{Yajl.dump(record)}#{@newline}", formatted)
|
93
|
-
end
|
94
|
-
|
95
|
-
def test_format_without_time_and_tag_against_string_literal_configure
|
96
|
-
@formatter.configure(%[
|
97
|
-
utc true
|
98
|
-
output_tag false
|
99
|
-
output_time false
|
100
|
-
])
|
101
|
-
formatted = @formatter.format('tag', @time, record)
|
102
|
-
|
103
|
-
assert_equal("#{Yajl.dump(record)}#{@newline}", formatted)
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
class JsonFormatterTest < ::Test::Unit::TestCase
|
108
|
-
include FormatterTest
|
109
|
-
|
110
|
-
def setup
|
111
|
-
@formatter = Fluent::Test::FormatterTestDriver.new(TextFormatter::JSONFormatter)
|
112
|
-
@time = Engine.now
|
113
|
-
@newline = if Fluent.windows?
|
114
|
-
"\r\n"
|
115
|
-
else
|
116
|
-
"\n"
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
data('oj' => 'oj', 'yajl' => 'yajl')
|
121
|
-
def test_format(data)
|
122
|
-
@formatter.configure('json_parser' => data)
|
123
|
-
formatted = @formatter.format(tag, @time, record)
|
124
|
-
|
125
|
-
assert_equal("#{Yajl.dump(record)}#{@newline}", formatted)
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
class MessagePackFormatterTest < ::Test::Unit::TestCase
|
130
|
-
include FormatterTest
|
131
|
-
|
132
|
-
def setup
|
133
|
-
@formatter = Fluent::Test::FormatterTestDriver.new(TextFormatter::MessagePackFormatter)
|
134
|
-
@time = Engine.now
|
135
|
-
end
|
136
|
-
|
137
|
-
def test_format
|
138
|
-
@formatter.configure({})
|
139
|
-
formatted = @formatter.format(tag, @time, record)
|
140
|
-
|
141
|
-
assert_equal(record.to_msgpack, formatted)
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
class LabeledTSVFormatterTest < ::Test::Unit::TestCase
|
146
|
-
include FormatterTest
|
147
|
-
|
148
|
-
def setup
|
149
|
-
@formatter = Fluent::Test::FormatterTestDriver.new(TextFormatter::LabeledTSVFormatter)
|
150
|
-
@time = Engine.now
|
151
|
-
@newline = if Fluent.windows?
|
152
|
-
"\r\n"
|
153
|
-
else
|
154
|
-
"\n"
|
155
|
-
end
|
156
|
-
end
|
157
|
-
|
158
|
-
def test_config_params
|
159
|
-
assert_equal "\t", @formatter.instance.delimiter
|
160
|
-
assert_equal ":", @formatter.instance.label_delimiter
|
161
|
-
|
162
|
-
@formatter.configure(
|
163
|
-
'delimiter' => ',',
|
164
|
-
'label_delimiter' => '=',
|
165
|
-
)
|
166
|
-
|
167
|
-
assert_equal ",", @formatter.instance.delimiter
|
168
|
-
assert_equal "=", @formatter.instance.label_delimiter
|
169
|
-
end
|
170
|
-
|
171
|
-
def test_format
|
172
|
-
@formatter.configure({})
|
173
|
-
formatted = @formatter.format(tag, @time, record)
|
174
|
-
|
175
|
-
assert_equal("message:awesome\tgreeting:hello#{@newline}", formatted)
|
176
|
-
end
|
177
|
-
|
178
|
-
def test_format_with_customized_delimiters
|
179
|
-
@formatter.configure(
|
180
|
-
'delimiter' => ',',
|
181
|
-
'label_delimiter' => '=',
|
182
|
-
)
|
183
|
-
formatted = @formatter.format(tag, @time, record)
|
184
|
-
|
185
|
-
assert_equal("message=awesome,greeting=hello#{@newline}", formatted)
|
186
|
-
end
|
187
|
-
|
188
|
-
def record_with_tab
|
189
|
-
{'message' => "awe\tsome", 'greeting' => "hello\t"}
|
190
|
-
end
|
191
|
-
|
192
|
-
def test_format_suppresses_tab
|
193
|
-
@formatter.configure({})
|
194
|
-
formatted = @formatter.format(tag, @time, record_with_tab)
|
195
|
-
|
196
|
-
assert_equal("message:awe some\tgreeting:hello #{@newline}", formatted)
|
197
|
-
end
|
198
|
-
|
199
|
-
def test_format_suppresses_tab_custom_replacement
|
200
|
-
@formatter.configure(
|
201
|
-
'replacement' => 'X',
|
202
|
-
)
|
203
|
-
formatted = @formatter.format(tag, @time, record_with_tab)
|
204
|
-
|
205
|
-
assert_equal("message:aweXsome\tgreeting:helloX#{@newline}", formatted)
|
206
|
-
end
|
207
|
-
|
208
|
-
def test_format_suppresses_custom_delimiter
|
209
|
-
@formatter.configure(
|
210
|
-
'delimiter' => 'w',
|
211
|
-
'label_delimiter' => '=',
|
212
|
-
)
|
213
|
-
formatted = @formatter.format(tag, @time, record)
|
214
|
-
|
215
|
-
assert_equal("message=a esomewgreeting=hello#{@newline}", formatted)
|
216
|
-
end
|
217
|
-
end
|
218
|
-
|
219
|
-
class CsvFormatterTest < ::Test::Unit::TestCase
|
220
|
-
include FormatterTest
|
221
|
-
|
222
|
-
def setup
|
223
|
-
@formatter = Fluent::Test::FormatterTestDriver.new(TextFormatter::CsvFormatter)
|
224
|
-
@time = Engine.now
|
225
|
-
end
|
226
|
-
|
227
|
-
def test_config_params
|
228
|
-
assert_equal ',', @formatter.instance.delimiter
|
229
|
-
assert_equal true, @formatter.instance.force_quotes
|
230
|
-
assert_nil @formatter.instance.fields
|
231
|
-
end
|
232
|
-
|
233
|
-
data(
|
234
|
-
'tab_char' => ["\t", '\t'],
|
235
|
-
'tab_string' => ["\t", 'TAB'],
|
236
|
-
'pipe' => ['|', '|'])
|
237
|
-
def test_config_params_with_customized_delimiters(data)
|
238
|
-
expected, target = data
|
239
|
-
@formatter.configure('delimiter' => target, 'fields' => 'a,b,c')
|
240
|
-
assert_equal expected, @formatter.instance.delimiter
|
241
|
-
assert_equal ['a', 'b', 'c'], @formatter.instance.fields
|
242
|
-
end
|
243
|
-
|
244
|
-
def test_format
|
245
|
-
@formatter.configure('fields' => 'message,message2')
|
246
|
-
formatted = @formatter.format(tag, @time, {
|
247
|
-
'message' => 'awesome',
|
248
|
-
'message2' => 'awesome2'
|
249
|
-
})
|
250
|
-
assert_equal("\"awesome\",\"awesome2\"\n", formatted)
|
251
|
-
end
|
252
|
-
|
253
|
-
def test_format_with_customized_delimiters
|
254
|
-
@formatter.configure(
|
255
|
-
'fields' => 'message,message2',
|
256
|
-
'delimiter' => '\t'
|
257
|
-
)
|
258
|
-
formatted = @formatter.format(tag, @time, {
|
259
|
-
'message' => 'awesome',
|
260
|
-
'message2' => 'awesome2'
|
261
|
-
})
|
262
|
-
assert_equal("\"awesome\"\t\"awesome2\"\n", formatted)
|
263
|
-
end
|
264
|
-
|
265
|
-
def test_format_with_non_quote
|
266
|
-
@formatter.configure(
|
267
|
-
'fields' => 'message,message2',
|
268
|
-
'force_quotes' => 'false'
|
269
|
-
)
|
270
|
-
formatted = @formatter.format(tag, @time, {
|
271
|
-
'message' => 'awesome',
|
272
|
-
'message2' => 'awesome2'
|
273
|
-
})
|
274
|
-
assert_equal("awesome,awesome2\n", formatted)
|
275
|
-
end
|
276
|
-
|
277
|
-
data(
|
278
|
-
'nil' => {
|
279
|
-
'message' => 'awesome',
|
280
|
-
'message2' => nil,
|
281
|
-
'message3' => 'awesome3'
|
282
|
-
},
|
283
|
-
'blank' => {
|
284
|
-
'message' => 'awesome',
|
285
|
-
'message2' => '',
|
286
|
-
'message3' => 'awesome3'
|
287
|
-
})
|
288
|
-
def test_format_with_empty_fields(data)
|
289
|
-
@formatter.configure(
|
290
|
-
'fields' => 'message,message2,message3'
|
291
|
-
)
|
292
|
-
formatted = @formatter.format(tag, @time, data)
|
293
|
-
assert_equal("\"awesome\",\"\",\"awesome3\"\n", formatted)
|
294
|
-
end
|
295
|
-
|
296
|
-
data(
|
297
|
-
'normally' => 'one,two,three',
|
298
|
-
'white_space' => 'one , two , three',
|
299
|
-
'blank' => 'one,,two,three')
|
300
|
-
def test_config_params_with_fields(data)
|
301
|
-
@formatter.configure('fields' => data)
|
302
|
-
assert_equal %w(one two three), @formatter.instance.fields
|
303
|
-
end
|
304
|
-
end
|
305
|
-
|
306
|
-
class SingleValueFormatterTest < ::Test::Unit::TestCase
|
307
|
-
include FormatterTest
|
308
|
-
def setup
|
309
|
-
@newline = if Fluent.windows?
|
310
|
-
"\r\n"
|
311
|
-
else
|
312
|
-
"\n"
|
313
|
-
end
|
314
|
-
end
|
315
|
-
|
316
|
-
def create_driver(klass_or_str)
|
317
|
-
Fluent::Test::FormatterTestDriver.new(klass_or_str)
|
318
|
-
end
|
319
|
-
|
320
|
-
def test_config_params
|
321
|
-
formatter = create_driver(TextFormatter::SingleValueFormatter)
|
322
|
-
assert_equal "message", formatter.instance.message_key
|
323
|
-
|
324
|
-
formatter.configure('message_key' => 'foobar')
|
325
|
-
assert_equal "foobar", formatter.instance.message_key
|
326
|
-
end
|
327
|
-
|
328
|
-
def test_format
|
329
|
-
formatter = create_driver('single_value')
|
330
|
-
formatter.configure({})
|
331
|
-
formatted = formatter.format('tag', Engine.now, {'message' => 'awesome'})
|
332
|
-
assert_equal("awesome#{@newline}", formatted)
|
333
|
-
end
|
334
|
-
|
335
|
-
def test_format_without_newline
|
336
|
-
formatter = create_driver('single_value')
|
337
|
-
formatter.configure('add_newline' => 'false')
|
338
|
-
formatted = formatter.format('tag', Engine.now, {'message' => 'awesome'})
|
339
|
-
assert_equal("awesome", formatted)
|
340
|
-
end
|
341
|
-
|
342
|
-
def test_format_with_message_key
|
343
|
-
formatter = create_driver(TextFormatter::SingleValueFormatter)
|
344
|
-
formatter.configure('message_key' => 'foobar')
|
345
|
-
formatted = formatter.format('tag', Engine.now, {'foobar' => 'foo'})
|
346
|
-
|
347
|
-
assert_equal("foo#{@newline}", formatted)
|
348
|
-
end
|
349
|
-
end
|
350
|
-
|
351
|
-
class FormatterLookupTest < ::Test::Unit::TestCase
|
352
|
-
include FormatterTest
|
353
|
-
|
354
|
-
def test_unknown_format
|
355
|
-
assert_raise NotFoundPluginError do
|
356
|
-
Fluent::Plugin.new_formatter('unknown')
|
357
|
-
end
|
358
|
-
end
|
359
|
-
|
360
|
-
data('register_formatter' => 'known', 'register_template' => 'known_old')
|
361
|
-
def test_find_formatter(data)
|
362
|
-
$LOAD_PATH.unshift(File.join(File.expand_path(File.dirname(__FILE__)), 'scripts'))
|
363
|
-
assert_nothing_raised ConfigError do
|
364
|
-
Fluent::Plugin.new_formatter(data)
|
365
|
-
end
|
366
|
-
$LOAD_PATH.shift
|
367
|
-
end
|
368
|
-
end
|
369
|
-
end
|
data/test/test_input.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
require_relative 'helper'
|
2
|
-
require 'fluent/input'
|
3
|
-
|
4
|
-
class FluentInputTest < ::Test::Unit::TestCase
|
5
|
-
include Fluent
|
6
|
-
|
7
|
-
def setup
|
8
|
-
Fluent::Test.setup
|
9
|
-
end
|
10
|
-
|
11
|
-
def create_driver(conf = '')
|
12
|
-
Fluent::Test::InputTestDriver.new(Fluent::Input).configure(conf, true)
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_router
|
16
|
-
d = create_driver
|
17
|
-
assert_equal Engine.root_agent.event_router, d.instance.router
|
18
|
-
|
19
|
-
d = nil
|
20
|
-
assert_nothing_raised {
|
21
|
-
d = create_driver('@label @known')
|
22
|
-
}
|
23
|
-
expected = Engine.root_agent.find_label('@known').event_router
|
24
|
-
assert_equal expected, d.instance.router
|
25
|
-
|
26
|
-
# TestDriver helps to create a label instance automatically, so directly test here
|
27
|
-
assert_raise(ArgumentError) {
|
28
|
-
Fluent::Input.new.configure(Config.parse('@label @unknown', '(test)', '(test_dir)', true))
|
29
|
-
}
|
30
|
-
end
|
31
|
-
end
|