fluentd 0.12.40 → 1.6.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of fluentd might be problematic. Click here for more details.
- checksums.yaml +5 -5
- data/.github/ISSUE_TEMPLATE/bug_report.md +39 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +23 -0
- data/.github/ISSUE_TEMPLATE.md +17 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +13 -0
- data/.gitignore +5 -0
- data/.gitlab/cicd-template.yaml +10 -0
- data/.gitlab-ci.yml +147 -0
- data/.travis.yml +56 -20
- data/ADOPTERS.md +5 -0
- data/CHANGELOG.md +1369 -0
- data/CONTRIBUTING.md +16 -5
- data/GOVERNANCE.md +55 -0
- data/Gemfile +5 -0
- data/GithubWorkflow.md +78 -0
- data/LICENSE +202 -0
- data/MAINTAINERS.md +7 -0
- data/README.md +23 -11
- data/Rakefile +48 -2
- data/Vagrantfile +17 -0
- data/appveyor.yml +37 -0
- data/bin/fluent-binlog-reader +7 -0
- data/bin/fluent-ca-generate +6 -0
- data/bin/fluent-plugin-config-format +5 -0
- data/bin/fluent-plugin-generate +5 -0
- data/bin/fluentd +3 -0
- data/code-of-conduct.md +3 -0
- data/example/copy_roundrobin.conf +39 -0
- data/example/counter.conf +18 -0
- data/example/in_dummy_blocks.conf +17 -0
- data/example/in_dummy_with_compression.conf +23 -0
- data/example/in_forward.conf +7 -0
- data/example/in_forward_client.conf +37 -0
- data/example/in_forward_shared_key.conf +15 -0
- data/example/in_forward_tls.conf +14 -0
- data/example/in_forward_users.conf +24 -0
- data/example/in_forward_workers.conf +21 -0
- data/example/in_http.conf +3 -1
- data/example/in_out_forward.conf +17 -0
- data/example/logevents.conf +25 -0
- data/example/multi_filters.conf +61 -0
- data/example/out_exec_filter.conf +42 -0
- data/example/out_forward.conf +13 -13
- data/example/out_forward_buf_file.conf +23 -0
- data/example/out_forward_client.conf +109 -0
- data/example/out_forward_heartbeat_none.conf +16 -0
- data/example/out_forward_shared_key.conf +36 -0
- data/example/out_forward_tls.conf +18 -0
- data/example/out_forward_users.conf +65 -0
- data/example/out_null.conf +36 -0
- data/example/secondary_file.conf +42 -0
- data/example/suppress_config_dump.conf +7 -0
- data/example/worker_section.conf +36 -0
- data/fluent.conf +29 -0
- data/fluentd.gemspec +21 -11
- data/lib/fluent/agent.rb +67 -90
- data/lib/fluent/clock.rb +62 -0
- data/lib/fluent/command/binlog_reader.rb +244 -0
- data/lib/fluent/command/ca_generate.rb +181 -0
- data/lib/fluent/command/cat.rb +42 -18
- data/lib/fluent/command/debug.rb +12 -10
- data/lib/fluent/command/fluentd.rb +153 -5
- data/lib/fluent/command/plugin_config_formatter.rb +292 -0
- data/lib/fluent/command/plugin_generator.rb +324 -0
- data/lib/fluent/compat/call_super_mixin.rb +67 -0
- data/lib/fluent/compat/detach_process_mixin.rb +33 -0
- data/lib/fluent/compat/exec_util.rb +129 -0
- data/lib/fluent/compat/file_util.rb +54 -0
- data/lib/fluent/compat/filter.rb +68 -0
- data/lib/fluent/compat/formatter.rb +111 -0
- data/lib/fluent/compat/formatter_utils.rb +85 -0
- data/lib/fluent/compat/handle_tag_and_time_mixin.rb +62 -0
- data/lib/fluent/compat/handle_tag_name_mixin.rb +53 -0
- data/lib/fluent/compat/input.rb +49 -0
- data/lib/fluent/compat/output.rb +718 -0
- data/lib/fluent/compat/output_chain.rb +60 -0
- data/lib/fluent/compat/parser.rb +310 -0
- data/lib/fluent/compat/parser_utils.rb +40 -0
- data/lib/fluent/compat/propagate_default.rb +62 -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/socket_util.rb +165 -0
- data/lib/fluent/compat/string_util.rb +34 -0
- data/lib/fluent/compat/structured_format_mixin.rb +26 -0
- data/lib/fluent/compat/type_converter.rb +90 -0
- data/lib/fluent/config/configure_proxy.rb +210 -62
- data/lib/fluent/config/dsl.rb +12 -5
- data/lib/fluent/config/element.rb +107 -9
- data/lib/fluent/config/literal_parser.rb +9 -3
- data/lib/fluent/config/parser.rb +4 -4
- data/lib/fluent/config/section.rb +51 -14
- data/lib/fluent/config/types.rb +28 -13
- data/lib/fluent/config/v1_parser.rb +3 -5
- data/lib/fluent/config.rb +23 -20
- data/lib/fluent/configurable.rb +79 -21
- data/lib/fluent/counter/base_socket.rb +46 -0
- data/lib/fluent/counter/client.rb +297 -0
- data/lib/fluent/counter/error.rb +86 -0
- data/lib/fluent/counter/mutex_hash.rb +163 -0
- data/lib/fluent/counter/server.rb +273 -0
- data/lib/fluent/counter/store.rb +205 -0
- data/lib/fluent/counter/validator.rb +145 -0
- data/lib/fluent/counter.rb +23 -0
- data/lib/fluent/daemon.rb +15 -0
- data/lib/fluent/engine.rb +102 -65
- data/lib/fluent/env.rb +7 -3
- data/lib/fluent/error.rb +30 -0
- data/lib/fluent/event.rb +197 -21
- data/lib/fluent/event_router.rb +93 -10
- data/lib/fluent/filter.rb +2 -50
- data/lib/fluent/formatter.rb +4 -293
- data/lib/fluent/input.rb +2 -32
- data/lib/fluent/label.rb +10 -2
- data/lib/fluent/load.rb +3 -3
- data/lib/fluent/log.rb +348 -81
- data/lib/fluent/match.rb +37 -36
- data/lib/fluent/mixin.rb +12 -176
- data/lib/fluent/msgpack_factory.rb +62 -0
- data/lib/fluent/output.rb +10 -612
- data/lib/fluent/output_chain.rb +23 -0
- data/lib/fluent/parser.rb +4 -800
- data/lib/fluent/plugin/bare_output.rb +63 -0
- data/lib/fluent/plugin/base.rb +192 -0
- data/lib/fluent/plugin/buf_file.rb +128 -174
- data/lib/fluent/plugin/buf_memory.rb +9 -92
- data/lib/fluent/plugin/buffer/chunk.rb +221 -0
- data/lib/fluent/plugin/buffer/file_chunk.rb +383 -0
- data/lib/fluent/plugin/buffer/memory_chunk.rb +90 -0
- data/lib/fluent/plugin/buffer.rb +779 -0
- data/lib/fluent/plugin/compressable.rb +92 -0
- data/lib/fluent/plugin/exec_util.rb +3 -108
- data/lib/fluent/plugin/file_util.rb +4 -34
- data/lib/fluent/plugin/file_wrapper.rb +120 -0
- data/lib/fluent/plugin/filter.rb +93 -0
- data/lib/fluent/plugin/filter_grep.rb +117 -34
- data/lib/fluent/plugin/filter_parser.rb +85 -62
- data/lib/fluent/plugin/filter_record_transformer.rb +27 -39
- data/lib/fluent/plugin/filter_stdout.rb +15 -12
- data/lib/fluent/plugin/formatter.rb +50 -0
- data/lib/fluent/plugin/formatter_csv.rb +52 -0
- data/lib/fluent/plugin/formatter_hash.rb +33 -0
- data/lib/fluent/plugin/formatter_json.rb +55 -0
- data/lib/fluent/plugin/formatter_ltsv.rb +42 -0
- data/lib/fluent/plugin/formatter_msgpack.rb +33 -0
- data/lib/fluent/plugin/formatter_out_file.rb +51 -0
- data/lib/fluent/plugin/formatter_single_value.rb +34 -0
- data/lib/fluent/plugin/formatter_stdout.rb +76 -0
- data/lib/fluent/plugin/formatter_tsv.rb +38 -0
- data/lib/fluent/plugin/in_debug_agent.rb +17 -6
- data/lib/fluent/plugin/in_dummy.rb +47 -20
- data/lib/fluent/plugin/in_exec.rb +55 -123
- data/lib/fluent/plugin/in_forward.rb +299 -216
- data/lib/fluent/plugin/in_gc_stat.rb +14 -36
- data/lib/fluent/plugin/in_http.rb +204 -91
- data/lib/fluent/plugin/in_monitor_agent.rb +186 -258
- data/lib/fluent/plugin/in_object_space.rb +13 -41
- data/lib/fluent/plugin/in_syslog.rb +112 -134
- data/lib/fluent/plugin/in_tail.rb +408 -745
- data/lib/fluent/plugin/in_tcp.rb +66 -9
- data/lib/fluent/plugin/in_udp.rb +60 -11
- data/lib/fluent/plugin/{in_stream.rb → in_unix.rb} +8 -4
- data/lib/fluent/plugin/input.rb +37 -0
- data/lib/fluent/plugin/multi_output.rb +158 -0
- data/lib/fluent/plugin/out_copy.rb +23 -35
- data/lib/fluent/plugin/out_exec.rb +67 -70
- data/lib/fluent/plugin/out_exec_filter.rb +204 -271
- data/lib/fluent/plugin/out_file.rb +267 -73
- data/lib/fluent/plugin/out_forward.rb +854 -325
- data/lib/fluent/plugin/out_null.rb +42 -9
- data/lib/fluent/plugin/out_relabel.rb +9 -5
- data/lib/fluent/plugin/out_roundrobin.rb +18 -37
- data/lib/fluent/plugin/out_secondary_file.rb +133 -0
- data/lib/fluent/plugin/out_stdout.rb +43 -10
- data/lib/fluent/plugin/out_stream.rb +7 -2
- data/lib/fluent/plugin/output.rb +1498 -0
- data/lib/fluent/plugin/owned_by_mixin.rb +42 -0
- data/lib/fluent/plugin/parser.rb +191 -0
- data/lib/fluent/plugin/parser_apache.rb +28 -0
- data/lib/fluent/plugin/parser_apache2.rb +88 -0
- data/lib/fluent/plugin/parser_apache_error.rb +26 -0
- data/lib/fluent/plugin/parser_csv.rb +39 -0
- data/lib/fluent/plugin/parser_json.rb +94 -0
- data/lib/fluent/plugin/parser_ltsv.rb +49 -0
- data/lib/fluent/plugin/parser_msgpack.rb +50 -0
- data/lib/fluent/plugin/parser_multiline.rb +106 -0
- data/lib/fluent/plugin/parser_nginx.rb +28 -0
- data/lib/fluent/plugin/parser_none.rb +36 -0
- data/lib/fluent/plugin/parser_regexp.rb +68 -0
- data/lib/fluent/plugin/parser_syslog.rb +142 -0
- data/lib/fluent/plugin/parser_tsv.rb +42 -0
- data/lib/fluent/plugin/socket_util.rb +3 -143
- data/lib/fluent/plugin/storage.rb +84 -0
- data/lib/fluent/plugin/storage_local.rb +164 -0
- data/lib/fluent/plugin/string_util.rb +3 -15
- data/lib/fluent/plugin.rb +122 -121
- data/lib/fluent/plugin_helper/cert_option.rb +178 -0
- data/lib/fluent/plugin_helper/child_process.rb +364 -0
- data/lib/fluent/plugin_helper/compat_parameters.rb +333 -0
- data/lib/fluent/plugin_helper/counter.rb +51 -0
- data/lib/fluent/plugin_helper/event_emitter.rb +93 -0
- data/lib/fluent/plugin_helper/event_loop.rb +170 -0
- data/lib/fluent/plugin_helper/extract.rb +104 -0
- data/lib/fluent/plugin_helper/formatter.rb +147 -0
- data/lib/fluent/plugin_helper/http_server/app.rb +79 -0
- data/lib/fluent/plugin_helper/http_server/compat/server.rb +81 -0
- data/lib/fluent/plugin_helper/http_server/compat/webrick_handler.rb +58 -0
- data/lib/fluent/plugin_helper/http_server/methods.rb +35 -0
- data/lib/fluent/plugin_helper/http_server/request.rb +42 -0
- data/lib/fluent/plugin_helper/http_server/router.rb +54 -0
- data/lib/fluent/plugin_helper/http_server/server.rb +87 -0
- data/lib/fluent/plugin_helper/http_server.rb +76 -0
- data/lib/fluent/plugin_helper/inject.rb +151 -0
- data/lib/fluent/plugin_helper/parser.rb +147 -0
- data/lib/fluent/plugin_helper/record_accessor.rb +210 -0
- data/lib/fluent/plugin_helper/retry_state.rb +205 -0
- data/lib/fluent/plugin_helper/server.rb +807 -0
- data/lib/fluent/plugin_helper/socket.rb +250 -0
- data/lib/fluent/plugin_helper/socket_option.rb +80 -0
- data/lib/fluent/plugin_helper/storage.rb +349 -0
- data/lib/fluent/plugin_helper/thread.rb +179 -0
- data/lib/fluent/plugin_helper/timer.rb +92 -0
- data/lib/fluent/plugin_helper.rb +73 -0
- data/lib/fluent/plugin_id.rb +80 -0
- data/lib/fluent/process.rb +3 -489
- data/lib/fluent/registry.rb +52 -10
- data/lib/fluent/root_agent.rb +204 -42
- data/lib/fluent/supervisor.rb +597 -359
- data/lib/fluent/system_config.rb +131 -42
- data/lib/fluent/test/base.rb +6 -54
- data/lib/fluent/test/driver/base.rb +224 -0
- data/lib/fluent/test/driver/base_owned.rb +70 -0
- data/lib/fluent/test/driver/base_owner.rb +135 -0
- data/lib/fluent/test/driver/event_feeder.rb +98 -0
- data/lib/fluent/test/driver/filter.rb +57 -0
- data/lib/fluent/test/driver/formatter.rb +30 -0
- data/lib/fluent/test/driver/input.rb +31 -0
- data/lib/fluent/test/driver/multi_output.rb +53 -0
- data/lib/fluent/test/driver/output.rb +102 -0
- data/lib/fluent/test/driver/parser.rb +30 -0
- data/lib/fluent/test/driver/test_event_router.rb +45 -0
- data/lib/fluent/test/filter_test.rb +0 -1
- data/lib/fluent/test/formatter_test.rb +4 -1
- data/lib/fluent/test/helpers.rb +58 -10
- data/lib/fluent/test/input_test.rb +27 -19
- data/lib/fluent/test/log.rb +79 -0
- data/lib/fluent/test/output_test.rb +28 -39
- data/lib/fluent/test/parser_test.rb +3 -1
- data/lib/fluent/test/startup_shutdown.rb +46 -0
- data/lib/fluent/test.rb +33 -1
- data/lib/fluent/time.rb +450 -1
- data/lib/fluent/timezone.rb +27 -3
- data/lib/fluent/{status.rb → unique_id.rb} +15 -24
- data/lib/fluent/version.rb +1 -1
- data/lib/fluent/winsvc.rb +85 -0
- data/templates/new_gem/Gemfile +3 -0
- data/templates/new_gem/README.md.erb +43 -0
- data/templates/new_gem/Rakefile +13 -0
- data/templates/new_gem/fluent-plugin.gemspec.erb +27 -0
- data/templates/new_gem/lib/fluent/plugin/filter.rb.erb +14 -0
- data/templates/new_gem/lib/fluent/plugin/formatter.rb.erb +14 -0
- data/templates/new_gem/lib/fluent/plugin/input.rb.erb +11 -0
- data/templates/new_gem/lib/fluent/plugin/output.rb.erb +11 -0
- data/templates/new_gem/lib/fluent/plugin/parser.rb.erb +15 -0
- data/templates/new_gem/test/helper.rb.erb +8 -0
- data/templates/new_gem/test/plugin/test_filter.rb.erb +18 -0
- data/templates/new_gem/test/plugin/test_formatter.rb.erb +18 -0
- data/templates/new_gem/test/plugin/test_input.rb.erb +18 -0
- data/templates/new_gem/test/plugin/test_output.rb.erb +18 -0
- data/templates/new_gem/test/plugin/test_parser.rb.erb +18 -0
- data/templates/plugin_config_formatter/param.md-compact.erb +25 -0
- data/templates/plugin_config_formatter/param.md.erb +34 -0
- data/templates/plugin_config_formatter/section.md.erb +12 -0
- data/test/command/test_binlog_reader.rb +346 -0
- data/test/command/test_ca_generate.rb +70 -0
- data/test/command/test_fluentd.rb +901 -0
- data/test/command/test_plugin_config_formatter.rb +276 -0
- data/test/command/test_plugin_generator.rb +92 -0
- data/test/compat/test_calls_super.rb +166 -0
- data/test/compat/test_parser.rb +92 -0
- data/test/config/test_config_parser.rb +126 -2
- data/test/config/test_configurable.rb +946 -187
- data/test/config/test_configure_proxy.rb +424 -74
- data/test/config/test_dsl.rb +11 -11
- data/test/config/test_element.rb +500 -0
- data/test/config/test_literal_parser.rb +8 -0
- data/test/config/test_plugin_configuration.rb +56 -0
- data/test/config/test_section.rb +79 -7
- data/test/config/test_system_config.rb +122 -35
- data/test/config/test_types.rb +38 -0
- data/test/counter/test_client.rb +559 -0
- data/test/counter/test_error.rb +44 -0
- data/test/counter/test_mutex_hash.rb +179 -0
- data/test/counter/test_server.rb +589 -0
- data/test/counter/test_store.rb +258 -0
- data/test/counter/test_validator.rb +137 -0
- data/test/helper.rb +89 -6
- data/test/helpers/fuzzy_assert.rb +89 -0
- data/test/plugin/test_bare_output.rb +118 -0
- data/test/plugin/test_base.rb +115 -0
- data/test/plugin/test_buf_file.rb +823 -460
- data/test/plugin/test_buf_memory.rb +32 -194
- data/test/plugin/test_buffer.rb +1233 -0
- data/test/plugin/test_buffer_chunk.rb +198 -0
- data/test/plugin/test_buffer_file_chunk.rb +844 -0
- data/test/plugin/test_buffer_memory_chunk.rb +338 -0
- data/test/plugin/test_compressable.rb +84 -0
- data/test/plugin/test_filter.rb +357 -0
- data/test/plugin/test_filter_grep.rb +540 -29
- data/test/plugin/test_filter_parser.rb +439 -452
- data/test/plugin/test_filter_record_transformer.rb +123 -166
- data/test/plugin/test_filter_stdout.rb +160 -72
- data/test/plugin/test_formatter_csv.rb +111 -0
- data/test/plugin/test_formatter_hash.rb +35 -0
- data/test/plugin/test_formatter_json.rb +51 -0
- data/test/plugin/test_formatter_ltsv.rb +62 -0
- data/test/plugin/test_formatter_msgpack.rb +28 -0
- data/test/plugin/test_formatter_out_file.rb +95 -0
- data/test/plugin/test_formatter_single_value.rb +38 -0
- data/test/plugin/test_formatter_tsv.rb +68 -0
- data/test/plugin/test_in_debug_agent.rb +24 -1
- data/test/plugin/test_in_dummy.rb +111 -18
- data/test/plugin/test_in_exec.rb +200 -113
- data/test/plugin/test_in_forward.rb +990 -387
- data/test/plugin/test_in_gc_stat.rb +10 -8
- data/test/plugin/test_in_http.rb +600 -224
- data/test/plugin/test_in_monitor_agent.rb +690 -0
- data/test/plugin/test_in_object_space.rb +24 -8
- data/test/plugin/test_in_syslog.rb +154 -215
- data/test/plugin/test_in_tail.rb +1006 -707
- data/test/plugin/test_in_tcp.rb +125 -48
- data/test/plugin/test_in_udp.rb +204 -63
- data/test/plugin/{test_in_stream.rb → test_in_unix.rb} +14 -13
- data/test/plugin/test_input.rb +126 -0
- data/test/plugin/test_metadata.rb +89 -0
- data/test/plugin/test_multi_output.rb +180 -0
- data/test/plugin/test_out_copy.rb +117 -112
- data/test/plugin/test_out_exec.rb +258 -53
- data/test/plugin/test_out_exec_filter.rb +538 -115
- data/test/plugin/test_out_file.rb +865 -178
- data/test/plugin/test_out_forward.rb +998 -210
- data/test/plugin/test_out_null.rb +105 -0
- data/test/plugin/test_out_relabel.rb +28 -0
- data/test/plugin/test_out_roundrobin.rb +36 -29
- data/test/plugin/test_out_secondary_file.rb +458 -0
- data/test/plugin/test_out_stdout.rb +135 -37
- data/test/plugin/test_out_stream.rb +18 -0
- data/test/plugin/test_output.rb +984 -0
- data/test/plugin/test_output_as_buffered.rb +2021 -0
- data/test/plugin/test_output_as_buffered_backup.rb +312 -0
- data/test/plugin/test_output_as_buffered_compress.rb +165 -0
- data/test/plugin/test_output_as_buffered_overflow.rb +250 -0
- data/test/plugin/test_output_as_buffered_retries.rb +911 -0
- data/test/plugin/test_output_as_buffered_secondary.rb +874 -0
- data/test/plugin/test_output_as_standard.rb +374 -0
- data/test/plugin/test_owned_by.rb +35 -0
- data/test/plugin/test_parser.rb +359 -0
- data/test/plugin/test_parser_apache.rb +42 -0
- data/test/plugin/test_parser_apache2.rb +47 -0
- data/test/plugin/test_parser_apache_error.rb +45 -0
- data/test/plugin/test_parser_csv.rb +103 -0
- data/test/plugin/test_parser_json.rb +138 -0
- data/test/plugin/test_parser_labeled_tsv.rb +145 -0
- data/test/plugin/test_parser_multiline.rb +100 -0
- data/test/plugin/test_parser_nginx.rb +88 -0
- data/test/plugin/test_parser_none.rb +52 -0
- data/test/plugin/test_parser_regexp.rb +289 -0
- data/test/plugin/test_parser_syslog.rb +441 -0
- data/test/plugin/test_parser_tsv.rb +122 -0
- data/test/plugin/test_storage.rb +167 -0
- data/test/plugin/test_storage_local.rb +335 -0
- data/test/plugin_helper/data/cert/cert-key.pem +27 -0
- data/test/plugin_helper/data/cert/cert-with-no-newline.pem +19 -0
- data/test/plugin_helper/data/cert/cert.pem +19 -0
- data/test/plugin_helper/http_server/test_app.rb +65 -0
- data/test/plugin_helper/http_server/test_route.rb +32 -0
- data/test/plugin_helper/test_cert_option.rb +16 -0
- data/test/plugin_helper/test_child_process.rb +794 -0
- data/test/plugin_helper/test_compat_parameters.rb +353 -0
- data/test/plugin_helper/test_event_emitter.rb +51 -0
- data/test/plugin_helper/test_event_loop.rb +52 -0
- data/test/plugin_helper/test_extract.rb +194 -0
- data/test/plugin_helper/test_formatter.rb +255 -0
- data/test/plugin_helper/test_http_server_helper.rb +205 -0
- data/test/plugin_helper/test_inject.rb +519 -0
- data/test/plugin_helper/test_parser.rb +264 -0
- data/test/plugin_helper/test_record_accessor.rb +197 -0
- data/test/plugin_helper/test_retry_state.rb +442 -0
- data/test/plugin_helper/test_server.rb +1714 -0
- data/test/plugin_helper/test_storage.rb +542 -0
- data/test/plugin_helper/test_thread.rb +164 -0
- data/test/plugin_helper/test_timer.rb +132 -0
- data/test/scripts/exec_script.rb +0 -6
- data/test/scripts/fluent/plugin/formatter1/formatter_test1.rb +7 -0
- data/test/scripts/fluent/plugin/formatter2/formatter_test2.rb +7 -0
- data/test/scripts/fluent/plugin/out_test.rb +23 -15
- data/test/scripts/fluent/plugin/out_test2.rb +80 -0
- data/test/test_clock.rb +164 -0
- data/test/test_config.rb +16 -7
- data/test/test_configdsl.rb +2 -2
- data/test/test_event.rb +360 -13
- data/test/test_event_router.rb +108 -11
- data/test/test_event_time.rb +199 -0
- data/test/test_filter.rb +48 -6
- data/test/test_formatter.rb +11 -391
- data/test/test_input.rb +1 -1
- data/test/test_log.rb +591 -31
- data/test/test_mixin.rb +1 -1
- data/test/test_output.rb +121 -185
- data/test/test_plugin.rb +251 -0
- data/test/test_plugin_classes.rb +177 -10
- data/test/test_plugin_helper.rb +81 -0
- data/test/test_plugin_id.rb +101 -0
- data/test/test_process.rb +8 -42
- data/test/test_root_agent.rb +766 -21
- data/test/test_supervisor.rb +481 -0
- data/test/test_test_drivers.rb +135 -0
- data/test/test_time_formatter.rb +282 -0
- data/test/test_time_parser.rb +231 -0
- data/test/test_unique_id.rb +47 -0
- metadata +454 -60
- data/COPYING +0 -14
- data/ChangeLog +0 -666
- data/lib/fluent/buffer.rb +0 -365
- data/lib/fluent/plugin/in_status.rb +0 -76
- data/test/plugin/test_in_status.rb +0 -38
- data/test/test_buffer.rb +0 -624
- data/test/test_parser.rb +0 -1305
@@ -1,16 +1,19 @@
|
|
1
1
|
require_relative '../helper'
|
2
2
|
require 'timecop'
|
3
|
+
require 'fluent/test/driver/filter'
|
3
4
|
require 'fluent/plugin/filter_record_transformer'
|
5
|
+
require 'flexmock/test_unit'
|
4
6
|
|
5
7
|
class RecordTransformerFilterTest < Test::Unit::TestCase
|
6
8
|
include Fluent
|
9
|
+
include FlexMock::TestCase
|
7
10
|
|
8
11
|
setup do
|
9
12
|
Test.setup
|
10
13
|
@hostname = Socket.gethostname.chomp
|
11
14
|
@tag = 'test.tag'
|
12
15
|
@tag_parts = @tag.split('.')
|
13
|
-
@time =
|
16
|
+
@time = event_time('2010-05-04 03:02:01 UTC')
|
14
17
|
Timecop.freeze(@time)
|
15
18
|
end
|
16
19
|
|
@@ -19,7 +22,7 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
19
22
|
end
|
20
23
|
|
21
24
|
def create_driver(conf = '')
|
22
|
-
Test::
|
25
|
+
Fluent::Test::Driver::Filter.new(Fluent::Plugin::RecordTransformerFilter).configure(conf)
|
23
26
|
end
|
24
27
|
|
25
28
|
sub_test_case 'configure' do
|
@@ -37,13 +40,14 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
37
40
|
end
|
38
41
|
|
39
42
|
sub_test_case "test options" do
|
40
|
-
def
|
43
|
+
def filter(config, msgs = [''])
|
41
44
|
d = create_driver(config)
|
42
45
|
d.run {
|
43
46
|
msgs.each { |msg|
|
44
|
-
d.
|
47
|
+
d.feed(@tag, @time, {'foo' => 'bar', 'message' => msg, 'nest' => {'k1' => 'v1', 'k2' => 'v2'}})
|
45
48
|
}
|
46
|
-
}
|
49
|
+
}
|
50
|
+
d.filtered
|
47
51
|
end
|
48
52
|
|
49
53
|
CONFIG = %[
|
@@ -51,43 +55,52 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
51
55
|
hostname ${hostname}
|
52
56
|
tag ${tag}
|
53
57
|
time ${time}
|
54
|
-
message ${hostname} ${tag_parts[-1]} ${message}
|
58
|
+
message ${hostname} ${tag_parts[-1]} ${record["message"]}
|
55
59
|
</record>
|
56
60
|
]
|
57
61
|
|
58
62
|
test 'typical usage' do
|
59
63
|
msgs = ['1', '2']
|
60
|
-
|
61
|
-
|
64
|
+
filtered = filter(CONFIG, msgs)
|
65
|
+
filtered.each_with_index do |(_t, r), i|
|
62
66
|
assert_equal('bar', r['foo'])
|
63
67
|
assert_equal(@hostname, r['hostname'])
|
64
68
|
assert_equal(@tag, r['tag'])
|
65
|
-
assert_equal(@time.to_s, r['time'])
|
69
|
+
assert_equal(Time.at(@time).localtime.to_s, r['time'])
|
66
70
|
assert_equal("#{@hostname} #{@tag_parts[-1]} #{msgs[i]}", r['message'])
|
71
|
+
assert_equal({'k1' => 'v1', 'k2' => 'v2'}, r['nest'])
|
67
72
|
end
|
68
73
|
end
|
69
74
|
|
70
75
|
test 'remove_keys' do
|
71
76
|
config = CONFIG + %[remove_keys foo,message]
|
72
|
-
|
73
|
-
|
77
|
+
filtered = filter(config)
|
78
|
+
filtered.each_with_index do |(_t, r), i|
|
74
79
|
assert_not_include(r, 'foo')
|
75
80
|
assert_equal(@hostname, r['hostname'])
|
76
81
|
assert_equal(@tag, r['tag'])
|
77
|
-
assert_equal(@time.to_s, r['time'])
|
82
|
+
assert_equal(Time.at(@time).localtime.to_s, r['time'])
|
78
83
|
assert_not_include(r, 'message')
|
79
84
|
end
|
80
85
|
end
|
81
86
|
|
87
|
+
test 'remove_keys with nested key' do
|
88
|
+
config = CONFIG + %[remove_keys $.nest.k1]
|
89
|
+
filtered = filter(config)
|
90
|
+
filtered.each_with_index do |(_t, r), i|
|
91
|
+
assert_not_include(r['nest'], 'k1')
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
82
95
|
test 'renew_record' do
|
83
96
|
config = CONFIG + %[renew_record true]
|
84
97
|
msgs = ['1', '2']
|
85
|
-
|
86
|
-
|
98
|
+
filtered = filter(config, msgs)
|
99
|
+
filtered.each_with_index do |(_t, r), i|
|
87
100
|
assert_not_include(r, 'foo')
|
88
101
|
assert_equal(@hostname, r['hostname'])
|
89
102
|
assert_equal(@tag, r['tag'])
|
90
|
-
assert_equal(@time.to_s, r['time'])
|
103
|
+
assert_equal(Time.at(@time).localtime.to_s, r['time'])
|
91
104
|
assert_equal("#{@hostname} #{@tag_parts[-1]} #{msgs[i]}", r['message'])
|
92
105
|
end
|
93
106
|
end
|
@@ -95,11 +108,12 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
95
108
|
test 'renew_time_key' do
|
96
109
|
config = %[renew_time_key message]
|
97
110
|
times = [ Time.local(2,2,3,4,5,2010,nil,nil,nil,nil), Time.local(3,2,3,4,5,2010,nil,nil,nil,nil) ]
|
98
|
-
msgs = times.map{|t| t.
|
99
|
-
|
100
|
-
|
111
|
+
msgs = times.map{|t| t.to_f.to_s }
|
112
|
+
filtered = filter(config, msgs)
|
113
|
+
filtered.each_with_index do |(time, _record), i|
|
101
114
|
assert_equal(times[i].to_i, time)
|
102
|
-
|
115
|
+
assert(time.is_a?(Fluent::EventTime))
|
116
|
+
assert_true(_record.has_key?('message'))
|
103
117
|
end
|
104
118
|
end
|
105
119
|
|
@@ -114,9 +128,10 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
114
128
|
]
|
115
129
|
times = [Time.local(2, 2, 3, 4, 5, 2010, nil, nil, nil, nil), Time.local(3, 2, 3, 4, 5, 2010, nil, nil, nil, nil)]
|
116
130
|
msgs = times.map { |t| t.to_f.to_s }
|
117
|
-
filtered =
|
131
|
+
filtered = filter(config, msgs)
|
118
132
|
filtered.each_with_index do |(time, _record), i|
|
119
133
|
assert_equal(times[i].to_i, time)
|
134
|
+
assert(time.is_a?(Fluent::EventTime))
|
120
135
|
assert_false(_record.has_key?('event_time_key'))
|
121
136
|
end
|
122
137
|
end
|
@@ -124,8 +139,8 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
124
139
|
test 'keep_keys' do
|
125
140
|
config = %[renew_record true\nkeep_keys foo,message]
|
126
141
|
msgs = ['1', '2']
|
127
|
-
|
128
|
-
|
142
|
+
filtered = filter(config, msgs)
|
143
|
+
filtered.each_with_index do |(_t, r), i|
|
129
144
|
assert_equal('bar', r['foo'])
|
130
145
|
assert_equal(msgs[i], r['message'])
|
131
146
|
end
|
@@ -134,8 +149,8 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
134
149
|
test 'keep_keys that are not present in the original record should not be included in the result record' do
|
135
150
|
config = %[renew_record true\nkeep_keys foo, bar, baz, message]
|
136
151
|
msgs = ['1', '2', nil]
|
137
|
-
|
138
|
-
|
152
|
+
filtered = filter(config, msgs)
|
153
|
+
filtered.each_with_index do |(_t, r), i|
|
139
154
|
assert_equal('bar', r['foo'])
|
140
155
|
assert_equal(msgs[i], r['message'])
|
141
156
|
assert_equal(false, r.has_key?('bar'))
|
@@ -147,13 +162,13 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
147
162
|
config = %[
|
148
163
|
enable_ruby yes
|
149
164
|
<record>
|
150
|
-
message ${hostname} ${tag_parts.last} ${
|
165
|
+
message ${hostname} ${tag_parts.last} ${"'" + record["message"] + "'"}
|
151
166
|
</record>
|
152
167
|
]
|
153
168
|
msgs = ['1', '2']
|
154
|
-
|
155
|
-
|
156
|
-
assert_equal("#{@hostname} #{@tag_parts[-1]} #{msgs[i]}", r['message'])
|
169
|
+
filtered = filter(config, msgs)
|
170
|
+
filtered.each_with_index do |(_t, r), i|
|
171
|
+
assert_equal("#{@hostname} #{@tag_parts[-1]} '#{msgs[i]}'", r['message'])
|
157
172
|
end
|
158
173
|
end
|
159
174
|
|
@@ -164,8 +179,8 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
164
179
|
</record>
|
165
180
|
%]
|
166
181
|
msgs = ['1', '2']
|
167
|
-
|
168
|
-
|
182
|
+
filtered = filter(config, msgs)
|
183
|
+
filtered.each_with_index do |(_t, r), i|
|
169
184
|
assert_equal({"k1"=>100, "k2"=>"foobar"}, r['hash_field'])
|
170
185
|
end
|
171
186
|
end
|
@@ -177,8 +192,8 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
177
192
|
</record>
|
178
193
|
%]
|
179
194
|
msgs = ['1', '2']
|
180
|
-
|
181
|
-
|
195
|
+
filtered = filter(config, msgs)
|
196
|
+
filtered.each_with_index do |(_t, r), i|
|
182
197
|
assert_equal([1,2,3], r['array_field'])
|
183
198
|
end
|
184
199
|
end
|
@@ -190,36 +205,39 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
190
205
|
</record>
|
191
206
|
%]
|
192
207
|
msgs = ['1', '2']
|
193
|
-
|
194
|
-
|
208
|
+
filtered = filter(config, msgs)
|
209
|
+
filtered.each_with_index do |(_t, r), i|
|
195
210
|
assert_equal({"hello"=>[1,2,3], "world"=>{"foo"=>"bar"}}, r['mixed_field'])
|
196
211
|
end
|
197
212
|
end
|
198
213
|
end
|
199
214
|
|
200
215
|
sub_test_case 'test placeholders' do
|
201
|
-
def
|
216
|
+
def filter(config, msgs = [''])
|
202
217
|
d = create_driver(config)
|
203
218
|
yield d if block_given?
|
204
219
|
d.run {
|
205
|
-
msgs.
|
206
|
-
|
207
|
-
|
208
|
-
d.emit(record, @time)
|
220
|
+
records = msgs.map do |msg|
|
221
|
+
next msg if msg.is_a?(Hash)
|
222
|
+
{ 'eventType0' => 'bar', 'message' => msg }
|
209
223
|
end
|
210
|
-
|
224
|
+
records.each do |record|
|
225
|
+
d.feed(@tag, @time, record)
|
226
|
+
end
|
227
|
+
}
|
228
|
+
d.filtered
|
211
229
|
end
|
212
230
|
|
213
231
|
%w[yes no].each do |enable_ruby|
|
214
|
-
test "hostname with
|
232
|
+
test "hostname with enable_ruby #{enable_ruby}" do
|
215
233
|
config = %[
|
216
234
|
enable_ruby #{enable_ruby}
|
217
235
|
<record>
|
218
236
|
message ${hostname}
|
219
237
|
</record>
|
220
238
|
]
|
221
|
-
|
222
|
-
|
239
|
+
filtered = filter(config)
|
240
|
+
filtered.each do |t, r|
|
223
241
|
assert_equal(@hostname, r['message'])
|
224
242
|
end
|
225
243
|
end
|
@@ -231,8 +249,8 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
231
249
|
message ${tag}
|
232
250
|
</record>
|
233
251
|
]
|
234
|
-
|
235
|
-
|
252
|
+
filtered = filter(config)
|
253
|
+
filtered.each do |t, r|
|
236
254
|
assert_equal(@tag, r['message'])
|
237
255
|
end
|
238
256
|
end
|
@@ -245,8 +263,8 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
245
263
|
</record>
|
246
264
|
]
|
247
265
|
expected = "#{@tag.split('.').first} #{@tag.split('.').last}"
|
248
|
-
|
249
|
-
|
266
|
+
filtered = filter(config)
|
267
|
+
filtered.each do |t, r|
|
250
268
|
assert_equal(expected, r['message'])
|
251
269
|
end
|
252
270
|
end
|
@@ -260,8 +278,8 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
260
278
|
]
|
261
279
|
@tag = 'prefix.test.tag.suffix'
|
262
280
|
expected = "prefix.test prefix.test.tag tag.suffix test.tag.suffix"
|
263
|
-
|
264
|
-
|
281
|
+
filtered = filter(config)
|
282
|
+
filtered.each do |t, r|
|
265
283
|
assert_equal(expected, r['message'])
|
266
284
|
end
|
267
285
|
end
|
@@ -273,9 +291,13 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
273
291
|
message ${time}
|
274
292
|
</record>
|
275
293
|
]
|
276
|
-
|
277
|
-
|
278
|
-
|
294
|
+
filtered = filter(config)
|
295
|
+
filtered.each do |t, r|
|
296
|
+
if enable_ruby == "yes"
|
297
|
+
assert_equal(Time.at(@time).localtime, r['message'])
|
298
|
+
else
|
299
|
+
assert_equal(Time.at(@time).localtime.to_s, r['message'])
|
300
|
+
end
|
279
301
|
end
|
280
302
|
end
|
281
303
|
|
@@ -284,13 +306,13 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
284
306
|
enable_ruby #{enable_ruby}
|
285
307
|
remove_keys eventType0
|
286
308
|
<record>
|
287
|
-
message bar ${message}
|
288
|
-
eventtype ${eventType0}
|
309
|
+
message bar ${record["message"]}
|
310
|
+
eventtype ${record["eventType0"]}
|
289
311
|
</record>
|
290
312
|
]
|
291
313
|
msgs = ['1', '2']
|
292
|
-
|
293
|
-
|
314
|
+
filtered = filter(config, msgs)
|
315
|
+
filtered.each_with_index do |(_t, r), i|
|
294
316
|
assert_not_include(r, 'eventType0')
|
295
317
|
assert_equal("bar", r['eventtype'])
|
296
318
|
assert_equal("bar #{msgs[i]}", r['message'])
|
@@ -306,7 +328,7 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
306
328
|
</record>
|
307
329
|
]
|
308
330
|
records = [{'tag' => 'tag', 'time' => 'time'}]
|
309
|
-
filtered =
|
331
|
+
filtered = filter(config, records)
|
310
332
|
filtered.each_with_index do |(_t, r), i|
|
311
333
|
assert_not_equal('tag', r['new_tag'])
|
312
334
|
assert_equal(@tag, r['new_tag'])
|
@@ -326,8 +348,8 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
326
348
|
</record>
|
327
349
|
]
|
328
350
|
msgs = ['1', '2']
|
329
|
-
|
330
|
-
|
351
|
+
filtered = filter(config, msgs)
|
352
|
+
filtered.each_with_index do |(_t, r), i|
|
331
353
|
assert_equal({"hostname" => @hostname, "tag" => @tag, "#{@tag}" => 100}, r['hash_field'])
|
332
354
|
end
|
333
355
|
end
|
@@ -340,8 +362,8 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
340
362
|
</record>
|
341
363
|
]
|
342
364
|
msgs = ['1', '2']
|
343
|
-
|
344
|
-
|
365
|
+
filtered = filter(config, msgs)
|
366
|
+
filtered.each_with_index do |(_t, r), i|
|
345
367
|
assert_equal([@hostname, @tag], r['array_field'])
|
346
368
|
end
|
347
369
|
end
|
@@ -354,8 +376,8 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
354
376
|
</record>
|
355
377
|
]
|
356
378
|
msgs = ['1', '2']
|
357
|
-
|
358
|
-
|
379
|
+
filtered = filter(config, msgs)
|
380
|
+
filtered.each_with_index do |(_t, r), i|
|
359
381
|
assert_equal([{"tag" => @tag}], r['mixed_field'])
|
360
382
|
end
|
361
383
|
end
|
@@ -370,8 +392,8 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
370
392
|
</record>
|
371
393
|
]
|
372
394
|
msgs = ['1', '2']
|
373
|
-
|
374
|
-
|
395
|
+
filtered = filter(config, msgs)
|
396
|
+
filtered.each_with_index do |(_t, r), i|
|
375
397
|
assert_equal({@hostname=>'hostname',"foo.#{@tag}"=>'tag'}, r)
|
376
398
|
end
|
377
399
|
end
|
@@ -381,11 +403,11 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
381
403
|
auto_typecast false
|
382
404
|
enable_ruby #{enable_ruby}
|
383
405
|
<record>
|
384
|
-
single ${source}
|
385
|
-
multiple ${source}${source}
|
386
|
-
with_prefix prefix-${source}
|
387
|
-
with_suffix ${source}-suffix
|
388
|
-
with_quote source[""]
|
406
|
+
single ${record["source"]}
|
407
|
+
multiple ${record["source"]}${record["source"]}
|
408
|
+
with_prefix prefix-${record["source"]}
|
409
|
+
with_suffix ${record["source"]}-suffix
|
410
|
+
with_quote record["source"][""]
|
389
411
|
</record>
|
390
412
|
]
|
391
413
|
msgs = [
|
@@ -400,31 +422,31 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
400
422
|
multiple: "stringstring",
|
401
423
|
with_prefix: "prefix-string",
|
402
424
|
with_suffix: "string-suffix",
|
403
|
-
with_quote: %Q{source[""]} },
|
425
|
+
with_quote: %Q{record["source"][""]} },
|
404
426
|
{ single: 123.to_s,
|
405
427
|
multiple: "#{123.to_s}#{123.to_s}",
|
406
428
|
with_prefix: "prefix-#{123.to_s}",
|
407
429
|
with_suffix: "#{123.to_s}-suffix",
|
408
|
-
with_quote: %Q{source[""]} },
|
430
|
+
with_quote: %Q{record["source"][""]} },
|
409
431
|
{ single: [1, 2].to_s,
|
410
432
|
multiple: "#{[1, 2].to_s}#{[1, 2].to_s}",
|
411
433
|
with_prefix: "prefix-#{[1, 2].to_s}",
|
412
434
|
with_suffix: "#{[1, 2].to_s}-suffix",
|
413
|
-
with_quote: %Q{source[""]} },
|
435
|
+
with_quote: %Q{record["source"][""]} },
|
414
436
|
{ single: {a:1, b:2}.to_s,
|
415
437
|
multiple: "#{{a:1, b:2}.to_s}#{{a:1, b:2}.to_s}",
|
416
438
|
with_prefix: "prefix-#{{a:1, b:2}.to_s}",
|
417
439
|
with_suffix: "#{{a:1, b:2}.to_s}-suffix",
|
418
|
-
with_quote: %Q{source[""]} },
|
440
|
+
with_quote: %Q{record["source"][""]} },
|
419
441
|
{ single: nil.to_s,
|
420
442
|
multiple: "#{nil.to_s}#{nil.to_s}",
|
421
443
|
with_prefix: "prefix-#{nil.to_s}",
|
422
444
|
with_suffix: "#{nil.to_s}-suffix",
|
423
|
-
with_quote: %Q{source[""]} },
|
445
|
+
with_quote: %Q{record["source"][""]} },
|
424
446
|
]
|
425
447
|
actual_results = []
|
426
|
-
|
427
|
-
|
448
|
+
filtered = filter(config, msgs)
|
449
|
+
filtered.each_with_index do |(_t, r), i|
|
428
450
|
actual_results << {
|
429
451
|
single: r["single"],
|
430
452
|
multiple: r["multiple"],
|
@@ -441,10 +463,10 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
441
463
|
auto_typecast yes
|
442
464
|
enable_ruby #{enable_ruby}
|
443
465
|
<record>
|
444
|
-
single ${source}
|
445
|
-
multiple ${source}${source}
|
446
|
-
with_prefix prefix-${source}
|
447
|
-
with_suffix ${source}-suffix
|
466
|
+
single ${record["source"]}
|
467
|
+
multiple ${record["source"]}${record["source"]}
|
468
|
+
with_prefix prefix-${record["source"]}
|
469
|
+
with_suffix ${record["source"]}-suffix
|
448
470
|
</record>
|
449
471
|
]
|
450
472
|
msgs = [
|
@@ -477,8 +499,8 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
477
499
|
with_suffix: "#{nil.to_s}-suffix" },
|
478
500
|
]
|
479
501
|
actual_results = []
|
480
|
-
|
481
|
-
|
502
|
+
filtered = filter(config, msgs)
|
503
|
+
filtered.each_with_index do |(_t, r), i|
|
482
504
|
actual_results << {
|
483
505
|
single: r["single"],
|
484
506
|
multiple: r["multiple"],
|
@@ -488,27 +510,6 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
488
510
|
end
|
489
511
|
assert_equal(expected_results, actual_results)
|
490
512
|
end
|
491
|
-
|
492
|
-
test %Q[record["key"] with enable_ruby #{enable_ruby}] do
|
493
|
-
config = %[
|
494
|
-
enable_ruby #{enable_ruby}
|
495
|
-
auto_typecast yes
|
496
|
-
<record>
|
497
|
-
_timestamp ${record["@timestamp"]}
|
498
|
-
_foo_bar ${record["foo.bar"]}
|
499
|
-
</record>
|
500
|
-
]
|
501
|
-
d = create_driver(config)
|
502
|
-
record = {
|
503
|
-
"foo.bar" => "foo.bar",
|
504
|
-
"@timestamp" => 10,
|
505
|
-
}
|
506
|
-
es = d.run { d.emit(record, @time) }.filtered
|
507
|
-
es.each do |t, r|
|
508
|
-
assert { r['_timestamp'] == record['@timestamp'] }
|
509
|
-
assert { r['_foo_bar'] == record['foo.bar'] }
|
510
|
-
end
|
511
|
-
end
|
512
513
|
end
|
513
514
|
|
514
515
|
test 'unknown placeholder (enable_ruby no)' do
|
@@ -518,37 +519,23 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
518
519
|
message ${unknown}
|
519
520
|
</record>
|
520
521
|
]
|
521
|
-
|
522
|
+
filter(config) { |d|
|
522
523
|
mock(d.instance.log).warn("unknown placeholder `${unknown}` found")
|
523
524
|
}
|
524
525
|
end
|
525
526
|
|
526
|
-
test 'failed to expand (enable_ruby yes)' do
|
527
|
-
config = %[
|
528
|
-
enable_ruby yes
|
529
|
-
<record>
|
530
|
-
message ${unknown['bar']}
|
531
|
-
</record>
|
532
|
-
]
|
533
|
-
es = emit(config) { |d|
|
534
|
-
mock(d.instance.log).warn("failed to expand `%Q[\#{unknown['bar']}]`", anything)
|
535
|
-
}
|
536
|
-
es.each do |t, r|
|
537
|
-
assert_nil(r['message'])
|
538
|
-
end
|
539
|
-
end
|
540
|
-
|
541
527
|
test 'expand fields starting with @ (enable_ruby no)' do
|
542
528
|
config = %[
|
543
529
|
enable_ruby no
|
544
530
|
<record>
|
545
|
-
foo ${@timestamp}
|
531
|
+
foo ${record["@timestamp"]}
|
546
532
|
</record>
|
547
533
|
]
|
548
534
|
d = create_driver(config)
|
549
535
|
message = {"@timestamp" => "foo"}
|
550
|
-
|
551
|
-
|
536
|
+
d.run { d.feed(@tag, @time, message) }
|
537
|
+
filtered = d.filtered
|
538
|
+
filtered.each do |t, r|
|
552
539
|
assert_equal(message["@timestamp"], r['foo'])
|
553
540
|
end
|
554
541
|
end
|
@@ -564,57 +551,27 @@ class RecordTransformerFilterTest < Test::Unit::TestCase
|
|
564
551
|
]
|
565
552
|
d = create_driver(config)
|
566
553
|
message = {"@timestamp" => "foo"}
|
567
|
-
|
568
|
-
|
554
|
+
d.run { d.feed(@tag, @time, message) }
|
555
|
+
filtered = d.filtered
|
556
|
+
filtered.each do |t, r|
|
569
557
|
assert_equal([message["@timestamp"]], r['foo'])
|
570
558
|
end
|
571
559
|
end
|
560
|
+
end # test placeholders
|
572
561
|
|
573
|
-
|
574
|
-
|
562
|
+
sub_test_case 'test error record' do
|
563
|
+
test 'invalid record for placeholders' do
|
564
|
+
d = create_driver(%[
|
575
565
|
enable_ruby yes
|
576
566
|
<record>
|
577
|
-
foo ${
|
567
|
+
foo ${record["unknown"]["key"]}
|
578
568
|
</record>
|
579
|
-
]
|
580
|
-
d
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
assert_equal(message["@timestamp"], r['foo'])
|
569
|
+
])
|
570
|
+
flexmock(d.instance.router).should_receive(:emit_error_event).
|
571
|
+
with(String, Fluent::EventTime, Hash, RuntimeError).once
|
572
|
+
d.run do
|
573
|
+
d.feed(@tag, Fluent::EventTime.now, {'key' => 'value'})
|
585
574
|
end
|
586
575
|
end
|
587
|
-
end # test placeholders
|
588
|
-
|
589
|
-
test "compatibility test (enable_ruby yes)" do
|
590
|
-
config = %[
|
591
|
-
enable_ruby yes
|
592
|
-
auto_typecast yes
|
593
|
-
<record>
|
594
|
-
_message prefix-${message}-suffix
|
595
|
-
_time ${Time.at(time)}
|
596
|
-
_number ${number == '-' ? 0 : number}
|
597
|
-
_match ${/0x[0-9a-f]+/.match(hex)[0]}
|
598
|
-
_timestamp ${__send__("@timestamp")}
|
599
|
-
_foo_bar ${__send__('foo.bar')}
|
600
|
-
</record>
|
601
|
-
]
|
602
|
-
d = create_driver(config)
|
603
|
-
record = {
|
604
|
-
"number" => "-",
|
605
|
-
"hex" => "0x10",
|
606
|
-
"foo.bar" => "foo.bar",
|
607
|
-
"@timestamp" => 10,
|
608
|
-
"message" => "10",
|
609
|
-
}
|
610
|
-
es = d.run { d.emit(record, @time) }.filtered
|
611
|
-
es.each do |t, r|
|
612
|
-
assert { r['_message'] == "prefix-#{record['message']}-suffix" }
|
613
|
-
assert { r['_time'] == Time.at(@time) }
|
614
|
-
assert { r['_number'] == 0 }
|
615
|
-
assert { r['_match'] == record['hex'] }
|
616
|
-
assert { r['_timestamp'] == record['@timestamp'] }
|
617
|
-
assert { r['_foo_bar'] == record['foo.bar'] }
|
618
|
-
end
|
619
576
|
end
|
620
577
|
end
|