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,601 @@
1
+ require_relative 'helper'
2
+ require 'fluent/event_router'
3
+ require 'fluent/system_config'
4
+ require 'fluent/supervisor'
5
+ require_relative 'test_plugin_classes'
6
+
7
+ require 'net/http'
8
+ require 'uri'
9
+ require 'fileutils'
10
+ require 'tempfile'
11
+
12
+ if Fluent.windows?
13
+ require 'win32/event'
14
+ end
15
+
16
+ class SupervisorTest < ::Test::Unit::TestCase
17
+ class DummyServer
18
+ include Fluent::ServerModule
19
+ attr_accessor :rpc_endpoint, :enable_get_dump
20
+ def config
21
+ {}
22
+ end
23
+ end
24
+
25
+ TMP_DIR = File.expand_path(File.dirname(__FILE__) + "/tmp/supervisor#{ENV['TEST_ENV_NUMBER']}")
26
+ TMP_ROOT_DIR = File.join(TMP_DIR, 'root')
27
+
28
+ def setup
29
+ FileUtils.rm_rf(TMP_DIR)
30
+ FileUtils.mkdir_p(TMP_DIR)
31
+ end
32
+
33
+ def write_config(path, data)
34
+ FileUtils.mkdir_p(File.dirname(path))
35
+ File.open(path, "w") {|f| f.write data }
36
+ end
37
+
38
+
39
+ def test_system_config
40
+ opts = Fluent::Supervisor.default_options
41
+ sv = Fluent::Supervisor.new(opts)
42
+ conf_data = <<-EOC
43
+ <system>
44
+ rpc_endpoint 127.0.0.1:24445
45
+ suppress_repeated_stacktrace true
46
+ suppress_config_dump true
47
+ without_source true
48
+ enable_get_dump true
49
+ process_name "process_name"
50
+ log_level info
51
+ root_dir #{TMP_ROOT_DIR}
52
+ <log>
53
+ format json
54
+ time_format %Y
55
+ </log>
56
+ <counter_server>
57
+ bind 127.0.0.1
58
+ port 24321
59
+ scope server1
60
+ backup_path /tmp/backup
61
+ </counter_server>
62
+ <counter_client>
63
+ host 127.0.0.1
64
+ port 24321
65
+ timeout 2
66
+ </counter_client>
67
+ </system>
68
+ EOC
69
+ conf = Fluent::Config.parse(conf_data, "(test)", "(test_dir)", true)
70
+ sys_conf = sv.__send__(:build_system_config, conf)
71
+
72
+ assert_equal '127.0.0.1:24445', sys_conf.rpc_endpoint
73
+ assert_equal true, sys_conf.suppress_repeated_stacktrace
74
+ assert_equal true, sys_conf.suppress_config_dump
75
+ assert_equal true, sys_conf.without_source
76
+ assert_equal true, sys_conf.enable_get_dump
77
+ assert_equal "process_name", sys_conf.process_name
78
+ assert_equal 2, sys_conf.log_level
79
+ assert_equal TMP_ROOT_DIR, sys_conf.root_dir
80
+ assert_equal :json, sys_conf.log.format
81
+ assert_equal '%Y', sys_conf.log.time_format
82
+ counter_server = sys_conf.counter_server
83
+ assert_equal '127.0.0.1', counter_server.bind
84
+ assert_equal 24321, counter_server.port
85
+ assert_equal 'server1', counter_server.scope
86
+ assert_equal '/tmp/backup', counter_server.backup_path
87
+ counter_client = sys_conf.counter_client
88
+ assert_equal '127.0.0.1', counter_client.host
89
+ assert_equal 24321, counter_client.port
90
+ assert_equal 2, counter_client.timeout
91
+ end
92
+
93
+ def test_main_process_signal_handlers
94
+ omit "Windows cannot handle signals" if Fluent.windows?
95
+
96
+ create_info_dummy_logger
97
+
98
+ opts = Fluent::Supervisor.default_options
99
+ sv = Fluent::Supervisor.new(opts)
100
+ sv.send(:install_main_process_signal_handlers)
101
+
102
+ begin
103
+ Process.kill :USR1, $$
104
+ rescue
105
+ end
106
+
107
+ sleep 1
108
+
109
+ info_msg = '[info]: force flushing buffered events' + "\n"
110
+ assert{ $log.out.logs.first.end_with?(info_msg) }
111
+ ensure
112
+ $log.out.reset if $log && $log.out && $log.out.respond_to?(:reset)
113
+ end
114
+
115
+ def test_main_process_command_handlers
116
+ omit "Only for Windows, alternative to UNIX signals" unless Fluent.windows?
117
+
118
+ create_info_dummy_logger
119
+
120
+ opts = Fluent::Supervisor.default_options
121
+ sv = Fluent::Supervisor.new(opts)
122
+ r, w = IO.pipe
123
+ $stdin = r
124
+ sv.send(:install_main_process_signal_handlers)
125
+
126
+ begin
127
+ w.write("GRACEFUL_RESTART\n")
128
+ w.flush
129
+ ensure
130
+ $stdin = STDIN
131
+ end
132
+
133
+ sleep 1
134
+
135
+ info_msg = '[info]: force flushing buffered events' + "\n"
136
+ assert{ $log.out.logs.first.end_with?(info_msg) }
137
+ ensure
138
+ $log.out.reset if $log && $log.out && $log.out.respond_to?(:reset)
139
+ end
140
+
141
+ def test_supervisor_signal_handler
142
+ omit "Windows cannot handle signals" if Fluent.windows?
143
+
144
+ create_debug_dummy_logger
145
+
146
+ server = DummyServer.new
147
+ server.install_supervisor_signal_handlers
148
+ begin
149
+ Process.kill :USR1, $$
150
+ rescue
151
+ end
152
+
153
+ sleep 1
154
+
155
+ debug_msg = '[debug]: fluentd supervisor process get SIGUSR1'
156
+ logs = $log.out.logs
157
+ assert{ logs.any?{|log| log.include?(debug_msg) } }
158
+ ensure
159
+ $log.out.reset if $log && $log.out && $log.out.respond_to?(:reset)
160
+ end
161
+
162
+ def test_windows_shutdown_event
163
+ omit "Only for Windows platform" unless Fluent.windows?
164
+
165
+ server = DummyServer.new
166
+ def server.config
167
+ {:signame => "TestFluentdEvent"}
168
+ end
169
+
170
+ mock(server).stop(true)
171
+ stub(Process).kill.times(0)
172
+
173
+ server.install_windows_event_handler
174
+ begin
175
+ sleep 0.1 # Wait for starting windows event thread
176
+ event = Win32::Event.open("TestFluentdEvent")
177
+ event.set
178
+ event.close
179
+ ensure
180
+ server.stop_windows_event_thread
181
+ end
182
+
183
+ debug_msg = '[debug]: Got Win32 event "TestFluentdEvent"'
184
+ logs = $log.out.logs
185
+ assert{ logs.any?{|log| log.include?(debug_msg) } }
186
+ ensure
187
+ $log.out.reset if $log && $log.out && $log.out.respond_to?(:reset)
188
+ end
189
+
190
+ def test_supervisor_event_handler
191
+ omit "Only for Windows, alternative to UNIX signals" unless Fluent.windows?
192
+
193
+ create_debug_dummy_logger
194
+
195
+ server = DummyServer.new
196
+ def server.config
197
+ {:signame => "TestFluentdEvent"}
198
+ end
199
+ server.install_windows_event_handler
200
+ begin
201
+ sleep 0.1 # Wait for starting windows event thread
202
+ event = Win32::Event.open("TestFluentdEvent_USR1")
203
+ event.set
204
+ event.close
205
+ ensure
206
+ server.stop_windows_event_thread
207
+ end
208
+
209
+ debug_msg = '[debug]: Got Win32 event "TestFluentdEvent_USR1"'
210
+ logs = $log.out.logs
211
+ assert{ logs.any?{|log| log.include?(debug_msg) } }
212
+ ensure
213
+ $log.out.reset if $log && $log.out && $log.out.respond_to?(:reset)
214
+ end
215
+
216
+ def test_rpc_server
217
+ omit "Windows cannot handle signals" if Fluent.windows?
218
+
219
+ create_info_dummy_logger
220
+
221
+ opts = Fluent::Supervisor.default_options
222
+ sv = Fluent::Supervisor.new(opts)
223
+ conf_data = <<-EOC
224
+ <system>
225
+ rpc_endpoint 0.0.0.0:24447
226
+ </system>
227
+ EOC
228
+ conf = Fluent::Config.parse(conf_data, "(test)", "(test_dir)", true)
229
+ sys_conf = sv.__send__(:build_system_config, conf)
230
+
231
+ server = DummyServer.new
232
+ server.rpc_endpoint = sys_conf.rpc_endpoint
233
+ server.enable_get_dump = sys_conf.enable_get_dump
234
+
235
+ server.run_rpc_server
236
+
237
+ sv.send(:install_main_process_signal_handlers)
238
+ response = Net::HTTP.get(URI.parse('http://127.0.0.1:24447/api/plugins.flushBuffers'))
239
+ info_msg = '[info]: force flushing buffered events' + "\n"
240
+
241
+ server.stop_rpc_server
242
+
243
+ # In TravisCI with OSX(Xcode), it seems that can't use rpc server.
244
+ # This test will be passed in such environment.
245
+ pend unless $log.out.logs.first
246
+
247
+ assert_equal('{"ok":true}', response)
248
+ assert{ $log.out.logs.first.end_with?(info_msg) }
249
+ ensure
250
+ $log.out.reset if $log.out.is_a?(Fluent::Test::DummyLogDevice)
251
+ end
252
+
253
+ def test_rpc_server_windows
254
+ omit "Only for windows platform" unless Fluent.windows?
255
+
256
+ create_info_dummy_logger
257
+
258
+ opts = Fluent::Supervisor.default_options
259
+ sv = Fluent::Supervisor.new(opts)
260
+ conf_data = <<-EOC
261
+ <system>
262
+ rpc_endpoint 0.0.0.0:24447
263
+ </system>
264
+ EOC
265
+ conf = Fluent::Config.parse(conf_data, "(test)", "(test_dir)", true)
266
+ sys_conf = sv.__send__(:build_system_config, conf)
267
+
268
+ server = DummyServer.new
269
+ def server.config
270
+ {
271
+ :signame => "TestFluentdEvent",
272
+ :worker_pid => 5963,
273
+ }
274
+ end
275
+ server.rpc_endpoint = sys_conf.rpc_endpoint
276
+
277
+ server.run_rpc_server
278
+
279
+ mock(server).restart(true) { nil }
280
+ response = Net::HTTP.get(URI.parse('http://127.0.0.1:24447/api/plugins.flushBuffers'))
281
+
282
+ server.stop_rpc_server
283
+ assert_equal('{"ok":true}', response)
284
+ end
285
+
286
+ def test_load_config
287
+ tmp_dir = "#{TMP_DIR}/dir/test_load_config.conf"
288
+ conf_info_str = %[
289
+ <system>
290
+ log_level info
291
+ </system>
292
+ ]
293
+ conf_debug_str = %[
294
+ <system>
295
+ log_level debug
296
+ </system>
297
+ ]
298
+ now = Time.now
299
+ Timecop.freeze(now)
300
+
301
+ write_config tmp_dir, conf_info_str
302
+
303
+ params = {}
304
+ params['workers'] = 1
305
+ params['use_v1_config'] = true
306
+ params['log_path'] = 'test/tmp/supervisor/log'
307
+ params['suppress_repeated_stacktrace'] = true
308
+ params['log_level'] = Fluent::Log::LEVEL_INFO
309
+ params['conf_encoding'] = 'utf-8'
310
+ load_config_proc = Proc.new { Fluent::Supervisor.load_config(tmp_dir, params) }
311
+
312
+ # first call
313
+ se_config = load_config_proc.call
314
+ assert_equal Fluent::Log::LEVEL_INFO, se_config[:log_level]
315
+ assert_equal true, se_config[:suppress_repeated_stacktrace]
316
+ assert_equal 'spawn', se_config[:worker_type]
317
+ assert_equal 1, se_config[:workers]
318
+ assert_equal false, se_config[:log_stdin]
319
+ assert_equal false, se_config[:log_stdout]
320
+ assert_equal false, se_config[:log_stderr]
321
+ assert_equal true, se_config[:enable_heartbeat]
322
+ assert_equal false, se_config[:auto_heartbeat]
323
+ assert_equal false, se_config[:daemonize]
324
+ assert_nil se_config[:pid_path]
325
+
326
+ # second call immediately(reuse config)
327
+ se_config = load_config_proc.call
328
+ pre_config_mtime = se_config[:windows_daemon_cmdline][5]['pre_config_mtime']
329
+ pre_loadtime = se_config[:windows_daemon_cmdline][5]['pre_loadtime']
330
+ assert_nil pre_config_mtime
331
+ assert_nil pre_loadtime
332
+
333
+ Timecop.freeze(now + 5)
334
+
335
+ # third call after 5 seconds(don't reuse config)
336
+ se_config = load_config_proc.call
337
+ pre_config_mtime = se_config[:windows_daemon_cmdline][5]['pre_config_mtime']
338
+ pre_loadtime = se_config[:windows_daemon_cmdline][5]['pre_loadtime']
339
+ assert_not_nil pre_config_mtime
340
+ assert_not_nil pre_loadtime
341
+
342
+ # forth call immediately(reuse config)
343
+ se_config = load_config_proc.call
344
+ # test that pre_config_mtime and pre_loadtime are not changed from previous one because reused pre_config
345
+ assert_equal pre_config_mtime, se_config[:windows_daemon_cmdline][5]['pre_config_mtime']
346
+ assert_equal pre_loadtime, se_config[:windows_daemon_cmdline][5]['pre_loadtime']
347
+
348
+ write_config tmp_dir, conf_debug_str
349
+
350
+ # fifth call after changed conf file(don't reuse config)
351
+ se_config = load_config_proc.call
352
+ assert_equal Fluent::Log::LEVEL_INFO, se_config[:log_level]
353
+ ensure
354
+ Timecop.return
355
+ end
356
+
357
+ def test_load_config_for_logger
358
+ tmp_dir = "#{TMP_DIR}/dir/test_load_config_log.conf"
359
+ conf_info_str = %[
360
+ <system>
361
+ <log>
362
+ format json
363
+ time_format %FT%T.%L%z
364
+ </log>
365
+ </system>
366
+ ]
367
+ write_config tmp_dir, conf_info_str
368
+ params = {
369
+ 'use_v1_config' => true,
370
+ 'conf_encoding' => 'utf8',
371
+ 'log_level' => Fluent::Log::LEVEL_INFO,
372
+ 'log_path' => 'test/tmp/supervisor/log',
373
+
374
+ 'workers' => 1,
375
+ 'log_format' => :json,
376
+ 'log_time_format' => '%FT%T.%L%z',
377
+ }
378
+
379
+ r = Fluent::Supervisor.load_config(tmp_dir, params)
380
+ assert_equal :json, r[:logger].format
381
+ assert_equal '%FT%T.%L%z', r[:logger].time_format
382
+ end
383
+
384
+ def test_load_config_for_daemonize
385
+ tmp_dir = "#{TMP_DIR}/dir/test_load_config.conf"
386
+ conf_info_str = %[
387
+ <system>
388
+ log_level info
389
+ </system>
390
+ ]
391
+ conf_debug_str = %[
392
+ <system>
393
+ log_level debug
394
+ </system>
395
+ ]
396
+
397
+ now = Time.now
398
+ Timecop.freeze(now)
399
+
400
+ write_config tmp_dir, conf_info_str
401
+
402
+ params = {}
403
+ params['workers'] = 1
404
+ params['use_v1_config'] = true
405
+ params['log_path'] = 'test/tmp/supervisor/log'
406
+ params['suppress_repeated_stacktrace'] = true
407
+ params['log_level'] = Fluent::Log::LEVEL_INFO
408
+ params['daemonize'] = './fluentd.pid'
409
+ params['conf_encoding'] = 'utf-8'
410
+ load_config_proc = Proc.new { Fluent::Supervisor.load_config(tmp_dir, params) }
411
+
412
+ # first call
413
+ se_config = load_config_proc.call
414
+ assert_equal Fluent::Log::LEVEL_INFO, se_config[:log_level]
415
+ assert_equal true, se_config[:suppress_repeated_stacktrace]
416
+ assert_equal 'spawn', se_config[:worker_type]
417
+ assert_equal 1, se_config[:workers]
418
+ assert_equal false, se_config[:log_stdin]
419
+ assert_equal false, se_config[:log_stdout]
420
+ assert_equal false, se_config[:log_stderr]
421
+ assert_equal true, se_config[:enable_heartbeat]
422
+ assert_equal false, se_config[:auto_heartbeat]
423
+ assert_equal true, se_config[:daemonize]
424
+ assert_equal './fluentd.pid', se_config[:pid_path]
425
+
426
+ # second call immediately(reuse config)
427
+ se_config = load_config_proc.call
428
+ pre_config_mtime = se_config[:windows_daemon_cmdline][5]['pre_config_mtime']
429
+ pre_loadtime = se_config[:windows_daemon_cmdline][5]['pre_loadtime']
430
+ assert_nil pre_config_mtime
431
+ assert_nil pre_loadtime
432
+
433
+ Timecop.freeze(now + 5)
434
+
435
+ # third call after 6 seconds(don't reuse config)
436
+ se_config = load_config_proc.call
437
+ pre_config_mtime = se_config[:windows_daemon_cmdline][5]['pre_config_mtime']
438
+ pre_loadtime = se_config[:windows_daemon_cmdline][5]['pre_loadtime']
439
+ assert_not_nil pre_config_mtime
440
+ assert_not_nil pre_loadtime
441
+
442
+ # forth call immediately(reuse config)
443
+ se_config = load_config_proc.call
444
+ # test that pre_config_mtime and pre_loadtime are not changed from previous one because reused pre_config
445
+ assert_equal pre_config_mtime, se_config[:windows_daemon_cmdline][5]['pre_config_mtime']
446
+ assert_equal pre_loadtime, se_config[:windows_daemon_cmdline][5]['pre_loadtime']
447
+
448
+ write_config tmp_dir, conf_debug_str
449
+
450
+ # fifth call after changed conf file(don't reuse config)
451
+ se_config = load_config_proc.call
452
+ assert_equal Fluent::Log::LEVEL_INFO, se_config[:log_level]
453
+ ensure
454
+ Timecop.return
455
+ end
456
+
457
+ def test_logger
458
+ opts = Fluent::Supervisor.default_options
459
+ sv = Fluent::Supervisor.new(opts)
460
+ log = sv.instance_variable_get(:@log)
461
+ log.init(:standalone, 0)
462
+ logger = $log.instance_variable_get(:@logger)
463
+
464
+ assert_equal Fluent::Log::LEVEL_INFO, $log.level
465
+
466
+ # test that DamonLogger#level= overwrites Fluent.log#level
467
+ logger.level = 'debug'
468
+ assert_equal Fluent::Log::LEVEL_DEBUG, $log.level
469
+
470
+ assert_equal 5, logger.instance_variable_get(:@rotate_age)
471
+ assert_equal 1048576, logger.instance_variable_get(:@rotate_size)
472
+ end
473
+
474
+ data(
475
+ daily_age: 'daily',
476
+ weekly_age: 'weekly',
477
+ monthly_age: 'monthly',
478
+ integer_age: 2,
479
+ )
480
+ def test_logger_with_rotate_age_and_rotate_size(rotate_age)
481
+ opts = Fluent::Supervisor.default_options.merge(
482
+ log_path: "#{TMP_DIR}/test", log_rotate_age: rotate_age, log_rotate_size: 10
483
+ )
484
+ sv = Fluent::Supervisor.new(opts)
485
+ log = sv.instance_variable_get(:@log)
486
+ log.init(:standalone, 0)
487
+
488
+ assert_equal Fluent::LogDeviceIO, $log.out.class
489
+ assert_equal rotate_age, $log.out.instance_variable_get(:@shift_age)
490
+ assert_equal 10, $log.out.instance_variable_get(:@shift_size)
491
+ end
492
+
493
+ sub_test_case "system log rotation" do
494
+ def parse_text(text)
495
+ basepath = File.expand_path(File.dirname(__FILE__) + '/../../')
496
+ Fluent::Config.parse(text, '(test)', basepath, true).elements.find { |e| e.name == 'system' }
497
+ end
498
+
499
+ def test_override_default_log_rotate
500
+ Tempfile.open do |file|
501
+ config = parse_text(<<-EOS)
502
+ <system>
503
+ <log>
504
+ rotate_age 3
505
+ rotate_size 300
506
+ </log>
507
+ </system>
508
+ EOS
509
+ file.puts(config)
510
+ file.flush
511
+ opts = Fluent::Supervisor.default_options.merge(
512
+ log_path: "#{TMP_DIR}/test.log", config_path: file.path
513
+ )
514
+ sv = Fluent::Supervisor.new(opts)
515
+
516
+ log = sv.instance_variable_get(:@log)
517
+ log.init(:standalone, 0)
518
+ logger = $log.instance_variable_get(:@logger)
519
+
520
+ assert_equal([3, 300],
521
+ [logger.instance_variable_get(:@rotate_age),
522
+ logger.instance_variable_get(:@rotate_size)])
523
+ end
524
+ end
525
+ end
526
+
527
+ def test_inline_config
528
+ omit 'this feature is deprecated. see https://github.com/fluent/fluentd/issues/2711'
529
+
530
+ opts = Fluent::Supervisor.default_options
531
+ opts[:inline_config] = '-'
532
+ sv = Fluent::Supervisor.new(opts)
533
+ assert_equal '-', sv.instance_variable_get(:@inline_config)
534
+
535
+ inline_config = '<match *>\n@type stdout\n</match>'
536
+ stub(STDIN).read { inline_config }
537
+ stub(Fluent::Config).build # to skip
538
+ stub(sv).build_system_config { Fluent::SystemConfig.new } # to skip
539
+
540
+ sv.configure
541
+ assert_equal inline_config, sv.instance_variable_get(:@inline_config)
542
+ end
543
+
544
+ def test_log_level_affects
545
+ opts = Fluent::Supervisor.default_options
546
+ sv = Fluent::Supervisor.new(opts)
547
+
548
+ c = Fluent::Config::Element.new('system', '', { 'log_level' => 'error' }, [])
549
+ stub(Fluent::Config).build { config_element('ROOT', '', {}, [c]) }
550
+
551
+ sv.configure
552
+ assert_equal Fluent::Log::LEVEL_ERROR, $log.level
553
+ end
554
+
555
+ def test_enable_shared_socket
556
+ server = DummyServer.new
557
+ begin
558
+ ENV.delete('SERVERENGINE_SOCKETMANAGER_PATH')
559
+ server.before_run
560
+ sleep 0.1 if Fluent.windows? # Wait for starting windows event thread
561
+ assert_not_nil(ENV['SERVERENGINE_SOCKETMANAGER_PATH'])
562
+ ensure
563
+ server.after_run
564
+ ENV.delete('SERVERENGINE_SOCKETMANAGER_PATH')
565
+ end
566
+ end
567
+
568
+ def test_disable_shared_socket
569
+ server = DummyServer.new
570
+ def server.config
571
+ {
572
+ :disable_shared_socket => true,
573
+ }
574
+ end
575
+ begin
576
+ ENV.delete('SERVERENGINE_SOCKETMANAGER_PATH')
577
+ server.before_run
578
+ sleep 0.1 if Fluent.windows? # Wait for starting windows event thread
579
+ assert_nil(ENV['SERVERENGINE_SOCKETMANAGER_PATH'])
580
+ ensure
581
+ server.after_run
582
+ ENV.delete('SERVERENGINE_SOCKETMANAGER_PATH')
583
+ end
584
+ end
585
+
586
+ def create_debug_dummy_logger
587
+ dl_opts = {}
588
+ dl_opts[:log_level] = ServerEngine::DaemonLogger::DEBUG
589
+ logdev = Fluent::Test::DummyLogDevice.new
590
+ logger = ServerEngine::DaemonLogger.new(logdev, dl_opts)
591
+ $log = Fluent::Log.new(logger)
592
+ end
593
+
594
+ def create_info_dummy_logger
595
+ dl_opts = {}
596
+ dl_opts[:log_level] = ServerEngine::DaemonLogger::INFO
597
+ logdev = Fluent::Test::DummyLogDevice.new
598
+ logger = ServerEngine::DaemonLogger.new(logdev, dl_opts)
599
+ $log = Fluent::Log.new(logger)
600
+ end
601
+ end