fluentd 1.14.4-x64-mingw-ucrt

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 (558) hide show
  1. checksums.yaml +7 -0
  2. data/.deepsource.toml +13 -0
  3. data/.drone.yml +35 -0
  4. data/.github/ISSUE_TEMPLATE/bug_report.yaml +70 -0
  5. data/.github/ISSUE_TEMPLATE/config.yml +5 -0
  6. data/.github/ISSUE_TEMPLATE/feature_request.yaml +38 -0
  7. data/.github/ISSUE_TEMPLATE.md +17 -0
  8. data/.github/PULL_REQUEST_TEMPLATE.md +14 -0
  9. data/.github/workflows/issue-auto-closer.yml +12 -0
  10. data/.github/workflows/linux-test.yaml +36 -0
  11. data/.github/workflows/macos-test.yaml +30 -0
  12. data/.github/workflows/stale-actions.yml +22 -0
  13. data/.github/workflows/windows-test.yaml +46 -0
  14. data/.gitignore +30 -0
  15. data/.gitlab-ci.yml +103 -0
  16. data/ADOPTERS.md +5 -0
  17. data/AUTHORS +2 -0
  18. data/CHANGELOG.md +2409 -0
  19. data/CONTRIBUTING.md +45 -0
  20. data/GOVERNANCE.md +55 -0
  21. data/Gemfile +9 -0
  22. data/GithubWorkflow.md +78 -0
  23. data/LICENSE +202 -0
  24. data/MAINTAINERS.md +11 -0
  25. data/README.md +97 -0
  26. data/Rakefile +79 -0
  27. data/SECURITY.md +18 -0
  28. data/bin/fluent-binlog-reader +7 -0
  29. data/bin/fluent-ca-generate +6 -0
  30. data/bin/fluent-cap-ctl +7 -0
  31. data/bin/fluent-cat +5 -0
  32. data/bin/fluent-ctl +7 -0
  33. data/bin/fluent-debug +5 -0
  34. data/bin/fluent-gem +9 -0
  35. data/bin/fluent-plugin-config-format +5 -0
  36. data/bin/fluent-plugin-generate +5 -0
  37. data/bin/fluentd +15 -0
  38. data/code-of-conduct.md +3 -0
  39. data/docs/SECURITY_AUDIT.pdf +0 -0
  40. data/example/copy_roundrobin.conf +39 -0
  41. data/example/counter.conf +18 -0
  42. data/example/filter_stdout.conf +22 -0
  43. data/example/in_forward.conf +14 -0
  44. data/example/in_forward_client.conf +37 -0
  45. data/example/in_forward_shared_key.conf +15 -0
  46. data/example/in_forward_tls.conf +14 -0
  47. data/example/in_forward_users.conf +24 -0
  48. data/example/in_forward_workers.conf +21 -0
  49. data/example/in_http.conf +16 -0
  50. data/example/in_out_forward.conf +17 -0
  51. data/example/in_sample_blocks.conf +17 -0
  52. data/example/in_sample_with_compression.conf +23 -0
  53. data/example/in_syslog.conf +15 -0
  54. data/example/in_tail.conf +14 -0
  55. data/example/in_tcp.conf +13 -0
  56. data/example/in_udp.conf +13 -0
  57. data/example/logevents.conf +25 -0
  58. data/example/multi_filters.conf +61 -0
  59. data/example/out_copy.conf +20 -0
  60. data/example/out_exec_filter.conf +42 -0
  61. data/example/out_file.conf +13 -0
  62. data/example/out_forward.conf +35 -0
  63. data/example/out_forward_buf_file.conf +23 -0
  64. data/example/out_forward_client.conf +109 -0
  65. data/example/out_forward_heartbeat_none.conf +16 -0
  66. data/example/out_forward_sd.conf +17 -0
  67. data/example/out_forward_shared_key.conf +36 -0
  68. data/example/out_forward_tls.conf +18 -0
  69. data/example/out_forward_users.conf +65 -0
  70. data/example/out_null.conf +36 -0
  71. data/example/sd.yaml +8 -0
  72. data/example/secondary_file.conf +42 -0
  73. data/example/suppress_config_dump.conf +7 -0
  74. data/example/v0_12_filter.conf +78 -0
  75. data/example/v1_literal_example.conf +36 -0
  76. data/example/worker_section.conf +36 -0
  77. data/fluent.conf +139 -0
  78. data/fluentd.gemspec +55 -0
  79. data/lib/fluent/agent.rb +168 -0
  80. data/lib/fluent/capability.rb +87 -0
  81. data/lib/fluent/clock.rb +66 -0
  82. data/lib/fluent/command/binlog_reader.rb +244 -0
  83. data/lib/fluent/command/bundler_injection.rb +45 -0
  84. data/lib/fluent/command/ca_generate.rb +184 -0
  85. data/lib/fluent/command/cap_ctl.rb +174 -0
  86. data/lib/fluent/command/cat.rb +365 -0
  87. data/lib/fluent/command/ctl.rb +177 -0
  88. data/lib/fluent/command/debug.rb +103 -0
  89. data/lib/fluent/command/fluentd.rb +374 -0
  90. data/lib/fluent/command/plugin_config_formatter.rb +308 -0
  91. data/lib/fluent/command/plugin_generator.rb +365 -0
  92. data/lib/fluent/compat/call_super_mixin.rb +76 -0
  93. data/lib/fluent/compat/detach_process_mixin.rb +33 -0
  94. data/lib/fluent/compat/exec_util.rb +129 -0
  95. data/lib/fluent/compat/file_util.rb +54 -0
  96. data/lib/fluent/compat/filter.rb +68 -0
  97. data/lib/fluent/compat/formatter.rb +111 -0
  98. data/lib/fluent/compat/formatter_utils.rb +85 -0
  99. data/lib/fluent/compat/handle_tag_and_time_mixin.rb +62 -0
  100. data/lib/fluent/compat/handle_tag_name_mixin.rb +53 -0
  101. data/lib/fluent/compat/input.rb +49 -0
  102. data/lib/fluent/compat/output.rb +721 -0
  103. data/lib/fluent/compat/output_chain.rb +60 -0
  104. data/lib/fluent/compat/parser.rb +310 -0
  105. data/lib/fluent/compat/parser_utils.rb +40 -0
  106. data/lib/fluent/compat/propagate_default.rb +62 -0
  107. data/lib/fluent/compat/record_filter_mixin.rb +34 -0
  108. data/lib/fluent/compat/set_tag_key_mixin.rb +50 -0
  109. data/lib/fluent/compat/set_time_key_mixin.rb +69 -0
  110. data/lib/fluent/compat/socket_util.rb +165 -0
  111. data/lib/fluent/compat/string_util.rb +34 -0
  112. data/lib/fluent/compat/structured_format_mixin.rb +26 -0
  113. data/lib/fluent/compat/type_converter.rb +90 -0
  114. data/lib/fluent/config/basic_parser.rb +123 -0
  115. data/lib/fluent/config/configure_proxy.rb +424 -0
  116. data/lib/fluent/config/dsl.rb +152 -0
  117. data/lib/fluent/config/element.rb +265 -0
  118. data/lib/fluent/config/error.rb +32 -0
  119. data/lib/fluent/config/literal_parser.rb +286 -0
  120. data/lib/fluent/config/parser.rb +107 -0
  121. data/lib/fluent/config/section.rb +272 -0
  122. data/lib/fluent/config/types.rb +249 -0
  123. data/lib/fluent/config/v1_parser.rb +192 -0
  124. data/lib/fluent/config.rb +76 -0
  125. data/lib/fluent/configurable.rb +201 -0
  126. data/lib/fluent/counter/base_socket.rb +44 -0
  127. data/lib/fluent/counter/client.rb +297 -0
  128. data/lib/fluent/counter/error.rb +86 -0
  129. data/lib/fluent/counter/mutex_hash.rb +163 -0
  130. data/lib/fluent/counter/server.rb +273 -0
  131. data/lib/fluent/counter/store.rb +205 -0
  132. data/lib/fluent/counter/validator.rb +145 -0
  133. data/lib/fluent/counter.rb +23 -0
  134. data/lib/fluent/daemon.rb +15 -0
  135. data/lib/fluent/daemonizer.rb +88 -0
  136. data/lib/fluent/engine.rb +253 -0
  137. data/lib/fluent/env.rb +40 -0
  138. data/lib/fluent/error.rb +34 -0
  139. data/lib/fluent/event.rb +326 -0
  140. data/lib/fluent/event_router.rb +297 -0
  141. data/lib/fluent/ext_monitor_require.rb +28 -0
  142. data/lib/fluent/filter.rb +21 -0
  143. data/lib/fluent/fluent_log_event_router.rb +141 -0
  144. data/lib/fluent/formatter.rb +23 -0
  145. data/lib/fluent/input.rb +21 -0
  146. data/lib/fluent/label.rb +46 -0
  147. data/lib/fluent/load.rb +34 -0
  148. data/lib/fluent/log.rb +713 -0
  149. data/lib/fluent/match.rb +187 -0
  150. data/lib/fluent/mixin.rb +31 -0
  151. data/lib/fluent/msgpack_factory.rb +106 -0
  152. data/lib/fluent/oj_options.rb +62 -0
  153. data/lib/fluent/output.rb +29 -0
  154. data/lib/fluent/output_chain.rb +23 -0
  155. data/lib/fluent/parser.rb +23 -0
  156. data/lib/fluent/plugin/bare_output.rb +104 -0
  157. data/lib/fluent/plugin/base.rb +197 -0
  158. data/lib/fluent/plugin/buf_file.rb +213 -0
  159. data/lib/fluent/plugin/buf_file_single.rb +225 -0
  160. data/lib/fluent/plugin/buf_memory.rb +34 -0
  161. data/lib/fluent/plugin/buffer/chunk.rb +240 -0
  162. data/lib/fluent/plugin/buffer/file_chunk.rb +413 -0
  163. data/lib/fluent/plugin/buffer/file_single_chunk.rb +311 -0
  164. data/lib/fluent/plugin/buffer/memory_chunk.rb +91 -0
  165. data/lib/fluent/plugin/buffer.rb +918 -0
  166. data/lib/fluent/plugin/compressable.rb +96 -0
  167. data/lib/fluent/plugin/exec_util.rb +22 -0
  168. data/lib/fluent/plugin/file_util.rb +22 -0
  169. data/lib/fluent/plugin/file_wrapper.rb +187 -0
  170. data/lib/fluent/plugin/filter.rb +127 -0
  171. data/lib/fluent/plugin/filter_grep.rb +189 -0
  172. data/lib/fluent/plugin/filter_parser.rb +130 -0
  173. data/lib/fluent/plugin/filter_record_transformer.rb +324 -0
  174. data/lib/fluent/plugin/filter_stdout.rb +53 -0
  175. data/lib/fluent/plugin/formatter.rb +75 -0
  176. data/lib/fluent/plugin/formatter_csv.rb +78 -0
  177. data/lib/fluent/plugin/formatter_hash.rb +35 -0
  178. data/lib/fluent/plugin/formatter_json.rb +59 -0
  179. data/lib/fluent/plugin/formatter_ltsv.rb +44 -0
  180. data/lib/fluent/plugin/formatter_msgpack.rb +33 -0
  181. data/lib/fluent/plugin/formatter_out_file.rb +53 -0
  182. data/lib/fluent/plugin/formatter_single_value.rb +36 -0
  183. data/lib/fluent/plugin/formatter_stdout.rb +76 -0
  184. data/lib/fluent/plugin/formatter_tsv.rb +40 -0
  185. data/lib/fluent/plugin/in_debug_agent.rb +71 -0
  186. data/lib/fluent/plugin/in_dummy.rb +18 -0
  187. data/lib/fluent/plugin/in_exec.rb +110 -0
  188. data/lib/fluent/plugin/in_forward.rb +473 -0
  189. data/lib/fluent/plugin/in_gc_stat.rb +72 -0
  190. data/lib/fluent/plugin/in_http.rb +667 -0
  191. data/lib/fluent/plugin/in_monitor_agent.rb +412 -0
  192. data/lib/fluent/plugin/in_object_space.rb +93 -0
  193. data/lib/fluent/plugin/in_sample.rb +141 -0
  194. data/lib/fluent/plugin/in_syslog.rb +276 -0
  195. data/lib/fluent/plugin/in_tail/position_file.rb +269 -0
  196. data/lib/fluent/plugin/in_tail.rb +1228 -0
  197. data/lib/fluent/plugin/in_tcp.rb +181 -0
  198. data/lib/fluent/plugin/in_udp.rb +92 -0
  199. data/lib/fluent/plugin/in_unix.rb +195 -0
  200. data/lib/fluent/plugin/input.rb +75 -0
  201. data/lib/fluent/plugin/metrics.rb +119 -0
  202. data/lib/fluent/plugin/metrics_local.rb +96 -0
  203. data/lib/fluent/plugin/multi_output.rb +195 -0
  204. data/lib/fluent/plugin/out_copy.rb +120 -0
  205. data/lib/fluent/plugin/out_exec.rb +105 -0
  206. data/lib/fluent/plugin/out_exec_filter.rb +319 -0
  207. data/lib/fluent/plugin/out_file.rb +334 -0
  208. data/lib/fluent/plugin/out_forward/ack_handler.rb +161 -0
  209. data/lib/fluent/plugin/out_forward/connection_manager.rb +113 -0
  210. data/lib/fluent/plugin/out_forward/error.rb +28 -0
  211. data/lib/fluent/plugin/out_forward/failure_detector.rb +84 -0
  212. data/lib/fluent/plugin/out_forward/handshake_protocol.rb +125 -0
  213. data/lib/fluent/plugin/out_forward/load_balancer.rb +114 -0
  214. data/lib/fluent/plugin/out_forward/socket_cache.rb +140 -0
  215. data/lib/fluent/plugin/out_forward.rb +826 -0
  216. data/lib/fluent/plugin/out_http.rb +275 -0
  217. data/lib/fluent/plugin/out_null.rb +74 -0
  218. data/lib/fluent/plugin/out_relabel.rb +32 -0
  219. data/lib/fluent/plugin/out_roundrobin.rb +84 -0
  220. data/lib/fluent/plugin/out_secondary_file.rb +131 -0
  221. data/lib/fluent/plugin/out_stdout.rb +74 -0
  222. data/lib/fluent/plugin/out_stream.rb +130 -0
  223. data/lib/fluent/plugin/output.rb +1556 -0
  224. data/lib/fluent/plugin/owned_by_mixin.rb +42 -0
  225. data/lib/fluent/plugin/parser.rb +275 -0
  226. data/lib/fluent/plugin/parser_apache.rb +28 -0
  227. data/lib/fluent/plugin/parser_apache2.rb +88 -0
  228. data/lib/fluent/plugin/parser_apache_error.rb +26 -0
  229. data/lib/fluent/plugin/parser_csv.rb +114 -0
  230. data/lib/fluent/plugin/parser_json.rb +96 -0
  231. data/lib/fluent/plugin/parser_ltsv.rb +51 -0
  232. data/lib/fluent/plugin/parser_msgpack.rb +50 -0
  233. data/lib/fluent/plugin/parser_multiline.rb +152 -0
  234. data/lib/fluent/plugin/parser_nginx.rb +28 -0
  235. data/lib/fluent/plugin/parser_none.rb +36 -0
  236. data/lib/fluent/plugin/parser_regexp.rb +68 -0
  237. data/lib/fluent/plugin/parser_syslog.rb +496 -0
  238. data/lib/fluent/plugin/parser_tsv.rb +42 -0
  239. data/lib/fluent/plugin/sd_file.rb +156 -0
  240. data/lib/fluent/plugin/sd_srv.rb +135 -0
  241. data/lib/fluent/plugin/sd_static.rb +58 -0
  242. data/lib/fluent/plugin/service_discovery.rb +65 -0
  243. data/lib/fluent/plugin/socket_util.rb +22 -0
  244. data/lib/fluent/plugin/storage.rb +84 -0
  245. data/lib/fluent/plugin/storage_local.rb +162 -0
  246. data/lib/fluent/plugin/string_util.rb +22 -0
  247. data/lib/fluent/plugin.rb +206 -0
  248. data/lib/fluent/plugin_helper/cert_option.rb +191 -0
  249. data/lib/fluent/plugin_helper/child_process.rb +366 -0
  250. data/lib/fluent/plugin_helper/compat_parameters.rb +343 -0
  251. data/lib/fluent/plugin_helper/counter.rb +51 -0
  252. data/lib/fluent/plugin_helper/event_emitter.rb +100 -0
  253. data/lib/fluent/plugin_helper/event_loop.rb +170 -0
  254. data/lib/fluent/plugin_helper/extract.rb +104 -0
  255. data/lib/fluent/plugin_helper/formatter.rb +147 -0
  256. data/lib/fluent/plugin_helper/http_server/app.rb +79 -0
  257. data/lib/fluent/plugin_helper/http_server/compat/server.rb +92 -0
  258. data/lib/fluent/plugin_helper/http_server/compat/ssl_context_extractor.rb +52 -0
  259. data/lib/fluent/plugin_helper/http_server/compat/webrick_handler.rb +58 -0
  260. data/lib/fluent/plugin_helper/http_server/methods.rb +35 -0
  261. data/lib/fluent/plugin_helper/http_server/request.rb +42 -0
  262. data/lib/fluent/plugin_helper/http_server/router.rb +54 -0
  263. data/lib/fluent/plugin_helper/http_server/server.rb +93 -0
  264. data/lib/fluent/plugin_helper/http_server/ssl_context_builder.rb +41 -0
  265. data/lib/fluent/plugin_helper/http_server.rb +135 -0
  266. data/lib/fluent/plugin_helper/inject.rb +154 -0
  267. data/lib/fluent/plugin_helper/metrics.rb +129 -0
  268. data/lib/fluent/plugin_helper/parser.rb +147 -0
  269. data/lib/fluent/plugin_helper/record_accessor.rb +207 -0
  270. data/lib/fluent/plugin_helper/retry_state.rb +209 -0
  271. data/lib/fluent/plugin_helper/server.rb +801 -0
  272. data/lib/fluent/plugin_helper/service_discovery/manager.rb +146 -0
  273. data/lib/fluent/plugin_helper/service_discovery/round_robin_balancer.rb +43 -0
  274. data/lib/fluent/plugin_helper/service_discovery.rb +125 -0
  275. data/lib/fluent/plugin_helper/socket.rb +277 -0
  276. data/lib/fluent/plugin_helper/socket_option.rb +98 -0
  277. data/lib/fluent/plugin_helper/storage.rb +349 -0
  278. data/lib/fluent/plugin_helper/thread.rb +180 -0
  279. data/lib/fluent/plugin_helper/timer.rb +92 -0
  280. data/lib/fluent/plugin_helper.rb +75 -0
  281. data/lib/fluent/plugin_id.rb +93 -0
  282. data/lib/fluent/process.rb +22 -0
  283. data/lib/fluent/registry.rb +116 -0
  284. data/lib/fluent/root_agent.rb +372 -0
  285. data/lib/fluent/rpc.rb +94 -0
  286. data/lib/fluent/static_config_analysis.rb +194 -0
  287. data/lib/fluent/supervisor.rb +1054 -0
  288. data/lib/fluent/system_config.rb +187 -0
  289. data/lib/fluent/test/base.rb +78 -0
  290. data/lib/fluent/test/driver/base.rb +225 -0
  291. data/lib/fluent/test/driver/base_owned.rb +83 -0
  292. data/lib/fluent/test/driver/base_owner.rb +135 -0
  293. data/lib/fluent/test/driver/event_feeder.rb +98 -0
  294. data/lib/fluent/test/driver/filter.rb +57 -0
  295. data/lib/fluent/test/driver/formatter.rb +30 -0
  296. data/lib/fluent/test/driver/input.rb +31 -0
  297. data/lib/fluent/test/driver/multi_output.rb +53 -0
  298. data/lib/fluent/test/driver/output.rb +102 -0
  299. data/lib/fluent/test/driver/parser.rb +30 -0
  300. data/lib/fluent/test/driver/storage.rb +30 -0
  301. data/lib/fluent/test/driver/test_event_router.rb +45 -0
  302. data/lib/fluent/test/filter_test.rb +77 -0
  303. data/lib/fluent/test/formatter_test.rb +65 -0
  304. data/lib/fluent/test/helpers.rb +134 -0
  305. data/lib/fluent/test/input_test.rb +174 -0
  306. data/lib/fluent/test/log.rb +79 -0
  307. data/lib/fluent/test/output_test.rb +156 -0
  308. data/lib/fluent/test/parser_test.rb +70 -0
  309. data/lib/fluent/test/startup_shutdown.rb +46 -0
  310. data/lib/fluent/test.rb +58 -0
  311. data/lib/fluent/time.rb +512 -0
  312. data/lib/fluent/timezone.rb +171 -0
  313. data/lib/fluent/tls.rb +81 -0
  314. data/lib/fluent/unique_id.rb +39 -0
  315. data/lib/fluent/variable_store.rb +40 -0
  316. data/lib/fluent/version.rb +21 -0
  317. data/lib/fluent/winsvc.rb +103 -0
  318. data/templates/new_gem/Gemfile +3 -0
  319. data/templates/new_gem/README.md.erb +43 -0
  320. data/templates/new_gem/Rakefile +13 -0
  321. data/templates/new_gem/fluent-plugin.gemspec.erb +27 -0
  322. data/templates/new_gem/lib/fluent/plugin/filter.rb.erb +14 -0
  323. data/templates/new_gem/lib/fluent/plugin/formatter.rb.erb +14 -0
  324. data/templates/new_gem/lib/fluent/plugin/input.rb.erb +11 -0
  325. data/templates/new_gem/lib/fluent/plugin/output.rb.erb +11 -0
  326. data/templates/new_gem/lib/fluent/plugin/parser.rb.erb +15 -0
  327. data/templates/new_gem/lib/fluent/plugin/storage.rb.erb +40 -0
  328. data/templates/new_gem/test/helper.rb.erb +8 -0
  329. data/templates/new_gem/test/plugin/test_filter.rb.erb +18 -0
  330. data/templates/new_gem/test/plugin/test_formatter.rb.erb +18 -0
  331. data/templates/new_gem/test/plugin/test_input.rb.erb +18 -0
  332. data/templates/new_gem/test/plugin/test_output.rb.erb +18 -0
  333. data/templates/new_gem/test/plugin/test_parser.rb.erb +18 -0
  334. data/templates/new_gem/test/plugin/test_storage.rb.erb +18 -0
  335. data/templates/plugin_config_formatter/param.md-compact.erb +25 -0
  336. data/templates/plugin_config_formatter/param.md-table.erb +10 -0
  337. data/templates/plugin_config_formatter/param.md.erb +34 -0
  338. data/templates/plugin_config_formatter/section.md.erb +12 -0
  339. data/test/command/test_binlog_reader.rb +362 -0
  340. data/test/command/test_ca_generate.rb +70 -0
  341. data/test/command/test_cap_ctl.rb +100 -0
  342. data/test/command/test_cat.rb +128 -0
  343. data/test/command/test_ctl.rb +57 -0
  344. data/test/command/test_fluentd.rb +1106 -0
  345. data/test/command/test_plugin_config_formatter.rb +398 -0
  346. data/test/command/test_plugin_generator.rb +109 -0
  347. data/test/compat/test_calls_super.rb +166 -0
  348. data/test/compat/test_parser.rb +92 -0
  349. data/test/config/assertions.rb +42 -0
  350. data/test/config/test_config_parser.rb +551 -0
  351. data/test/config/test_configurable.rb +1784 -0
  352. data/test/config/test_configure_proxy.rb +604 -0
  353. data/test/config/test_dsl.rb +415 -0
  354. data/test/config/test_element.rb +518 -0
  355. data/test/config/test_literal_parser.rb +309 -0
  356. data/test/config/test_plugin_configuration.rb +56 -0
  357. data/test/config/test_section.rb +191 -0
  358. data/test/config/test_system_config.rb +199 -0
  359. data/test/config/test_types.rb +408 -0
  360. data/test/counter/test_client.rb +563 -0
  361. data/test/counter/test_error.rb +44 -0
  362. data/test/counter/test_mutex_hash.rb +179 -0
  363. data/test/counter/test_server.rb +589 -0
  364. data/test/counter/test_store.rb +258 -0
  365. data/test/counter/test_validator.rb +137 -0
  366. data/test/helper.rb +155 -0
  367. data/test/helpers/fuzzy_assert.rb +89 -0
  368. data/test/helpers/process_extenstion.rb +33 -0
  369. data/test/plugin/data/2010/01/20100102-030405.log +0 -0
  370. data/test/plugin/data/2010/01/20100102-030406.log +0 -0
  371. data/test/plugin/data/2010/01/20100102.log +0 -0
  372. data/test/plugin/data/log/bar +0 -0
  373. data/test/plugin/data/log/foo/bar.log +0 -0
  374. data/test/plugin/data/log/foo/bar2 +0 -0
  375. data/test/plugin/data/log/test.log +0 -0
  376. data/test/plugin/data/sd_file/config +11 -0
  377. data/test/plugin/data/sd_file/config.json +17 -0
  378. data/test/plugin/data/sd_file/config.yaml +11 -0
  379. data/test/plugin/data/sd_file/config.yml +11 -0
  380. data/test/plugin/data/sd_file/invalid_config.yml +7 -0
  381. data/test/plugin/in_tail/test_fifo.rb +121 -0
  382. data/test/plugin/in_tail/test_io_handler.rb +140 -0
  383. data/test/plugin/in_tail/test_position_file.rb +379 -0
  384. data/test/plugin/out_forward/test_ack_handler.rb +101 -0
  385. data/test/plugin/out_forward/test_connection_manager.rb +145 -0
  386. data/test/plugin/out_forward/test_handshake_protocol.rb +112 -0
  387. data/test/plugin/out_forward/test_load_balancer.rb +106 -0
  388. data/test/plugin/out_forward/test_socket_cache.rb +149 -0
  389. data/test/plugin/test_bare_output.rb +131 -0
  390. data/test/plugin/test_base.rb +115 -0
  391. data/test/plugin/test_buf_file.rb +1275 -0
  392. data/test/plugin/test_buf_file_single.rb +833 -0
  393. data/test/plugin/test_buf_memory.rb +42 -0
  394. data/test/plugin/test_buffer.rb +1383 -0
  395. data/test/plugin/test_buffer_chunk.rb +198 -0
  396. data/test/plugin/test_buffer_file_chunk.rb +871 -0
  397. data/test/plugin/test_buffer_file_single_chunk.rb +611 -0
  398. data/test/plugin/test_buffer_memory_chunk.rb +339 -0
  399. data/test/plugin/test_compressable.rb +87 -0
  400. data/test/plugin/test_file_util.rb +96 -0
  401. data/test/plugin/test_file_wrapper.rb +126 -0
  402. data/test/plugin/test_filter.rb +368 -0
  403. data/test/plugin/test_filter_grep.rb +697 -0
  404. data/test/plugin/test_filter_parser.rb +731 -0
  405. data/test/plugin/test_filter_record_transformer.rb +577 -0
  406. data/test/plugin/test_filter_stdout.rb +207 -0
  407. data/test/plugin/test_formatter_csv.rb +136 -0
  408. data/test/plugin/test_formatter_hash.rb +38 -0
  409. data/test/plugin/test_formatter_json.rb +61 -0
  410. data/test/plugin/test_formatter_ltsv.rb +70 -0
  411. data/test/plugin/test_formatter_msgpack.rb +28 -0
  412. data/test/plugin/test_formatter_out_file.rb +116 -0
  413. data/test/plugin/test_formatter_single_value.rb +44 -0
  414. data/test/plugin/test_formatter_tsv.rb +76 -0
  415. data/test/plugin/test_in_debug_agent.rb +49 -0
  416. data/test/plugin/test_in_exec.rb +261 -0
  417. data/test/plugin/test_in_forward.rb +1180 -0
  418. data/test/plugin/test_in_gc_stat.rb +62 -0
  419. data/test/plugin/test_in_http.rb +1080 -0
  420. data/test/plugin/test_in_monitor_agent.rb +923 -0
  421. data/test/plugin/test_in_object_space.rb +60 -0
  422. data/test/plugin/test_in_sample.rb +190 -0
  423. data/test/plugin/test_in_syslog.rb +505 -0
  424. data/test/plugin/test_in_tail.rb +2363 -0
  425. data/test/plugin/test_in_tcp.rb +243 -0
  426. data/test/plugin/test_in_udp.rb +268 -0
  427. data/test/plugin/test_in_unix.rb +181 -0
  428. data/test/plugin/test_input.rb +137 -0
  429. data/test/plugin/test_metadata.rb +89 -0
  430. data/test/plugin/test_metrics.rb +294 -0
  431. data/test/plugin/test_metrics_local.rb +96 -0
  432. data/test/plugin/test_multi_output.rb +204 -0
  433. data/test/plugin/test_out_copy.rb +308 -0
  434. data/test/plugin/test_out_exec.rb +312 -0
  435. data/test/plugin/test_out_exec_filter.rb +606 -0
  436. data/test/plugin/test_out_file.rb +1037 -0
  437. data/test/plugin/test_out_forward.rb +1348 -0
  438. data/test/plugin/test_out_http.rb +428 -0
  439. data/test/plugin/test_out_null.rb +105 -0
  440. data/test/plugin/test_out_relabel.rb +28 -0
  441. data/test/plugin/test_out_roundrobin.rb +146 -0
  442. data/test/plugin/test_out_secondary_file.rb +458 -0
  443. data/test/plugin/test_out_stdout.rb +205 -0
  444. data/test/plugin/test_out_stream.rb +103 -0
  445. data/test/plugin/test_output.rb +1065 -0
  446. data/test/plugin/test_output_as_buffered.rb +2024 -0
  447. data/test/plugin/test_output_as_buffered_backup.rb +363 -0
  448. data/test/plugin/test_output_as_buffered_compress.rb +165 -0
  449. data/test/plugin/test_output_as_buffered_overflow.rb +250 -0
  450. data/test/plugin/test_output_as_buffered_retries.rb +919 -0
  451. data/test/plugin/test_output_as_buffered_secondary.rb +882 -0
  452. data/test/plugin/test_output_as_standard.rb +374 -0
  453. data/test/plugin/test_owned_by.rb +35 -0
  454. data/test/plugin/test_parser.rb +399 -0
  455. data/test/plugin/test_parser_apache.rb +42 -0
  456. data/test/plugin/test_parser_apache2.rb +47 -0
  457. data/test/plugin/test_parser_apache_error.rb +45 -0
  458. data/test/plugin/test_parser_csv.rb +200 -0
  459. data/test/plugin/test_parser_json.rb +138 -0
  460. data/test/plugin/test_parser_labeled_tsv.rb +160 -0
  461. data/test/plugin/test_parser_multiline.rb +111 -0
  462. data/test/plugin/test_parser_nginx.rb +88 -0
  463. data/test/plugin/test_parser_none.rb +52 -0
  464. data/test/plugin/test_parser_regexp.rb +289 -0
  465. data/test/plugin/test_parser_syslog.rb +650 -0
  466. data/test/plugin/test_parser_tsv.rb +122 -0
  467. data/test/plugin/test_sd_file.rb +228 -0
  468. data/test/plugin/test_sd_srv.rb +230 -0
  469. data/test/plugin/test_storage.rb +167 -0
  470. data/test/plugin/test_storage_local.rb +335 -0
  471. data/test/plugin/test_string_util.rb +26 -0
  472. data/test/plugin_helper/data/cert/cert-key.pem +27 -0
  473. data/test/plugin_helper/data/cert/cert-with-CRLF.pem +19 -0
  474. data/test/plugin_helper/data/cert/cert-with-no-newline.pem +19 -0
  475. data/test/plugin_helper/data/cert/cert.pem +19 -0
  476. data/test/plugin_helper/data/cert/cert_chains/ca-cert-key.pem +27 -0
  477. data/test/plugin_helper/data/cert/cert_chains/ca-cert.pem +20 -0
  478. data/test/plugin_helper/data/cert/cert_chains/cert-key.pem +27 -0
  479. data/test/plugin_helper/data/cert/cert_chains/cert.pem +40 -0
  480. data/test/plugin_helper/data/cert/empty.pem +0 -0
  481. data/test/plugin_helper/data/cert/generate_cert.rb +125 -0
  482. data/test/plugin_helper/data/cert/with_ca/ca-cert-key-pass.pem +30 -0
  483. data/test/plugin_helper/data/cert/with_ca/ca-cert-key.pem +27 -0
  484. data/test/plugin_helper/data/cert/with_ca/ca-cert-pass.pem +20 -0
  485. data/test/plugin_helper/data/cert/with_ca/ca-cert.pem +20 -0
  486. data/test/plugin_helper/data/cert/with_ca/cert-key-pass.pem +30 -0
  487. data/test/plugin_helper/data/cert/with_ca/cert-key.pem +27 -0
  488. data/test/plugin_helper/data/cert/with_ca/cert-pass.pem +21 -0
  489. data/test/plugin_helper/data/cert/with_ca/cert.pem +21 -0
  490. data/test/plugin_helper/data/cert/without_ca/cert-key-pass.pem +30 -0
  491. data/test/plugin_helper/data/cert/without_ca/cert-key.pem +27 -0
  492. data/test/plugin_helper/data/cert/without_ca/cert-pass.pem +20 -0
  493. data/test/plugin_helper/data/cert/without_ca/cert.pem +20 -0
  494. data/test/plugin_helper/http_server/test_app.rb +65 -0
  495. data/test/plugin_helper/http_server/test_route.rb +32 -0
  496. data/test/plugin_helper/service_discovery/test_manager.rb +93 -0
  497. data/test/plugin_helper/service_discovery/test_round_robin_balancer.rb +21 -0
  498. data/test/plugin_helper/test_cert_option.rb +25 -0
  499. data/test/plugin_helper/test_child_process.rb +840 -0
  500. data/test/plugin_helper/test_compat_parameters.rb +358 -0
  501. data/test/plugin_helper/test_event_emitter.rb +80 -0
  502. data/test/plugin_helper/test_event_loop.rb +52 -0
  503. data/test/plugin_helper/test_extract.rb +194 -0
  504. data/test/plugin_helper/test_formatter.rb +255 -0
  505. data/test/plugin_helper/test_http_server_helper.rb +372 -0
  506. data/test/plugin_helper/test_inject.rb +561 -0
  507. data/test/plugin_helper/test_metrics.rb +137 -0
  508. data/test/plugin_helper/test_parser.rb +264 -0
  509. data/test/plugin_helper/test_record_accessor.rb +238 -0
  510. data/test/plugin_helper/test_retry_state.rb +442 -0
  511. data/test/plugin_helper/test_server.rb +1823 -0
  512. data/test/plugin_helper/test_service_discovery.rb +165 -0
  513. data/test/plugin_helper/test_socket.rb +146 -0
  514. data/test/plugin_helper/test_storage.rb +542 -0
  515. data/test/plugin_helper/test_thread.rb +164 -0
  516. data/test/plugin_helper/test_timer.rb +130 -0
  517. data/test/scripts/exec_script.rb +32 -0
  518. data/test/scripts/fluent/plugin/formatter1/formatter_test1.rb +7 -0
  519. data/test/scripts/fluent/plugin/formatter2/formatter_test2.rb +7 -0
  520. data/test/scripts/fluent/plugin/formatter_known.rb +8 -0
  521. data/test/scripts/fluent/plugin/out_test.rb +81 -0
  522. data/test/scripts/fluent/plugin/out_test2.rb +80 -0
  523. data/test/scripts/fluent/plugin/parser_known.rb +4 -0
  524. data/test/test_capability.rb +74 -0
  525. data/test/test_clock.rb +164 -0
  526. data/test/test_config.rb +202 -0
  527. data/test/test_configdsl.rb +148 -0
  528. data/test/test_daemonizer.rb +91 -0
  529. data/test/test_engine.rb +203 -0
  530. data/test/test_event.rb +531 -0
  531. data/test/test_event_router.rb +331 -0
  532. data/test/test_event_time.rb +199 -0
  533. data/test/test_filter.rb +121 -0
  534. data/test/test_fluent_log_event_router.rb +99 -0
  535. data/test/test_formatter.rb +366 -0
  536. data/test/test_input.rb +31 -0
  537. data/test/test_log.rb +994 -0
  538. data/test/test_logger_initializer.rb +46 -0
  539. data/test/test_match.rb +148 -0
  540. data/test/test_mixin.rb +351 -0
  541. data/test/test_msgpack_factory.rb +18 -0
  542. data/test/test_oj_options.rb +55 -0
  543. data/test/test_output.rb +278 -0
  544. data/test/test_plugin.rb +251 -0
  545. data/test/test_plugin_classes.rb +370 -0
  546. data/test/test_plugin_helper.rb +81 -0
  547. data/test/test_plugin_id.rb +119 -0
  548. data/test/test_process.rb +14 -0
  549. data/test/test_root_agent.rb +951 -0
  550. data/test/test_static_config_analysis.rb +177 -0
  551. data/test/test_supervisor.rb +601 -0
  552. data/test/test_test_drivers.rb +136 -0
  553. data/test/test_time_formatter.rb +301 -0
  554. data/test/test_time_parser.rb +362 -0
  555. data/test/test_tls.rb +65 -0
  556. data/test/test_unique_id.rb +47 -0
  557. data/test/test_variable_store.rb +65 -0
  558. metadata +1261 -0
@@ -0,0 +1,370 @@
1
+ require_relative 'helper'
2
+ require 'fluent/plugin/input'
3
+ require 'fluent/plugin/output'
4
+ require 'fluent/plugin/bare_output'
5
+ require 'fluent/plugin/filter'
6
+
7
+ module FluentTest
8
+ class FluentTestCounterMetrics < Fluent::Plugin::Metrics
9
+ Fluent::Plugin.register_metrics('test_counter', self)
10
+
11
+ attr_reader :data
12
+
13
+ def initialize
14
+ super
15
+ @data = 0
16
+ end
17
+ def get
18
+ @data
19
+ end
20
+ def inc
21
+ @data +=1
22
+ end
23
+ def add(value)
24
+ @data += value
25
+ end
26
+ def set(value)
27
+ @data = value
28
+ end
29
+ def close
30
+ @data = 0
31
+ super
32
+ end
33
+ end
34
+
35
+ class FluentTestGaugeMetrics < Fluent::Plugin::Metrics
36
+ Fluent::Plugin.register_metrics('test_gauge', self)
37
+
38
+ attr_reader :data
39
+
40
+ def initialize
41
+ super
42
+ @data = 0
43
+ end
44
+ def get
45
+ @data
46
+ end
47
+ def inc
48
+ @data += 1
49
+ end
50
+ def dec
51
+ @data -=1
52
+ end
53
+ def add(value)
54
+ @data += value
55
+ end
56
+ def sub(value)
57
+ @data -= value
58
+ end
59
+ def set(value)
60
+ @data = value
61
+ end
62
+ def close
63
+ @data = 0
64
+ super
65
+ end
66
+ end
67
+
68
+ class FluentTestInput < ::Fluent::Plugin::Input
69
+ ::Fluent::Plugin.register_input('test_in', self)
70
+
71
+ attr_reader :started
72
+
73
+ def initialize
74
+ super
75
+ # stub metrics instances
76
+ @emit_records_metrics = FluentTest::FluentTestCounterMetrics.new
77
+ @emit_size_metrics = FluentTest::FluentTestCounterMetrics.new
78
+ end
79
+
80
+ def start
81
+ super
82
+ @started = true
83
+ end
84
+
85
+ def shutdown
86
+ @started = false
87
+ super
88
+ end
89
+ end
90
+
91
+ class FluentTestGenInput < ::Fluent::Plugin::Input
92
+ ::Fluent::Plugin.register_input('test_in_gen', self)
93
+
94
+ attr_reader :started
95
+
96
+ config_param :num, :integer, default: 10000
97
+
98
+ def initialize
99
+ super
100
+ # stub metrics instances
101
+ @emit_records_metrics = FluentTest::FluentTestCounterMetrics.new
102
+ @emit_size_metrics = FluentTest::FluentTestCounterMetrics.new
103
+ end
104
+
105
+ def start
106
+ super
107
+ @started = true
108
+
109
+ @num.times { |i|
110
+ router.emit("test.evet", Fluent::EventTime.now, {'message' => 'Hello!', 'key' => "value#{i}", 'num' => i})
111
+ }
112
+ end
113
+
114
+ def shutdown
115
+ @started = false
116
+ super
117
+ end
118
+ end
119
+
120
+ class FluentTestOutput < ::Fluent::Plugin::Output
121
+ ::Fluent::Plugin.register_output('test_out', self)
122
+
123
+ def initialize
124
+ super
125
+ @events = Hash.new { |h, k| h[k] = [] }
126
+ # stub metrics instances
127
+ @num_errors_metrics = FluentTest::FluentTestCounterMetrics.new
128
+ @emit_count_metrics = FluentTest::FluentTestCounterMetrics.new
129
+ @emit_records_metrics = FluentTest::FluentTestCounterMetrics.new
130
+ @emit_size_metrics = FluentTest::FluentTestCounterMetrics.new
131
+ @write_count_metrics = FluentTest::FluentTestCounterMetrics.new
132
+ @rollback_count_metrics = FluentTest::FluentTestCounterMetrics.new
133
+ @flush_time_count_metrics = FluentTest::FluentTestCounterMetrics.new
134
+ @slow_flush_count_metrics = FluentTest::FluentTestCounterMetrics.new
135
+ end
136
+
137
+ attr_reader :events
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 process(tag, es)
151
+ es.each do |time, record|
152
+ @events[tag] << record
153
+ end
154
+ end
155
+ end
156
+
157
+ class FluentTestDynamicOutput < ::Fluent::Plugin::BareOutput
158
+ ::Fluent::Plugin.register_output('test_dynamic_out', self)
159
+
160
+ attr_reader :child
161
+ attr_reader :started
162
+
163
+ def start
164
+ super
165
+ @started = true
166
+ @child = Fluent::Plugin.new_output('copy')
167
+ conf = config_element('DYNAMIC', '', {}, [
168
+ config_element('store', '', {'@type' => 'test_out', '@id' => 'dyn_out1'}),
169
+ config_element('store', '', {'@type' => 'test_out', '@id' => 'dyn_out2'}),
170
+ ])
171
+ @child.configure(conf)
172
+ @child.start
173
+ end
174
+
175
+ def after_start
176
+ super
177
+ @child.after_start
178
+ end
179
+
180
+ def stop
181
+ super
182
+ @child.stop
183
+ end
184
+
185
+ def before_shutdown
186
+ super
187
+ @child.before_shutdown
188
+ end
189
+
190
+ def shutdown
191
+ @started = false
192
+ super
193
+ @child.shutdown
194
+ end
195
+
196
+ def after_shutdown
197
+ super
198
+ @child.after_shutdown
199
+ end
200
+
201
+ def close
202
+ super
203
+ @child.close
204
+ end
205
+
206
+ def terminate
207
+ super
208
+ @child.terminate
209
+ end
210
+
211
+ def process(tag, es)
212
+ es.each do |time, record|
213
+ @events[tag] << record
214
+ end
215
+ end
216
+ end
217
+
218
+ class FluentTestBufferedOutput < ::Fluent::Plugin::Output
219
+ ::Fluent::Plugin.register_output('test_out_buffered', self)
220
+
221
+ attr_reader :started
222
+
223
+ def start
224
+ super
225
+ @started = true
226
+ end
227
+
228
+ def shutdown
229
+ @started = false
230
+ super
231
+ end
232
+
233
+ def write(chunk)
234
+ # drop everything
235
+ end
236
+ end
237
+
238
+ class FluentTestEmitOutput < ::Fluent::Plugin::Output
239
+ ::Fluent::Plugin.register_output('test_out_emit', self)
240
+ helpers :event_emitter
241
+ def write(chunk)
242
+ tag = chunk.metadata.tag || 'test'
243
+ array = []
244
+ chunk.each do |time, record|
245
+ array << [time, record]
246
+ end
247
+ router.emit_array(tag, array)
248
+ end
249
+ end
250
+
251
+ class FluentTestErrorOutput < ::Fluent::Plugin::Output
252
+ ::Fluent::Plugin.register_output('test_out_error', self)
253
+
254
+ def initialize
255
+ super
256
+ # stub metrics instances
257
+ @num_errors_metrics = FluentTest::FluentTestCounterMetrics.new
258
+ @emit_count_metrics = FluentTest::FluentTestCounterMetrics.new
259
+ @emit_records_metrics = FluentTest::FluentTestCounterMetrics.new
260
+ @emit_size_metrics = FluentTest::FluentTestCounterMetrics.new
261
+ @write_count_metrics = FluentTest::FluentTestCounterMetrics.new
262
+ @rollback_count_metrics = FluentTest::FluentTestCounterMetrics.new
263
+ @flush_time_count_metrics = FluentTest::FluentTestCounterMetrics.new
264
+ @slow_flush_count_metrics = FluentTest::FluentTestCounterMetrics.new
265
+ end
266
+
267
+ def format(tag, time, record)
268
+ raise "emit error!"
269
+ end
270
+
271
+ def write(chunk)
272
+ raise "chunk error!"
273
+ end
274
+ end
275
+
276
+ class FluentCompatTestFilter < ::Fluent::Filter
277
+ ::Fluent::Plugin.register_filter('test_compat_filter', self)
278
+
279
+ def initialize(field = '__test__')
280
+ super()
281
+ @num = 0
282
+ @field = field
283
+ # stub metrics instances
284
+ @emit_records_metrics = FluentTest::FluentTestCounterMetrics.new
285
+ @emit_size_metrics = FluentTest::FluentTestCounterMetrics.new
286
+ end
287
+
288
+ attr_reader :num
289
+ attr_reader :started
290
+
291
+ def start
292
+ super
293
+ @started = true
294
+ end
295
+
296
+ def shutdown
297
+ @started = false
298
+ super
299
+ end
300
+
301
+ def filter(tag, time, record)
302
+ record[@field] = @num
303
+ @num += 1
304
+ record
305
+ end
306
+ end
307
+
308
+ class FluentTestFilter < ::Fluent::Plugin::Filter
309
+ ::Fluent::Plugin.register_filter('test_filter', self)
310
+
311
+ def initialize(field = '__test__')
312
+ super()
313
+ @num = 0
314
+ @field = field
315
+ # stub metrics instances
316
+ @emit_records_metrics = FluentTest::FluentTestCounterMetrics.new
317
+ @emit_size_metrics = FluentTest::FluentTestCounterMetrics.new
318
+ end
319
+
320
+ attr_reader :num
321
+ attr_reader :started
322
+
323
+ def start
324
+ super
325
+ @started = true
326
+ end
327
+
328
+ def shutdown
329
+ @started = false
330
+ super
331
+ end
332
+
333
+ def filter(tag, time, record)
334
+ record[@field] = @num
335
+ @num += 1
336
+ record
337
+ end
338
+ end
339
+
340
+ class FluentTestBuffer < Fluent::Plugin::Buffer
341
+ ::Fluent::Plugin.register_buffer('test_buffer', self)
342
+
343
+ def resume
344
+ return {}, []
345
+ end
346
+
347
+ def generate_chunk(metadata)
348
+ end
349
+
350
+ def multi_workers_ready?
351
+ false
352
+ end
353
+ end
354
+
355
+ class TestEmitErrorHandler
356
+ def initialize
357
+ @events = Hash.new { |h, k| h[k] = [] }
358
+ end
359
+
360
+ attr_reader :events
361
+
362
+ def handle_emit_error(tag, time, record, error)
363
+ @events[tag] << record
364
+ end
365
+
366
+ def handle_emits_error(tag, es, error)
367
+ es.each { |time,record| handle_emit_error(tag, time, record, error) }
368
+ end
369
+ end
370
+ end
@@ -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,119 @@
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
+
101
+ test '#plugin_root_dir create dirctory with specify mode if not exists ' do
102
+ omit "NTFS doesn't support UNIX like permissions" if Fluent.windows?
103
+
104
+ root_dir = Fluent::SystemConfig.overwrite_system_config({ 'root_dir' => File.join(TMP_DIR, "myroot"), 'dir_permission' => '0777' }) do
105
+ @p.plugin_root_dir
106
+ end
107
+
108
+ assert_equal '777', File.stat(root_dir).mode.to_s(8)[-3, 3]
109
+ end
110
+
111
+ test '#plugin_root_dir create dirctory with default permission if not exists ' do
112
+ root_dir = Fluent::SystemConfig.overwrite_system_config({ 'root_dir' => File.join(TMP_DIR, "myroot") }) do
113
+ @p.plugin_root_dir
114
+ end
115
+
116
+ assert_equal '755', File.stat(root_dir).mode.to_s(8)[-3, 3]
117
+ end
118
+ end
119
+ end
@@ -0,0 +1,14 @@
1
+ require_relative 'helper'
2
+ require 'fluent/process'
3
+
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
9
+
10
+ test 'DetachMultiProcessMixin is defined' do
11
+ assert defined?(::Fluent::DetachMultiProcessMixin)
12
+ assert_equal ::Fluent::DetachMultiProcessMixin, ::Fluent::Compat::DetachMultiProcessMixin
13
+ end
14
+ end