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,24 +1,49 @@
1
1
  require_relative 'helper'
2
- require 'fluent/input'
3
- require 'fluent/output'
4
- require 'fluent/filter'
2
+ require 'fluent/plugin/input'
3
+ require 'fluent/plugin/output'
4
+ require 'fluent/plugin/bare_output'
5
+ require 'fluent/plugin/filter'
5
6
 
6
7
  module FluentTest
7
- class FluentTestInput < ::Fluent::Input
8
+ class FluentTestInput < ::Fluent::Plugin::Input
8
9
  ::Fluent::Plugin.register_input('test_in', self)
9
10
 
10
11
  attr_reader :started
11
12
 
12
13
  def start
14
+ super
13
15
  @started = true
14
16
  end
15
17
 
16
18
  def shutdown
17
19
  @started = false
20
+ super
18
21
  end
19
22
  end
20
23
 
21
- class FluentTestOutput < ::Fluent::Output
24
+ class FluentTestGenInput < ::Fluent::Plugin::Input
25
+ ::Fluent::Plugin.register_input('test_in_gen', self)
26
+
27
+ attr_reader :started
28
+
29
+ config_param :num, :integer, default: 10000
30
+
31
+ def start
32
+ super
33
+ @started = true
34
+
35
+ @num.times { |i|
36
+ router.emit("test.evet", Fluent::EventTime.now, {'message' => 'Hello!', 'key' => "value#{i}", 'num' => i})
37
+ }
38
+ end
39
+
40
+ def shutdown
41
+ @started = false
42
+ super
43
+ end
44
+ end
45
+
46
+ class FluentTestOutput < ::Fluent::Plugin::Output
22
47
  ::Fluent::Plugin.register_output('test_out', self)
23
48
 
24
49
  def initialize
@@ -30,21 +55,117 @@ module FluentTest
30
55
  attr_reader :started
31
56
 
32
57
  def start
58
+ super
33
59
  @started = true
34
60
  end
35
61
 
36
62
  def shutdown
37
63
  @started = false
64
+ super
38
65
  end
39
66
 
40
- def emit(tag, es, chain)
41
- es.each { |time, record|
67
+ def process(tag, es)
68
+ es.each do |time, record|
42
69
  @events[tag] << record
43
- }
70
+ end
71
+ end
72
+ end
73
+
74
+ class FluentTestDynamicOutput < ::Fluent::Plugin::BareOutput
75
+ ::Fluent::Plugin.register_output('test_dynamic_out', self)
76
+
77
+ attr_reader :child
78
+ attr_reader :started
79
+
80
+ def start
81
+ super
82
+ @started = true
83
+ @child = Fluent::Plugin.new_output('copy')
84
+ conf = config_element('DYNAMIC', '', {}, [
85
+ config_element('store', '', {'@type' => 'test_out', '@id' => 'dyn_out1'}),
86
+ config_element('store', '', {'@type' => 'test_out', '@id' => 'dyn_out2'}),
87
+ ])
88
+ @child.configure(conf)
89
+ @child.start
90
+ end
91
+
92
+ def after_start
93
+ super
94
+ @child.after_start
95
+ end
96
+
97
+ def stop
98
+ super
99
+ @child.stop
100
+ end
101
+
102
+ def before_shutdown
103
+ super
104
+ @child.before_shutdown
105
+ end
106
+
107
+ def shutdown
108
+ @started = false
109
+ super
110
+ @child.shutdown
111
+ end
112
+
113
+ def after_shutdown
114
+ super
115
+ @child.after_shutdown
116
+ end
117
+
118
+ def close
119
+ super
120
+ @child.close
121
+ end
122
+
123
+ def terminate
124
+ super
125
+ @child.terminate
126
+ end
127
+
128
+ def process(tag, es)
129
+ es.each do |time, record|
130
+ @events[tag] << record
131
+ end
44
132
  end
45
133
  end
46
134
 
47
- class FluentTestErrorOutput < ::Fluent::BufferedOutput
135
+ class FluentTestBufferedOutput < ::Fluent::Plugin::Output
136
+ ::Fluent::Plugin.register_output('test_out_buffered', self)
137
+
138
+ attr_reader :started
139
+
140
+ def start
141
+ super
142
+ @started = true
143
+ end
144
+
145
+ def shutdown
146
+ @started = false
147
+ super
148
+ end
149
+
150
+ def write(chunk)
151
+ # drop everything
152
+ end
153
+ end
154
+
155
+ class FluentTestEmitOutput < ::Fluent::Plugin::Output
156
+ ::Fluent::Plugin.register_output('test_out_emit', self)
157
+ helpers :event_emitter
158
+ def write(chunk)
159
+ tag = chunk.metadata.tag || 'test'
160
+ array = []
161
+ chunk.each do |time, record|
162
+ array << [time, record]
163
+ end
164
+ router.emit_array(tag, array)
165
+ end
166
+ end
167
+
168
+ class FluentTestErrorOutput < ::Fluent::Plugin::Output
48
169
  ::Fluent::Plugin.register_output('test_out_error', self)
49
170
 
50
171
  def format(tag, time, record)
@@ -56,7 +177,36 @@ module FluentTest
56
177
  end
57
178
  end
58
179
 
59
- class FluentTestFilter < ::Fluent::Filter
180
+ class FluentCompatTestFilter < ::Fluent::Filter
181
+ ::Fluent::Plugin.register_filter('test_compat_filter', self)
182
+
183
+ def initialize(field = '__test__')
184
+ super()
185
+ @num = 0
186
+ @field = field
187
+ end
188
+
189
+ attr_reader :num
190
+ attr_reader :started
191
+
192
+ def start
193
+ super
194
+ @started = true
195
+ end
196
+
197
+ def shutdown
198
+ @started = false
199
+ super
200
+ end
201
+
202
+ def filter(tag, time, record)
203
+ record[@field] = @num
204
+ @num += 1
205
+ record
206
+ end
207
+ end
208
+
209
+ class FluentTestFilter < ::Fluent::Plugin::Filter
60
210
  ::Fluent::Plugin.register_filter('test_filter', self)
61
211
 
62
212
  def initialize(field = '__test__')
@@ -69,11 +219,13 @@ module FluentTest
69
219
  attr_reader :started
70
220
 
71
221
  def start
222
+ super
72
223
  @started = true
73
224
  end
74
225
 
75
226
  def shutdown
76
227
  @started = false
228
+ super
77
229
  end
78
230
 
79
231
  def filter(tag, time, record)
@@ -83,6 +235,21 @@ module FluentTest
83
235
  end
84
236
  end
85
237
 
238
+ class FluentTestBuffer < Fluent::Plugin::Buffer
239
+ ::Fluent::Plugin.register_buffer('test_buffer', self)
240
+
241
+ def resume
242
+ return {}, []
243
+ end
244
+
245
+ def generate_chunk(metadata)
246
+ end
247
+
248
+ def multi_workers_ready?
249
+ false
250
+ end
251
+ end
252
+
86
253
  class TestEmitErrorHandler
87
254
  def initialize
88
255
  @events = Hash.new { |h, k| h[k] = [] }
@@ -0,0 +1,81 @@
1
+ require_relative 'helper'
2
+ require 'fluent/plugin_helper'
3
+ require 'fluent/plugin/base'
4
+
5
+ class ConfigTest < Test::Unit::TestCase
6
+ module FluentTest; end
7
+
8
+ sub_test_case 'Fluent::Plugin::Base.helpers method works as shortcut to include helper modules' do
9
+ class FluentTest::PluginTest1 < Fluent::Plugin::TestBase
10
+ helpers :event_emitter
11
+ end
12
+ class FluentTest::PluginTest2 < Fluent::Plugin::TestBase
13
+ helpers :thread
14
+ end
15
+ class FluentTest::PluginTest3 < Fluent::Plugin::TestBase
16
+ helpers :event_loop
17
+ end
18
+ class FluentTest::PluginTest4 < Fluent::Plugin::TestBase
19
+ helpers :timer
20
+ end
21
+ class FluentTest::PluginTest5 < Fluent::Plugin::TestBase
22
+ helpers :child_process
23
+ end
24
+ class FluentTest::PluginTest6 < Fluent::Plugin::TestBase
25
+ helpers :retry_state
26
+ end
27
+ class FluentTest::PluginTest0 < Fluent::Plugin::TestBase
28
+ helpers :event_emitter, :thread, :event_loop, :timer, :child_process, :retry_state
29
+ end
30
+
31
+ test 'plugin can include helper event_emitter' do
32
+ assert FluentTest::PluginTest1.include?(Fluent::PluginHelper::EventEmitter)
33
+ p1 = FluentTest::PluginTest1.new
34
+ assert p1.respond_to?(:has_router?)
35
+ assert p1.has_router?
36
+ end
37
+
38
+ test 'plugin can include helper thread' do
39
+ assert FluentTest::PluginTest2.include?(Fluent::PluginHelper::Thread)
40
+ p2 = FluentTest::PluginTest2.new
41
+ assert p2.respond_to?(:thread_current_running?)
42
+ assert p2.respond_to?(:thread_create)
43
+ end
44
+
45
+ test 'plugin can include helper event_loop' do
46
+ assert FluentTest::PluginTest3.include?(Fluent::PluginHelper::EventLoop)
47
+ p3 = FluentTest::PluginTest3.new
48
+ assert p3.respond_to?(:event_loop_attach)
49
+ assert p3.respond_to?(:event_loop_running?)
50
+ end
51
+
52
+ test 'plugin can include helper timer' do
53
+ assert FluentTest::PluginTest4.include?(Fluent::PluginHelper::Timer)
54
+ p4 = FluentTest::PluginTest4.new
55
+ assert p4.respond_to?(:timer_execute)
56
+ end
57
+
58
+ test 'plugin can include helper child_process' do
59
+ assert FluentTest::PluginTest5.include?(Fluent::PluginHelper::ChildProcess)
60
+ p5 = FluentTest::PluginTest5.new
61
+ assert p5.respond_to?(:child_process_execute)
62
+ end
63
+
64
+ test 'plugin can 2 or more helpers at once' do
65
+ assert FluentTest::PluginTest0.include?(Fluent::PluginHelper::EventEmitter)
66
+ assert FluentTest::PluginTest0.include?(Fluent::PluginHelper::Thread)
67
+ assert FluentTest::PluginTest0.include?(Fluent::PluginHelper::EventLoop)
68
+ assert FluentTest::PluginTest0.include?(Fluent::PluginHelper::Timer)
69
+ assert FluentTest::PluginTest0.include?(Fluent::PluginHelper::ChildProcess)
70
+
71
+ p0 = FluentTest::PluginTest0.new
72
+ assert p0.respond_to?(:child_process_execute)
73
+ assert p0.respond_to?(:timer_execute)
74
+ assert p0.respond_to?(:event_loop_attach)
75
+ assert p0.respond_to?(:event_loop_running?)
76
+ assert p0.respond_to?(:thread_current_running?)
77
+ assert p0.respond_to?(:thread_create)
78
+ assert p0.respond_to?(:has_router?)
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,101 @@
1
+ require_relative 'helper'
2
+ require 'fluent/plugin/base'
3
+ require 'fluent/system_config'
4
+ require 'fileutils'
5
+
6
+ class PluginIdTest < Test::Unit::TestCase
7
+ TMP_DIR = File.expand_path(File.dirname(__FILE__) + "/tmp/plugin_id/#{ENV['TEST_ENV_NUMBER']}")
8
+
9
+ class MyPlugin < Fluent::Plugin::Base
10
+ include Fluent::PluginId
11
+ end
12
+
13
+ setup do
14
+ @p = MyPlugin.new
15
+ end
16
+
17
+ sub_test_case '#plugin_id_for_test?' do
18
+ test 'returns true always in test files' do
19
+ assert @p.plugin_id_for_test?
20
+ end
21
+
22
+ test 'returns false always out of test files' do
23
+ # TODO: no good way to write this test....
24
+ end
25
+ end
26
+
27
+ sub_test_case 'configured without @id' do
28
+ setup do
29
+ @p.configure(config_element())
30
+ end
31
+
32
+ test '#plugin_id_configured? returns false' do
33
+ assert_false @p.plugin_id_configured?
34
+ end
35
+
36
+ test '#plugin_id returns object_id based string' do
37
+ assert_kind_of String, @p.plugin_id
38
+ assert @p.plugin_id =~ /^object:[0-9a-f]+/
39
+ end
40
+
41
+ test '#plugin_root_dir returns nil' do
42
+ assert_nil @p.plugin_root_dir
43
+ end
44
+ end
45
+
46
+ sub_test_case 'configured with @id' do
47
+ setup do
48
+ FileUtils.rm_rf(TMP_DIR)
49
+ FileUtils.mkdir_p(TMP_DIR)
50
+ @p.configure(config_element('ROOT', '', {'@id' => 'testing_plugin_id'}))
51
+ end
52
+
53
+ test '#plugin_id_configured? returns true' do
54
+ assert @p.plugin_id_configured?
55
+ end
56
+
57
+ test '#plugin_id returns the configured value' do
58
+ assert_equal 'testing_plugin_id', @p.plugin_id
59
+ end
60
+
61
+ test '#plugin_root_dir returns nil without system root directory configuration' do
62
+ assert_nil @p.plugin_root_dir
63
+ end
64
+
65
+ test '#plugin_root_dir returns an existing directory path frozen String' do
66
+ root_dir = Fluent::SystemConfig.overwrite_system_config('root_dir' => File.join(TMP_DIR, "myroot")) do
67
+ @p.plugin_root_dir
68
+ end
69
+ assert_kind_of String, root_dir
70
+ assert Dir.exist?(root_dir)
71
+ assert root_dir =~ %r!/worker0/!
72
+ assert root_dir.frozen?
73
+ end
74
+
75
+ test '#plugin_root_dir returns the same value for 2nd or more call' do
76
+ root_dir = Fluent::SystemConfig.overwrite_system_config('root_dir' => File.join(TMP_DIR, "myroot")) do
77
+ @p.plugin_root_dir
78
+ end
79
+ twice = Fluent::SystemConfig.overwrite_system_config('root_dir' => File.join(TMP_DIR, "myroot")) do
80
+ @p.plugin_root_dir
81
+ end
82
+ assert_equal root_dir.object_id, twice.object_id
83
+ end
84
+
85
+ test '#plugin_root_dir referres SERVERENGINE_WORKER_ID environment path to create it' do
86
+ prev_env_val = ENV['SERVERENGINE_WORKER_ID']
87
+ begin
88
+ ENV['SERVERENGINE_WORKER_ID'] = '7'
89
+ root_dir = Fluent::SystemConfig.overwrite_system_config('root_dir' => File.join(TMP_DIR, "myroot")) do
90
+ @p.plugin_root_dir
91
+ end
92
+ assert_kind_of String, root_dir
93
+ assert Dir.exist?(root_dir)
94
+ assert root_dir =~ %r!/worker7/!
95
+ assert root_dir.frozen?
96
+ ensure
97
+ ENV['SERVERENGINE_WORKER_ID'] = prev_env_val
98
+ end
99
+ end
100
+ end
101
+ end
data/test/test_process.rb CHANGED
@@ -1,48 +1,14 @@
1
1
  require_relative 'helper'
2
- require 'fluent/test'
3
- require 'fluent/event'
4
2
  require 'fluent/process'
5
- require 'stringio'
6
- require 'msgpack'
7
3
 
8
- module FluentProcessTest
9
- class DelayedForwarderTest < Test::Unit::TestCase
10
- include Fluent
11
-
12
- test 'run and emit' do
13
- io = StringIO.new
14
- fwd = Fluent::DetachProcessManager::DelayedForwarder.new(io, 0.001)
15
-
16
- num_events_per_tag = 5000
17
- num_tags = 20
18
-
19
- now = Time.now.to_i
20
- record = {'key' => 'value'}
21
- (num_tags * num_events_per_tag).times do |i|
22
- tag = "foo.bar#{i % num_tags}"
23
- fwd.emit(tag, OneEventStream.new(now, record))
24
- end
25
- sleep 0.5
26
-
27
- io.pos = 0
28
-
29
- tags = {}
30
- MessagePack::Unpacker.new(io).each do |tag_and_msgpacks|
31
- tag, ms = *tag_and_msgpacks
32
- tags[tag] ||= ''
33
- tags[tag] << ms
34
- end
4
+ class ProcessCompatibilityTest < ::Test::Unit::TestCase
5
+ test 'DetachProcessMixin is defined' do
6
+ assert defined?(::Fluent::DetachProcessMixin)
7
+ assert_equal ::Fluent::DetachProcessMixin, ::Fluent::Compat::DetachProcessMixin
8
+ end
35
9
 
36
- assert_equal(num_tags, tags.size)
37
- num_tags.times do |i|
38
- tag = "foo.bar#{i % num_tags}"
39
- ms = tags[tag]
40
- count = 0
41
- MessagePack::Unpacker.new(StringIO.new(ms)).each do |x|
42
- count += 1
43
- end
44
- assert_equal(num_events_per_tag, count)
45
- end
46
- end
10
+ test 'DetachMultiProcessMixin is defined' do
11
+ assert defined?(::Fluent::DetachMultiProcessMixin)
12
+ assert_equal ::Fluent::DetachMultiProcessMixin, ::Fluent::Compat::DetachMultiProcessMixin
47
13
  end
48
14
  end