fluentd 1.16.5 → 1.17.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (268) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +88 -0
  3. data/README.md +2 -1
  4. data/Rakefile +1 -1
  5. data/SECURITY.md +2 -2
  6. data/fluent.conf +14 -14
  7. data/lib/fluent/command/binlog_reader.rb +1 -1
  8. data/lib/fluent/command/cap_ctl.rb +4 -4
  9. data/lib/fluent/compat/call_super_mixin.rb +3 -3
  10. data/lib/fluent/compat/propagate_default.rb +4 -4
  11. data/lib/fluent/config/configure_proxy.rb +2 -2
  12. data/lib/fluent/config/types.rb +1 -1
  13. data/lib/fluent/config/yaml_parser/parser.rb +4 -0
  14. data/lib/fluent/configurable.rb +2 -2
  15. data/lib/fluent/counter/mutex_hash.rb +1 -1
  16. data/lib/fluent/fluent_log_event_router.rb +0 -2
  17. data/lib/fluent/log/console_adapter.rb +4 -2
  18. data/lib/fluent/plugin/buf_file.rb +1 -1
  19. data/lib/fluent/plugin/buffer/file_chunk.rb +1 -1
  20. data/lib/fluent/plugin/buffer/file_single_chunk.rb +2 -3
  21. data/lib/fluent/plugin/filter_parser.rb +26 -8
  22. data/lib/fluent/plugin/in_exec.rb +14 -2
  23. data/lib/fluent/plugin/in_http.rb +19 -54
  24. data/lib/fluent/plugin/in_sample.rb +13 -7
  25. data/lib/fluent/plugin/in_tail.rb +99 -25
  26. data/lib/fluent/plugin/out_copy.rb +1 -1
  27. data/lib/fluent/plugin/out_file.rb +8 -0
  28. data/lib/fluent/plugin/out_http.rb +137 -13
  29. data/lib/fluent/plugin/owned_by_mixin.rb +0 -1
  30. data/lib/fluent/plugin/parser_json.rb +26 -17
  31. data/lib/fluent/plugin/parser_msgpack.rb +24 -3
  32. data/lib/fluent/plugin_helper/http_server/server.rb +1 -1
  33. data/lib/fluent/plugin_helper/metrics.rb +2 -2
  34. data/lib/fluent/registry.rb +6 -6
  35. data/lib/fluent/test/output_test.rb +1 -1
  36. data/lib/fluent/unique_id.rb +1 -1
  37. data/lib/fluent/version.rb +1 -1
  38. data/templates/new_gem/fluent-plugin.gemspec.erb +6 -5
  39. metadata +109 -459
  40. data/.github/ISSUE_TEMPLATE/bug_report.yml +0 -71
  41. data/.github/ISSUE_TEMPLATE/config.yml +0 -5
  42. data/.github/ISSUE_TEMPLATE/feature_request.yml +0 -39
  43. data/.github/ISSUE_TEMPLATE.md +0 -17
  44. data/.github/PULL_REQUEST_TEMPLATE.md +0 -14
  45. data/.github/workflows/stale-actions.yml +0 -24
  46. data/.github/workflows/test.yml +0 -32
  47. data/.gitignore +0 -30
  48. data/Gemfile +0 -9
  49. data/fluentd.gemspec +0 -54
  50. data/test/command/test_binlog_reader.rb +0 -362
  51. data/test/command/test_ca_generate.rb +0 -70
  52. data/test/command/test_cap_ctl.rb +0 -100
  53. data/test/command/test_cat.rb +0 -128
  54. data/test/command/test_ctl.rb +0 -56
  55. data/test/command/test_fluentd.rb +0 -1291
  56. data/test/command/test_plugin_config_formatter.rb +0 -397
  57. data/test/command/test_plugin_generator.rb +0 -109
  58. data/test/compat/test_calls_super.rb +0 -166
  59. data/test/compat/test_parser.rb +0 -92
  60. data/test/config/assertions.rb +0 -42
  61. data/test/config/test_config_parser.rb +0 -551
  62. data/test/config/test_configurable.rb +0 -1784
  63. data/test/config/test_configure_proxy.rb +0 -604
  64. data/test/config/test_dsl.rb +0 -415
  65. data/test/config/test_element.rb +0 -518
  66. data/test/config/test_literal_parser.rb +0 -309
  67. data/test/config/test_plugin_configuration.rb +0 -56
  68. data/test/config/test_section.rb +0 -191
  69. data/test/config/test_system_config.rb +0 -195
  70. data/test/config/test_types.rb +0 -408
  71. data/test/counter/test_client.rb +0 -563
  72. data/test/counter/test_error.rb +0 -44
  73. data/test/counter/test_mutex_hash.rb +0 -179
  74. data/test/counter/test_server.rb +0 -589
  75. data/test/counter/test_store.rb +0 -258
  76. data/test/counter/test_validator.rb +0 -137
  77. data/test/helper.rb +0 -155
  78. data/test/helpers/fuzzy_assert.rb +0 -89
  79. data/test/helpers/process_extenstion.rb +0 -33
  80. data/test/log/test_console_adapter.rb +0 -110
  81. data/test/plugin/data/2010/01/20100102-030405.log +0 -0
  82. data/test/plugin/data/2010/01/20100102-030406.log +0 -0
  83. data/test/plugin/data/2010/01/20100102.log +0 -0
  84. data/test/plugin/data/log/bar +0 -0
  85. data/test/plugin/data/log/foo/bar.log +0 -0
  86. data/test/plugin/data/log/foo/bar2 +0 -0
  87. data/test/plugin/data/log/test.log +0 -0
  88. data/test/plugin/data/sd_file/config +0 -11
  89. data/test/plugin/data/sd_file/config.json +0 -17
  90. data/test/plugin/data/sd_file/config.yaml +0 -11
  91. data/test/plugin/data/sd_file/config.yml +0 -11
  92. data/test/plugin/data/sd_file/invalid_config.yml +0 -7
  93. data/test/plugin/in_tail/test_fifo.rb +0 -121
  94. data/test/plugin/in_tail/test_io_handler.rb +0 -150
  95. data/test/plugin/in_tail/test_position_file.rb +0 -346
  96. data/test/plugin/out_forward/test_ack_handler.rb +0 -140
  97. data/test/plugin/out_forward/test_connection_manager.rb +0 -145
  98. data/test/plugin/out_forward/test_handshake_protocol.rb +0 -112
  99. data/test/plugin/out_forward/test_load_balancer.rb +0 -106
  100. data/test/plugin/out_forward/test_socket_cache.rb +0 -174
  101. data/test/plugin/test_bare_output.rb +0 -131
  102. data/test/plugin/test_base.rb +0 -247
  103. data/test/plugin/test_buf_file.rb +0 -1314
  104. data/test/plugin/test_buf_file_single.rb +0 -898
  105. data/test/plugin/test_buf_memory.rb +0 -42
  106. data/test/plugin/test_buffer.rb +0 -1493
  107. data/test/plugin/test_buffer_chunk.rb +0 -209
  108. data/test/plugin/test_buffer_file_chunk.rb +0 -871
  109. data/test/plugin/test_buffer_file_single_chunk.rb +0 -611
  110. data/test/plugin/test_buffer_memory_chunk.rb +0 -339
  111. data/test/plugin/test_compressable.rb +0 -87
  112. data/test/plugin/test_file_util.rb +0 -96
  113. data/test/plugin/test_filter.rb +0 -368
  114. data/test/plugin/test_filter_grep.rb +0 -697
  115. data/test/plugin/test_filter_parser.rb +0 -731
  116. data/test/plugin/test_filter_record_transformer.rb +0 -577
  117. data/test/plugin/test_filter_stdout.rb +0 -207
  118. data/test/plugin/test_formatter_csv.rb +0 -136
  119. data/test/plugin/test_formatter_hash.rb +0 -38
  120. data/test/plugin/test_formatter_json.rb +0 -61
  121. data/test/plugin/test_formatter_ltsv.rb +0 -70
  122. data/test/plugin/test_formatter_msgpack.rb +0 -28
  123. data/test/plugin/test_formatter_out_file.rb +0 -116
  124. data/test/plugin/test_formatter_single_value.rb +0 -44
  125. data/test/plugin/test_formatter_tsv.rb +0 -76
  126. data/test/plugin/test_in_debug_agent.rb +0 -49
  127. data/test/plugin/test_in_exec.rb +0 -261
  128. data/test/plugin/test_in_forward.rb +0 -1178
  129. data/test/plugin/test_in_gc_stat.rb +0 -62
  130. data/test/plugin/test_in_http.rb +0 -1102
  131. data/test/plugin/test_in_monitor_agent.rb +0 -922
  132. data/test/plugin/test_in_object_space.rb +0 -66
  133. data/test/plugin/test_in_sample.rb +0 -190
  134. data/test/plugin/test_in_syslog.rb +0 -505
  135. data/test/plugin/test_in_tail.rb +0 -3288
  136. data/test/plugin/test_in_tcp.rb +0 -328
  137. data/test/plugin/test_in_udp.rb +0 -296
  138. data/test/plugin/test_in_unix.rb +0 -181
  139. data/test/plugin/test_input.rb +0 -137
  140. data/test/plugin/test_metadata.rb +0 -89
  141. data/test/plugin/test_metrics.rb +0 -294
  142. data/test/plugin/test_metrics_local.rb +0 -96
  143. data/test/plugin/test_multi_output.rb +0 -204
  144. data/test/plugin/test_out_copy.rb +0 -308
  145. data/test/plugin/test_out_exec.rb +0 -312
  146. data/test/plugin/test_out_exec_filter.rb +0 -606
  147. data/test/plugin/test_out_file.rb +0 -1038
  148. data/test/plugin/test_out_forward.rb +0 -1349
  149. data/test/plugin/test_out_http.rb +0 -429
  150. data/test/plugin/test_out_null.rb +0 -105
  151. data/test/plugin/test_out_relabel.rb +0 -28
  152. data/test/plugin/test_out_roundrobin.rb +0 -146
  153. data/test/plugin/test_out_secondary_file.rb +0 -458
  154. data/test/plugin/test_out_stdout.rb +0 -205
  155. data/test/plugin/test_out_stream.rb +0 -103
  156. data/test/plugin/test_output.rb +0 -1334
  157. data/test/plugin/test_output_as_buffered.rb +0 -2024
  158. data/test/plugin/test_output_as_buffered_backup.rb +0 -363
  159. data/test/plugin/test_output_as_buffered_compress.rb +0 -179
  160. data/test/plugin/test_output_as_buffered_overflow.rb +0 -250
  161. data/test/plugin/test_output_as_buffered_retries.rb +0 -966
  162. data/test/plugin/test_output_as_buffered_secondary.rb +0 -882
  163. data/test/plugin/test_output_as_standard.rb +0 -374
  164. data/test/plugin/test_owned_by.rb +0 -35
  165. data/test/plugin/test_parser.rb +0 -399
  166. data/test/plugin/test_parser_apache.rb +0 -42
  167. data/test/plugin/test_parser_apache2.rb +0 -47
  168. data/test/plugin/test_parser_apache_error.rb +0 -45
  169. data/test/plugin/test_parser_csv.rb +0 -200
  170. data/test/plugin/test_parser_json.rb +0 -138
  171. data/test/plugin/test_parser_labeled_tsv.rb +0 -160
  172. data/test/plugin/test_parser_multiline.rb +0 -111
  173. data/test/plugin/test_parser_nginx.rb +0 -88
  174. data/test/plugin/test_parser_none.rb +0 -52
  175. data/test/plugin/test_parser_regexp.rb +0 -284
  176. data/test/plugin/test_parser_syslog.rb +0 -650
  177. data/test/plugin/test_parser_tsv.rb +0 -122
  178. data/test/plugin/test_sd_file.rb +0 -228
  179. data/test/plugin/test_sd_srv.rb +0 -230
  180. data/test/plugin/test_storage.rb +0 -167
  181. data/test/plugin/test_storage_local.rb +0 -335
  182. data/test/plugin/test_string_util.rb +0 -26
  183. data/test/plugin_helper/data/cert/cert-key.pem +0 -27
  184. data/test/plugin_helper/data/cert/cert-with-CRLF.pem +0 -19
  185. data/test/plugin_helper/data/cert/cert-with-no-newline.pem +0 -19
  186. data/test/plugin_helper/data/cert/cert.pem +0 -19
  187. data/test/plugin_helper/data/cert/cert_chains/ca-cert-key.pem +0 -27
  188. data/test/plugin_helper/data/cert/cert_chains/ca-cert.pem +0 -20
  189. data/test/plugin_helper/data/cert/cert_chains/cert-key.pem +0 -27
  190. data/test/plugin_helper/data/cert/cert_chains/cert.pem +0 -40
  191. data/test/plugin_helper/data/cert/empty.pem +0 -0
  192. data/test/plugin_helper/data/cert/generate_cert.rb +0 -125
  193. data/test/plugin_helper/data/cert/with_ca/ca-cert-key-pass.pem +0 -30
  194. data/test/plugin_helper/data/cert/with_ca/ca-cert-key.pem +0 -27
  195. data/test/plugin_helper/data/cert/with_ca/ca-cert-pass.pem +0 -20
  196. data/test/plugin_helper/data/cert/with_ca/ca-cert.pem +0 -20
  197. data/test/plugin_helper/data/cert/with_ca/cert-key-pass.pem +0 -30
  198. data/test/plugin_helper/data/cert/with_ca/cert-key.pem +0 -27
  199. data/test/plugin_helper/data/cert/with_ca/cert-pass.pem +0 -21
  200. data/test/plugin_helper/data/cert/with_ca/cert.pem +0 -21
  201. data/test/plugin_helper/data/cert/without_ca/cert-key-pass.pem +0 -30
  202. data/test/plugin_helper/data/cert/without_ca/cert-key.pem +0 -27
  203. data/test/plugin_helper/data/cert/without_ca/cert-pass.pem +0 -20
  204. data/test/plugin_helper/data/cert/without_ca/cert.pem +0 -20
  205. data/test/plugin_helper/http_server/test_app.rb +0 -65
  206. data/test/plugin_helper/http_server/test_route.rb +0 -32
  207. data/test/plugin_helper/service_discovery/test_manager.rb +0 -93
  208. data/test/plugin_helper/service_discovery/test_round_robin_balancer.rb +0 -21
  209. data/test/plugin_helper/test_cert_option.rb +0 -25
  210. data/test/plugin_helper/test_child_process.rb +0 -862
  211. data/test/plugin_helper/test_compat_parameters.rb +0 -358
  212. data/test/plugin_helper/test_event_emitter.rb +0 -80
  213. data/test/plugin_helper/test_event_loop.rb +0 -52
  214. data/test/plugin_helper/test_extract.rb +0 -194
  215. data/test/plugin_helper/test_formatter.rb +0 -255
  216. data/test/plugin_helper/test_http_server_helper.rb +0 -372
  217. data/test/plugin_helper/test_inject.rb +0 -561
  218. data/test/plugin_helper/test_metrics.rb +0 -137
  219. data/test/plugin_helper/test_parser.rb +0 -264
  220. data/test/plugin_helper/test_record_accessor.rb +0 -238
  221. data/test/plugin_helper/test_retry_state.rb +0 -1006
  222. data/test/plugin_helper/test_server.rb +0 -1895
  223. data/test/plugin_helper/test_service_discovery.rb +0 -165
  224. data/test/plugin_helper/test_socket.rb +0 -146
  225. data/test/plugin_helper/test_storage.rb +0 -542
  226. data/test/plugin_helper/test_thread.rb +0 -164
  227. data/test/plugin_helper/test_timer.rb +0 -130
  228. data/test/scripts/exec_script.rb +0 -32
  229. data/test/scripts/fluent/plugin/formatter1/formatter_test1.rb +0 -7
  230. data/test/scripts/fluent/plugin/formatter2/formatter_test2.rb +0 -7
  231. data/test/scripts/fluent/plugin/formatter_known.rb +0 -8
  232. data/test/scripts/fluent/plugin/out_test.rb +0 -81
  233. data/test/scripts/fluent/plugin/out_test2.rb +0 -80
  234. data/test/scripts/fluent/plugin/parser_known.rb +0 -4
  235. data/test/test_capability.rb +0 -74
  236. data/test/test_clock.rb +0 -164
  237. data/test/test_config.rb +0 -369
  238. data/test/test_configdsl.rb +0 -148
  239. data/test/test_daemonizer.rb +0 -91
  240. data/test/test_engine.rb +0 -203
  241. data/test/test_event.rb +0 -531
  242. data/test/test_event_router.rb +0 -348
  243. data/test/test_event_time.rb +0 -199
  244. data/test/test_file_wrapper.rb +0 -53
  245. data/test/test_filter.rb +0 -121
  246. data/test/test_fluent_log_event_router.rb +0 -99
  247. data/test/test_formatter.rb +0 -369
  248. data/test/test_input.rb +0 -31
  249. data/test/test_log.rb +0 -1076
  250. data/test/test_match.rb +0 -148
  251. data/test/test_mixin.rb +0 -351
  252. data/test/test_msgpack_factory.rb +0 -50
  253. data/test/test_oj_options.rb +0 -55
  254. data/test/test_output.rb +0 -278
  255. data/test/test_plugin.rb +0 -251
  256. data/test/test_plugin_classes.rb +0 -370
  257. data/test/test_plugin_helper.rb +0 -81
  258. data/test/test_plugin_id.rb +0 -119
  259. data/test/test_process.rb +0 -14
  260. data/test/test_root_agent.rb +0 -951
  261. data/test/test_static_config_analysis.rb +0 -177
  262. data/test/test_supervisor.rb +0 -821
  263. data/test/test_test_drivers.rb +0 -136
  264. data/test/test_time_formatter.rb +0 -301
  265. data/test/test_time_parser.rb +0 -362
  266. data/test/test_tls.rb +0 -65
  267. data/test/test_unique_id.rb +0 -47
  268. data/test/test_variable_store.rb +0 -65
@@ -1,505 +0,0 @@
1
- require_relative '../helper'
2
- require 'fluent/test/driver/input'
3
- require 'fluent/plugin/in_syslog'
4
-
5
- class SyslogInputTest < Test::Unit::TestCase
6
- def setup
7
- Fluent::Test.setup
8
- @port = unused_port
9
- end
10
-
11
- def teardown
12
- @port = nil
13
- end
14
-
15
- def ipv4_config
16
- %[
17
- port #{@port}
18
- bind 127.0.0.1
19
- tag syslog
20
- ]
21
- end
22
-
23
- def ipv6_config
24
- %[
25
- port #{@port}
26
- bind ::1
27
- tag syslog
28
- ]
29
- end
30
-
31
- def create_driver(conf=ipv4_config)
32
- Fluent::Test::Driver::Input.new(Fluent::Plugin::SyslogInput).configure(conf)
33
- end
34
-
35
- data(
36
- ipv4: ['127.0.0.1', :ipv4, ::Socket::AF_INET],
37
- ipv6: ['::1', :ipv6, ::Socket::AF_INET6],
38
- )
39
- def test_configure(data)
40
- bind_addr, protocol, family = data
41
- config = send("#{protocol}_config")
42
- omit "IPv6 unavailable" if family == ::Socket::AF_INET6 && !ipv6_enabled?
43
-
44
- d = create_driver(config)
45
- assert_equal @port, d.instance.port
46
- assert_equal bind_addr, d.instance.bind
47
- end
48
-
49
- sub_test_case 'source_hostname_key and source_address_key features' do
50
- test 'resolve_hostname must be true with source_hostname_key' do
51
- assert_raise(Fluent::ConfigError) {
52
- create_driver(ipv4_config + <<EOS)
53
- resolve_hostname false
54
- source_hostname_key hostname
55
- EOS
56
- }
57
- end
58
-
59
- data('resolve_hostname' => 'resolve_hostname true',
60
- 'source_hostname_key' => 'source_hostname_key source_host')
61
- def test_configure_resolve_hostname(param)
62
- d = create_driver([ipv4_config, param].join("\n"))
63
- assert_true d.instance.resolve_hostname
64
- end
65
- end
66
-
67
- data('Use protocol_type' => ['protocol_type tcp', :tcp, :udp],
68
- 'Use transport' => ["<transport tcp>\n </transport>", nil, :tcp],
69
- 'Use transport and protocol' => ["protocol_type udp\n<transport tcp>\n </transport>", :udp, :tcp])
70
- def test_configure_protocol(param)
71
- conf, proto_type, transport_proto_type = *param
72
- d = create_driver([ipv4_config, conf].join("\n"))
73
-
74
- assert_equal(d.instance.protocol_type, proto_type)
75
- assert_equal(d.instance.transport_config.protocol, transport_proto_type)
76
- end
77
-
78
- # For backward compat
79
- def test_respect_protocol_type_than_transport
80
- d = create_driver([ipv4_config, "<transport tcp> \n</transport>", "protocol_type udp"].join("\n"))
81
- tests = create_test_case
82
-
83
- d.run(expect_emits: 2) do
84
- u = UDPSocket.new
85
- u.connect('127.0.0.1', @port)
86
- tests.each {|test|
87
- u.send(test['msg'], 0)
88
- }
89
- end
90
-
91
- assert(d.events.size > 0)
92
- compare_test_result(d.events, tests)
93
- end
94
-
95
-
96
- data(
97
- ipv4: ['127.0.0.1', :ipv4, ::Socket::AF_INET],
98
- ipv6: ['::1', :ipv6, ::Socket::AF_INET6],
99
- )
100
- def test_time_format(data)
101
- bind_addr, protocol, family = data
102
- config = send("#{protocol}_config")
103
- omit "IPv6 unavailable" if family == ::Socket::AF_INET6 && !ipv6_enabled?
104
-
105
- d = create_driver(config)
106
-
107
- tests = [
108
- {'msg' => '<6>Dec 11 00:00:00 localhost logger: foo', 'expected' => Fluent::EventTime.from_time(Time.strptime('Dec 11 00:00:00', '%b %d %H:%M:%S'))},
109
- {'msg' => '<6>Dec 1 00:00:00 localhost logger: foo', 'expected' => Fluent::EventTime.from_time(Time.strptime('Dec 1 00:00:00', '%b %d %H:%M:%S'))},
110
- ]
111
- d.run(expect_emits: 2) do
112
- u = UDPSocket.new(family)
113
- u.connect(bind_addr, @port)
114
- tests.each {|test|
115
- u.send(test['msg'], 0)
116
- }
117
- end
118
-
119
- events = d.events
120
- assert(events.size > 0)
121
- events.each_index {|i|
122
- assert_equal_event_time(tests[i]['expected'], events[i][1])
123
- }
124
- end
125
-
126
- def test_msg_size
127
- d = create_driver
128
- tests = create_test_case
129
-
130
- d.run(expect_emits: 2) do
131
- u = UDPSocket.new
132
- u.connect('127.0.0.1', @port)
133
- tests.each {|test|
134
- u.send(test['msg'], 0)
135
- }
136
- end
137
-
138
- assert(d.events.size > 0)
139
- compare_test_result(d.events, tests)
140
- end
141
-
142
- def test_msg_size_udp_for_large_msg
143
- d = create_driver(ipv4_config + %[
144
- message_length_limit 5k
145
- ])
146
- tests = create_test_case(large_message: true)
147
-
148
- d.run(expect_emits: 3) do
149
- u = UDPSocket.new
150
- u.connect('127.0.0.1', @port)
151
- tests.each {|test|
152
- u.send(test['msg'], 0)
153
- }
154
- end
155
-
156
- assert(d.events.size > 0)
157
- compare_test_result(d.events, tests)
158
- end
159
-
160
- def test_msg_size_with_tcp
161
- d = create_driver([ipv4_config, "<transport tcp> \n</transport>"].join("\n"))
162
- tests = create_test_case
163
-
164
- d.run(expect_emits: 2) do
165
- tests.each {|test|
166
- TCPSocket.open('127.0.0.1', @port) do |s|
167
- s.send(test['msg'], 0)
168
- end
169
- }
170
- end
171
-
172
- assert(d.events.size > 0)
173
- compare_test_result(d.events, tests)
174
- end
175
-
176
- def test_emit_rfc5452
177
- d = create_driver([ipv4_config, "facility_key pri\n<parse>\n message_format rfc5424\nwith_priority true\n</parse>"].join("\n"))
178
- msg = '<1>1 2017-02-06T13:14:15.003Z myhostname 02abaf0687f5 10339 02abaf0687f5 - method=POST db=0.00'
179
-
180
- d.run(expect_emits: 1, timeout: 2) do
181
- u = UDPSocket.new
182
- u.connect('127.0.0.1', @port)
183
- u.send(msg, 0)
184
- end
185
-
186
- tag, _, event = d.events[0]
187
- assert_equal('syslog.kern.alert', tag)
188
- assert_equal('kern', event['pri'])
189
- end
190
-
191
- def test_msg_size_with_same_tcp_connection
192
- d = create_driver([ipv4_config, "<transport tcp> \n</transport>"].join("\n"))
193
- tests = create_test_case
194
-
195
- d.run(expect_emits: 2) do
196
- TCPSocket.open('127.0.0.1', @port) do |s|
197
- tests.each {|test|
198
- s.send(test['msg'], 0)
199
- }
200
- end
201
- end
202
-
203
- assert(d.events.size > 0)
204
- compare_test_result(d.events, tests)
205
- end
206
-
207
- def test_msg_size_with_json_format
208
- d = create_driver([ipv4_config, 'format json'].join("\n"))
209
- time = Time.parse('2013-09-18 12:00:00 +0900').to_i
210
- tests = ['Hello!', 'Syslog!'].map { |msg|
211
- event = {'time' => time, 'message' => msg}
212
- {'msg' => '<6>' + event.to_json + "\n", 'expected' => msg}
213
- }
214
-
215
- d.run(expect_emits: 2) do
216
- u = UDPSocket.new
217
- u.connect('127.0.0.1', @port)
218
- tests.each {|test|
219
- u.send(test['msg'], 0)
220
- }
221
- end
222
-
223
- assert(d.events.size > 0)
224
- compare_test_result(d.events, tests)
225
- end
226
-
227
- def test_msg_size_with_include_source_host
228
- d = create_driver([ipv4_config, 'include_source_host true'].join("\n"))
229
- tests = create_test_case
230
-
231
- host = nil
232
- d.run(expect_emits: 2) do
233
- u = UDPSocket.new
234
- u.connect('127.0.0.1', @port)
235
- host = u.peeraddr[2]
236
- tests.each {|test|
237
- u.send(test['msg'], 0)
238
- }
239
- end
240
-
241
- assert(d.events.size > 0)
242
- compare_test_result(d.events, tests, {host: host})
243
- end
244
-
245
- data(
246
- severity_key: 'severity_key',
247
- priority_key: 'priority_key',
248
- )
249
- def test_msg_size_with_severity_key(param_name)
250
- d = create_driver([ipv4_config, "#{param_name} severity"].join("\n"))
251
- tests = create_test_case
252
-
253
- severity = 'info'
254
- d.run(expect_emits: 2) do
255
- u = UDPSocket.new
256
- u.connect('127.0.0.1', @port)
257
- tests.each {|test|
258
- u.send(test['msg'], 0)
259
- }
260
- end
261
-
262
- assert(d.events.size > 0)
263
- compare_test_result(d.events, tests, {severity: severity})
264
- end
265
-
266
- def test_msg_size_with_facility_key
267
- d = create_driver([ipv4_config, 'facility_key facility'].join("\n"))
268
- tests = create_test_case
269
-
270
- facility = 'kern'
271
- d.run(expect_emits: 2) do
272
- u = UDPSocket.new
273
- u.connect('127.0.0.1', @port)
274
- tests.each {|test|
275
- u.send(test['msg'], 0)
276
- }
277
- end
278
-
279
- assert(d.events.size > 0)
280
- compare_test_result(d.events, tests, {facility: facility})
281
- end
282
-
283
- def test_msg_size_with_source_address_key
284
- d = create_driver([ipv4_config, 'source_address_key source_address'].join("\n"))
285
- tests = create_test_case
286
-
287
- address = nil
288
- d.run(expect_emits: 2) do
289
- u = UDPSocket.new
290
- u.connect('127.0.0.1', @port)
291
- address = u.peeraddr[3]
292
- tests.each {|test|
293
- u.send(test['msg'], 0)
294
- }
295
- end
296
-
297
- assert(d.events.size > 0)
298
- compare_test_result(d.events, tests, {address: address})
299
- end
300
-
301
- def test_msg_size_with_source_hostname_key
302
- d = create_driver([ipv4_config, 'source_hostname_key source_hostname'].join("\n"))
303
- tests = create_test_case
304
-
305
- hostname = nil
306
- d.run(expect_emits: 2) do
307
- u = UDPSocket.new
308
- u.do_not_reverse_lookup = false
309
- u.connect('127.0.0.1', @port)
310
- hostname = u.peeraddr[2]
311
- tests.each {|test|
312
- u.send(test['msg'], 0)
313
- }
314
- end
315
-
316
- assert(d.events.size > 0)
317
- compare_test_result(d.events, tests, {hostname: hostname})
318
- end
319
-
320
- def create_test_case(large_message: false)
321
- # actual syslog message has "\n"
322
- if large_message
323
- [
324
- {'msg' => '<6>Sep 10 00:00:00 localhost logger: ' + 'x' * 100 + "\n", 'expected' => 'x' * 100},
325
- {'msg' => '<6>Sep 10 00:00:00 localhost logger: ' + 'x' * 1024 + "\n", 'expected' => 'x' * 1024},
326
- {'msg' => '<6>Sep 10 00:00:00 localhost logger: ' + 'x' * 4096 + "\n", 'expected' => 'x' * 4096},
327
- ]
328
- else
329
- [
330
- {'msg' => '<6>Sep 10 00:00:00 localhost logger: ' + 'x' * 100 + "\n", 'expected' => 'x' * 100},
331
- {'msg' => '<6>Sep 10 00:00:00 localhost logger: ' + 'x' * 1024 + "\n", 'expected' => 'x' * 1024},
332
- ]
333
- end
334
- end
335
-
336
- def compare_test_result(events, tests, options = {})
337
- events.each_index { |i|
338
- assert_equal('syslog.kern.info', events[i][0]) # <6> means kern.info
339
- assert_equal(tests[i]['expected'], events[i][2]['message'])
340
- assert_equal(options[:host], events[i][2]['source_host']) if options[:host]
341
- assert_equal(options[:address], events[i][2]['source_address']) if options[:address]
342
- assert_equal(options[:hostname], events[i][2]['source_hostname']) if options[:hostname]
343
- assert_equal(options[:severity], events[i][2]['severity']) if options[:severity]
344
- assert_equal(options[:facility], events[i][2]['facility']) if options[:facility]
345
- }
346
- end
347
-
348
- sub_test_case 'octet counting frame' do
349
- def test_msg_size_with_tcp
350
- d = create_driver([ipv4_config, "<transport tcp> \n</transport>", 'frame_type octet_count'].join("\n"))
351
- tests = create_test_case
352
-
353
- d.run(expect_emits: 2) do
354
- tests.each {|test|
355
- TCPSocket.open('127.0.0.1', @port) do |s|
356
- s.send(test['msg'], 0)
357
- end
358
- }
359
- end
360
-
361
- assert(d.events.size > 0)
362
- compare_test_result(d.events, tests)
363
- end
364
-
365
- def test_msg_size_with_same_tcp_connection
366
- d = create_driver([ipv4_config, "<transport tcp> \n</transport>", 'frame_type octet_count'].join("\n"))
367
- tests = create_test_case
368
-
369
- d.run(expect_emits: 2) do
370
- TCPSocket.open('127.0.0.1', @port) do |s|
371
- tests.each {|test|
372
- s.send(test['msg'], 0)
373
- }
374
- end
375
- end
376
-
377
- assert(d.events.size > 0)
378
- compare_test_result(d.events, tests)
379
- end
380
-
381
- def create_test_case(large_message: false)
382
- msgs = [
383
- {'msg' => '<6>Sep 10 00:00:00 localhost logger: ' + 'x' * 100, 'expected' => 'x' * 100},
384
- {'msg' => '<6>Sep 10 00:00:00 localhost logger: ' + 'x' * 1024, 'expected' => 'x' * 1024},
385
- ]
386
- msgs.each { |msg|
387
- m = msg['msg']
388
- msg['msg'] = "#{m.size} #{m}"
389
- }
390
- msgs
391
- end
392
- end
393
-
394
- def create_unmatched_lines_test_case
395
- [
396
- # valid message
397
- {'msg' => '<6>Sep 10 00:00:00 localhost logger: xxx', 'expected' => {'host'=>'localhost', 'ident'=>'logger', 'message'=>'xxx'}},
398
- # missing priority
399
- {'msg' => 'hello world', 'expected' => {'unmatched_line' => 'hello world'}},
400
- # timestamp parsing failure
401
- {'msg' => '<6>ZZZ 99 99:99:99 localhost logger: xxx', 'expected' => {'unmatched_line' => '<6>ZZZ 99 99:99:99 localhost logger: xxx'}},
402
- ]
403
- end
404
-
405
- def compare_unmatched_lines_test_result(events, tests, options = {})
406
- events.each_index { |i|
407
- tests[i]['expected'].each { |k,v|
408
- assert_equal v, events[i][2][k], "No key <#{k}> in response or value mismatch"
409
- }
410
- assert_equal('syslog.unmatched', events[i][0], 'tag does not match syslog.unmatched') unless i==0
411
- assert_equal(options[:address], events[i][2]['source_address'], 'response has no source_address or mismatch') if options[:address]
412
- assert_equal(options[:hostname], events[i][2]['source_hostname'], 'response has no source_hostname or mismatch') if options[:hostname]
413
- }
414
- end
415
-
416
- def test_emit_unmatched_lines
417
- d = create_driver([ipv4_config, 'emit_unmatched_lines true'].join("\n"))
418
- tests = create_unmatched_lines_test_case
419
-
420
- d.run(expect_emits: 3) do
421
- u = UDPSocket.new
422
- u.do_not_reverse_lookup = false
423
- u.connect('127.0.0.1', @port)
424
- tests.each {|test|
425
- u.send(test['msg'], 0)
426
- }
427
- end
428
-
429
- assert_equal tests.size, d.events.size
430
- compare_unmatched_lines_test_result(d.events, tests)
431
- end
432
-
433
- def test_emit_unmatched_lines_with_hostname
434
- d = create_driver([ipv4_config, 'emit_unmatched_lines true', 'source_hostname_key source_hostname'].join("\n"))
435
- tests = create_unmatched_lines_test_case
436
-
437
- hostname = nil
438
- d.run(expect_emits: 3) do
439
- u = UDPSocket.new
440
- u.do_not_reverse_lookup = false
441
- u.connect('127.0.0.1', @port)
442
- hostname = u.peeraddr[2]
443
- tests.each {|test|
444
- u.send(test['msg'], 0)
445
- }
446
- end
447
-
448
- assert_equal tests.size, d.events.size
449
- compare_unmatched_lines_test_result(d.events, tests, {hostname: hostname})
450
- end
451
-
452
- def test_emit_unmatched_lines_with_address
453
- d = create_driver([ipv4_config, 'emit_unmatched_lines true', 'source_address_key source_address'].join("\n"))
454
- tests = create_unmatched_lines_test_case
455
-
456
- address = nil
457
- d.run(expect_emits: 3) do
458
- u = UDPSocket.new
459
- u.do_not_reverse_lookup = false
460
- u.connect('127.0.0.1', @port)
461
- address = u.peeraddr[3]
462
- tests.each {|test|
463
- u.send(test['msg'], 0)
464
- }
465
- end
466
-
467
- assert_equal tests.size, d.events.size
468
- compare_unmatched_lines_test_result(d.events, tests, {address: address})
469
- end
470
-
471
- def test_send_keepalive_packet_is_disabled_by_default
472
- d = create_driver(ipv4_config + %[
473
- <transport tcp>
474
- </transport>
475
- protocol tcp
476
- ])
477
- assert_false d.instance.send_keepalive_packet
478
- end
479
-
480
- def test_send_keepalive_packet_can_be_enabled
481
- addr = "127.0.0.1"
482
- d = create_driver(ipv4_config + %[
483
- <transport tcp>
484
- </transport>
485
- send_keepalive_packet true
486
- ])
487
- assert_true d.instance.send_keepalive_packet
488
- mock.proxy(d.instance).server_create_connection(
489
- :in_syslog_tcp_server, @port,
490
- bind: addr,
491
- resolve_name: nil,
492
- send_keepalive_packet: true)
493
- d.run do
494
- TCPSocket.open(addr, @port)
495
- end
496
- end
497
-
498
- def test_send_keepalive_packet_can_not_be_enabled_for_udp
499
- assert_raise(Fluent::ConfigError) do
500
- create_driver(ipv4_config + %[
501
- send_keepalive_packet true
502
- ])
503
- end
504
- end
505
- end