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
@@ -0,0 +1,338 @@
1
+ require_relative '../helper'
2
+ require 'fluent/plugin/buffer/memory_chunk'
3
+ require 'fluent/plugin/compressable'
4
+
5
+ require 'json'
6
+
7
+ class BufferMemoryChunkTest < Test::Unit::TestCase
8
+ include Fluent::Plugin::Compressable
9
+
10
+ setup do
11
+ @c = Fluent::Plugin::Buffer::MemoryChunk.new(Object.new)
12
+ end
13
+
14
+ test 'has blank chunk initially' do
15
+ assert @c.empty?
16
+ assert_equal '', @c.instance_eval{ @chunk }
17
+ assert_equal 0, @c.instance_eval{ @chunk_bytes }
18
+ assert_equal 0, @c.instance_eval{ @adding_bytes }
19
+ assert_equal 0, @c.instance_eval{ @adding_size }
20
+ end
21
+
22
+ test 'can #append, #commit and #read it' do
23
+ assert @c.empty?
24
+
25
+ d1 = {"f1" => 'v1', "f2" => 'v2', "f3" => 'v3'}
26
+ d2 = {"f1" => 'vv1', "f2" => 'vv2', "f3" => 'vv3'}
27
+ data = [d1.to_json + "\n", d2.to_json + "\n"]
28
+ @c.append(data)
29
+ @c.commit
30
+
31
+ content = @c.read
32
+ ds = content.split("\n").select{|d| !d.empty? }
33
+
34
+ assert_equal 2, ds.size
35
+ assert_equal d1, JSON.parse(ds[0])
36
+ assert_equal d2, JSON.parse(ds[1])
37
+
38
+ d3 = {"f1" => 'x', "f2" => 'y', "f3" => 'z'}
39
+ d4 = {"f1" => 'a', "f2" => 'b', "f3" => 'c'}
40
+ @c.append([d3.to_json + "\n", d4.to_json + "\n"])
41
+ @c.commit
42
+
43
+ content = @c.read
44
+ ds = content.split("\n").select{|d| !d.empty? }
45
+
46
+ assert_equal 4, ds.size
47
+ assert_equal d1, JSON.parse(ds[0])
48
+ assert_equal d2, JSON.parse(ds[1])
49
+ assert_equal d3, JSON.parse(ds[2])
50
+ assert_equal d4, JSON.parse(ds[3])
51
+ end
52
+
53
+ test 'can #concat, #commit and #read it' do
54
+ assert @c.empty?
55
+
56
+ d1 = {"f1" => 'v1', "f2" => 'v2', "f3" => 'v3'}
57
+ d2 = {"f1" => 'vv1', "f2" => 'vv2', "f3" => 'vv3'}
58
+ data = [d1.to_json + "\n", d2.to_json + "\n"].join
59
+ @c.concat(data, 2)
60
+ @c.commit
61
+
62
+ content = @c.read
63
+ ds = content.split("\n").select{|d| !d.empty? }
64
+
65
+ assert_equal 2, ds.size
66
+ assert_equal d1, JSON.parse(ds[0])
67
+ assert_equal d2, JSON.parse(ds[1])
68
+
69
+ d3 = {"f1" => 'x', "f2" => 'y', "f3" => 'z'}
70
+ d4 = {"f1" => 'a', "f2" => 'b', "f3" => 'c'}
71
+ @c.concat([d3.to_json + "\n", d4.to_json + "\n"].join, 2)
72
+ @c.commit
73
+
74
+ content = @c.read
75
+ ds = content.split("\n").select{|d| !d.empty? }
76
+
77
+ assert_equal 4, ds.size
78
+ assert_equal d1, JSON.parse(ds[0])
79
+ assert_equal d2, JSON.parse(ds[1])
80
+ assert_equal d3, JSON.parse(ds[2])
81
+ assert_equal d4, JSON.parse(ds[3])
82
+ end
83
+
84
+ test 'has its contents in binary (ascii-8bit)' do
85
+ data1 = "aaa bbb ccc".force_encoding('utf-8')
86
+ @c.append([data1])
87
+ @c.commit
88
+ assert_equal Encoding::ASCII_8BIT, @c.instance_eval{ @chunk.encoding }
89
+
90
+ content = @c.read
91
+ assert_equal Encoding::ASCII_8BIT, content.encoding
92
+ end
93
+
94
+ test 'has #bytesize and #size' do
95
+ assert @c.empty?
96
+
97
+ d1 = {"f1" => 'v1', "f2" => 'v2', "f3" => 'v3'}
98
+ d2 = {"f1" => 'vv1', "f2" => 'vv2', "f3" => 'vv3'}
99
+ data = [d1.to_json + "\n", d2.to_json + "\n"]
100
+ @c.append(data)
101
+
102
+ assert_equal (d1.to_json + "\n" + d2.to_json + "\n").bytesize, @c.bytesize
103
+ assert_equal 2, @c.size
104
+
105
+ @c.commit
106
+
107
+ assert_equal (d1.to_json + "\n" + d2.to_json + "\n").bytesize, @c.bytesize
108
+ assert_equal 2, @c.size
109
+
110
+ first_bytesize = @c.bytesize
111
+
112
+ d3 = {"f1" => 'x', "f2" => 'y', "f3" => 'z'}
113
+ d4 = {"f1" => 'a', "f2" => 'b', "f3" => 'c'}
114
+ @c.append([d3.to_json + "\n", d4.to_json + "\n"])
115
+
116
+ assert_equal first_bytesize + (d3.to_json + "\n" + d4.to_json + "\n").bytesize, @c.bytesize
117
+ assert_equal 4, @c.size
118
+
119
+ @c.commit
120
+
121
+ assert_equal first_bytesize + (d3.to_json + "\n" + d4.to_json + "\n").bytesize, @c.bytesize
122
+ assert_equal 4, @c.size
123
+ end
124
+
125
+ test 'can #rollback to revert non-committed data' do
126
+ assert @c.empty?
127
+
128
+ d1 = {"f1" => 'v1', "f2" => 'v2', "f3" => 'v3'}
129
+ d2 = {"f1" => 'vv1', "f2" => 'vv2', "f3" => 'vv3'}
130
+ data = [d1.to_json + "\n", d2.to_json + "\n"]
131
+ @c.append(data)
132
+
133
+ assert_equal (d1.to_json + "\n" + d2.to_json + "\n").bytesize, @c.bytesize
134
+ assert_equal 2, @c.size
135
+
136
+ @c.rollback
137
+
138
+ assert @c.empty?
139
+
140
+ assert @c.empty?
141
+
142
+ d1 = {"f1" => 'v1', "f2" => 'v2', "f3" => 'v3'}
143
+ d2 = {"f1" => 'vv1', "f2" => 'vv2', "f3" => 'vv3'}
144
+ data = [d1.to_json + "\n", d2.to_json + "\n"]
145
+ @c.append(data)
146
+ @c.commit
147
+
148
+ assert_equal (d1.to_json + "\n" + d2.to_json + "\n").bytesize, @c.bytesize
149
+ assert_equal 2, @c.size
150
+
151
+ first_bytesize = @c.bytesize
152
+
153
+ d3 = {"f1" => 'x', "f2" => 'y', "f3" => 'z'}
154
+ d4 = {"f1" => 'a', "f2" => 'b', "f3" => 'c'}
155
+ @c.append([d3.to_json + "\n", d4.to_json + "\n"])
156
+
157
+ assert_equal first_bytesize + (d3.to_json + "\n" + d4.to_json + "\n").bytesize, @c.bytesize
158
+ assert_equal 4, @c.size
159
+
160
+ @c.rollback
161
+
162
+ assert_equal first_bytesize, @c.bytesize
163
+ assert_equal 2, @c.size
164
+ end
165
+
166
+ test 'can #rollback to revert non-committed data from #concat' do
167
+ assert @c.empty?
168
+
169
+ d1 = {"f1" => 'v1', "f2" => 'v2', "f3" => 'v3'}
170
+ d2 = {"f1" => 'vv1', "f2" => 'vv2', "f3" => 'vv3'}
171
+ data = [d1.to_json + "\n", d2.to_json + "\n"].join
172
+ @c.concat(data, 2)
173
+
174
+ assert_equal (d1.to_json + "\n" + d2.to_json + "\n").bytesize, @c.bytesize
175
+ assert_equal 2, @c.size
176
+
177
+ @c.rollback
178
+
179
+ assert @c.empty?
180
+
181
+ assert @c.empty?
182
+
183
+ d1 = {"f1" => 'v1', "f2" => 'v2', "f3" => 'v3'}
184
+ d2 = {"f1" => 'vv1', "f2" => 'vv2', "f3" => 'vv3'}
185
+ data = [d1.to_json + "\n", d2.to_json + "\n"]
186
+ @c.append(data)
187
+ @c.commit
188
+
189
+ assert_equal (d1.to_json + "\n" + d2.to_json + "\n").bytesize, @c.bytesize
190
+ assert_equal 2, @c.size
191
+
192
+ first_bytesize = @c.bytesize
193
+
194
+ d3 = {"f1" => 'x', "f2" => 'y', "f3" => 'z'}
195
+ d4 = {"f1" => 'a', "f2" => 'b', "f3" => 'c'}
196
+ @c.concat([d3.to_json + "\n", d4.to_json + "\n"].join, 2)
197
+
198
+ assert_equal first_bytesize + (d3.to_json + "\n" + d4.to_json + "\n").bytesize, @c.bytesize
199
+ assert_equal 4, @c.size
200
+
201
+ @c.rollback
202
+
203
+ assert_equal first_bytesize, @c.bytesize
204
+ assert_equal 2, @c.size
205
+ end
206
+
207
+ test 'does nothing for #close' do
208
+ d1 = {"f1" => 'v1', "f2" => 'v2', "f3" => 'v3'}
209
+ d2 = {"f1" => 'vv1', "f2" => 'vv2', "f3" => 'vv3'}
210
+ data = [d1.to_json + "\n", d2.to_json + "\n"]
211
+ @c.append(data)
212
+ @c.commit
213
+ d3 = {"f1" => 'x', "f2" => 'y', "f3" => 'z'}
214
+ d4 = {"f1" => 'a', "f2" => 'b', "f3" => 'c'}
215
+ @c.append([d3.to_json + "\n", d4.to_json + "\n"])
216
+ @c.commit
217
+
218
+ content = @c.read
219
+
220
+ @c.close
221
+
222
+ assert_equal content, @c.read
223
+ end
224
+
225
+ test 'deletes all data by #purge' do
226
+ d1 = {"f1" => 'v1', "f2" => 'v2', "f3" => 'v3'}
227
+ d2 = {"f1" => 'vv1', "f2" => 'vv2', "f3" => 'vv3'}
228
+ data = [d1.to_json + "\n", d2.to_json + "\n"]
229
+ @c.append(data)
230
+ @c.commit
231
+ d3 = {"f1" => 'x', "f2" => 'y', "f3" => 'z'}
232
+ d4 = {"f1" => 'a', "f2" => 'b', "f3" => 'c'}
233
+ @c.append([d3.to_json + "\n", d4.to_json + "\n"])
234
+ @c.commit
235
+
236
+ @c.purge
237
+
238
+ assert @c.empty?
239
+ assert_equal 0, @c.bytesize
240
+ assert_equal 0, @c.size
241
+ assert_equal '', @c.read
242
+ end
243
+
244
+ test 'can #open its contents as io' do
245
+ d1 = {"f1" => 'v1', "f2" => 'v2', "f3" => 'v3'}
246
+ d2 = {"f1" => 'vv1', "f2" => 'vv2', "f3" => 'vv3'}
247
+ data = [d1.to_json + "\n", d2.to_json + "\n"]
248
+ @c.append(data)
249
+ @c.commit
250
+ d3 = {"f1" => 'x', "f2" => 'y', "f3" => 'z'}
251
+ d4 = {"f1" => 'a', "f2" => 'b', "f3" => 'c'}
252
+ @c.append([d3.to_json + "\n", d4.to_json + "\n"])
253
+ @c.commit
254
+
255
+ lines = []
256
+ @c.open do |io|
257
+ assert io
258
+ io.readlines.each do |l|
259
+ lines << l
260
+ end
261
+ end
262
+
263
+ assert_equal d1.to_json + "\n", lines[0]
264
+ assert_equal d2.to_json + "\n", lines[1]
265
+ assert_equal d3.to_json + "\n", lines[2]
266
+ assert_equal d4.to_json + "\n", lines[3]
267
+ end
268
+
269
+ sub_test_case 'compressed buffer' do
270
+ setup do
271
+ @src = 'text data for compressing' * 5
272
+ @gzipped_src = compress(@src)
273
+ end
274
+
275
+ test '#append with compress option writes compressed data to chunk when compress is gzip' do
276
+ c = Fluent::Plugin::Buffer::MemoryChunk.new(Object.new, compress: :gzip)
277
+ c.append([@src, @src], compress: :gzip)
278
+ c.commit
279
+
280
+ # check chunk is compressed
281
+ assert c.read(compressed: :gzip).size < [@src, @src].join("").size
282
+
283
+ assert_equal @src + @src, c.read
284
+ end
285
+
286
+ test '#open passes io object having decompressed data to a block when compress is gzip' do
287
+ c = Fluent::Plugin::Buffer::MemoryChunk.new(Object.new, compress: :gzip)
288
+ c.concat(@gzipped_src, @src.size)
289
+ c.commit
290
+
291
+ decomressed_data = c.open do |io|
292
+ v = io.read
293
+ assert_equal @src, v
294
+ v
295
+ end
296
+ assert_equal @src, decomressed_data
297
+ end
298
+
299
+ test '#open with compressed option passes io object having decompressed data to a block when compress is gzip' do
300
+ c = Fluent::Plugin::Buffer::MemoryChunk.new(Object.new, compress: :gzip)
301
+ c.concat(@gzipped_src, @src.size)
302
+ c.commit
303
+
304
+ comressed_data = c.open(compressed: :gzip) do |io|
305
+ v = io.read
306
+ assert_equal @gzipped_src, v
307
+ v
308
+ end
309
+ assert_equal @gzipped_src, comressed_data
310
+ end
311
+
312
+ test '#write_to writes decompressed data when compress is gzip' do
313
+ c = Fluent::Plugin::Buffer::MemoryChunk.new(Object.new, compress: :gzip)
314
+ c.concat(@gzipped_src, @src.size)
315
+ c.commit
316
+
317
+ assert_equal @src, c.read
318
+ assert_equal @gzipped_src, c.read(compressed: :gzip)
319
+
320
+ io = StringIO.new
321
+ c.write_to(io)
322
+ assert_equal @src, io.string
323
+ end
324
+
325
+ test '#write_to with compressed option writes compressed data when compress is gzip' do
326
+ c = Fluent::Plugin::Buffer::MemoryChunk.new(Object.new, compress: :gzip)
327
+ c.concat(@gzipped_src, @src.size)
328
+ c.commit
329
+
330
+ assert_equal @src, c.read
331
+ assert_equal @gzipped_src, c.read(compressed: :gzip)
332
+
333
+ io = StringIO.new
334
+ c.write_to(io, compressed: :gzip)
335
+ assert_equal @gzipped_src, io.string
336
+ end
337
+ end
338
+ end
@@ -0,0 +1,84 @@
1
+ require_relative '../helper'
2
+ require 'fluent/plugin/compressable'
3
+
4
+ class CompressableTest < Test::Unit::TestCase
5
+ include Fluent::Plugin::Compressable
6
+
7
+ sub_test_case '#compress' do
8
+ setup do
9
+ @src = 'text data for compressing' * 5
10
+ @gzipped_src = compress(@src)
11
+ end
12
+
13
+ test 'compress data' do
14
+ assert compress(@src).size < @src.size
15
+ assert_not_equal @gzipped_src, @src
16
+ end
17
+
18
+ test 'write compressed data to IO with output_io option' do
19
+ io = StringIO.new
20
+ compress(@src, output_io: io)
21
+ waiting(10){ sleep 0.1 until @gzipped_src == io.string }
22
+ assert_equal @gzipped_src, io.string
23
+ end
24
+ end
25
+
26
+ sub_test_case '#decompress' do
27
+ setup do
28
+ @src = 'text data for compressing' * 5
29
+ @gzipped_src = compress(@src)
30
+ end
31
+
32
+ test 'decompress compressed data' do
33
+ assert_equal @src, decompress(@gzipped_src)
34
+ end
35
+
36
+ test 'write decompressed data to IO with output_io option' do
37
+ io = StringIO.new
38
+ decompress(@gzipped_src, output_io: io)
39
+ waiting(10){ sleep 0.1 until @src == io.string }
40
+ assert_equal @src, io.string
41
+ end
42
+
43
+ test 'return decompressed string with output_io option' do
44
+ io = StringIO.new(@gzipped_src)
45
+ assert_equal @src, decompress(input_io: io)
46
+ end
47
+
48
+ test 'decompress multiple compressed data' do
49
+ src1 = 'text data'
50
+ src2 = 'text data2'
51
+ gzipped_src = compress(src1) + compress(src2)
52
+
53
+ assert_equal src1 + src2, decompress(gzipped_src)
54
+ end
55
+
56
+ test 'decompress with input_io and output_io' do
57
+ input_io = StringIO.new(@gzipped_src)
58
+ output_io = StringIO.new
59
+
60
+ decompress(input_io: input_io, output_io: output_io)
61
+ waiting(10){ sleep 0.1 until @src == output_io.string }
62
+ assert_equal @src, output_io.string
63
+ end
64
+
65
+ test 'decompress multiple compressed data with input_io and output_io' do
66
+ src1 = 'text data'
67
+ src2 = 'text data2'
68
+ gzipped_src = compress(src1) + compress(src2)
69
+
70
+ input_io = StringIO.new(gzipped_src)
71
+ output_io = StringIO.new
72
+
73
+ decompress(input_io: input_io, output_io: output_io)
74
+ assert_equal src1 + src2, output_io.string
75
+ end
76
+
77
+ test 'return the received value as it is with empty string or nil' do
78
+ assert_equal nil, decompress
79
+ assert_equal nil, decompress(nil)
80
+ assert_equal '', decompress('')
81
+ assert_equal '', decompress('', output_io: StringIO.new)
82
+ end
83
+ end
84
+ end