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