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
@@ -5,39 +5,12 @@ require 'fluent/formatter'
5
5
  module FormatterTest
6
6
  include Fluent
7
7
 
8
- def time2str(time, localtime = false, format = nil)
9
- if format
10
- if localtime
11
- Time.at(time).strftime(format)
12
- else
13
- Time.at(time).utc.strftime(format)
14
- end
15
- else
16
- if localtime
17
- Time.at(time).iso8601
18
- else
19
- Time.at(time).utc.iso8601
20
- end
21
- end
22
- end
23
-
24
8
  def tag
25
9
  'tag'
26
10
  end
27
11
 
28
12
  def record
29
- {'message' => 'awesome'}
30
- end
31
-
32
- def symbolic_record
33
- {:message => :awesome}
34
- end
35
-
36
- def with_timezone(tz)
37
- oldtz, ENV['TZ'] = ENV['TZ'], tz
38
- yield
39
- ensure
40
- ENV['TZ'] = oldtz
13
+ {'message' => 'awesome', 'greeting' => 'hello'}
41
14
  end
42
15
 
43
16
  class BaseFormatterTest < ::Test::Unit::TestCase
@@ -56,7 +29,7 @@ module FormatterTest
56
29
  include FormatterTest
57
30
 
58
31
  def create_driver(conf={})
59
- formatter = Fluent::Test::FormatterTestDriver.new(Formatter).configure(conf)
32
+ Fluent::Test::FormatterTestDriver.new(Formatter).configure(conf)
60
33
  end
61
34
 
62
35
  def test_call
@@ -141,52 +114,6 @@ module FormatterTest
141
114
 
142
115
  assert_equal("#{Yajl.dump(record)}\n", formatted)
143
116
  end
144
-
145
- data('oj' => 'oj', 'yajl' => 'yajl')
146
- def test_format_without_nl(data)
147
- @formatter.configure('json_parser' => data, 'add_newline' => false)
148
- formatted = @formatter.format(tag, @time, record)
149
-
150
- assert_equal(Yajl.dump(record), formatted)
151
- end
152
-
153
- data('oj' => 'oj', 'yajl' => 'yajl')
154
- def test_format_with_symbolic_record(data)
155
- @formatter.configure('json_parser' => data)
156
- formatted = @formatter.format(tag, @time, symbolic_record)
157
-
158
- assert_equal("#{JSON.generate(record)}\n", formatted)
159
- end
160
-
161
- data('oj' => 'oj', 'yajl' => 'yajl')
162
- def test_format_with_include_tag(data)
163
- @formatter.configure('include_tag_key' => 'true', 'tag_key' => 'foo', 'json_parser' => data)
164
- formatted = @formatter.format(tag, @time, record.dup)
165
-
166
- r = record
167
- r['foo'] = tag
168
- assert_equal("#{Yajl.dump(r)}\n", formatted)
169
- end
170
-
171
- data('oj' => 'oj', 'yajl' => 'yajl')
172
- def test_format_with_include_time(data)
173
- @formatter.configure('include_time_key' => 'true', 'localtime' => '', 'json_parser' => data)
174
- formatted = @formatter.format(tag, @time, record.dup)
175
-
176
- r = record
177
- r['time'] = time2str(@time, true)
178
- assert_equal("#{Yajl.dump(r)}\n", formatted)
179
- end
180
-
181
- data('oj' => 'oj', 'yajl' => 'yajl')
182
- def test_format_with_include_time_as_number(data)
183
- @formatter.configure('include_time_key' => 'true', 'time_as_epoch' => 'true', 'time_key' => 'epoch', 'json_parser' => data)
184
- formatted = @formatter.format(tag, @time, record.dup)
185
-
186
- r = record
187
- r['epoch'] = @time
188
- assert_equal("#{Yajl.dump(r)}\n", formatted)
189
- end
190
117
  end
191
118
 
192
119
  class MessagePackFormatterTest < ::Test::Unit::TestCase
@@ -203,33 +130,6 @@ module FormatterTest
203
130
 
204
131
  assert_equal(record.to_msgpack, formatted)
205
132
  end
206
-
207
- def test_format_with_include_tag
208
- @formatter.configure('include_tag_key' => 'true', 'tag_key' => 'foo')
209
- formatted = @formatter.format(tag, @time, record.dup)
210
-
211
- r = record
212
- r['foo'] = tag
213
- assert_equal(r.to_msgpack, formatted)
214
- end
215
-
216
- def test_format_with_include_time
217
- @formatter.configure('include_time_key' => 'true', 'localtime' => '')
218
- formatted = @formatter.format(tag, @time, record.dup)
219
-
220
- r = record
221
- r['time'] = time2str(@time, true)
222
- assert_equal(r.to_msgpack, formatted)
223
- end
224
-
225
- def test_format_with_include_time_as_number
226
- @formatter.configure('include_time_key' => 'true', 'time_as_epoch' => 'true', 'time_key' => 'epoch')
227
- formatted = @formatter.format(tag, @time, record.dup)
228
-
229
- r = record
230
- r['epoch'] = @time
231
- assert_equal(r.to_msgpack, formatted)
232
- end
233
133
  end
234
134
 
235
135
  class LabeledTSVFormatterTest < ::Test::Unit::TestCase
@@ -257,39 +157,17 @@ module FormatterTest
257
157
  @formatter.configure({})
258
158
  formatted = @formatter.format(tag, @time, record)
259
159
 
260
- assert_equal("message:awesome\n", formatted)
261
- end
262
-
263
- def test_format_without_nl
264
- @formatter.configure('add_newline' => false)
265
- formatted = @formatter.format(tag, @time, record)
266
-
267
- assert_equal("message:awesome", formatted)
268
- end
269
-
270
- def test_format_with_tag
271
- @formatter.configure('include_tag_key' => 'true')
272
- formatted = @formatter.format(tag, @time, record)
273
-
274
- assert_equal("message:awesome\ttag:tag\n", formatted)
275
- end
276
-
277
- def test_format_with_time
278
- @formatter.configure('include_time_key' => 'true', 'time_format' => '%Y')
279
- formatted = @formatter.format(tag, @time, record)
280
-
281
- assert_equal("message:awesome\ttime:#{Time.now.year}\n", formatted)
160
+ assert_equal("message:awesome\tgreeting:hello\n", formatted)
282
161
  end
283
162
 
284
163
  def test_format_with_customized_delimiters
285
164
  @formatter.configure(
286
- 'include_tag_key' => 'true',
287
165
  'delimiter' => ',',
288
166
  'label_delimiter' => '=',
289
167
  )
290
168
  formatted = @formatter.format(tag, @time, record)
291
169
 
292
- assert_equal("message=awesome,tag=tag\n", formatted)
170
+ assert_equal("message=awesome,greeting=hello\n", formatted)
293
171
  end
294
172
  end
295
173
 
@@ -300,29 +178,22 @@ module FormatterTest
300
178
  @formatter = TextFormatter::CsvFormatter.new
301
179
  @time = Engine.now
302
180
  end
303
-
181
+
304
182
  def test_config_params
305
183
  assert_equal ',', @formatter.delimiter
306
184
  assert_equal true, @formatter.force_quotes
307
185
  assert_nil @formatter.fields
308
186
  end
309
187
 
310
- data('empty array' => [],
311
- 'array including empty string' => ['', ''])
312
- def test_empty_fields(param)
313
- assert_raise ConfigError do
314
- @formatter.configure('fields' => param)
315
- end
316
- end
317
-
318
188
  data(
319
189
  'tab_char' => ["\t", '\t'],
320
190
  'tab_string' => ["\t", 'TAB'],
321
191
  'pipe' => ['|', '|'])
322
192
  def test_config_params_with_customized_delimiters(data)
323
193
  expected, target = data
324
- @formatter.configure('fields' => 'f1', 'delimiter' => target)
194
+ @formatter.configure('delimiter' => target, 'fields' => 'a,b,c')
325
195
  assert_equal expected, @formatter.delimiter
196
+ assert_equal ['a', 'b', 'c'], @formatter.fields
326
197
  end
327
198
 
328
199
  def test_format
@@ -334,41 +205,6 @@ module FormatterTest
334
205
  assert_equal("\"awesome\",\"awesome2\"\n", formatted)
335
206
  end
336
207
 
337
- def test_format_without_nl
338
- @formatter.configure('fields' => 'message,message2', 'add_newline' => false)
339
- formatted = @formatter.format(tag, @time, {
340
- 'message' => 'awesome',
341
- 'message2' => 'awesome2'
342
- })
343
- assert_equal("\"awesome\",\"awesome2\"", formatted)
344
- end
345
-
346
- def test_format_with_tag
347
- @formatter.configure(
348
- 'fields' => 'tag,message,message2',
349
- 'include_tag_key' => 'true'
350
- )
351
- formatted = @formatter.format(tag, @time, {
352
- 'message' => 'awesome',
353
- 'message2' => 'awesome2'
354
- })
355
- assert_equal("\"tag\",\"awesome\",\"awesome2\"\n", formatted)
356
- end
357
-
358
- def test_format_with_time
359
- @formatter.configure(
360
- 'fields' => 'time,message,message2',
361
- 'include_time_key' => 'true',
362
- 'time_format' => '%Y'
363
- )
364
- formatted = @formatter.format(tag, @time, {
365
- 'message' => 'awesome',
366
- 'message2' => 'awesome2'
367
- })
368
- assert_equal("\"#{Time.now.year}\",\"awesome\",\"awesome2\"\n",
369
- formatted)
370
- end
371
-
372
208
  def test_format_with_customized_delimiters
373
209
  @formatter.configure(
374
210
  'fields' => 'message,message2',
@@ -434,13 +270,13 @@ module FormatterTest
434
270
  end
435
271
 
436
272
  def test_format
437
- formatter = TextFormatter::TEMPLATE_REGISTRY.lookup('single_value').call
273
+ formatter = Fluent::Plugin.new_formatter('single_value')
438
274
  formatted = formatter.format('tag', Engine.now, {'message' => 'awesome'})
439
275
  assert_equal("awesome\n", formatted)
440
276
  end
441
277
 
442
278
  def test_format_without_newline
443
- formatter = TextFormatter::TEMPLATE_REGISTRY.lookup('single_value').call
279
+ formatter = Fluent::Plugin.new_formatter('single_value')
444
280
  formatter.configure('add_newline' => 'false')
445
281
  formatted = formatter.format('tag', Engine.now, {'message' => 'awesome'})
446
282
  assert_equal("awesome", formatted)
@@ -460,7 +296,7 @@ module FormatterTest
460
296
 
461
297
  def test_unknown_format
462
298
  assert_raise ConfigError do
463
- TextFormatter::TEMPLATE_REGISTRY.lookup('unknown')
299
+ Fluent::Plugin.new_formatter('unknown')
464
300
  end
465
301
  end
466
302
 
@@ -468,225 +304,9 @@ module FormatterTest
468
304
  def test_find_formatter(data)
469
305
  $LOAD_PATH.unshift(File.join(File.expand_path(File.dirname(__FILE__)), 'scripts'))
470
306
  assert_nothing_raised ConfigError do
471
- TextFormatter::TEMPLATE_REGISTRY.lookup(data)
307
+ Fluent::Plugin.new_formatter(data)
472
308
  end
473
309
  $LOAD_PATH.shift
474
310
  end
475
311
  end
476
-
477
- class TimeFormatterTest < ::Test::Unit::TestCase
478
- include FormatterTest
479
-
480
- def setup
481
- @time = Time.new(2014, 9, 27, 0, 0, 0, 0).to_i
482
- @fmt = "%Y%m%d %H%M%z" # YYYYMMDD HHMM[+-]HHMM
483
- end
484
-
485
- def format(format, localtime, timezone)
486
- formatter = Fluent::TimeFormatter.new(format, localtime, timezone)
487
- formatter.format(@time)
488
- end
489
-
490
- def test_default_utc_nil
491
- assert_equal("2014-09-27T00:00:00Z", format(nil, false, nil))
492
- end
493
-
494
- def test_default_utc_pHH_MM
495
- assert_equal("2014-09-27T01:30:00+01:30", format(nil, false, "+01:30"))
496
- end
497
-
498
- def test_default_utc_nHH_MM
499
- assert_equal("2014-09-26T22:30:00-01:30", format(nil, false, "-01:30"))
500
- end
501
-
502
- def test_default_utc_pHHMM
503
- assert_equal("2014-09-27T02:30:00+02:30", format(nil, false, "+0230"))
504
- end
505
-
506
- def test_default_utc_nHHMM
507
- assert_equal("2014-09-26T21:30:00-02:30", format(nil, false, "-0230"))
508
- end
509
-
510
- def test_default_utc_pHH
511
- assert_equal("2014-09-27T03:00:00+03:00", format(nil, false, "+03"))
512
- end
513
-
514
- def test_default_utc_nHH
515
- assert_equal("2014-09-26T21:00:00-03:00", format(nil, false, "-03"))
516
- end
517
-
518
- def test_default_utc_timezone_1
519
- # Asia/Tokyo (+09:00) does not have daylight saving time.
520
- assert_equal("2014-09-27T09:00:00+09:00", format(nil, false, "Asia/Tokyo"))
521
- end
522
-
523
- def test_default_utc_timezone_2
524
- # Pacific/Honolulu (-10:00) does not have daylight saving time.
525
- assert_equal("2014-09-26T14:00:00-10:00", format(nil, false, "Pacific/Honolulu"))
526
- end
527
-
528
- def test_default_utc_timezone_3
529
- # America/Argentina/Buenos_Aires (-03:00) does not have daylight saving time.
530
- assert_equal("2014-09-26T21:00:00-03:00", format(nil, false, "America/Argentina/Buenos_Aires"))
531
- end
532
-
533
- def test_default_utc_timezone_4
534
- # Europe/Paris has daylight saving time. Its UTC offset is +01:00 and its
535
- # UTC offset in DST is +02:00. In September, Europe/Paris is in DST.
536
- assert_equal("2014-09-27T02:00:00+02:00", format(nil, false, "Europe/Paris"))
537
- end
538
-
539
- def test_default_utc_timezone_5
540
- # Europe/Paris has daylight saving time. Its UTC offset is +01:00 and its
541
- # UTC offset in DST is +02:00. In January, Europe/Paris is not in DST.
542
- @time = Time.new(2014, 1, 24, 0, 0, 0, 0).to_i
543
- assert_equal("2014-01-24T01:00:00+01:00", format(nil, false, "Europe/Paris"))
544
- end
545
-
546
- def test_default_utc_invalid
547
- assert_equal("2014-09-27T00:00:00Z", format(nil, false, "Invalid"))
548
- end
549
-
550
- def test_default_localtime_nil_1
551
- with_timezone("UTC-04") do
552
- assert_equal("2014-09-27T04:00:00+04:00", format(nil, true, nil))
553
- end
554
- end
555
-
556
- def test_default_localtime_nil_2
557
- with_timezone("UTC+05") do
558
- assert_equal("2014-09-26T19:00:00-05:00", format(nil, true, nil))
559
- end
560
- end
561
-
562
- def test_default_localtime_timezone
563
- # 'timezone' takes precedence over 'localtime'.
564
- with_timezone("UTC-06") do
565
- assert_equal("2014-09-27T07:00:00+07:00", format(nil, true, "+07"))
566
- end
567
- end
568
-
569
- def test_specific_utc_nil
570
- assert_equal("20140927 0000+0000", format(@fmt, false, nil))
571
- end
572
-
573
- def test_specific_utc_pHH_MM
574
- assert_equal("20140927 0830+0830", format(@fmt, false, "+08:30"))
575
- end
576
-
577
- def test_specific_utc_nHH_MM
578
- assert_equal("20140926 1430-0930", format(@fmt, false, "-09:30"))
579
- end
580
-
581
- def test_specific_utc_pHHMM
582
- assert_equal("20140927 1030+1030", format(@fmt, false, "+1030"))
583
- end
584
-
585
- def test_specific_utc_nHHMM
586
- assert_equal("20140926 1230-1130", format(@fmt, false, "-1130"))
587
- end
588
-
589
- def test_specific_utc_pHH
590
- assert_equal("20140927 1200+1200", format(@fmt, false, "+12"))
591
- end
592
-
593
- def test_specific_utc_nHH
594
- assert_equal("20140926 1100-1300", format(@fmt, false, "-13"))
595
- end
596
-
597
- def test_specific_utc_timezone_1
598
- # Europe/Moscow (+04:00) does not have daylight saving time.
599
- assert_equal("20140927 0400+0400", format(@fmt, false, "Europe/Moscow"))
600
- end
601
-
602
- def test_specific_utc_timezone_2
603
- # Pacific/Galapagos (-06:00) does not have daylight saving time.
604
- assert_equal("20140926 1800-0600", format(@fmt, false, "Pacific/Galapagos"))
605
- end
606
-
607
- def test_specific_utc_timezone_3
608
- # America/Argentina/Buenos_Aires (-03:00) does not have daylight saving time.
609
- assert_equal("20140926 2100-0300", format(@fmt, false, "America/Argentina/Buenos_Aires"))
610
- end
611
-
612
- def test_specific_utc_timezone_4
613
- # America/Los_Angeles has daylight saving time. Its UTC offset is -08:00 and its
614
- # UTC offset in DST is -07:00. In September, America/Los_Angeles is in DST.
615
- assert_equal("20140926 1700-0700", format(@fmt, false, "America/Los_Angeles"))
616
- end
617
-
618
- def test_specific_utc_timezone_5
619
- # America/Los_Angeles has daylight saving time. Its UTC offset is -08:00 and its
620
- # UTC offset in DST is -07:00. In January, America/Los_Angeles is not in DST.
621
- @time = Time.new(2014, 1, 24, 0, 0, 0, 0).to_i
622
- assert_equal("20140123 1600-0800", format(@fmt, false, "America/Los_Angeles"))
623
- end
624
-
625
- def test_specific_utc_invalid
626
- assert_equal("20140927 0000+0000", format(@fmt, false, "Invalid"))
627
- end
628
-
629
- def test_specific_localtime_nil_1
630
- with_timezone("UTC-07") do
631
- assert_equal("20140927 0700+0700", format(@fmt, true, nil))
632
- end
633
- end
634
-
635
- def test_specific_localtime_nil_2
636
- with_timezone("UTC+08") do
637
- assert_equal("20140926 1600-0800", format(@fmt, true, nil))
638
- end
639
- end
640
-
641
- def test_specific_localtime_timezone
642
- # 'timezone' takes precedence over 'localtime'.
643
- with_timezone("UTC-09") do
644
- assert_equal("20140926 1400-1000", format(@fmt, true, "-10"))
645
- end
646
- end
647
- end
648
-
649
- class TimeConfigTest < ::Test::Unit::TestCase
650
- include FormatterTest
651
-
652
- def setup
653
- @formatter = TextFormatter::LabeledTSVFormatter.new
654
- @time = Time.new(2014, 9, 27, 0, 0, 0, 0).to_i
655
- end
656
-
657
- def format(conf)
658
- @formatter.configure({'include_time_key' => true}.merge(conf))
659
- formatted = @formatter.format("tag", @time, {})
660
- # Drop the leading "time:" and the trailing "\n".
661
- formatted[5..-2]
662
- end
663
-
664
- def test_none
665
- with_timezone("UTC-01") do
666
- # 'localtime' is true by default.
667
- assert_equal("2014-09-27T01:00:00+01:00", format({}))
668
- end
669
- end
670
-
671
- def test_utc
672
- with_timezone("UTC-01") do
673
- # 'utc' takes precedence over 'localtime'.
674
- assert_equal("2014-09-27T00:00:00Z", format("utc" => true))
675
- end
676
- end
677
-
678
- def test_timezone
679
- with_timezone("UTC-01") do
680
- # 'timezone' takes precedence over 'localtime'.
681
- assert_equal("2014-09-27T02:00:00+02:00", format("timezone" => "+02"))
682
- end
683
- end
684
-
685
- def test_utc_timezone
686
- with_timezone("UTC-01") do
687
- # 'timezone' takes precedence over 'utc'.
688
- assert_equal("2014-09-27T09:00:00+09:00", format("utc" => true, "timezone" => "Asia/Tokyo"))
689
- end
690
- end
691
- end
692
312
  end
data/test/test_input.rb CHANGED
@@ -17,7 +17,7 @@ class FluentInputTest < ::Test::Unit::TestCase
17
17
  assert_equal Engine.root_agent.event_router, d.instance.router
18
18
 
19
19
  d = nil
20
- assert_nothing_raised {
20
+ assert_nothing_raised {
21
21
  d = create_driver('@label @known')
22
22
  }
23
23
  expected = Engine.root_agent.find_label('@known').event_router