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.

Files changed (428) hide show
  1. checksums.yaml +5 -5
  2. data/.github/ISSUE_TEMPLATE/bug_report.md +39 -0
  3. data/.github/ISSUE_TEMPLATE/feature_request.md +23 -0
  4. data/.github/ISSUE_TEMPLATE.md +17 -0
  5. data/.github/PULL_REQUEST_TEMPLATE.md +13 -0
  6. data/.gitignore +5 -0
  7. data/.gitlab/cicd-template.yaml +10 -0
  8. data/.gitlab-ci.yml +147 -0
  9. data/.travis.yml +56 -20
  10. data/ADOPTERS.md +5 -0
  11. data/CHANGELOG.md +1369 -0
  12. data/CONTRIBUTING.md +16 -5
  13. data/GOVERNANCE.md +55 -0
  14. data/Gemfile +5 -0
  15. data/GithubWorkflow.md +78 -0
  16. data/LICENSE +202 -0
  17. data/MAINTAINERS.md +7 -0
  18. data/README.md +23 -11
  19. data/Rakefile +48 -2
  20. data/Vagrantfile +17 -0
  21. data/appveyor.yml +37 -0
  22. data/bin/fluent-binlog-reader +7 -0
  23. data/bin/fluent-ca-generate +6 -0
  24. data/bin/fluent-plugin-config-format +5 -0
  25. data/bin/fluent-plugin-generate +5 -0
  26. data/bin/fluentd +3 -0
  27. data/code-of-conduct.md +3 -0
  28. data/example/copy_roundrobin.conf +39 -0
  29. data/example/counter.conf +18 -0
  30. data/example/in_dummy_blocks.conf +17 -0
  31. data/example/in_dummy_with_compression.conf +23 -0
  32. data/example/in_forward.conf +7 -0
  33. data/example/in_forward_client.conf +37 -0
  34. data/example/in_forward_shared_key.conf +15 -0
  35. data/example/in_forward_tls.conf +14 -0
  36. data/example/in_forward_users.conf +24 -0
  37. data/example/in_forward_workers.conf +21 -0
  38. data/example/in_http.conf +3 -1
  39. data/example/in_out_forward.conf +17 -0
  40. data/example/logevents.conf +25 -0
  41. data/example/multi_filters.conf +61 -0
  42. data/example/out_exec_filter.conf +42 -0
  43. data/example/out_forward.conf +13 -13
  44. data/example/out_forward_buf_file.conf +23 -0
  45. data/example/out_forward_client.conf +109 -0
  46. data/example/out_forward_heartbeat_none.conf +16 -0
  47. data/example/out_forward_shared_key.conf +36 -0
  48. data/example/out_forward_tls.conf +18 -0
  49. data/example/out_forward_users.conf +65 -0
  50. data/example/out_null.conf +36 -0
  51. data/example/secondary_file.conf +42 -0
  52. data/example/suppress_config_dump.conf +7 -0
  53. data/example/worker_section.conf +36 -0
  54. data/fluent.conf +29 -0
  55. data/fluentd.gemspec +21 -11
  56. data/lib/fluent/agent.rb +67 -90
  57. data/lib/fluent/clock.rb +62 -0
  58. data/lib/fluent/command/binlog_reader.rb +244 -0
  59. data/lib/fluent/command/ca_generate.rb +181 -0
  60. data/lib/fluent/command/cat.rb +42 -18
  61. data/lib/fluent/command/debug.rb +12 -10
  62. data/lib/fluent/command/fluentd.rb +153 -5
  63. data/lib/fluent/command/plugin_config_formatter.rb +292 -0
  64. data/lib/fluent/command/plugin_generator.rb +324 -0
  65. data/lib/fluent/compat/call_super_mixin.rb +67 -0
  66. data/lib/fluent/compat/detach_process_mixin.rb +33 -0
  67. data/lib/fluent/compat/exec_util.rb +129 -0
  68. data/lib/fluent/compat/file_util.rb +54 -0
  69. data/lib/fluent/compat/filter.rb +68 -0
  70. data/lib/fluent/compat/formatter.rb +111 -0
  71. data/lib/fluent/compat/formatter_utils.rb +85 -0
  72. data/lib/fluent/compat/handle_tag_and_time_mixin.rb +62 -0
  73. data/lib/fluent/compat/handle_tag_name_mixin.rb +53 -0
  74. data/lib/fluent/compat/input.rb +49 -0
  75. data/lib/fluent/compat/output.rb +718 -0
  76. data/lib/fluent/compat/output_chain.rb +60 -0
  77. data/lib/fluent/compat/parser.rb +310 -0
  78. data/lib/fluent/compat/parser_utils.rb +40 -0
  79. data/lib/fluent/compat/propagate_default.rb +62 -0
  80. data/lib/fluent/compat/record_filter_mixin.rb +34 -0
  81. data/lib/fluent/compat/set_tag_key_mixin.rb +50 -0
  82. data/lib/fluent/compat/set_time_key_mixin.rb +69 -0
  83. data/lib/fluent/compat/socket_util.rb +165 -0
  84. data/lib/fluent/compat/string_util.rb +34 -0
  85. data/lib/fluent/compat/structured_format_mixin.rb +26 -0
  86. data/lib/fluent/compat/type_converter.rb +90 -0
  87. data/lib/fluent/config/configure_proxy.rb +210 -62
  88. data/lib/fluent/config/dsl.rb +12 -5
  89. data/lib/fluent/config/element.rb +107 -9
  90. data/lib/fluent/config/literal_parser.rb +9 -3
  91. data/lib/fluent/config/parser.rb +4 -4
  92. data/lib/fluent/config/section.rb +51 -14
  93. data/lib/fluent/config/types.rb +28 -13
  94. data/lib/fluent/config/v1_parser.rb +3 -5
  95. data/lib/fluent/config.rb +23 -20
  96. data/lib/fluent/configurable.rb +79 -21
  97. data/lib/fluent/counter/base_socket.rb +46 -0
  98. data/lib/fluent/counter/client.rb +297 -0
  99. data/lib/fluent/counter/error.rb +86 -0
  100. data/lib/fluent/counter/mutex_hash.rb +163 -0
  101. data/lib/fluent/counter/server.rb +273 -0
  102. data/lib/fluent/counter/store.rb +205 -0
  103. data/lib/fluent/counter/validator.rb +145 -0
  104. data/lib/fluent/counter.rb +23 -0
  105. data/lib/fluent/daemon.rb +15 -0
  106. data/lib/fluent/engine.rb +102 -65
  107. data/lib/fluent/env.rb +7 -3
  108. data/lib/fluent/error.rb +30 -0
  109. data/lib/fluent/event.rb +197 -21
  110. data/lib/fluent/event_router.rb +93 -10
  111. data/lib/fluent/filter.rb +2 -50
  112. data/lib/fluent/formatter.rb +4 -293
  113. data/lib/fluent/input.rb +2 -32
  114. data/lib/fluent/label.rb +10 -2
  115. data/lib/fluent/load.rb +3 -3
  116. data/lib/fluent/log.rb +348 -81
  117. data/lib/fluent/match.rb +37 -36
  118. data/lib/fluent/mixin.rb +12 -176
  119. data/lib/fluent/msgpack_factory.rb +62 -0
  120. data/lib/fluent/output.rb +10 -612
  121. data/lib/fluent/output_chain.rb +23 -0
  122. data/lib/fluent/parser.rb +4 -800
  123. data/lib/fluent/plugin/bare_output.rb +63 -0
  124. data/lib/fluent/plugin/base.rb +192 -0
  125. data/lib/fluent/plugin/buf_file.rb +128 -174
  126. data/lib/fluent/plugin/buf_memory.rb +9 -92
  127. data/lib/fluent/plugin/buffer/chunk.rb +221 -0
  128. data/lib/fluent/plugin/buffer/file_chunk.rb +383 -0
  129. data/lib/fluent/plugin/buffer/memory_chunk.rb +90 -0
  130. data/lib/fluent/plugin/buffer.rb +779 -0
  131. data/lib/fluent/plugin/compressable.rb +92 -0
  132. data/lib/fluent/plugin/exec_util.rb +3 -108
  133. data/lib/fluent/plugin/file_util.rb +4 -34
  134. data/lib/fluent/plugin/file_wrapper.rb +120 -0
  135. data/lib/fluent/plugin/filter.rb +93 -0
  136. data/lib/fluent/plugin/filter_grep.rb +117 -34
  137. data/lib/fluent/plugin/filter_parser.rb +85 -62
  138. data/lib/fluent/plugin/filter_record_transformer.rb +27 -39
  139. data/lib/fluent/plugin/filter_stdout.rb +15 -12
  140. data/lib/fluent/plugin/formatter.rb +50 -0
  141. data/lib/fluent/plugin/formatter_csv.rb +52 -0
  142. data/lib/fluent/plugin/formatter_hash.rb +33 -0
  143. data/lib/fluent/plugin/formatter_json.rb +55 -0
  144. data/lib/fluent/plugin/formatter_ltsv.rb +42 -0
  145. data/lib/fluent/plugin/formatter_msgpack.rb +33 -0
  146. data/lib/fluent/plugin/formatter_out_file.rb +51 -0
  147. data/lib/fluent/plugin/formatter_single_value.rb +34 -0
  148. data/lib/fluent/plugin/formatter_stdout.rb +76 -0
  149. data/lib/fluent/plugin/formatter_tsv.rb +38 -0
  150. data/lib/fluent/plugin/in_debug_agent.rb +17 -6
  151. data/lib/fluent/plugin/in_dummy.rb +47 -20
  152. data/lib/fluent/plugin/in_exec.rb +55 -123
  153. data/lib/fluent/plugin/in_forward.rb +299 -216
  154. data/lib/fluent/plugin/in_gc_stat.rb +14 -36
  155. data/lib/fluent/plugin/in_http.rb +204 -91
  156. data/lib/fluent/plugin/in_monitor_agent.rb +186 -258
  157. data/lib/fluent/plugin/in_object_space.rb +13 -41
  158. data/lib/fluent/plugin/in_syslog.rb +112 -134
  159. data/lib/fluent/plugin/in_tail.rb +408 -745
  160. data/lib/fluent/plugin/in_tcp.rb +66 -9
  161. data/lib/fluent/plugin/in_udp.rb +60 -11
  162. data/lib/fluent/plugin/{in_stream.rb → in_unix.rb} +8 -4
  163. data/lib/fluent/plugin/input.rb +37 -0
  164. data/lib/fluent/plugin/multi_output.rb +158 -0
  165. data/lib/fluent/plugin/out_copy.rb +23 -35
  166. data/lib/fluent/plugin/out_exec.rb +67 -70
  167. data/lib/fluent/plugin/out_exec_filter.rb +204 -271
  168. data/lib/fluent/plugin/out_file.rb +267 -73
  169. data/lib/fluent/plugin/out_forward.rb +854 -325
  170. data/lib/fluent/plugin/out_null.rb +42 -9
  171. data/lib/fluent/plugin/out_relabel.rb +9 -5
  172. data/lib/fluent/plugin/out_roundrobin.rb +18 -37
  173. data/lib/fluent/plugin/out_secondary_file.rb +133 -0
  174. data/lib/fluent/plugin/out_stdout.rb +43 -10
  175. data/lib/fluent/plugin/out_stream.rb +7 -2
  176. data/lib/fluent/plugin/output.rb +1498 -0
  177. data/lib/fluent/plugin/owned_by_mixin.rb +42 -0
  178. data/lib/fluent/plugin/parser.rb +191 -0
  179. data/lib/fluent/plugin/parser_apache.rb +28 -0
  180. data/lib/fluent/plugin/parser_apache2.rb +88 -0
  181. data/lib/fluent/plugin/parser_apache_error.rb +26 -0
  182. data/lib/fluent/plugin/parser_csv.rb +39 -0
  183. data/lib/fluent/plugin/parser_json.rb +94 -0
  184. data/lib/fluent/plugin/parser_ltsv.rb +49 -0
  185. data/lib/fluent/plugin/parser_msgpack.rb +50 -0
  186. data/lib/fluent/plugin/parser_multiline.rb +106 -0
  187. data/lib/fluent/plugin/parser_nginx.rb +28 -0
  188. data/lib/fluent/plugin/parser_none.rb +36 -0
  189. data/lib/fluent/plugin/parser_regexp.rb +68 -0
  190. data/lib/fluent/plugin/parser_syslog.rb +142 -0
  191. data/lib/fluent/plugin/parser_tsv.rb +42 -0
  192. data/lib/fluent/plugin/socket_util.rb +3 -143
  193. data/lib/fluent/plugin/storage.rb +84 -0
  194. data/lib/fluent/plugin/storage_local.rb +164 -0
  195. data/lib/fluent/plugin/string_util.rb +3 -15
  196. data/lib/fluent/plugin.rb +122 -121
  197. data/lib/fluent/plugin_helper/cert_option.rb +178 -0
  198. data/lib/fluent/plugin_helper/child_process.rb +364 -0
  199. data/lib/fluent/plugin_helper/compat_parameters.rb +333 -0
  200. data/lib/fluent/plugin_helper/counter.rb +51 -0
  201. data/lib/fluent/plugin_helper/event_emitter.rb +93 -0
  202. data/lib/fluent/plugin_helper/event_loop.rb +170 -0
  203. data/lib/fluent/plugin_helper/extract.rb +104 -0
  204. data/lib/fluent/plugin_helper/formatter.rb +147 -0
  205. data/lib/fluent/plugin_helper/http_server/app.rb +79 -0
  206. data/lib/fluent/plugin_helper/http_server/compat/server.rb +81 -0
  207. data/lib/fluent/plugin_helper/http_server/compat/webrick_handler.rb +58 -0
  208. data/lib/fluent/plugin_helper/http_server/methods.rb +35 -0
  209. data/lib/fluent/plugin_helper/http_server/request.rb +42 -0
  210. data/lib/fluent/plugin_helper/http_server/router.rb +54 -0
  211. data/lib/fluent/plugin_helper/http_server/server.rb +87 -0
  212. data/lib/fluent/plugin_helper/http_server.rb +76 -0
  213. data/lib/fluent/plugin_helper/inject.rb +151 -0
  214. data/lib/fluent/plugin_helper/parser.rb +147 -0
  215. data/lib/fluent/plugin_helper/record_accessor.rb +210 -0
  216. data/lib/fluent/plugin_helper/retry_state.rb +205 -0
  217. data/lib/fluent/plugin_helper/server.rb +807 -0
  218. data/lib/fluent/plugin_helper/socket.rb +250 -0
  219. data/lib/fluent/plugin_helper/socket_option.rb +80 -0
  220. data/lib/fluent/plugin_helper/storage.rb +349 -0
  221. data/lib/fluent/plugin_helper/thread.rb +179 -0
  222. data/lib/fluent/plugin_helper/timer.rb +92 -0
  223. data/lib/fluent/plugin_helper.rb +73 -0
  224. data/lib/fluent/plugin_id.rb +80 -0
  225. data/lib/fluent/process.rb +3 -489
  226. data/lib/fluent/registry.rb +52 -10
  227. data/lib/fluent/root_agent.rb +204 -42
  228. data/lib/fluent/supervisor.rb +597 -359
  229. data/lib/fluent/system_config.rb +131 -42
  230. data/lib/fluent/test/base.rb +6 -54
  231. data/lib/fluent/test/driver/base.rb +224 -0
  232. data/lib/fluent/test/driver/base_owned.rb +70 -0
  233. data/lib/fluent/test/driver/base_owner.rb +135 -0
  234. data/lib/fluent/test/driver/event_feeder.rb +98 -0
  235. data/lib/fluent/test/driver/filter.rb +57 -0
  236. data/lib/fluent/test/driver/formatter.rb +30 -0
  237. data/lib/fluent/test/driver/input.rb +31 -0
  238. data/lib/fluent/test/driver/multi_output.rb +53 -0
  239. data/lib/fluent/test/driver/output.rb +102 -0
  240. data/lib/fluent/test/driver/parser.rb +30 -0
  241. data/lib/fluent/test/driver/test_event_router.rb +45 -0
  242. data/lib/fluent/test/filter_test.rb +0 -1
  243. data/lib/fluent/test/formatter_test.rb +4 -1
  244. data/lib/fluent/test/helpers.rb +58 -10
  245. data/lib/fluent/test/input_test.rb +27 -19
  246. data/lib/fluent/test/log.rb +79 -0
  247. data/lib/fluent/test/output_test.rb +28 -39
  248. data/lib/fluent/test/parser_test.rb +3 -1
  249. data/lib/fluent/test/startup_shutdown.rb +46 -0
  250. data/lib/fluent/test.rb +33 -1
  251. data/lib/fluent/time.rb +450 -1
  252. data/lib/fluent/timezone.rb +27 -3
  253. data/lib/fluent/{status.rb → unique_id.rb} +15 -24
  254. data/lib/fluent/version.rb +1 -1
  255. data/lib/fluent/winsvc.rb +85 -0
  256. data/templates/new_gem/Gemfile +3 -0
  257. data/templates/new_gem/README.md.erb +43 -0
  258. data/templates/new_gem/Rakefile +13 -0
  259. data/templates/new_gem/fluent-plugin.gemspec.erb +27 -0
  260. data/templates/new_gem/lib/fluent/plugin/filter.rb.erb +14 -0
  261. data/templates/new_gem/lib/fluent/plugin/formatter.rb.erb +14 -0
  262. data/templates/new_gem/lib/fluent/plugin/input.rb.erb +11 -0
  263. data/templates/new_gem/lib/fluent/plugin/output.rb.erb +11 -0
  264. data/templates/new_gem/lib/fluent/plugin/parser.rb.erb +15 -0
  265. data/templates/new_gem/test/helper.rb.erb +8 -0
  266. data/templates/new_gem/test/plugin/test_filter.rb.erb +18 -0
  267. data/templates/new_gem/test/plugin/test_formatter.rb.erb +18 -0
  268. data/templates/new_gem/test/plugin/test_input.rb.erb +18 -0
  269. data/templates/new_gem/test/plugin/test_output.rb.erb +18 -0
  270. data/templates/new_gem/test/plugin/test_parser.rb.erb +18 -0
  271. data/templates/plugin_config_formatter/param.md-compact.erb +25 -0
  272. data/templates/plugin_config_formatter/param.md.erb +34 -0
  273. data/templates/plugin_config_formatter/section.md.erb +12 -0
  274. data/test/command/test_binlog_reader.rb +346 -0
  275. data/test/command/test_ca_generate.rb +70 -0
  276. data/test/command/test_fluentd.rb +901 -0
  277. data/test/command/test_plugin_config_formatter.rb +276 -0
  278. data/test/command/test_plugin_generator.rb +92 -0
  279. data/test/compat/test_calls_super.rb +166 -0
  280. data/test/compat/test_parser.rb +92 -0
  281. data/test/config/test_config_parser.rb +126 -2
  282. data/test/config/test_configurable.rb +946 -187
  283. data/test/config/test_configure_proxy.rb +424 -74
  284. data/test/config/test_dsl.rb +11 -11
  285. data/test/config/test_element.rb +500 -0
  286. data/test/config/test_literal_parser.rb +8 -0
  287. data/test/config/test_plugin_configuration.rb +56 -0
  288. data/test/config/test_section.rb +79 -7
  289. data/test/config/test_system_config.rb +122 -35
  290. data/test/config/test_types.rb +38 -0
  291. data/test/counter/test_client.rb +559 -0
  292. data/test/counter/test_error.rb +44 -0
  293. data/test/counter/test_mutex_hash.rb +179 -0
  294. data/test/counter/test_server.rb +589 -0
  295. data/test/counter/test_store.rb +258 -0
  296. data/test/counter/test_validator.rb +137 -0
  297. data/test/helper.rb +89 -6
  298. data/test/helpers/fuzzy_assert.rb +89 -0
  299. data/test/plugin/test_bare_output.rb +118 -0
  300. data/test/plugin/test_base.rb +115 -0
  301. data/test/plugin/test_buf_file.rb +823 -460
  302. data/test/plugin/test_buf_memory.rb +32 -194
  303. data/test/plugin/test_buffer.rb +1233 -0
  304. data/test/plugin/test_buffer_chunk.rb +198 -0
  305. data/test/plugin/test_buffer_file_chunk.rb +844 -0
  306. data/test/plugin/test_buffer_memory_chunk.rb +338 -0
  307. data/test/plugin/test_compressable.rb +84 -0
  308. data/test/plugin/test_filter.rb +357 -0
  309. data/test/plugin/test_filter_grep.rb +540 -29
  310. data/test/plugin/test_filter_parser.rb +439 -452
  311. data/test/plugin/test_filter_record_transformer.rb +123 -166
  312. data/test/plugin/test_filter_stdout.rb +160 -72
  313. data/test/plugin/test_formatter_csv.rb +111 -0
  314. data/test/plugin/test_formatter_hash.rb +35 -0
  315. data/test/plugin/test_formatter_json.rb +51 -0
  316. data/test/plugin/test_formatter_ltsv.rb +62 -0
  317. data/test/plugin/test_formatter_msgpack.rb +28 -0
  318. data/test/plugin/test_formatter_out_file.rb +95 -0
  319. data/test/plugin/test_formatter_single_value.rb +38 -0
  320. data/test/plugin/test_formatter_tsv.rb +68 -0
  321. data/test/plugin/test_in_debug_agent.rb +24 -1
  322. data/test/plugin/test_in_dummy.rb +111 -18
  323. data/test/plugin/test_in_exec.rb +200 -113
  324. data/test/plugin/test_in_forward.rb +990 -387
  325. data/test/plugin/test_in_gc_stat.rb +10 -8
  326. data/test/plugin/test_in_http.rb +600 -224
  327. data/test/plugin/test_in_monitor_agent.rb +690 -0
  328. data/test/plugin/test_in_object_space.rb +24 -8
  329. data/test/plugin/test_in_syslog.rb +154 -215
  330. data/test/plugin/test_in_tail.rb +1006 -707
  331. data/test/plugin/test_in_tcp.rb +125 -48
  332. data/test/plugin/test_in_udp.rb +204 -63
  333. data/test/plugin/{test_in_stream.rb → test_in_unix.rb} +14 -13
  334. data/test/plugin/test_input.rb +126 -0
  335. data/test/plugin/test_metadata.rb +89 -0
  336. data/test/plugin/test_multi_output.rb +180 -0
  337. data/test/plugin/test_out_copy.rb +117 -112
  338. data/test/plugin/test_out_exec.rb +258 -53
  339. data/test/plugin/test_out_exec_filter.rb +538 -115
  340. data/test/plugin/test_out_file.rb +865 -178
  341. data/test/plugin/test_out_forward.rb +998 -210
  342. data/test/plugin/test_out_null.rb +105 -0
  343. data/test/plugin/test_out_relabel.rb +28 -0
  344. data/test/plugin/test_out_roundrobin.rb +36 -29
  345. data/test/plugin/test_out_secondary_file.rb +458 -0
  346. data/test/plugin/test_out_stdout.rb +135 -37
  347. data/test/plugin/test_out_stream.rb +18 -0
  348. data/test/plugin/test_output.rb +984 -0
  349. data/test/plugin/test_output_as_buffered.rb +2021 -0
  350. data/test/plugin/test_output_as_buffered_backup.rb +312 -0
  351. data/test/plugin/test_output_as_buffered_compress.rb +165 -0
  352. data/test/plugin/test_output_as_buffered_overflow.rb +250 -0
  353. data/test/plugin/test_output_as_buffered_retries.rb +911 -0
  354. data/test/plugin/test_output_as_buffered_secondary.rb +874 -0
  355. data/test/plugin/test_output_as_standard.rb +374 -0
  356. data/test/plugin/test_owned_by.rb +35 -0
  357. data/test/plugin/test_parser.rb +359 -0
  358. data/test/plugin/test_parser_apache.rb +42 -0
  359. data/test/plugin/test_parser_apache2.rb +47 -0
  360. data/test/plugin/test_parser_apache_error.rb +45 -0
  361. data/test/plugin/test_parser_csv.rb +103 -0
  362. data/test/plugin/test_parser_json.rb +138 -0
  363. data/test/plugin/test_parser_labeled_tsv.rb +145 -0
  364. data/test/plugin/test_parser_multiline.rb +100 -0
  365. data/test/plugin/test_parser_nginx.rb +88 -0
  366. data/test/plugin/test_parser_none.rb +52 -0
  367. data/test/plugin/test_parser_regexp.rb +289 -0
  368. data/test/plugin/test_parser_syslog.rb +441 -0
  369. data/test/plugin/test_parser_tsv.rb +122 -0
  370. data/test/plugin/test_storage.rb +167 -0
  371. data/test/plugin/test_storage_local.rb +335 -0
  372. data/test/plugin_helper/data/cert/cert-key.pem +27 -0
  373. data/test/plugin_helper/data/cert/cert-with-no-newline.pem +19 -0
  374. data/test/plugin_helper/data/cert/cert.pem +19 -0
  375. data/test/plugin_helper/http_server/test_app.rb +65 -0
  376. data/test/plugin_helper/http_server/test_route.rb +32 -0
  377. data/test/plugin_helper/test_cert_option.rb +16 -0
  378. data/test/plugin_helper/test_child_process.rb +794 -0
  379. data/test/plugin_helper/test_compat_parameters.rb +353 -0
  380. data/test/plugin_helper/test_event_emitter.rb +51 -0
  381. data/test/plugin_helper/test_event_loop.rb +52 -0
  382. data/test/plugin_helper/test_extract.rb +194 -0
  383. data/test/plugin_helper/test_formatter.rb +255 -0
  384. data/test/plugin_helper/test_http_server_helper.rb +205 -0
  385. data/test/plugin_helper/test_inject.rb +519 -0
  386. data/test/plugin_helper/test_parser.rb +264 -0
  387. data/test/plugin_helper/test_record_accessor.rb +197 -0
  388. data/test/plugin_helper/test_retry_state.rb +442 -0
  389. data/test/plugin_helper/test_server.rb +1714 -0
  390. data/test/plugin_helper/test_storage.rb +542 -0
  391. data/test/plugin_helper/test_thread.rb +164 -0
  392. data/test/plugin_helper/test_timer.rb +132 -0
  393. data/test/scripts/exec_script.rb +0 -6
  394. data/test/scripts/fluent/plugin/formatter1/formatter_test1.rb +7 -0
  395. data/test/scripts/fluent/plugin/formatter2/formatter_test2.rb +7 -0
  396. data/test/scripts/fluent/plugin/out_test.rb +23 -15
  397. data/test/scripts/fluent/plugin/out_test2.rb +80 -0
  398. data/test/test_clock.rb +164 -0
  399. data/test/test_config.rb +16 -7
  400. data/test/test_configdsl.rb +2 -2
  401. data/test/test_event.rb +360 -13
  402. data/test/test_event_router.rb +108 -11
  403. data/test/test_event_time.rb +199 -0
  404. data/test/test_filter.rb +48 -6
  405. data/test/test_formatter.rb +11 -391
  406. data/test/test_input.rb +1 -1
  407. data/test/test_log.rb +591 -31
  408. data/test/test_mixin.rb +1 -1
  409. data/test/test_output.rb +121 -185
  410. data/test/test_plugin.rb +251 -0
  411. data/test/test_plugin_classes.rb +177 -10
  412. data/test/test_plugin_helper.rb +81 -0
  413. data/test/test_plugin_id.rb +101 -0
  414. data/test/test_process.rb +8 -42
  415. data/test/test_root_agent.rb +766 -21
  416. data/test/test_supervisor.rb +481 -0
  417. data/test/test_test_drivers.rb +135 -0
  418. data/test/test_time_formatter.rb +282 -0
  419. data/test/test_time_parser.rb +231 -0
  420. data/test/test_unique_id.rb +47 -0
  421. metadata +454 -60
  422. data/COPYING +0 -14
  423. data/ChangeLog +0 -666
  424. data/lib/fluent/buffer.rb +0 -365
  425. data/lib/fluent/plugin/in_status.rb +0 -76
  426. data/test/plugin/test_in_status.rb +0 -38
  427. data/test/test_buffer.rb +0 -624
  428. data/test/test_parser.rb +0 -1305
@@ -1,7 +1,21 @@
1
1
  require_relative '../helper'
2
- require 'fluent/test'
2
+ require 'fluent/test/driver/input'
3
+ require 'fluent/plugin/in_object_space'
4
+
5
+ require 'timeout'
3
6
 
4
7
  class ObjectSpaceInputTest < Test::Unit::TestCase
8
+ def waiting(seconds, instance)
9
+ begin
10
+ Timeout.timeout(seconds) do
11
+ yield
12
+ end
13
+ rescue Timeout::Error
14
+ STDERR.print(*instance.log.out.logs)
15
+ raise
16
+ end
17
+ end
18
+
5
19
  class FailObject
6
20
  def self.class
7
21
  raise "error"
@@ -19,7 +33,7 @@ class ObjectSpaceInputTest < Test::Unit::TestCase
19
33
  ]
20
34
 
21
35
  def create_driver(conf=TESTCONFIG)
22
- Fluent::Test::InputTestDriver.new(Fluent::ObjectSpaceInput).configure(conf)
36
+ Fluent::Test::Driver::Input.new(Fluent::Plugin::ObjectSpaceInput).configure(conf)
23
37
  end
24
38
 
25
39
  def test_configure
@@ -32,17 +46,19 @@ class ObjectSpaceInputTest < Test::Unit::TestCase
32
46
  def test_emit
33
47
  d = create_driver
34
48
 
35
- time = Time.parse("2011-01-02 13:14:15").to_i
36
-
37
- d.expected_emits_length = 2
38
- d.run
49
+ d.run do
50
+ waiting(10, d.instance) do
51
+ sleep 0.5 until d.events.size > 3
52
+ end
53
+ end
39
54
 
40
- emits = d.emits
41
- assert_equal true, emits.length > 0
55
+ emits = d.events
56
+ assert{ emits.length > 0 }
42
57
 
43
58
  emits.each { |tag, time, record|
44
59
  assert_equal d.instance.tag, tag
45
60
  assert_equal d.instance.top, record.keys.size
61
+ assert(time.is_a?(Fluent::EventTime))
46
62
  }
47
63
  end
48
64
  end
@@ -1,10 +1,10 @@
1
1
  require_relative '../helper'
2
- require 'fluent/test'
2
+ require 'fluent/test/driver/input'
3
+ require 'fluent/plugin/in_syslog'
3
4
 
4
5
  class SyslogInputTest < Test::Unit::TestCase
5
6
  def setup
6
7
  Fluent::Test.setup
7
- require 'fluent/plugin/socket_util'
8
8
  end
9
9
 
10
10
  PORT = unused_port
@@ -21,18 +21,20 @@ class SyslogInputTest < Test::Unit::TestCase
21
21
  ]
22
22
 
23
23
  def create_driver(conf=CONFIG)
24
- Fluent::Test::InputTestDriver.new(Fluent::SyslogInput).configure(conf)
24
+ Fluent::Test::Driver::Input.new(Fluent::Plugin::SyslogInput).configure(conf)
25
25
  end
26
26
 
27
- def test_configure
28
- configs = {'127.0.0.1' => CONFIG}
29
- configs.merge!('::1' => IPv6_CONFIG) if ipv6_enabled?
30
-
31
- configs.each_pair { |k, v|
32
- d = create_driver(v)
33
- assert_equal PORT, d.instance.port
34
- assert_equal k, d.instance.bind
35
- }
27
+ data(
28
+ ipv4: ['127.0.0.1', CONFIG, ::Socket::AF_INET],
29
+ ipv6: ['::1', IPv6_CONFIG, ::Socket::AF_INET6],
30
+ )
31
+ def test_configure(data)
32
+ bind_addr, config, family = data
33
+ omit "IPv6 unavailable" if family == ::Socket::AF_INET6 && !ipv6_enabled?
34
+
35
+ d = create_driver(config)
36
+ assert_equal PORT, d.instance.port
37
+ assert_equal bind_addr, d.instance.bind
36
38
  end
37
39
 
38
40
  sub_test_case 'source_hostname_key and source_address_key features' do
@@ -45,90 +47,69 @@ EOS
45
47
  }
46
48
  end
47
49
 
48
- LOCALHOST_HOSTNAME_GETTER = ->(){sock = UDPSocket.new(::Socket::AF_INET); sock.do_not_reverse_lookup = false; sock.connect("127.0.0.1", 2048); sock.peeraddr[2] }
49
- LOCALHOST_HOSTNAME = LOCALHOST_HOSTNAME_GETTER.call
50
- DUMMY_SOCK = Struct.new(:remote_host, :remote_addr, :remote_port).new(LOCALHOST_HOSTNAME, "127.0.0.1", 0)
51
- data(
52
- both: [:hostname, :address],
53
- hostname: [:hostname],
54
- address: [:address],
55
- )
56
- test 'source_hostname_key and source_address_key parameter feature should add record(s)' do |keys|
57
- conf = CONFIG.dup
58
- if keys.include?(:hostname)
59
- conf << <<EOL
60
- source_hostname_key source_hostname
61
- EOL
62
- end
63
- if keys.include?(:address)
64
- conf << <<EOL
65
- source_address_key source_address
66
- EOL
67
- end
68
- tests = create_test_case
69
- d = create_driver(conf)
70
-
71
- d.run do
72
- u = UDPSocket.new
73
- u.connect('127.0.0.1', PORT)
74
- tests.each {|test|
75
- u.send(test['msg'], 0)
76
- }
77
- sleep 1
78
- end
79
-
80
- d.emits.each { |tag, _time, record|
81
- if keys.include?(:hostname)
82
- assert_true record.has_key?('source_hostname')
83
- assert_equal DUMMY_SOCK.remote_host, record['source_hostname']
84
- unless keys.include?(:address)
85
- assert_false record.has_key?('source_address')
86
- end
87
- end
88
- if keys.include?(:address)
89
- assert_true record.has_key?('source_address')
90
- assert_equal DUMMY_SOCK.remote_addr, record['source_address']
91
- unless keys.include?(:hostname)
92
- assert_false record.has_key?('source_hostname')
93
- end
94
- end
95
- }
96
- end
97
-
98
50
  data('resolve_hostname' => 'resolve_hostname true',
99
51
  'source_hostname_key' => 'source_hostname_key source_host')
100
- def test_configure_reslove_hostname(param)
52
+ def test_configure_resolve_hostname(param)
101
53
  d = create_driver([CONFIG, param].join("\n"))
102
54
  assert_true d.instance.resolve_hostname
103
55
  end
104
56
  end
105
57
 
106
- def test_time_format
107
- configs = {'127.0.0.1' => CONFIG}
108
- configs.merge!('::1' => IPv6_CONFIG) if ipv6_enabled?
58
+ data('Use protocol_type' => ['protocol_type tcp', :tcp, :udp],
59
+ 'Use transport' => ["<transport tcp>\n </transport>", nil, :tcp],
60
+ 'Use transport and protocol' => ["protocol_type udp\n<transport tcp>\n </transport>", :udp, :tcp])
61
+ def test_configure_protocol(param)
62
+ conf, proto_type, transport_proto_type = *param
63
+ d = create_driver([CONFIG, conf].join("\n"))
109
64
 
110
- configs.each_pair { |k, v|
111
- d = create_driver(v)
65
+ assert_equal(d.instance.protocol_type, proto_type)
66
+ assert_equal(d.instance.transport_config.protocol, transport_proto_type)
67
+ end
112
68
 
113
- tests = [
114
- {'msg' => '<6>Sep 11 00:00:00 localhost logger: foo', 'expected' => Time.strptime('Sep 11 00:00:00', '%b %d %H:%M:%S').to_i},
115
- {'msg' => '<6>Sep 1 00:00:00 localhost logger: foo', 'expected' => Time.strptime('Sep 1 00:00:00', '%b %d %H:%M:%S').to_i},
116
- ]
69
+ # For backward compat
70
+ def test_respect_protocol_type_than_transport
71
+ d = create_driver([CONFIG, "<transport tcp> \n</transport>", "protocol_type udp"].join("\n"))
72
+ tests = create_test_case
117
73
 
118
- d.run do
119
- u = Fluent::SocketUtil.create_udp_socket(k)
120
- u.connect(k, PORT)
121
- tests.each {|test|
122
- u.send(test['msg'], 0)
123
- }
124
- sleep 1
125
- end
74
+ d.run(expect_emits: 2) do
75
+ u = UDPSocket.new
76
+ u.connect('127.0.0.1', PORT)
77
+ tests.each {|test|
78
+ u.send(test['msg'], 0)
79
+ }
80
+ end
81
+
82
+ assert(d.events.size > 0)
83
+ compare_test_result(d.events, tests)
84
+ end
85
+
86
+
87
+ data(
88
+ ipv4: ['127.0.0.1', CONFIG, ::Socket::AF_INET],
89
+ ipv6: ['::1', IPv6_CONFIG, ::Socket::AF_INET6],
90
+ )
91
+ def test_time_format(data)
92
+ bind_addr, config, family = data
93
+ omit "IPv6 unavailable" if family == ::Socket::AF_INET6 && !ipv6_enabled?
126
94
 
127
- emits = d.emits
128
- assert_equal 2, emits.size
129
- emits.each_index {|i|
130
- assert_equal(tests[i]['expected'], emits[i][1])
95
+ d = create_driver(config)
96
+
97
+ tests = [
98
+ {'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'))},
99
+ {'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'))},
100
+ ]
101
+ d.run(expect_emits: 2) do
102
+ u = UDPSocket.new(family)
103
+ u.connect(bind_addr, PORT)
104
+ tests.each {|test|
105
+ u.send(test['msg'], 0)
131
106
  }
107
+ end
108
+
109
+ events = d.events
110
+ assert(events.size > 0)
111
+ events.each_index {|i|
112
+ assert_equal_event_time(tests[i]['expected'], events[i][1])
132
113
  }
133
114
  end
134
115
 
@@ -136,70 +117,66 @@ EOL
136
117
  d = create_driver
137
118
  tests = create_test_case
138
119
 
139
- d.run do
120
+ d.run(expect_emits: 2) do
140
121
  u = UDPSocket.new
141
122
  u.connect('127.0.0.1', PORT)
142
123
  tests.each {|test|
143
124
  u.send(test['msg'], 0)
144
125
  }
145
- sleep 1
146
126
  end
147
127
 
148
- assert_equal 2, d.emits.size
149
- compare_test_result(d.emits, tests)
128
+ assert(d.events.size > 0)
129
+ compare_test_result(d.events, tests)
150
130
  end
151
131
 
152
132
  def test_msg_size_udp_for_large_msg
153
133
  d = create_driver(CONFIG + %[
154
134
  message_length_limit 5k
155
135
  ])
156
- tests = create_test_case(true)
136
+ tests = create_test_case(large_message: true)
157
137
 
158
- d.run do
138
+ d.run(expect_emits: 3) do
159
139
  u = UDPSocket.new
160
140
  u.connect('127.0.0.1', PORT)
161
141
  tests.each {|test|
162
142
  u.send(test['msg'], 0)
163
143
  }
164
- sleep 1
165
144
  end
166
145
 
167
- assert_equal 3, d.emits.size
168
- compare_test_result(d.emits, tests)
146
+ assert(d.events.size > 0)
147
+ compare_test_result(d.events, tests)
169
148
  end
170
149
 
171
150
  def test_msg_size_with_tcp
172
- d = create_driver([CONFIG, 'protocol_type tcp'].join("\n"))
151
+ d = create_driver([CONFIG, "<transport tcp> \n</transport>"].join("\n"))
173
152
  tests = create_test_case
174
153
 
175
- d.run do
154
+ d.run(expect_emits: 2) do
176
155
  tests.each {|test|
177
156
  TCPSocket.open('127.0.0.1', PORT) do |s|
178
157
  s.send(test['msg'], 0)
179
158
  end
180
159
  }
181
- sleep 1
182
160
  end
183
161
 
184
- assert_equal 2, d.emits.size
185
- compare_test_result(d.emits, tests)
162
+ assert(d.events.size > 0)
163
+ compare_test_result(d.events, tests)
186
164
  end
187
165
 
188
166
  def test_msg_size_with_same_tcp_connection
189
- d = create_driver([CONFIG, 'protocol_type tcp'].join("\n"))
167
+ d = create_driver([CONFIG, "<transport tcp> \n</transport>"].join("\n"))
190
168
  tests = create_test_case
191
169
 
192
- d.run do
170
+ d.run(expect_emits: 2) do
193
171
  TCPSocket.open('127.0.0.1', PORT) do |s|
194
172
  tests.each {|test|
195
173
  s.send(test['msg'], 0)
196
174
  }
197
175
  end
198
- sleep 1
199
176
  end
200
177
 
201
- assert_equal 2, d.emits.size
202
- compare_test_result(d.emits, tests)
178
+ assert(d.events.size > 0)
179
+ compare_test_result(d.events, tests)
203
180
  end
204
181
 
205
182
  def test_msg_size_with_json_format
@@ -210,149 +187,108 @@ EOL
210
187
  {'msg' => '<6>' + event.to_json + "\n", 'expected' => msg}
211
188
  }
212
189
 
213
- d.run do
190
+ d.run(expect_emits: 2) do
214
191
  u = UDPSocket.new
215
192
  u.connect('127.0.0.1', PORT)
216
193
  tests.each {|test|
217
194
  u.send(test['msg'], 0)
218
195
  }
219
- sleep 1
220
196
  end
221
197
 
222
- assert_equal 2, d.emits.size
223
- compare_test_result(d.emits, tests)
198
+ assert(d.events.size > 0)
199
+ compare_test_result(d.events, tests)
224
200
  end
225
201
 
226
- LOCALHOST_HOSTNAME_GETTER = ->(){sock = UDPSocket.new(::Socket::AF_INET); sock.do_not_reverse_lookup = false; sock.connect("127.0.0.1", 2048); sock.peeraddr[2] }
227
- LOCALHOST_HOSTNAME = LOCALHOST_HOSTNAME_GETTER.call
228
-
229
- data('old parameter' => 'include_source_host',
230
- 'new parameter' => 'source_hostname_key source_host')
231
- def test_msg_size_with_include_source_host(param)
232
- d = create_driver([CONFIG, param].join("\n"))
202
+ def test_msg_size_with_include_source_host
203
+ d = create_driver([CONFIG, 'include_source_host true'].join("\n"))
233
204
  tests = create_test_case
234
205
 
235
- d.run do
206
+ host = nil
207
+ d.run(expect_emits: 2) do
236
208
  u = UDPSocket.new
237
209
  u.connect('127.0.0.1', PORT)
210
+ host = u.peeraddr[2]
238
211
  tests.each {|test|
239
212
  u.send(test['msg'], 0)
240
213
  }
241
- sleep 1
242
214
  end
243
215
 
244
- assert_equal 2, d.emits.size
245
- compare_test_result(d.emits, tests, {host: LOCALHOST_HOSTNAME})
216
+ assert(d.events.size > 0)
217
+ compare_test_result(d.events, tests, {host: host})
246
218
  end
247
219
 
248
- def test_msg_size_with_include_priority
220
+ def test_msg_size_with_priority_key
249
221
  d = create_driver([CONFIG, 'priority_key priority'].join("\n"))
250
222
  tests = create_test_case
251
223
 
252
224
  priority = 'info'
253
- d.run do
225
+ d.run(expect_emits: 2) do
254
226
  u = UDPSocket.new
255
227
  u.connect('127.0.0.1', PORT)
256
228
  tests.each {|test|
257
229
  u.send(test['msg'], 0)
258
230
  }
259
- sleep 1
260
231
  end
261
232
 
262
- assert_equal 2, d.emits.size
263
- compare_test_result(d.emits, tests, {priority: priority})
233
+ assert(d.events.size > 0)
234
+ compare_test_result(d.events, tests, {priority: priority})
264
235
  end
265
236
 
266
- def test_msg_size_with_include_facility
237
+ def test_msg_size_with_facility_key
267
238
  d = create_driver([CONFIG, 'facility_key facility'].join("\n"))
268
239
  tests = create_test_case
269
240
 
270
241
  facility = 'kern'
271
- d.run 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
- sleep 1
278
- end
279
-
280
- assert_equal 2, d.emits.size
281
- compare_test_result(d.emits, tests, {facility: facility})
282
- end
283
-
284
- def test_allow_without_priority_with_default_format
285
- d = create_driver([CONFIG, 'allow_without_priority true'].join("\n"))
286
-
287
- tests = [
288
- {'msg' => '<6>Sep 10 00:00:00 localhost logger: ' + 'x' * 100 + "\n", 'expected' => 'x' * 100},
289
- {'msg' => 'Sep 10 00:00:00 localhost logger: ' + 'x' * 1024 + "\n", 'expected' => 'x' * 1024, 'tag' => 'syslog.user.notice'},
290
- ]
291
-
292
- d.run do
242
+ d.run(expect_emits: 2) do
293
243
  u = UDPSocket.new
294
244
  u.connect('127.0.0.1', PORT)
295
245
  tests.each {|test|
296
246
  u.send(test['msg'], 0)
297
247
  }
298
- sleep 1
299
248
  end
300
249
 
301
- assert_equal 2, d.emits.size
302
- compare_test_result(d.emits, tests)
250
+ assert(d.events.size > 0)
251
+ compare_test_result(d.events, tests, {facility: facility})
303
252
  end
304
253
 
305
- def test_allow_without_priority_with_json_format
306
- d = create_driver([CONFIG, %[
307
- allow_without_priority true
308
- format json
309
- ]].join("\n"))
310
-
311
- message = 'foo'
312
- tests = [
313
- {'msg' => '<6>' + {'message' => message}.to_json + "\n", 'expected' => message},
314
- {'msg' => {'message' => message}.to_json + "\n", 'expected' => message, 'tag' => 'syslog.user.notice'},
315
- ]
254
+ def test_msg_size_with_source_address_key
255
+ d = create_driver([CONFIG, 'source_address_key source_address'].join("\n"))
256
+ tests = create_test_case
316
257
 
317
- d.run do
258
+ address = nil
259
+ d.run(expect_emits: 2) do
318
260
  u = UDPSocket.new
319
261
  u.connect('127.0.0.1', PORT)
262
+ address = u.peeraddr[3]
320
263
  tests.each {|test|
321
264
  u.send(test['msg'], 0)
322
265
  }
323
- sleep 1
324
266
  end
325
267
 
326
- assert_equal 2, d.emits.size
327
- compare_test_result(d.emits, tests)
268
+ assert(d.events.size > 0)
269
+ compare_test_result(d.events, tests, {address: address})
328
270
  end
329
271
 
330
- def test_default_priority
331
- d = create_driver([CONFIG, %[
332
- allow_without_priority true
333
- default_priority 100
334
- ]].join("\n"))
335
-
336
- tests = [
337
- {'msg' => '<6>Sep 10 00:00:00 localhost logger: ' + 'x' * 100 + "\n", 'expected' => 'x' * 100},
338
- {'msg' => 'Sep 10 00:00:00 localhost logger: ' + 'x' * 1024 + "\n", 'expected' => 'x' * 1024, 'tag' => 'syslog.ntp.warn'},
339
- ]
272
+ def test_msg_size_with_source_hostname_key
273
+ d = create_driver([CONFIG, 'source_hostname_key source_hostname'].join("\n"))
274
+ tests = create_test_case
340
275
 
341
- d.run do
276
+ hostname = nil
277
+ d.run(expect_emits: 2) do
342
278
  u = UDPSocket.new
279
+ u.do_not_reverse_lookup = false
343
280
  u.connect('127.0.0.1', PORT)
281
+ hostname = u.peeraddr[2]
344
282
  tests.each {|test|
345
283
  u.send(test['msg'], 0)
346
284
  }
347
- sleep 1
348
285
  end
349
286
 
350
- assert_equal 2, d.emits.size
351
- compare_test_result(d.emits, tests)
352
-
287
+ assert(d.events.size > 0)
288
+ compare_test_result(d.events, tests, {hostname: hostname})
353
289
  end
354
290
 
355
- def create_test_case(large_message = false)
291
+ def create_test_case(large_message: false)
356
292
  # actual syslog message has "\n"
357
293
  if large_message
358
294
  [
@@ -370,56 +306,59 @@ EOL
370
306
 
371
307
  def compare_test_result(events, tests, options = {})
372
308
  events.each_index { |i|
373
- assert_equal((tests[i]['tag'] || 'syslog.kern.info'), events[i][0]) # <6> means kern.info
309
+ assert_equal('syslog.kern.info', events[i][0]) # <6> means kern.info
374
310
  assert_equal(tests[i]['expected'], events[i][2]['message'])
375
311
  assert_equal(options[:host], events[i][2]['source_host']) if options[:host]
312
+ assert_equal(options[:address], events[i][2]['source_address']) if options[:address]
313
+ assert_equal(options[:hostname], events[i][2]['source_hostname']) if options[:hostname]
376
314
  assert_equal(options[:priority], events[i][2]['priority']) if options[:priority]
377
315
  assert_equal(options[:facility], events[i][2]['facility']) if options[:facility]
378
316
  }
379
317
  end
380
318
 
381
- class SyslogMessageFormatTest < self
382
- def test_syslog_rfc5424_format
383
- d = create_driver(CONFIG + 'message_format rfc5424')
384
- tests = [
385
- '<16>1 2017-02-06T13:14:15.003Z 192.168.0.1 fluentd - - - Hi, from Fluentd!',
386
- '<16>1 2017-02-06T13:14:15.003Z 192.168.0.1 fluentd 11111 ID24224 [exampleSDID@20224 iut="3" eventSource="Application" eventID="11211"] Hi, from Fluentd!'
387
- ]
388
-
389
- run_tests(d, tests)
390
- compare_test_result(d)
391
- end
319
+ sub_test_case 'octet counting frame' do
320
+ def test_msg_size_with_tcp
321
+ d = create_driver([CONFIG, "<transport tcp> \n</transport>", 'frame_type octet_count'].join("\n"))
322
+ tests = create_test_case
392
323
 
393
- def test_syslog_auto_format
394
- d = create_driver(CONFIG + 'message_format auto')
395
- tests = [
396
- '<16>1 2017-02-06T13:14:15.003Z 192.168.0.1 fluentd - - - Hi, from Fluentd!',
397
- '<6>Sep 11 00:00:00 localhost fluentd: Hi, from Fluentd!'
398
- ]
324
+ d.run(expect_emits: 2) do
325
+ tests.each {|test|
326
+ TCPSocket.open('127.0.0.1', PORT) do |s|
327
+ s.send(test['msg'], 0)
328
+ end
329
+ }
330
+ end
399
331
 
400
- run_tests(d, tests)
401
- compare_test_result(d)
332
+ assert(d.events.size > 0)
333
+ compare_test_result(d.events, tests)
402
334
  end
403
335
 
404
- def run_tests(d, tests)
405
- d.run do
406
- u = Fluent::SocketUtil.create_udp_socket('127.0.0.1')
407
- u.connect('127.0.0.1', PORT)
408
- tests.each {|test|
409
- u.send(test, 0)
410
- }
411
- sleep 1
336
+ def test_msg_size_with_same_tcp_connection
337
+ d = create_driver([CONFIG, "<transport tcp> \n</transport>", 'frame_type octet_count'].join("\n"))
338
+ tests = create_test_case
339
+
340
+ d.run(expect_emits: 2) do
341
+ TCPSocket.open('127.0.0.1', PORT) do |s|
342
+ tests.each {|test|
343
+ s.send(test['msg'], 0)
344
+ }
345
+ end
412
346
  end
347
+
348
+ assert(d.events.size > 0)
349
+ compare_test_result(d.events, tests)
413
350
  end
414
351
 
415
- def compare_test_result(d)
416
- emits = d.emits
417
- assert_equal 2, emits.size
418
- emits.each_index {|i|
419
- record = emits[i][2]
420
- assert_equal('fluentd', record['ident'])
421
- assert_equal('Hi, from Fluentd!', record['message'])
352
+ def create_test_case(large_message: false)
353
+ msgs = [
354
+ {'msg' => '<6>Sep 10 00:00:00 localhost logger: ' + 'x' * 100, 'expected' => 'x' * 100},
355
+ {'msg' => '<6>Sep 10 00:00:00 localhost logger: ' + 'x' * 1024, 'expected' => 'x' * 1024},
356
+ ]
357
+ msgs.each { |msg|
358
+ m = msg['msg']
359
+ msg['msg'] = "#{m.size + 1} #{m}"
422
360
  }
361
+ msgs
423
362
  end
424
363
  end
425
364
  end