fluentd 1.14.4-x64-mingw-ucrt
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 +7 -0
- data/.deepsource.toml +13 -0
- data/.drone.yml +35 -0
- data/.github/ISSUE_TEMPLATE/bug_report.yaml +70 -0
- data/.github/ISSUE_TEMPLATE/config.yml +5 -0
- data/.github/ISSUE_TEMPLATE/feature_request.yaml +38 -0
- data/.github/ISSUE_TEMPLATE.md +17 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +14 -0
- data/.github/workflows/issue-auto-closer.yml +12 -0
- data/.github/workflows/linux-test.yaml +36 -0
- data/.github/workflows/macos-test.yaml +30 -0
- data/.github/workflows/stale-actions.yml +22 -0
- data/.github/workflows/windows-test.yaml +46 -0
- data/.gitignore +30 -0
- data/.gitlab-ci.yml +103 -0
- data/ADOPTERS.md +5 -0
- data/AUTHORS +2 -0
- data/CHANGELOG.md +2409 -0
- data/CONTRIBUTING.md +45 -0
- data/GOVERNANCE.md +55 -0
- data/Gemfile +9 -0
- data/GithubWorkflow.md +78 -0
- data/LICENSE +202 -0
- data/MAINTAINERS.md +11 -0
- data/README.md +97 -0
- data/Rakefile +79 -0
- data/SECURITY.md +18 -0
- data/bin/fluent-binlog-reader +7 -0
- data/bin/fluent-ca-generate +6 -0
- data/bin/fluent-cap-ctl +7 -0
- data/bin/fluent-cat +5 -0
- data/bin/fluent-ctl +7 -0
- data/bin/fluent-debug +5 -0
- data/bin/fluent-gem +9 -0
- data/bin/fluent-plugin-config-format +5 -0
- data/bin/fluent-plugin-generate +5 -0
- data/bin/fluentd +15 -0
- data/code-of-conduct.md +3 -0
- data/docs/SECURITY_AUDIT.pdf +0 -0
- data/example/copy_roundrobin.conf +39 -0
- data/example/counter.conf +18 -0
- data/example/filter_stdout.conf +22 -0
- data/example/in_forward.conf +14 -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 +16 -0
- data/example/in_out_forward.conf +17 -0
- data/example/in_sample_blocks.conf +17 -0
- data/example/in_sample_with_compression.conf +23 -0
- data/example/in_syslog.conf +15 -0
- data/example/in_tail.conf +14 -0
- data/example/in_tcp.conf +13 -0
- data/example/in_udp.conf +13 -0
- data/example/logevents.conf +25 -0
- data/example/multi_filters.conf +61 -0
- data/example/out_copy.conf +20 -0
- data/example/out_exec_filter.conf +42 -0
- data/example/out_file.conf +13 -0
- data/example/out_forward.conf +35 -0
- 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_sd.conf +17 -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/sd.yaml +8 -0
- data/example/secondary_file.conf +42 -0
- data/example/suppress_config_dump.conf +7 -0
- data/example/v0_12_filter.conf +78 -0
- data/example/v1_literal_example.conf +36 -0
- data/example/worker_section.conf +36 -0
- data/fluent.conf +139 -0
- data/fluentd.gemspec +55 -0
- data/lib/fluent/agent.rb +168 -0
- data/lib/fluent/capability.rb +87 -0
- data/lib/fluent/clock.rb +66 -0
- data/lib/fluent/command/binlog_reader.rb +244 -0
- data/lib/fluent/command/bundler_injection.rb +45 -0
- data/lib/fluent/command/ca_generate.rb +184 -0
- data/lib/fluent/command/cap_ctl.rb +174 -0
- data/lib/fluent/command/cat.rb +365 -0
- data/lib/fluent/command/ctl.rb +177 -0
- data/lib/fluent/command/debug.rb +103 -0
- data/lib/fluent/command/fluentd.rb +374 -0
- data/lib/fluent/command/plugin_config_formatter.rb +308 -0
- data/lib/fluent/command/plugin_generator.rb +365 -0
- data/lib/fluent/compat/call_super_mixin.rb +76 -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 +721 -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/basic_parser.rb +123 -0
- data/lib/fluent/config/configure_proxy.rb +424 -0
- data/lib/fluent/config/dsl.rb +152 -0
- data/lib/fluent/config/element.rb +265 -0
- data/lib/fluent/config/error.rb +32 -0
- data/lib/fluent/config/literal_parser.rb +286 -0
- data/lib/fluent/config/parser.rb +107 -0
- data/lib/fluent/config/section.rb +272 -0
- data/lib/fluent/config/types.rb +249 -0
- data/lib/fluent/config/v1_parser.rb +192 -0
- data/lib/fluent/config.rb +76 -0
- data/lib/fluent/configurable.rb +201 -0
- data/lib/fluent/counter/base_socket.rb +44 -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/daemonizer.rb +88 -0
- data/lib/fluent/engine.rb +253 -0
- data/lib/fluent/env.rb +40 -0
- data/lib/fluent/error.rb +34 -0
- data/lib/fluent/event.rb +326 -0
- data/lib/fluent/event_router.rb +297 -0
- data/lib/fluent/ext_monitor_require.rb +28 -0
- data/lib/fluent/filter.rb +21 -0
- data/lib/fluent/fluent_log_event_router.rb +141 -0
- data/lib/fluent/formatter.rb +23 -0
- data/lib/fluent/input.rb +21 -0
- data/lib/fluent/label.rb +46 -0
- data/lib/fluent/load.rb +34 -0
- data/lib/fluent/log.rb +713 -0
- data/lib/fluent/match.rb +187 -0
- data/lib/fluent/mixin.rb +31 -0
- data/lib/fluent/msgpack_factory.rb +106 -0
- data/lib/fluent/oj_options.rb +62 -0
- data/lib/fluent/output.rb +29 -0
- data/lib/fluent/output_chain.rb +23 -0
- data/lib/fluent/parser.rb +23 -0
- data/lib/fluent/plugin/bare_output.rb +104 -0
- data/lib/fluent/plugin/base.rb +197 -0
- data/lib/fluent/plugin/buf_file.rb +213 -0
- data/lib/fluent/plugin/buf_file_single.rb +225 -0
- data/lib/fluent/plugin/buf_memory.rb +34 -0
- data/lib/fluent/plugin/buffer/chunk.rb +240 -0
- data/lib/fluent/plugin/buffer/file_chunk.rb +413 -0
- data/lib/fluent/plugin/buffer/file_single_chunk.rb +311 -0
- data/lib/fluent/plugin/buffer/memory_chunk.rb +91 -0
- data/lib/fluent/plugin/buffer.rb +918 -0
- data/lib/fluent/plugin/compressable.rb +96 -0
- data/lib/fluent/plugin/exec_util.rb +22 -0
- data/lib/fluent/plugin/file_util.rb +22 -0
- data/lib/fluent/plugin/file_wrapper.rb +187 -0
- data/lib/fluent/plugin/filter.rb +127 -0
- data/lib/fluent/plugin/filter_grep.rb +189 -0
- data/lib/fluent/plugin/filter_parser.rb +130 -0
- data/lib/fluent/plugin/filter_record_transformer.rb +324 -0
- data/lib/fluent/plugin/filter_stdout.rb +53 -0
- data/lib/fluent/plugin/formatter.rb +75 -0
- data/lib/fluent/plugin/formatter_csv.rb +78 -0
- data/lib/fluent/plugin/formatter_hash.rb +35 -0
- data/lib/fluent/plugin/formatter_json.rb +59 -0
- data/lib/fluent/plugin/formatter_ltsv.rb +44 -0
- data/lib/fluent/plugin/formatter_msgpack.rb +33 -0
- data/lib/fluent/plugin/formatter_out_file.rb +53 -0
- data/lib/fluent/plugin/formatter_single_value.rb +36 -0
- data/lib/fluent/plugin/formatter_stdout.rb +76 -0
- data/lib/fluent/plugin/formatter_tsv.rb +40 -0
- data/lib/fluent/plugin/in_debug_agent.rb +71 -0
- data/lib/fluent/plugin/in_dummy.rb +18 -0
- data/lib/fluent/plugin/in_exec.rb +110 -0
- data/lib/fluent/plugin/in_forward.rb +473 -0
- data/lib/fluent/plugin/in_gc_stat.rb +72 -0
- data/lib/fluent/plugin/in_http.rb +667 -0
- data/lib/fluent/plugin/in_monitor_agent.rb +412 -0
- data/lib/fluent/plugin/in_object_space.rb +93 -0
- data/lib/fluent/plugin/in_sample.rb +141 -0
- data/lib/fluent/plugin/in_syslog.rb +276 -0
- data/lib/fluent/plugin/in_tail/position_file.rb +269 -0
- data/lib/fluent/plugin/in_tail.rb +1228 -0
- data/lib/fluent/plugin/in_tcp.rb +181 -0
- data/lib/fluent/plugin/in_udp.rb +92 -0
- data/lib/fluent/plugin/in_unix.rb +195 -0
- data/lib/fluent/plugin/input.rb +75 -0
- data/lib/fluent/plugin/metrics.rb +119 -0
- data/lib/fluent/plugin/metrics_local.rb +96 -0
- data/lib/fluent/plugin/multi_output.rb +195 -0
- data/lib/fluent/plugin/out_copy.rb +120 -0
- data/lib/fluent/plugin/out_exec.rb +105 -0
- data/lib/fluent/plugin/out_exec_filter.rb +319 -0
- data/lib/fluent/plugin/out_file.rb +334 -0
- data/lib/fluent/plugin/out_forward/ack_handler.rb +161 -0
- data/lib/fluent/plugin/out_forward/connection_manager.rb +113 -0
- data/lib/fluent/plugin/out_forward/error.rb +28 -0
- data/lib/fluent/plugin/out_forward/failure_detector.rb +84 -0
- data/lib/fluent/plugin/out_forward/handshake_protocol.rb +125 -0
- data/lib/fluent/plugin/out_forward/load_balancer.rb +114 -0
- data/lib/fluent/plugin/out_forward/socket_cache.rb +140 -0
- data/lib/fluent/plugin/out_forward.rb +826 -0
- data/lib/fluent/plugin/out_http.rb +275 -0
- data/lib/fluent/plugin/out_null.rb +74 -0
- data/lib/fluent/plugin/out_relabel.rb +32 -0
- data/lib/fluent/plugin/out_roundrobin.rb +84 -0
- data/lib/fluent/plugin/out_secondary_file.rb +131 -0
- data/lib/fluent/plugin/out_stdout.rb +74 -0
- data/lib/fluent/plugin/out_stream.rb +130 -0
- data/lib/fluent/plugin/output.rb +1556 -0
- data/lib/fluent/plugin/owned_by_mixin.rb +42 -0
- data/lib/fluent/plugin/parser.rb +275 -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 +114 -0
- data/lib/fluent/plugin/parser_json.rb +96 -0
- data/lib/fluent/plugin/parser_ltsv.rb +51 -0
- data/lib/fluent/plugin/parser_msgpack.rb +50 -0
- data/lib/fluent/plugin/parser_multiline.rb +152 -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 +496 -0
- data/lib/fluent/plugin/parser_tsv.rb +42 -0
- data/lib/fluent/plugin/sd_file.rb +156 -0
- data/lib/fluent/plugin/sd_srv.rb +135 -0
- data/lib/fluent/plugin/sd_static.rb +58 -0
- data/lib/fluent/plugin/service_discovery.rb +65 -0
- data/lib/fluent/plugin/socket_util.rb +22 -0
- data/lib/fluent/plugin/storage.rb +84 -0
- data/lib/fluent/plugin/storage_local.rb +162 -0
- data/lib/fluent/plugin/string_util.rb +22 -0
- data/lib/fluent/plugin.rb +206 -0
- data/lib/fluent/plugin_helper/cert_option.rb +191 -0
- data/lib/fluent/plugin_helper/child_process.rb +366 -0
- data/lib/fluent/plugin_helper/compat_parameters.rb +343 -0
- data/lib/fluent/plugin_helper/counter.rb +51 -0
- data/lib/fluent/plugin_helper/event_emitter.rb +100 -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 +92 -0
- data/lib/fluent/plugin_helper/http_server/compat/ssl_context_extractor.rb +52 -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 +93 -0
- data/lib/fluent/plugin_helper/http_server/ssl_context_builder.rb +41 -0
- data/lib/fluent/plugin_helper/http_server.rb +135 -0
- data/lib/fluent/plugin_helper/inject.rb +154 -0
- data/lib/fluent/plugin_helper/metrics.rb +129 -0
- data/lib/fluent/plugin_helper/parser.rb +147 -0
- data/lib/fluent/plugin_helper/record_accessor.rb +207 -0
- data/lib/fluent/plugin_helper/retry_state.rb +209 -0
- data/lib/fluent/plugin_helper/server.rb +801 -0
- data/lib/fluent/plugin_helper/service_discovery/manager.rb +146 -0
- data/lib/fluent/plugin_helper/service_discovery/round_robin_balancer.rb +43 -0
- data/lib/fluent/plugin_helper/service_discovery.rb +125 -0
- data/lib/fluent/plugin_helper/socket.rb +277 -0
- data/lib/fluent/plugin_helper/socket_option.rb +98 -0
- data/lib/fluent/plugin_helper/storage.rb +349 -0
- data/lib/fluent/plugin_helper/thread.rb +180 -0
- data/lib/fluent/plugin_helper/timer.rb +92 -0
- data/lib/fluent/plugin_helper.rb +75 -0
- data/lib/fluent/plugin_id.rb +93 -0
- data/lib/fluent/process.rb +22 -0
- data/lib/fluent/registry.rb +116 -0
- data/lib/fluent/root_agent.rb +372 -0
- data/lib/fluent/rpc.rb +94 -0
- data/lib/fluent/static_config_analysis.rb +194 -0
- data/lib/fluent/supervisor.rb +1054 -0
- data/lib/fluent/system_config.rb +187 -0
- data/lib/fluent/test/base.rb +78 -0
- data/lib/fluent/test/driver/base.rb +225 -0
- data/lib/fluent/test/driver/base_owned.rb +83 -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/storage.rb +30 -0
- data/lib/fluent/test/driver/test_event_router.rb +45 -0
- data/lib/fluent/test/filter_test.rb +77 -0
- data/lib/fluent/test/formatter_test.rb +65 -0
- data/lib/fluent/test/helpers.rb +134 -0
- data/lib/fluent/test/input_test.rb +174 -0
- data/lib/fluent/test/log.rb +79 -0
- data/lib/fluent/test/output_test.rb +156 -0
- data/lib/fluent/test/parser_test.rb +70 -0
- data/lib/fluent/test/startup_shutdown.rb +46 -0
- data/lib/fluent/test.rb +58 -0
- data/lib/fluent/time.rb +512 -0
- data/lib/fluent/timezone.rb +171 -0
- data/lib/fluent/tls.rb +81 -0
- data/lib/fluent/unique_id.rb +39 -0
- data/lib/fluent/variable_store.rb +40 -0
- data/lib/fluent/version.rb +21 -0
- data/lib/fluent/winsvc.rb +103 -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/lib/fluent/plugin/storage.rb.erb +40 -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/new_gem/test/plugin/test_storage.rb.erb +18 -0
- data/templates/plugin_config_formatter/param.md-compact.erb +25 -0
- data/templates/plugin_config_formatter/param.md-table.erb +10 -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 +362 -0
- data/test/command/test_ca_generate.rb +70 -0
- data/test/command/test_cap_ctl.rb +100 -0
- data/test/command/test_cat.rb +128 -0
- data/test/command/test_ctl.rb +57 -0
- data/test/command/test_fluentd.rb +1106 -0
- data/test/command/test_plugin_config_formatter.rb +398 -0
- data/test/command/test_plugin_generator.rb +109 -0
- data/test/compat/test_calls_super.rb +166 -0
- data/test/compat/test_parser.rb +92 -0
- data/test/config/assertions.rb +42 -0
- data/test/config/test_config_parser.rb +551 -0
- data/test/config/test_configurable.rb +1784 -0
- data/test/config/test_configure_proxy.rb +604 -0
- data/test/config/test_dsl.rb +415 -0
- data/test/config/test_element.rb +518 -0
- data/test/config/test_literal_parser.rb +309 -0
- data/test/config/test_plugin_configuration.rb +56 -0
- data/test/config/test_section.rb +191 -0
- data/test/config/test_system_config.rb +199 -0
- data/test/config/test_types.rb +408 -0
- data/test/counter/test_client.rb +563 -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 +155 -0
- data/test/helpers/fuzzy_assert.rb +89 -0
- data/test/helpers/process_extenstion.rb +33 -0
- 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/sd_file/config +11 -0
- data/test/plugin/data/sd_file/config.json +17 -0
- data/test/plugin/data/sd_file/config.yaml +11 -0
- data/test/plugin/data/sd_file/config.yml +11 -0
- data/test/plugin/data/sd_file/invalid_config.yml +7 -0
- data/test/plugin/in_tail/test_fifo.rb +121 -0
- data/test/plugin/in_tail/test_io_handler.rb +140 -0
- data/test/plugin/in_tail/test_position_file.rb +379 -0
- data/test/plugin/out_forward/test_ack_handler.rb +101 -0
- data/test/plugin/out_forward/test_connection_manager.rb +145 -0
- data/test/plugin/out_forward/test_handshake_protocol.rb +112 -0
- data/test/plugin/out_forward/test_load_balancer.rb +106 -0
- data/test/plugin/out_forward/test_socket_cache.rb +149 -0
- data/test/plugin/test_bare_output.rb +131 -0
- data/test/plugin/test_base.rb +115 -0
- data/test/plugin/test_buf_file.rb +1275 -0
- data/test/plugin/test_buf_file_single.rb +833 -0
- data/test/plugin/test_buf_memory.rb +42 -0
- data/test/plugin/test_buffer.rb +1383 -0
- data/test/plugin/test_buffer_chunk.rb +198 -0
- data/test/plugin/test_buffer_file_chunk.rb +871 -0
- data/test/plugin/test_buffer_file_single_chunk.rb +611 -0
- data/test/plugin/test_buffer_memory_chunk.rb +339 -0
- data/test/plugin/test_compressable.rb +87 -0
- data/test/plugin/test_file_util.rb +96 -0
- data/test/plugin/test_file_wrapper.rb +126 -0
- data/test/plugin/test_filter.rb +368 -0
- data/test/plugin/test_filter_grep.rb +697 -0
- data/test/plugin/test_filter_parser.rb +731 -0
- data/test/plugin/test_filter_record_transformer.rb +577 -0
- data/test/plugin/test_filter_stdout.rb +207 -0
- data/test/plugin/test_formatter_csv.rb +136 -0
- data/test/plugin/test_formatter_hash.rb +38 -0
- data/test/plugin/test_formatter_json.rb +61 -0
- data/test/plugin/test_formatter_ltsv.rb +70 -0
- data/test/plugin/test_formatter_msgpack.rb +28 -0
- data/test/plugin/test_formatter_out_file.rb +116 -0
- data/test/plugin/test_formatter_single_value.rb +44 -0
- data/test/plugin/test_formatter_tsv.rb +76 -0
- data/test/plugin/test_in_debug_agent.rb +49 -0
- data/test/plugin/test_in_exec.rb +261 -0
- data/test/plugin/test_in_forward.rb +1180 -0
- data/test/plugin/test_in_gc_stat.rb +62 -0
- data/test/plugin/test_in_http.rb +1080 -0
- data/test/plugin/test_in_monitor_agent.rb +923 -0
- data/test/plugin/test_in_object_space.rb +60 -0
- data/test/plugin/test_in_sample.rb +190 -0
- data/test/plugin/test_in_syslog.rb +505 -0
- data/test/plugin/test_in_tail.rb +2363 -0
- data/test/plugin/test_in_tcp.rb +243 -0
- data/test/plugin/test_in_udp.rb +268 -0
- data/test/plugin/test_in_unix.rb +181 -0
- data/test/plugin/test_input.rb +137 -0
- data/test/plugin/test_metadata.rb +89 -0
- data/test/plugin/test_metrics.rb +294 -0
- data/test/plugin/test_metrics_local.rb +96 -0
- data/test/plugin/test_multi_output.rb +204 -0
- data/test/plugin/test_out_copy.rb +308 -0
- data/test/plugin/test_out_exec.rb +312 -0
- data/test/plugin/test_out_exec_filter.rb +606 -0
- data/test/plugin/test_out_file.rb +1037 -0
- data/test/plugin/test_out_forward.rb +1348 -0
- data/test/plugin/test_out_http.rb +428 -0
- 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 +146 -0
- data/test/plugin/test_out_secondary_file.rb +458 -0
- data/test/plugin/test_out_stdout.rb +205 -0
- data/test/plugin/test_out_stream.rb +103 -0
- data/test/plugin/test_output.rb +1065 -0
- data/test/plugin/test_output_as_buffered.rb +2024 -0
- data/test/plugin/test_output_as_buffered_backup.rb +363 -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 +919 -0
- data/test/plugin/test_output_as_buffered_secondary.rb +882 -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 +399 -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 +200 -0
- data/test/plugin/test_parser_json.rb +138 -0
- data/test/plugin/test_parser_labeled_tsv.rb +160 -0
- data/test/plugin/test_parser_multiline.rb +111 -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 +650 -0
- data/test/plugin/test_parser_tsv.rb +122 -0
- data/test/plugin/test_sd_file.rb +228 -0
- data/test/plugin/test_sd_srv.rb +230 -0
- data/test/plugin/test_storage.rb +167 -0
- data/test/plugin/test_storage_local.rb +335 -0
- data/test/plugin/test_string_util.rb +26 -0
- data/test/plugin_helper/data/cert/cert-key.pem +27 -0
- data/test/plugin_helper/data/cert/cert-with-CRLF.pem +19 -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/data/cert/cert_chains/ca-cert-key.pem +27 -0
- data/test/plugin_helper/data/cert/cert_chains/ca-cert.pem +20 -0
- data/test/plugin_helper/data/cert/cert_chains/cert-key.pem +27 -0
- data/test/plugin_helper/data/cert/cert_chains/cert.pem +40 -0
- data/test/plugin_helper/data/cert/empty.pem +0 -0
- data/test/plugin_helper/data/cert/generate_cert.rb +125 -0
- data/test/plugin_helper/data/cert/with_ca/ca-cert-key-pass.pem +30 -0
- data/test/plugin_helper/data/cert/with_ca/ca-cert-key.pem +27 -0
- data/test/plugin_helper/data/cert/with_ca/ca-cert-pass.pem +20 -0
- data/test/plugin_helper/data/cert/with_ca/ca-cert.pem +20 -0
- data/test/plugin_helper/data/cert/with_ca/cert-key-pass.pem +30 -0
- data/test/plugin_helper/data/cert/with_ca/cert-key.pem +27 -0
- data/test/plugin_helper/data/cert/with_ca/cert-pass.pem +21 -0
- data/test/plugin_helper/data/cert/with_ca/cert.pem +21 -0
- data/test/plugin_helper/data/cert/without_ca/cert-key-pass.pem +30 -0
- data/test/plugin_helper/data/cert/without_ca/cert-key.pem +27 -0
- data/test/plugin_helper/data/cert/without_ca/cert-pass.pem +20 -0
- data/test/plugin_helper/data/cert/without_ca/cert.pem +20 -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/service_discovery/test_manager.rb +93 -0
- data/test/plugin_helper/service_discovery/test_round_robin_balancer.rb +21 -0
- data/test/plugin_helper/test_cert_option.rb +25 -0
- data/test/plugin_helper/test_child_process.rb +840 -0
- data/test/plugin_helper/test_compat_parameters.rb +358 -0
- data/test/plugin_helper/test_event_emitter.rb +80 -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 +372 -0
- data/test/plugin_helper/test_inject.rb +561 -0
- data/test/plugin_helper/test_metrics.rb +137 -0
- data/test/plugin_helper/test_parser.rb +264 -0
- data/test/plugin_helper/test_record_accessor.rb +238 -0
- data/test/plugin_helper/test_retry_state.rb +442 -0
- data/test/plugin_helper/test_server.rb +1823 -0
- data/test/plugin_helper/test_service_discovery.rb +165 -0
- data/test/plugin_helper/test_socket.rb +146 -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 +130 -0
- data/test/scripts/exec_script.rb +32 -0
- 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/formatter_known.rb +8 -0
- data/test/scripts/fluent/plugin/out_test.rb +81 -0
- data/test/scripts/fluent/plugin/out_test2.rb +80 -0
- data/test/scripts/fluent/plugin/parser_known.rb +4 -0
- data/test/test_capability.rb +74 -0
- data/test/test_clock.rb +164 -0
- data/test/test_config.rb +202 -0
- data/test/test_configdsl.rb +148 -0
- data/test/test_daemonizer.rb +91 -0
- data/test/test_engine.rb +203 -0
- data/test/test_event.rb +531 -0
- data/test/test_event_router.rb +331 -0
- data/test/test_event_time.rb +199 -0
- data/test/test_filter.rb +121 -0
- data/test/test_fluent_log_event_router.rb +99 -0
- data/test/test_formatter.rb +366 -0
- data/test/test_input.rb +31 -0
- data/test/test_log.rb +994 -0
- data/test/test_logger_initializer.rb +46 -0
- data/test/test_match.rb +148 -0
- data/test/test_mixin.rb +351 -0
- data/test/test_msgpack_factory.rb +18 -0
- data/test/test_oj_options.rb +55 -0
- data/test/test_output.rb +278 -0
- data/test/test_plugin.rb +251 -0
- data/test/test_plugin_classes.rb +370 -0
- data/test/test_plugin_helper.rb +81 -0
- data/test/test_plugin_id.rb +119 -0
- data/test/test_process.rb +14 -0
- data/test/test_root_agent.rb +951 -0
- data/test/test_static_config_analysis.rb +177 -0
- data/test/test_supervisor.rb +601 -0
- data/test/test_test_drivers.rb +136 -0
- data/test/test_time_formatter.rb +301 -0
- data/test/test_time_parser.rb +362 -0
- data/test/test_tls.rb +65 -0
- data/test/test_unique_id.rb +47 -0
- data/test/test_variable_store.rb +65 -0
- metadata +1261 -0
@@ -0,0 +1,951 @@
|
|
1
|
+
require_relative 'helper'
|
2
|
+
require 'fluent/event_router'
|
3
|
+
require 'fluent/system_config'
|
4
|
+
require 'timecop'
|
5
|
+
require_relative 'test_plugin_classes'
|
6
|
+
|
7
|
+
class RootAgentTest < ::Test::Unit::TestCase
|
8
|
+
include Fluent
|
9
|
+
include FluentTest
|
10
|
+
|
11
|
+
def test_initialize
|
12
|
+
ra = RootAgent.new(log: $log)
|
13
|
+
assert_equal 0, ra.instance_variable_get(:@suppress_emit_error_log_interval)
|
14
|
+
assert_nil ra.instance_variable_get(:@next_emit_error_log_time)
|
15
|
+
end
|
16
|
+
|
17
|
+
data(
|
18
|
+
'suppress interval' => [{'emit_error_log_interval' => 30}, {:@suppress_emit_error_log_interval => 30}],
|
19
|
+
'without source' => [{'without_source' => true}, {:@without_source => true}],
|
20
|
+
'enable input metrics' => [{'enable_input_metrics' => true}, {:@enable_input_metrics => true}],
|
21
|
+
)
|
22
|
+
def test_initialize_with_opt(data)
|
23
|
+
opt, expected = data
|
24
|
+
ra = RootAgent.new(log: $log, system_config: SystemConfig.new(opt))
|
25
|
+
expected.each { |k, v|
|
26
|
+
assert_equal v, ra.instance_variable_get(k)
|
27
|
+
}
|
28
|
+
end
|
29
|
+
|
30
|
+
sub_test_case 'configure' do
|
31
|
+
setup do
|
32
|
+
@ra = RootAgent.new(log: $log)
|
33
|
+
stub(Engine).root_agent { @ra }
|
34
|
+
end
|
35
|
+
|
36
|
+
def configure_ra(conf_str)
|
37
|
+
conf = Config.parse(conf_str, "(test)", "(test_dir)", true)
|
38
|
+
@ra.configure(conf)
|
39
|
+
@ra
|
40
|
+
end
|
41
|
+
|
42
|
+
test 'empty' do
|
43
|
+
ra = configure_ra('')
|
44
|
+
assert_empty ra.inputs
|
45
|
+
assert_empty ra.labels
|
46
|
+
assert_empty ra.outputs
|
47
|
+
assert_empty ra.filters
|
48
|
+
assert_nil ra.context
|
49
|
+
assert_nil ra.error_collector
|
50
|
+
end
|
51
|
+
|
52
|
+
test 'raises configuration error for missing type of source' do
|
53
|
+
conf = <<-EOC
|
54
|
+
<source>
|
55
|
+
</source>
|
56
|
+
EOC
|
57
|
+
errmsg = "Missing '@type' parameter on <source> directive"
|
58
|
+
assert_raise Fluent::ConfigError.new(errmsg) do
|
59
|
+
configure_ra(conf)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
test 'raises configuration error for missing type of match' do
|
64
|
+
conf = <<-EOC
|
65
|
+
<source>
|
66
|
+
@type test_in
|
67
|
+
</source>
|
68
|
+
<match *.**>
|
69
|
+
</match>
|
70
|
+
EOC
|
71
|
+
errmsg = "Missing '@type' parameter on <match> directive"
|
72
|
+
assert_raise Fluent::ConfigError.new(errmsg) do
|
73
|
+
configure_ra(conf)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
test 'raises configuration error for missing type of filter' do
|
78
|
+
conf = <<-EOC
|
79
|
+
<source>
|
80
|
+
@type test_in
|
81
|
+
</source>
|
82
|
+
<filter *.**>
|
83
|
+
</filter>
|
84
|
+
<match *.**>
|
85
|
+
@type test_out
|
86
|
+
</match>
|
87
|
+
EOC
|
88
|
+
errmsg = "Missing '@type' parameter on <filter> directive"
|
89
|
+
assert_raise Fluent::ConfigError.new(errmsg) do
|
90
|
+
configure_ra(conf)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
test 'raises configuration error if there are two same label section' do
|
95
|
+
conf = <<-EOC
|
96
|
+
<source>
|
97
|
+
@type test_in
|
98
|
+
@label @test
|
99
|
+
</source>
|
100
|
+
<label @test>
|
101
|
+
@type test_out
|
102
|
+
</label>
|
103
|
+
<label @test>
|
104
|
+
@type test_out
|
105
|
+
</label>
|
106
|
+
EOC
|
107
|
+
errmsg = "Section <label @test> appears twice"
|
108
|
+
assert_raise Fluent::ConfigError.new(errmsg) do
|
109
|
+
configure_ra(conf)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
test 'raises configuration error for label without name' do
|
114
|
+
conf = <<-EOC
|
115
|
+
<label>
|
116
|
+
@type test_out
|
117
|
+
</label>
|
118
|
+
EOC
|
119
|
+
errmsg = "Missing symbol argument on <label> directive"
|
120
|
+
assert_raise Fluent::ConfigError.new(errmsg) do
|
121
|
+
configure_ra(conf)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
test 'raises configuration error for <label @ROOT>' do
|
126
|
+
conf = <<-EOC
|
127
|
+
<source>
|
128
|
+
@type test_in
|
129
|
+
@label @ROOT
|
130
|
+
</source>
|
131
|
+
<label @ROOT>
|
132
|
+
@type test_out
|
133
|
+
</label>
|
134
|
+
EOC
|
135
|
+
errmsg = "@ROOT for <label> is not permitted, reserved for getting root router"
|
136
|
+
assert_raise Fluent::ConfigError.new(errmsg) do
|
137
|
+
configure_ra(conf)
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
test 'raises configuration error if there are not match sections in label section' do
|
142
|
+
conf = <<-EOC
|
143
|
+
<source>
|
144
|
+
@type test_in
|
145
|
+
@label @test
|
146
|
+
</source>
|
147
|
+
<label @test>
|
148
|
+
@type test_out
|
149
|
+
</label>
|
150
|
+
EOC
|
151
|
+
errmsg = "Missing <match> sections in <label @test> section"
|
152
|
+
assert_raise Fluent::ConfigError.new(errmsg) do
|
153
|
+
configure_ra(conf)
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
test 'with plugins' do
|
158
|
+
# check @type and type in one configuration
|
159
|
+
conf = <<-EOC
|
160
|
+
<source>
|
161
|
+
@type test_in
|
162
|
+
@id test_in
|
163
|
+
</source>
|
164
|
+
<filter>
|
165
|
+
type test_filter
|
166
|
+
id test_filter
|
167
|
+
</filter>
|
168
|
+
<match **>
|
169
|
+
@type relabel
|
170
|
+
@id test_relabel
|
171
|
+
@label @test
|
172
|
+
</match>
|
173
|
+
<label @test>
|
174
|
+
<match **>
|
175
|
+
type test_out
|
176
|
+
id test_out
|
177
|
+
</match>
|
178
|
+
</label>
|
179
|
+
<label @ERROR>
|
180
|
+
<match>
|
181
|
+
@type null
|
182
|
+
</match>
|
183
|
+
</label>
|
184
|
+
EOC
|
185
|
+
ra = configure_ra(conf)
|
186
|
+
assert_kind_of FluentTestInput, ra.inputs.first
|
187
|
+
assert_kind_of Plugin::RelabelOutput, ra.outputs.first
|
188
|
+
assert_kind_of FluentTestFilter, ra.filters.first
|
189
|
+
assert ra.error_collector
|
190
|
+
|
191
|
+
%W(@test @ERROR).each { |label_symbol|
|
192
|
+
assert_include ra.labels, label_symbol
|
193
|
+
assert_kind_of Label, ra.labels[label_symbol]
|
194
|
+
}
|
195
|
+
|
196
|
+
test_label = ra.labels['@test']
|
197
|
+
assert_kind_of FluentTestOutput, test_label.outputs.first
|
198
|
+
assert_equal ra, test_label.root_agent
|
199
|
+
|
200
|
+
error_label = ra.labels['@ERROR']
|
201
|
+
assert_kind_of Fluent::Plugin::NullOutput, error_label.outputs.first
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
sub_test_case 'start/shutdown' do
|
206
|
+
def setup_root_agent(conf)
|
207
|
+
ra = RootAgent.new(log: $log)
|
208
|
+
stub(Engine).root_agent { ra }
|
209
|
+
ra.configure(Config.parse(conf, "(test)", "(test_dir)", true))
|
210
|
+
ra
|
211
|
+
end
|
212
|
+
|
213
|
+
test 'plugin status' do
|
214
|
+
ra = setup_root_agent(<<-EOC)
|
215
|
+
<source>
|
216
|
+
@type test_in
|
217
|
+
@id test_in
|
218
|
+
</source>
|
219
|
+
<filter>
|
220
|
+
type test_filter
|
221
|
+
id test_filter
|
222
|
+
</filter>
|
223
|
+
<match **>
|
224
|
+
@type test_out
|
225
|
+
@id test_out
|
226
|
+
</match>
|
227
|
+
EOC
|
228
|
+
ra.start
|
229
|
+
assert_true ra.inputs.first.started
|
230
|
+
assert_true ra.filters.first.started
|
231
|
+
assert_true ra.outputs.first.started
|
232
|
+
|
233
|
+
ra.shutdown
|
234
|
+
assert_false ra.inputs.first.started
|
235
|
+
assert_false ra.filters.first.started
|
236
|
+
assert_false ra.outputs.first.started
|
237
|
+
end
|
238
|
+
|
239
|
+
test 'output plugin threads should run before input plugin is blocked with buffer full' do
|
240
|
+
ra = setup_root_agent(<<-EOC)
|
241
|
+
<source>
|
242
|
+
@type test_in_gen
|
243
|
+
@id test_in_gen
|
244
|
+
</source>
|
245
|
+
<match **>
|
246
|
+
@type test_out_buffered
|
247
|
+
@id test_out_buffered
|
248
|
+
<buffer>
|
249
|
+
chunk_limit_size 1k
|
250
|
+
queue_limit_length 2
|
251
|
+
flush_thread_count 2
|
252
|
+
overflow_action block
|
253
|
+
</buffer>
|
254
|
+
</match>
|
255
|
+
EOC
|
256
|
+
waiting(5) { ra.start }
|
257
|
+
assert_true ra.inputs.first.started
|
258
|
+
assert_true ra.outputs.first.started
|
259
|
+
|
260
|
+
ra.shutdown
|
261
|
+
assert_false ra.inputs.first.started
|
262
|
+
assert_false ra.outputs.first.started
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
266
|
+
sub_test_case 'configured with label and secondary plugin' do
|
267
|
+
setup do
|
268
|
+
@ra = RootAgent.new(log: $log)
|
269
|
+
stub(Engine).root_agent{ @ra }
|
270
|
+
@ra.configure(Config.parse(<<-EOC, "(test)", "(test_dir)", true))
|
271
|
+
<source>
|
272
|
+
@type test_in
|
273
|
+
@label @route_a
|
274
|
+
</source>
|
275
|
+
<label @route_a>
|
276
|
+
<match a.**>
|
277
|
+
@type test_out_buffered
|
278
|
+
<secondary>
|
279
|
+
@type test_out_emit
|
280
|
+
</secondary>
|
281
|
+
</match>
|
282
|
+
</label>
|
283
|
+
<label @route_b>
|
284
|
+
<match b.**>
|
285
|
+
@type test_out
|
286
|
+
</match>
|
287
|
+
</label>
|
288
|
+
EOC
|
289
|
+
end
|
290
|
+
|
291
|
+
test 'secondary plugin has an event router for the label which the plugin is in' do
|
292
|
+
assert_equal 1, @ra.inputs.size
|
293
|
+
assert_equal 2, @ra.labels.size
|
294
|
+
assert_equal ['@route_a', '@route_b'], @ra.labels.keys
|
295
|
+
assert_equal '@route_a', @ra.labels['@route_a'].context
|
296
|
+
assert_equal '@route_b', @ra.labels['@route_b'].context
|
297
|
+
|
298
|
+
c1 = @ra.labels['@route_a']
|
299
|
+
|
300
|
+
assert_equal 1, c1.outputs.size
|
301
|
+
assert !c1.outputs.first.has_router?
|
302
|
+
|
303
|
+
assert c1.outputs.first.secondary
|
304
|
+
assert c1.outputs.first.secondary.has_router?
|
305
|
+
assert_equal c1.event_router, c1.outputs.first.secondary.router
|
306
|
+
end
|
307
|
+
end
|
308
|
+
|
309
|
+
sub_test_case 'configured with label and secondary plugin with @label specifier' do
|
310
|
+
setup do
|
311
|
+
@ra = RootAgent.new(log: $log)
|
312
|
+
stub(Engine).root_agent{ @ra }
|
313
|
+
@ra.configure(Config.parse(<<-EOC, "(test)", "(test_dir)", true))
|
314
|
+
<source>
|
315
|
+
@type test_in
|
316
|
+
@label @route_a
|
317
|
+
</source>
|
318
|
+
<label @route_a>
|
319
|
+
<match a.**>
|
320
|
+
@type test_out_buffered
|
321
|
+
<secondary>
|
322
|
+
@type test_out_emit
|
323
|
+
@label @route_b
|
324
|
+
</secondary>
|
325
|
+
</match>
|
326
|
+
</label>
|
327
|
+
<label @route_b>
|
328
|
+
<match b.**>
|
329
|
+
@type test_out
|
330
|
+
</match>
|
331
|
+
</label>
|
332
|
+
EOC
|
333
|
+
end
|
334
|
+
|
335
|
+
test 'secondary plugin has an event router for the label specified in secondary section' do
|
336
|
+
assert_equal 1, @ra.inputs.size
|
337
|
+
assert_equal 2, @ra.labels.size
|
338
|
+
assert_equal ['@route_a', '@route_b'], @ra.labels.keys
|
339
|
+
assert_equal '@route_a', @ra.labels['@route_a'].context
|
340
|
+
assert_equal '@route_b', @ra.labels['@route_b'].context
|
341
|
+
|
342
|
+
c1 = @ra.labels['@route_a']
|
343
|
+
c2 = @ra.labels['@route_b']
|
344
|
+
|
345
|
+
assert_equal 1, c1.outputs.size
|
346
|
+
assert !c1.outputs.first.has_router?
|
347
|
+
|
348
|
+
assert c1.outputs.first.secondary
|
349
|
+
assert c1.outputs.first.secondary.has_router?
|
350
|
+
assert_equal c2.event_router, c1.outputs.first.secondary.router
|
351
|
+
end
|
352
|
+
end
|
353
|
+
|
354
|
+
sub_test_case 'configured with label and secondary plugin with @label specifier in primary output' do
|
355
|
+
setup do
|
356
|
+
@ra = RootAgent.new(log: $log)
|
357
|
+
stub(Engine).root_agent{ @ra }
|
358
|
+
@ra.configure(Config.parse(<<-EOC, "(test)", "(test_dir)", true))
|
359
|
+
<source>
|
360
|
+
@type test_in
|
361
|
+
@label @route_a
|
362
|
+
</source>
|
363
|
+
<label @route_a>
|
364
|
+
<match a.**>
|
365
|
+
@type test_out_emit
|
366
|
+
@label @route_b
|
367
|
+
<secondary>
|
368
|
+
@type test_out_emit
|
369
|
+
</secondary>
|
370
|
+
</match>
|
371
|
+
</label>
|
372
|
+
<label @route_b>
|
373
|
+
<match b.**>
|
374
|
+
@type test_out
|
375
|
+
</match>
|
376
|
+
</label>
|
377
|
+
EOC
|
378
|
+
end
|
379
|
+
|
380
|
+
test 'secondary plugin has an event router for the label specified in secondary section' do
|
381
|
+
assert_equal 1, @ra.inputs.size
|
382
|
+
assert_equal 2, @ra.labels.size
|
383
|
+
assert_equal ['@route_a', '@route_b'], @ra.labels.keys
|
384
|
+
assert_equal '@route_a', @ra.labels['@route_a'].context
|
385
|
+
assert_equal '@route_b', @ra.labels['@route_b'].context
|
386
|
+
|
387
|
+
c1 = @ra.labels['@route_a']
|
388
|
+
c2 = @ra.labels['@route_b']
|
389
|
+
|
390
|
+
assert_equal 1, c1.outputs.size
|
391
|
+
assert c1.outputs.first.secondary
|
392
|
+
|
393
|
+
p1 = c1.outputs.first
|
394
|
+
assert p1.has_router?
|
395
|
+
assert_equal c1.event_router, p1.context_router
|
396
|
+
assert_equal c2.event_router, p1.router
|
397
|
+
|
398
|
+
s1 = p1.secondary
|
399
|
+
assert s1.has_router?
|
400
|
+
assert_equal c1.event_router, s1.context_router
|
401
|
+
assert_equal c2.event_router, s1.router
|
402
|
+
end
|
403
|
+
end
|
404
|
+
|
405
|
+
sub_test_case 'configured with MultiOutput plugins' do
|
406
|
+
setup do
|
407
|
+
@ra = RootAgent.new(log: $log)
|
408
|
+
stub(Engine).root_agent { @ra }
|
409
|
+
@ra.configure(Config.parse(<<-EOC, "(test)", "(test_dir)", true))
|
410
|
+
<source>
|
411
|
+
@type test_in
|
412
|
+
@id test_in
|
413
|
+
</source>
|
414
|
+
<filter>
|
415
|
+
@type test_filter
|
416
|
+
@id test_filter
|
417
|
+
</filter>
|
418
|
+
<match **>
|
419
|
+
@type copy
|
420
|
+
@id test_copy
|
421
|
+
<store>
|
422
|
+
@type test_out
|
423
|
+
@id test_out1
|
424
|
+
</store>
|
425
|
+
<store>
|
426
|
+
@type test_out
|
427
|
+
@id test_out2
|
428
|
+
</store>
|
429
|
+
</match>
|
430
|
+
EOC
|
431
|
+
@ra
|
432
|
+
end
|
433
|
+
|
434
|
+
test 'plugin status with multi output' do
|
435
|
+
assert_equal 1, @ra.inputs.size
|
436
|
+
assert_equal 1, @ra.filters.size
|
437
|
+
assert_equal 3, @ra.outputs.size
|
438
|
+
|
439
|
+
@ra.start
|
440
|
+
assert_equal [true], @ra.inputs.map{|i| i.started? }
|
441
|
+
assert_equal [true], @ra.filters.map{|i| i.started? }
|
442
|
+
assert_equal [true, true, true], @ra.outputs.map{|i| i.started? }
|
443
|
+
|
444
|
+
assert_equal [true], @ra.inputs.map{|i| i.after_started? }
|
445
|
+
assert_equal [true], @ra.filters.map{|i| i.after_started? }
|
446
|
+
assert_equal [true, true, true], @ra.outputs.map{|i| i.after_started? }
|
447
|
+
|
448
|
+
@ra.shutdown
|
449
|
+
assert_equal [true], @ra.inputs.map{|i| i.stopped? }
|
450
|
+
assert_equal [true], @ra.filters.map{|i| i.stopped? }
|
451
|
+
assert_equal [true, true, true], @ra.outputs.map{|i| i.stopped? }
|
452
|
+
|
453
|
+
assert_equal [true], @ra.inputs.map{|i| i.before_shutdown? }
|
454
|
+
assert_equal [true], @ra.filters.map{|i| i.before_shutdown? }
|
455
|
+
assert_equal [true, true, true], @ra.outputs.map{|i| i.before_shutdown? }
|
456
|
+
|
457
|
+
assert_equal [true], @ra.inputs.map{|i| i.shutdown? }
|
458
|
+
assert_equal [true], @ra.filters.map{|i| i.shutdown? }
|
459
|
+
assert_equal [true, true, true], @ra.outputs.map{|i| i.shutdown? }
|
460
|
+
|
461
|
+
assert_equal [true], @ra.inputs.map{|i| i.after_shutdown? }
|
462
|
+
assert_equal [true], @ra.filters.map{|i| i.after_shutdown? }
|
463
|
+
assert_equal [true, true, true], @ra.outputs.map{|i| i.after_shutdown? }
|
464
|
+
|
465
|
+
assert_equal [true], @ra.inputs.map{|i| i.closed? }
|
466
|
+
assert_equal [true], @ra.filters.map{|i| i.closed? }
|
467
|
+
assert_equal [true, true, true], @ra.outputs.map{|i| i.closed? }
|
468
|
+
|
469
|
+
assert_equal [true], @ra.inputs.map{|i| i.terminated? }
|
470
|
+
assert_equal [true], @ra.filters.map{|i| i.terminated? }
|
471
|
+
assert_equal [true, true, true], @ra.outputs.map{|i| i.terminated? }
|
472
|
+
end
|
473
|
+
end
|
474
|
+
|
475
|
+
sub_test_case 'configured with MultiOutput plugins and labels' do
|
476
|
+
setup do
|
477
|
+
@ra = RootAgent.new(log: $log)
|
478
|
+
stub(Engine).root_agent { @ra }
|
479
|
+
@ra.configure(Config.parse(<<-EOC, "(test)", "(test_dir)", true))
|
480
|
+
<source>
|
481
|
+
@type test_in
|
482
|
+
@id test_in
|
483
|
+
@label @testing
|
484
|
+
</source>
|
485
|
+
<label @testing>
|
486
|
+
<filter>
|
487
|
+
@type test_filter
|
488
|
+
@id test_filter
|
489
|
+
</filter>
|
490
|
+
<match **>
|
491
|
+
@type copy
|
492
|
+
@id test_copy
|
493
|
+
<store>
|
494
|
+
@type test_out
|
495
|
+
@id test_out1
|
496
|
+
</store>
|
497
|
+
<store>
|
498
|
+
@type test_out
|
499
|
+
@id test_out2
|
500
|
+
</store>
|
501
|
+
</match>
|
502
|
+
</label>
|
503
|
+
EOC
|
504
|
+
@ra
|
505
|
+
end
|
506
|
+
|
507
|
+
test 'plugin status with multi output' do
|
508
|
+
assert_equal 1, @ra.inputs.size
|
509
|
+
assert_equal 0, @ra.filters.size
|
510
|
+
assert_equal 0, @ra.outputs.size
|
511
|
+
assert_equal 1, @ra.labels.size
|
512
|
+
assert_equal '@testing', @ra.labels.keys.first
|
513
|
+
assert_equal 1, @ra.labels.values.first.filters.size
|
514
|
+
assert_equal 3, @ra.labels.values.first.outputs.size
|
515
|
+
|
516
|
+
label_filters = @ra.labels.values.first.filters
|
517
|
+
label_outputs = @ra.labels.values.first.outputs
|
518
|
+
|
519
|
+
@ra.start
|
520
|
+
assert_equal [true], @ra.inputs.map{|i| i.started? }
|
521
|
+
assert_equal [true], label_filters.map{|i| i.started? }
|
522
|
+
assert_equal [true, true, true], label_outputs.map{|i| i.started? }
|
523
|
+
|
524
|
+
@ra.shutdown
|
525
|
+
assert_equal [true], @ra.inputs.map{|i| i.stopped? }
|
526
|
+
assert_equal [true], label_filters.map{|i| i.stopped? }
|
527
|
+
assert_equal [true, true, true], label_outputs.map{|i| i.stopped? }
|
528
|
+
|
529
|
+
assert_equal [true], @ra.inputs.map{|i| i.before_shutdown? }
|
530
|
+
assert_equal [true], label_filters.map{|i| i.before_shutdown? }
|
531
|
+
assert_equal [true, true, true], label_outputs.map{|i| i.before_shutdown? }
|
532
|
+
|
533
|
+
assert_equal [true], @ra.inputs.map{|i| i.shutdown? }
|
534
|
+
assert_equal [true], label_filters.map{|i| i.shutdown? }
|
535
|
+
assert_equal [true, true, true], label_outputs.map{|i| i.shutdown? }
|
536
|
+
|
537
|
+
assert_equal [true], @ra.inputs.map{|i| i.after_shutdown? }
|
538
|
+
assert_equal [true], label_filters.map{|i| i.after_shutdown? }
|
539
|
+
assert_equal [true, true, true], label_outputs.map{|i| i.after_shutdown? }
|
540
|
+
|
541
|
+
assert_equal [true], @ra.inputs.map{|i| i.closed? }
|
542
|
+
assert_equal [true], label_filters.map{|i| i.closed? }
|
543
|
+
assert_equal [true, true, true], label_outputs.map{|i| i.closed? }
|
544
|
+
|
545
|
+
assert_equal [true], @ra.inputs.map{|i| i.terminated? }
|
546
|
+
assert_equal [true], label_filters.map{|i| i.terminated? }
|
547
|
+
assert_equal [true, true, true], label_outputs.map{|i| i.terminated? }
|
548
|
+
end
|
549
|
+
|
550
|
+
test 'plugin #shutdown is not called twice' do
|
551
|
+
assert_equal 1, @ra.inputs.size
|
552
|
+
assert_equal 0, @ra.filters.size
|
553
|
+
assert_equal 0, @ra.outputs.size
|
554
|
+
assert_equal 1, @ra.labels.size
|
555
|
+
assert_equal '@testing', @ra.labels.keys.first
|
556
|
+
assert_equal 1, @ra.labels.values.first.filters.size
|
557
|
+
assert_equal 3, @ra.labels.values.first.outputs.size
|
558
|
+
|
559
|
+
@ra.start
|
560
|
+
|
561
|
+
old_level = @ra.log.level
|
562
|
+
begin
|
563
|
+
@ra.log.instance_variable_get(:@logger).level = Fluent::Log::LEVEL_INFO - 1
|
564
|
+
assert_equal Fluent::Log::LEVEL_INFO, @ra.log.level
|
565
|
+
|
566
|
+
@ra.log.out.flush_logs = false
|
567
|
+
|
568
|
+
@ra.shutdown
|
569
|
+
|
570
|
+
test_out1_shutdown_logs = @ra.log.out.logs.select{|line| line =~ /shutting down output plugin type=:test_out plugin_id="test_out1"/ }
|
571
|
+
assert_equal 1, test_out1_shutdown_logs.size
|
572
|
+
ensure
|
573
|
+
@ra.log.out.flush_logs = true
|
574
|
+
@ra.log.out.reset
|
575
|
+
@ra.log.level = old_level
|
576
|
+
end
|
577
|
+
end
|
578
|
+
end
|
579
|
+
|
580
|
+
sub_test_case 'configured with MultiOutput plugin which creates plugin instances dynamically' do
|
581
|
+
setup do
|
582
|
+
@ra = RootAgent.new(log: $log)
|
583
|
+
stub(Engine).root_agent { @ra }
|
584
|
+
@ra.configure(Config.parse(<<-EOC, "(test)", "(test_dir)", true))
|
585
|
+
<source>
|
586
|
+
@type test_in
|
587
|
+
@id test_in
|
588
|
+
@label @testing
|
589
|
+
</source>
|
590
|
+
<label @testing>
|
591
|
+
<match **>
|
592
|
+
@type test_dynamic_out
|
593
|
+
@id test_dyn
|
594
|
+
</match>
|
595
|
+
</label>
|
596
|
+
EOC
|
597
|
+
@ra
|
598
|
+
end
|
599
|
+
|
600
|
+
test 'plugin status with multi output' do
|
601
|
+
assert_equal 1, @ra.inputs.size
|
602
|
+
assert_equal 0, @ra.filters.size
|
603
|
+
assert_equal 0, @ra.outputs.size
|
604
|
+
assert_equal 1, @ra.labels.size
|
605
|
+
assert_equal '@testing', @ra.labels.keys.first
|
606
|
+
assert_equal 0, @ra.labels.values.first.filters.size
|
607
|
+
assert_equal 1, @ra.labels.values.first.outputs.size
|
608
|
+
|
609
|
+
dyn_out = @ra.labels.values.first.outputs.first
|
610
|
+
assert_nil dyn_out.child
|
611
|
+
|
612
|
+
@ra.start
|
613
|
+
|
614
|
+
assert_equal 1, @ra.labels.values.first.outputs.size
|
615
|
+
|
616
|
+
assert dyn_out.child
|
617
|
+
assert_false dyn_out.child.outputs_statically_created
|
618
|
+
assert_equal 2, dyn_out.child.outputs.size
|
619
|
+
|
620
|
+
assert_equal true, dyn_out.child.outputs[0].started?
|
621
|
+
assert_equal true, dyn_out.child.outputs[1].started?
|
622
|
+
assert_equal true, dyn_out.child.outputs[0].after_started?
|
623
|
+
assert_equal true, dyn_out.child.outputs[1].after_started?
|
624
|
+
|
625
|
+
@ra.shutdown
|
626
|
+
|
627
|
+
assert_equal 1, @ra.labels.values.first.outputs.size
|
628
|
+
|
629
|
+
assert_false dyn_out.child.outputs_statically_created
|
630
|
+
assert_equal 2, dyn_out.child.outputs.size
|
631
|
+
|
632
|
+
assert_equal [true, true], dyn_out.child.outputs.map{|i| i.stopped? }
|
633
|
+
assert_equal [true, true], dyn_out.child.outputs.map{|i| i.before_shutdown? }
|
634
|
+
assert_equal [true, true], dyn_out.child.outputs.map{|i| i.shutdown? }
|
635
|
+
assert_equal [true, true], dyn_out.child.outputs.map{|i| i.after_shutdown? }
|
636
|
+
assert_equal [true, true], dyn_out.child.outputs.map{|i| i.closed? }
|
637
|
+
assert_equal [true, true], dyn_out.child.outputs.map{|i| i.terminated? }
|
638
|
+
end
|
639
|
+
end
|
640
|
+
|
641
|
+
sub_test_case 'configure emit_error_interval' do
|
642
|
+
setup do
|
643
|
+
system_config = SystemConfig.new
|
644
|
+
system_config.emit_error_log_interval = 30
|
645
|
+
@ra = RootAgent.new(log: $log, system_config: system_config)
|
646
|
+
stub(Engine).root_agent { @ra }
|
647
|
+
@ra.log.out.reset
|
648
|
+
one_minute_ago = Time.now.to_i - 60
|
649
|
+
Timecop.freeze(one_minute_ago)
|
650
|
+
end
|
651
|
+
|
652
|
+
teardown do
|
653
|
+
Timecop.return
|
654
|
+
end
|
655
|
+
|
656
|
+
test 'suppresses errors' do
|
657
|
+
mock(@ra.log).warn_backtrace()
|
658
|
+
e = StandardError.new('standard error')
|
659
|
+
begin
|
660
|
+
@ra.handle_emits_error("tag", nil, e)
|
661
|
+
rescue
|
662
|
+
end
|
663
|
+
|
664
|
+
begin
|
665
|
+
@ra.handle_emits_error("tag", nil, e)
|
666
|
+
rescue
|
667
|
+
end
|
668
|
+
|
669
|
+
assert_equal 1, @ra.log.out.logs.size
|
670
|
+
end
|
671
|
+
end
|
672
|
+
|
673
|
+
sub_test_case 'configured at worker2 with 4 workers environment' do
|
674
|
+
setup do
|
675
|
+
ENV['SERVERENGINE_WORKER_ID'] = '2'
|
676
|
+
@ra = RootAgent.new(log: $log)
|
677
|
+
system_config = SystemConfig.new
|
678
|
+
system_config.workers = 4
|
679
|
+
stub(Engine).worker_id { 2 }
|
680
|
+
stub(Engine).root_agent { @ra }
|
681
|
+
stub(Engine).system_config { system_config }
|
682
|
+
@ra
|
683
|
+
end
|
684
|
+
|
685
|
+
teardown '' do
|
686
|
+
ENV.delete('SERVERENGINE_WORKER_ID')
|
687
|
+
end
|
688
|
+
|
689
|
+
def configure_ra(conf_str)
|
690
|
+
conf = Config.parse(conf_str, "(test)", "(test_dir)", true)
|
691
|
+
@ra.configure(conf)
|
692
|
+
@ra
|
693
|
+
end
|
694
|
+
|
695
|
+
test 'raises configuration error for missing worker id' do
|
696
|
+
errmsg = 'Missing worker id on <worker> directive'
|
697
|
+
assert_raise Fluent::ConfigError.new(errmsg) do
|
698
|
+
conf = <<-EOC
|
699
|
+
<worker>
|
700
|
+
</worker>
|
701
|
+
EOC
|
702
|
+
configure_ra(conf)
|
703
|
+
end
|
704
|
+
end
|
705
|
+
|
706
|
+
test 'raises configuration error for too big worker id' do
|
707
|
+
errmsg = "worker id 4 specified by <worker> directive is not allowed. Available worker id is between 0 and 3"
|
708
|
+
assert_raise Fluent::ConfigError.new(errmsg) do
|
709
|
+
conf = <<-EOC
|
710
|
+
<worker 4>
|
711
|
+
</worker>
|
712
|
+
EOC
|
713
|
+
configure_ra(conf)
|
714
|
+
end
|
715
|
+
end
|
716
|
+
|
717
|
+
test 'raises configuration error for too big worker id on multi workers syntax' do
|
718
|
+
errmsg = "worker id 4 specified by <worker> directive is not allowed. Available worker id is between 0 and 3"
|
719
|
+
assert_raise Fluent::ConfigError.new(errmsg) do
|
720
|
+
conf = <<-EOC
|
721
|
+
<worker 1-4>
|
722
|
+
</worker>
|
723
|
+
EOC
|
724
|
+
configure_ra(conf)
|
725
|
+
end
|
726
|
+
end
|
727
|
+
|
728
|
+
test 'raises configuration error for worker id collisions on multi workers syntax' do
|
729
|
+
errmsg = "specified worker_id<2> collisions is detected on <worker> directive. Available worker id(s): [3]"
|
730
|
+
assert_raise Fluent::ConfigError.new(errmsg) do
|
731
|
+
conf = <<-EOC
|
732
|
+
<worker 0-2>
|
733
|
+
</worker>
|
734
|
+
<worker 2-4>
|
735
|
+
</worker>
|
736
|
+
EOC
|
737
|
+
configure_ra(conf)
|
738
|
+
end
|
739
|
+
end
|
740
|
+
|
741
|
+
test 'raises configuration error for worker id collisions on multi workers syntax when multi available worker_ids are left' do
|
742
|
+
errmsg = "specified worker_id<1> collisions is detected on <worker> directive. Available worker id(s): [2, 3]"
|
743
|
+
assert_raise Fluent::ConfigError.new(errmsg) do
|
744
|
+
conf = <<-EOC
|
745
|
+
<worker 0-1>
|
746
|
+
</worker>
|
747
|
+
<worker 1-3>
|
748
|
+
</worker>
|
749
|
+
EOC
|
750
|
+
configure_ra(conf)
|
751
|
+
end
|
752
|
+
end
|
753
|
+
|
754
|
+
test 'raises configuration error for too big worker id on invalid reversed multi workers syntax' do
|
755
|
+
errmsg = "greater first_worker_id<3> than last_worker_id<0> specified by <worker> directive is not allowed. Available multi worker assign syntax is <smaller_worker_id>-<greater_worker_id>"
|
756
|
+
assert_raise Fluent::ConfigError.new(errmsg) do
|
757
|
+
conf = <<-EOC
|
758
|
+
<worker 3-0>
|
759
|
+
</worker>
|
760
|
+
EOC
|
761
|
+
configure_ra(conf)
|
762
|
+
end
|
763
|
+
end
|
764
|
+
|
765
|
+
test 'raises configuration error for invalid elements as a child of worker section' do
|
766
|
+
errmsg = '<worker> section cannot have <system> directive'
|
767
|
+
assert_raise Fluent::ConfigError.new(errmsg) do
|
768
|
+
conf = <<-EOC
|
769
|
+
<worker 2>
|
770
|
+
<system>
|
771
|
+
</system>
|
772
|
+
</worker>
|
773
|
+
EOC
|
774
|
+
configure_ra(conf)
|
775
|
+
end
|
776
|
+
end
|
777
|
+
|
778
|
+
test 'raises configuration error when configured plugins do not have support multi worker configuration' do
|
779
|
+
errmsg = "Plugin 'test_out' does not support multi workers configuration (FluentTest::FluentTestOutput)"
|
780
|
+
assert_raise Fluent::ConfigError.new(errmsg) do
|
781
|
+
conf = <<-EOC
|
782
|
+
<match **>
|
783
|
+
@type test_out
|
784
|
+
</match>
|
785
|
+
EOC
|
786
|
+
configure_ra(conf)
|
787
|
+
end
|
788
|
+
end
|
789
|
+
|
790
|
+
test 'does not raise configuration error when configured plugins in worker section do not have support multi worker configuration' do
|
791
|
+
assert_nothing_raised do
|
792
|
+
conf = <<-EOC
|
793
|
+
<worker 2>
|
794
|
+
<match **>
|
795
|
+
@type test_out
|
796
|
+
</match>
|
797
|
+
</worker>
|
798
|
+
EOC
|
799
|
+
configure_ra(conf)
|
800
|
+
end
|
801
|
+
end
|
802
|
+
|
803
|
+
test 'does not raise configuration error when configured plugins as a children of MultiOutput in worker section do not have support multi worker configuration' do
|
804
|
+
assert_nothing_raised do
|
805
|
+
conf = <<-EOC
|
806
|
+
<worker 2>
|
807
|
+
<match **>
|
808
|
+
@type copy
|
809
|
+
<store>
|
810
|
+
@type test_out
|
811
|
+
</store>
|
812
|
+
<store>
|
813
|
+
@type test_out
|
814
|
+
</store>
|
815
|
+
</match>
|
816
|
+
</worker>
|
817
|
+
EOC
|
818
|
+
configure_ra(conf)
|
819
|
+
end
|
820
|
+
end
|
821
|
+
|
822
|
+
test 'does not raise configuration error when configured plugins owned by plugin do not have support multi worker configuration' do
|
823
|
+
assert_nothing_raised do
|
824
|
+
conf = <<-EOC
|
825
|
+
<worker 2>
|
826
|
+
<match **>
|
827
|
+
@type test_out_buffered
|
828
|
+
<buffer>
|
829
|
+
@type test_buffer
|
830
|
+
</buffer>
|
831
|
+
</match>
|
832
|
+
</worker>
|
833
|
+
EOC
|
834
|
+
configure_ra(conf)
|
835
|
+
end
|
836
|
+
end
|
837
|
+
|
838
|
+
test 'with plugins' do
|
839
|
+
conf = <<-EOC
|
840
|
+
<worker 2>
|
841
|
+
<source>
|
842
|
+
@type test_in
|
843
|
+
@id test_in
|
844
|
+
</source>
|
845
|
+
<filter>
|
846
|
+
type test_filter
|
847
|
+
id test_filter
|
848
|
+
</filter>
|
849
|
+
<match **>
|
850
|
+
@type relabel
|
851
|
+
@id test_relabel
|
852
|
+
@label @test
|
853
|
+
</match>
|
854
|
+
<label @test>
|
855
|
+
<match **>
|
856
|
+
type test_out
|
857
|
+
id test_out
|
858
|
+
</match>
|
859
|
+
</label>
|
860
|
+
<label @ERROR>
|
861
|
+
<match>
|
862
|
+
@type null
|
863
|
+
</match>
|
864
|
+
</label>
|
865
|
+
</worker>
|
866
|
+
EOC
|
867
|
+
ra = configure_ra(conf)
|
868
|
+
assert_kind_of FluentTestInput, ra.inputs.first
|
869
|
+
assert_kind_of Plugin::RelabelOutput, ra.outputs.first
|
870
|
+
assert_kind_of FluentTestFilter, ra.filters.first
|
871
|
+
assert ra.error_collector
|
872
|
+
|
873
|
+
%W(@test @ERROR).each { |label_symbol|
|
874
|
+
assert_include ra.labels, label_symbol
|
875
|
+
assert_kind_of Label, ra.labels[label_symbol]
|
876
|
+
}
|
877
|
+
|
878
|
+
test_label = ra.labels['@test']
|
879
|
+
assert_kind_of FluentTestOutput, test_label.outputs.first
|
880
|
+
assert_equal ra, test_label.root_agent
|
881
|
+
|
882
|
+
error_label = ra.labels['@ERROR']
|
883
|
+
assert_kind_of Fluent::Plugin::NullOutput, error_label.outputs.first
|
884
|
+
end
|
885
|
+
|
886
|
+
test 'with plugins but for another worker' do
|
887
|
+
conf = <<-EOC
|
888
|
+
<worker 0>
|
889
|
+
<source>
|
890
|
+
@type test_in
|
891
|
+
@id test_in
|
892
|
+
</source>
|
893
|
+
<filter>
|
894
|
+
type test_filter
|
895
|
+
id test_filter
|
896
|
+
</filter>
|
897
|
+
<match **>
|
898
|
+
@type relabel
|
899
|
+
@id test_relabel
|
900
|
+
@label @test
|
901
|
+
</match>
|
902
|
+
<label @test>
|
903
|
+
<match **>
|
904
|
+
type test_out
|
905
|
+
id test_out
|
906
|
+
</match>
|
907
|
+
</label>
|
908
|
+
<label @ERROR>
|
909
|
+
<match>
|
910
|
+
@type null
|
911
|
+
</match>
|
912
|
+
</label>
|
913
|
+
</worker>
|
914
|
+
EOC
|
915
|
+
ra = configure_ra(conf)
|
916
|
+
assert_equal 0, ra.inputs.size
|
917
|
+
assert_equal 0, ra.outputs.size
|
918
|
+
assert_equal 0, ra.filters.size
|
919
|
+
assert_equal 0, ra.labels.size
|
920
|
+
refute ra.error_collector
|
921
|
+
end
|
922
|
+
|
923
|
+
test 'with plugins for workers syntax should match worker_id equals to 2' do
|
924
|
+
conf = <<-EOC
|
925
|
+
<worker 0-2>
|
926
|
+
<source>
|
927
|
+
@type forward
|
928
|
+
</source>
|
929
|
+
<filter **>
|
930
|
+
@type test_filter
|
931
|
+
@id test_filter
|
932
|
+
</filter>
|
933
|
+
<match pattern>
|
934
|
+
@type stdout
|
935
|
+
</match>
|
936
|
+
<label @ERROR>
|
937
|
+
<match>
|
938
|
+
@type null
|
939
|
+
</match>
|
940
|
+
</label>
|
941
|
+
</worker>
|
942
|
+
EOC
|
943
|
+
|
944
|
+
ra = configure_ra(conf)
|
945
|
+
assert_kind_of Fluent::Plugin::ForwardInput, ra.inputs.first
|
946
|
+
assert_kind_of Fluent::Plugin::StdoutOutput, ra.outputs.first
|
947
|
+
assert_kind_of FluentTestFilter, ra.filters.first
|
948
|
+
assert ra.error_collector
|
949
|
+
end
|
950
|
+
end
|
951
|
+
end
|