dtomasgu-fluentd 1.14.7.pre.dev

Sign up to get free protection for your applications and to get access to all the features.
Files changed (564) 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 +34 -0
  12. data/.github/workflows/stale-actions.yml +22 -0
  13. data/.github/workflows/windows-test.yaml +49 -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 +2453 -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 +76 -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 +57 -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 +180 -0
  88. data/lib/fluent/command/debug.rb +103 -0
  89. data/lib/fluent/command/fluentd.rb +388 -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 +44 -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/yaml_parser/fluent_value.rb +47 -0
  125. data/lib/fluent/config/yaml_parser/loader.rb +91 -0
  126. data/lib/fluent/config/yaml_parser/parser.rb +166 -0
  127. data/lib/fluent/config/yaml_parser/section_builder.rb +107 -0
  128. data/lib/fluent/config/yaml_parser.rb +56 -0
  129. data/lib/fluent/config.rb +89 -0
  130. data/lib/fluent/configurable.rb +201 -0
  131. data/lib/fluent/counter/base_socket.rb +44 -0
  132. data/lib/fluent/counter/client.rb +297 -0
  133. data/lib/fluent/counter/error.rb +86 -0
  134. data/lib/fluent/counter/mutex_hash.rb +163 -0
  135. data/lib/fluent/counter/server.rb +273 -0
  136. data/lib/fluent/counter/store.rb +205 -0
  137. data/lib/fluent/counter/validator.rb +145 -0
  138. data/lib/fluent/counter.rb +23 -0
  139. data/lib/fluent/daemon.rb +15 -0
  140. data/lib/fluent/daemonizer.rb +88 -0
  141. data/lib/fluent/engine.rb +253 -0
  142. data/lib/fluent/env.rb +40 -0
  143. data/lib/fluent/error.rb +34 -0
  144. data/lib/fluent/event.rb +326 -0
  145. data/lib/fluent/event_router.rb +315 -0
  146. data/lib/fluent/ext_monitor_require.rb +28 -0
  147. data/lib/fluent/filter.rb +21 -0
  148. data/lib/fluent/fluent_log_event_router.rb +141 -0
  149. data/lib/fluent/formatter.rb +23 -0
  150. data/lib/fluent/input.rb +21 -0
  151. data/lib/fluent/label.rb +46 -0
  152. data/lib/fluent/load.rb +34 -0
  153. data/lib/fluent/log.rb +713 -0
  154. data/lib/fluent/match.rb +187 -0
  155. data/lib/fluent/mixin.rb +31 -0
  156. data/lib/fluent/msgpack_factory.rb +106 -0
  157. data/lib/fluent/oj_options.rb +62 -0
  158. data/lib/fluent/output.rb +29 -0
  159. data/lib/fluent/output_chain.rb +23 -0
  160. data/lib/fluent/parser.rb +23 -0
  161. data/lib/fluent/plugin/bare_output.rb +104 -0
  162. data/lib/fluent/plugin/base.rb +197 -0
  163. data/lib/fluent/plugin/buf_file.rb +213 -0
  164. data/lib/fluent/plugin/buf_file_single.rb +225 -0
  165. data/lib/fluent/plugin/buf_memory.rb +34 -0
  166. data/lib/fluent/plugin/buffer/chunk.rb +240 -0
  167. data/lib/fluent/plugin/buffer/file_chunk.rb +413 -0
  168. data/lib/fluent/plugin/buffer/file_single_chunk.rb +311 -0
  169. data/lib/fluent/plugin/buffer/memory_chunk.rb +91 -0
  170. data/lib/fluent/plugin/buffer.rb +918 -0
  171. data/lib/fluent/plugin/compressable.rb +96 -0
  172. data/lib/fluent/plugin/exec_util.rb +22 -0
  173. data/lib/fluent/plugin/file_util.rb +22 -0
  174. data/lib/fluent/plugin/file_wrapper.rb +132 -0
  175. data/lib/fluent/plugin/filter.rb +127 -0
  176. data/lib/fluent/plugin/filter_grep.rb +189 -0
  177. data/lib/fluent/plugin/filter_parser.rb +130 -0
  178. data/lib/fluent/plugin/filter_record_transformer.rb +324 -0
  179. data/lib/fluent/plugin/filter_stdout.rb +53 -0
  180. data/lib/fluent/plugin/formatter.rb +75 -0
  181. data/lib/fluent/plugin/formatter_csv.rb +78 -0
  182. data/lib/fluent/plugin/formatter_hash.rb +35 -0
  183. data/lib/fluent/plugin/formatter_json.rb +59 -0
  184. data/lib/fluent/plugin/formatter_ltsv.rb +44 -0
  185. data/lib/fluent/plugin/formatter_msgpack.rb +33 -0
  186. data/lib/fluent/plugin/formatter_out_file.rb +53 -0
  187. data/lib/fluent/plugin/formatter_single_value.rb +36 -0
  188. data/lib/fluent/plugin/formatter_stdout.rb +76 -0
  189. data/lib/fluent/plugin/formatter_tsv.rb +40 -0
  190. data/lib/fluent/plugin/in_debug_agent.rb +71 -0
  191. data/lib/fluent/plugin/in_dummy.rb +18 -0
  192. data/lib/fluent/plugin/in_exec.rb +110 -0
  193. data/lib/fluent/plugin/in_forward.rb +473 -0
  194. data/lib/fluent/plugin/in_gc_stat.rb +72 -0
  195. data/lib/fluent/plugin/in_http.rb +677 -0
  196. data/lib/fluent/plugin/in_monitor_agent.rb +412 -0
  197. data/lib/fluent/plugin/in_object_space.rb +93 -0
  198. data/lib/fluent/plugin/in_sample.rb +141 -0
  199. data/lib/fluent/plugin/in_syslog.rb +276 -0
  200. data/lib/fluent/plugin/in_tail/group_watch.rb +204 -0
  201. data/lib/fluent/plugin/in_tail/position_file.rb +255 -0
  202. data/lib/fluent/plugin/in_tail.rb +1247 -0
  203. data/lib/fluent/plugin/in_tcp.rb +181 -0
  204. data/lib/fluent/plugin/in_udp.rb +92 -0
  205. data/lib/fluent/plugin/in_unix.rb +195 -0
  206. data/lib/fluent/plugin/input.rb +75 -0
  207. data/lib/fluent/plugin/metrics.rb +119 -0
  208. data/lib/fluent/plugin/metrics_local.rb +96 -0
  209. data/lib/fluent/plugin/multi_output.rb +195 -0
  210. data/lib/fluent/plugin/out_copy.rb +120 -0
  211. data/lib/fluent/plugin/out_exec.rb +105 -0
  212. data/lib/fluent/plugin/out_exec_filter.rb +319 -0
  213. data/lib/fluent/plugin/out_file.rb +334 -0
  214. data/lib/fluent/plugin/out_forward/ack_handler.rb +161 -0
  215. data/lib/fluent/plugin/out_forward/connection_manager.rb +113 -0
  216. data/lib/fluent/plugin/out_forward/error.rb +28 -0
  217. data/lib/fluent/plugin/out_forward/failure_detector.rb +84 -0
  218. data/lib/fluent/plugin/out_forward/handshake_protocol.rb +125 -0
  219. data/lib/fluent/plugin/out_forward/load_balancer.rb +114 -0
  220. data/lib/fluent/plugin/out_forward/socket_cache.rb +142 -0
  221. data/lib/fluent/plugin/out_forward.rb +826 -0
  222. data/lib/fluent/plugin/out_http.rb +280 -0
  223. data/lib/fluent/plugin/out_null.rb +74 -0
  224. data/lib/fluent/plugin/out_relabel.rb +32 -0
  225. data/lib/fluent/plugin/out_roundrobin.rb +84 -0
  226. data/lib/fluent/plugin/out_secondary_file.rb +131 -0
  227. data/lib/fluent/plugin/out_stdout.rb +74 -0
  228. data/lib/fluent/plugin/out_stream.rb +130 -0
  229. data/lib/fluent/plugin/output.rb +1566 -0
  230. data/lib/fluent/plugin/owned_by_mixin.rb +42 -0
  231. data/lib/fluent/plugin/parser.rb +274 -0
  232. data/lib/fluent/plugin/parser_apache.rb +28 -0
  233. data/lib/fluent/plugin/parser_apache2.rb +88 -0
  234. data/lib/fluent/plugin/parser_apache_error.rb +26 -0
  235. data/lib/fluent/plugin/parser_csv.rb +114 -0
  236. data/lib/fluent/plugin/parser_json.rb +96 -0
  237. data/lib/fluent/plugin/parser_ltsv.rb +51 -0
  238. data/lib/fluent/plugin/parser_msgpack.rb +50 -0
  239. data/lib/fluent/plugin/parser_multiline.rb +152 -0
  240. data/lib/fluent/plugin/parser_nginx.rb +28 -0
  241. data/lib/fluent/plugin/parser_none.rb +36 -0
  242. data/lib/fluent/plugin/parser_regexp.rb +68 -0
  243. data/lib/fluent/plugin/parser_syslog.rb +496 -0
  244. data/lib/fluent/plugin/parser_tsv.rb +42 -0
  245. data/lib/fluent/plugin/sd_file.rb +156 -0
  246. data/lib/fluent/plugin/sd_srv.rb +135 -0
  247. data/lib/fluent/plugin/sd_static.rb +58 -0
  248. data/lib/fluent/plugin/service_discovery.rb +65 -0
  249. data/lib/fluent/plugin/socket_util.rb +22 -0
  250. data/lib/fluent/plugin/storage.rb +84 -0
  251. data/lib/fluent/plugin/storage_local.rb +162 -0
  252. data/lib/fluent/plugin/string_util.rb +22 -0
  253. data/lib/fluent/plugin.rb +206 -0
  254. data/lib/fluent/plugin_helper/cert_option.rb +191 -0
  255. data/lib/fluent/plugin_helper/child_process.rb +366 -0
  256. data/lib/fluent/plugin_helper/compat_parameters.rb +343 -0
  257. data/lib/fluent/plugin_helper/counter.rb +51 -0
  258. data/lib/fluent/plugin_helper/event_emitter.rb +100 -0
  259. data/lib/fluent/plugin_helper/event_loop.rb +170 -0
  260. data/lib/fluent/plugin_helper/extract.rb +104 -0
  261. data/lib/fluent/plugin_helper/formatter.rb +147 -0
  262. data/lib/fluent/plugin_helper/http_server/app.rb +79 -0
  263. data/lib/fluent/plugin_helper/http_server/compat/server.rb +92 -0
  264. data/lib/fluent/plugin_helper/http_server/compat/ssl_context_extractor.rb +52 -0
  265. data/lib/fluent/plugin_helper/http_server/compat/webrick_handler.rb +58 -0
  266. data/lib/fluent/plugin_helper/http_server/methods.rb +35 -0
  267. data/lib/fluent/plugin_helper/http_server/request.rb +42 -0
  268. data/lib/fluent/plugin_helper/http_server/router.rb +54 -0
  269. data/lib/fluent/plugin_helper/http_server/server.rb +93 -0
  270. data/lib/fluent/plugin_helper/http_server/ssl_context_builder.rb +41 -0
  271. data/lib/fluent/plugin_helper/http_server.rb +135 -0
  272. data/lib/fluent/plugin_helper/inject.rb +154 -0
  273. data/lib/fluent/plugin_helper/metrics.rb +129 -0
  274. data/lib/fluent/plugin_helper/parser.rb +147 -0
  275. data/lib/fluent/plugin_helper/record_accessor.rb +207 -0
  276. data/lib/fluent/plugin_helper/retry_state.rb +219 -0
  277. data/lib/fluent/plugin_helper/server.rb +820 -0
  278. data/lib/fluent/plugin_helper/service_discovery/manager.rb +146 -0
  279. data/lib/fluent/plugin_helper/service_discovery/round_robin_balancer.rb +43 -0
  280. data/lib/fluent/plugin_helper/service_discovery.rb +125 -0
  281. data/lib/fluent/plugin_helper/socket.rb +288 -0
  282. data/lib/fluent/plugin_helper/socket_option.rb +98 -0
  283. data/lib/fluent/plugin_helper/storage.rb +349 -0
  284. data/lib/fluent/plugin_helper/thread.rb +180 -0
  285. data/lib/fluent/plugin_helper/timer.rb +92 -0
  286. data/lib/fluent/plugin_helper.rb +75 -0
  287. data/lib/fluent/plugin_id.rb +93 -0
  288. data/lib/fluent/process.rb +22 -0
  289. data/lib/fluent/registry.rb +117 -0
  290. data/lib/fluent/root_agent.rb +372 -0
  291. data/lib/fluent/rpc.rb +95 -0
  292. data/lib/fluent/static_config_analysis.rb +194 -0
  293. data/lib/fluent/supervisor.rb +1141 -0
  294. data/lib/fluent/system_config.rb +188 -0
  295. data/lib/fluent/test/base.rb +78 -0
  296. data/lib/fluent/test/driver/base.rb +225 -0
  297. data/lib/fluent/test/driver/base_owned.rb +83 -0
  298. data/lib/fluent/test/driver/base_owner.rb +135 -0
  299. data/lib/fluent/test/driver/event_feeder.rb +98 -0
  300. data/lib/fluent/test/driver/filter.rb +57 -0
  301. data/lib/fluent/test/driver/formatter.rb +30 -0
  302. data/lib/fluent/test/driver/input.rb +31 -0
  303. data/lib/fluent/test/driver/multi_output.rb +53 -0
  304. data/lib/fluent/test/driver/output.rb +102 -0
  305. data/lib/fluent/test/driver/parser.rb +30 -0
  306. data/lib/fluent/test/driver/storage.rb +30 -0
  307. data/lib/fluent/test/driver/test_event_router.rb +45 -0
  308. data/lib/fluent/test/filter_test.rb +77 -0
  309. data/lib/fluent/test/formatter_test.rb +65 -0
  310. data/lib/fluent/test/helpers.rb +134 -0
  311. data/lib/fluent/test/input_test.rb +174 -0
  312. data/lib/fluent/test/log.rb +79 -0
  313. data/lib/fluent/test/output_test.rb +156 -0
  314. data/lib/fluent/test/parser_test.rb +70 -0
  315. data/lib/fluent/test/startup_shutdown.rb +46 -0
  316. data/lib/fluent/test.rb +58 -0
  317. data/lib/fluent/time.rb +512 -0
  318. data/lib/fluent/timezone.rb +171 -0
  319. data/lib/fluent/tls.rb +81 -0
  320. data/lib/fluent/unique_id.rb +39 -0
  321. data/lib/fluent/variable_store.rb +40 -0
  322. data/lib/fluent/version.rb +21 -0
  323. data/lib/fluent/winsvc.rb +105 -0
  324. data/templates/new_gem/Gemfile +3 -0
  325. data/templates/new_gem/README.md.erb +43 -0
  326. data/templates/new_gem/Rakefile +13 -0
  327. data/templates/new_gem/fluent-plugin.gemspec.erb +27 -0
  328. data/templates/new_gem/lib/fluent/plugin/filter.rb.erb +14 -0
  329. data/templates/new_gem/lib/fluent/plugin/formatter.rb.erb +14 -0
  330. data/templates/new_gem/lib/fluent/plugin/input.rb.erb +11 -0
  331. data/templates/new_gem/lib/fluent/plugin/output.rb.erb +11 -0
  332. data/templates/new_gem/lib/fluent/plugin/parser.rb.erb +15 -0
  333. data/templates/new_gem/lib/fluent/plugin/storage.rb.erb +40 -0
  334. data/templates/new_gem/test/helper.rb.erb +8 -0
  335. data/templates/new_gem/test/plugin/test_filter.rb.erb +18 -0
  336. data/templates/new_gem/test/plugin/test_formatter.rb.erb +18 -0
  337. data/templates/new_gem/test/plugin/test_input.rb.erb +18 -0
  338. data/templates/new_gem/test/plugin/test_output.rb.erb +18 -0
  339. data/templates/new_gem/test/plugin/test_parser.rb.erb +18 -0
  340. data/templates/new_gem/test/plugin/test_storage.rb.erb +18 -0
  341. data/templates/plugin_config_formatter/param.md-compact.erb +25 -0
  342. data/templates/plugin_config_formatter/param.md-table.erb +10 -0
  343. data/templates/plugin_config_formatter/param.md.erb +34 -0
  344. data/templates/plugin_config_formatter/section.md.erb +12 -0
  345. data/test/command/test_binlog_reader.rb +362 -0
  346. data/test/command/test_ca_generate.rb +70 -0
  347. data/test/command/test_cap_ctl.rb +100 -0
  348. data/test/command/test_cat.rb +128 -0
  349. data/test/command/test_ctl.rb +56 -0
  350. data/test/command/test_fluentd.rb +1139 -0
  351. data/test/command/test_plugin_config_formatter.rb +398 -0
  352. data/test/command/test_plugin_generator.rb +109 -0
  353. data/test/compat/test_calls_super.rb +166 -0
  354. data/test/compat/test_parser.rb +92 -0
  355. data/test/config/assertions.rb +42 -0
  356. data/test/config/test_config_parser.rb +551 -0
  357. data/test/config/test_configurable.rb +1784 -0
  358. data/test/config/test_configure_proxy.rb +604 -0
  359. data/test/config/test_dsl.rb +415 -0
  360. data/test/config/test_element.rb +518 -0
  361. data/test/config/test_literal_parser.rb +309 -0
  362. data/test/config/test_plugin_configuration.rb +56 -0
  363. data/test/config/test_section.rb +191 -0
  364. data/test/config/test_system_config.rb +201 -0
  365. data/test/config/test_types.rb +408 -0
  366. data/test/counter/test_client.rb +563 -0
  367. data/test/counter/test_error.rb +44 -0
  368. data/test/counter/test_mutex_hash.rb +179 -0
  369. data/test/counter/test_server.rb +589 -0
  370. data/test/counter/test_store.rb +258 -0
  371. data/test/counter/test_validator.rb +137 -0
  372. data/test/helper.rb +155 -0
  373. data/test/helpers/fuzzy_assert.rb +89 -0
  374. data/test/helpers/process_extenstion.rb +33 -0
  375. data/test/plugin/data/2010/01/20100102-030405.log +0 -0
  376. data/test/plugin/data/2010/01/20100102-030406.log +0 -0
  377. data/test/plugin/data/2010/01/20100102.log +0 -0
  378. data/test/plugin/data/log/bar +0 -0
  379. data/test/plugin/data/log/foo/bar.log +0 -0
  380. data/test/plugin/data/log/foo/bar2 +0 -0
  381. data/test/plugin/data/log/test.log +0 -0
  382. data/test/plugin/data/sd_file/config +11 -0
  383. data/test/plugin/data/sd_file/config.json +17 -0
  384. data/test/plugin/data/sd_file/config.yaml +11 -0
  385. data/test/plugin/data/sd_file/config.yml +11 -0
  386. data/test/plugin/data/sd_file/invalid_config.yml +7 -0
  387. data/test/plugin/in_tail/test_fifo.rb +121 -0
  388. data/test/plugin/in_tail/test_io_handler.rb +150 -0
  389. data/test/plugin/in_tail/test_position_file.rb +316 -0
  390. data/test/plugin/out_forward/test_ack_handler.rb +101 -0
  391. data/test/plugin/out_forward/test_connection_manager.rb +145 -0
  392. data/test/plugin/out_forward/test_handshake_protocol.rb +112 -0
  393. data/test/plugin/out_forward/test_load_balancer.rb +106 -0
  394. data/test/plugin/out_forward/test_socket_cache.rb +174 -0
  395. data/test/plugin/test_bare_output.rb +131 -0
  396. data/test/plugin/test_base.rb +115 -0
  397. data/test/plugin/test_buf_file.rb +1275 -0
  398. data/test/plugin/test_buf_file_single.rb +833 -0
  399. data/test/plugin/test_buf_memory.rb +42 -0
  400. data/test/plugin/test_buffer.rb +1383 -0
  401. data/test/plugin/test_buffer_chunk.rb +198 -0
  402. data/test/plugin/test_buffer_file_chunk.rb +871 -0
  403. data/test/plugin/test_buffer_file_single_chunk.rb +611 -0
  404. data/test/plugin/test_buffer_memory_chunk.rb +339 -0
  405. data/test/plugin/test_compressable.rb +87 -0
  406. data/test/plugin/test_file_util.rb +96 -0
  407. data/test/plugin/test_file_wrapper.rb +58 -0
  408. data/test/plugin/test_filter.rb +368 -0
  409. data/test/plugin/test_filter_grep.rb +697 -0
  410. data/test/plugin/test_filter_parser.rb +731 -0
  411. data/test/plugin/test_filter_record_transformer.rb +577 -0
  412. data/test/plugin/test_filter_stdout.rb +207 -0
  413. data/test/plugin/test_formatter_csv.rb +136 -0
  414. data/test/plugin/test_formatter_hash.rb +38 -0
  415. data/test/plugin/test_formatter_json.rb +61 -0
  416. data/test/plugin/test_formatter_ltsv.rb +70 -0
  417. data/test/plugin/test_formatter_msgpack.rb +28 -0
  418. data/test/plugin/test_formatter_out_file.rb +116 -0
  419. data/test/plugin/test_formatter_single_value.rb +44 -0
  420. data/test/plugin/test_formatter_tsv.rb +76 -0
  421. data/test/plugin/test_in_debug_agent.rb +49 -0
  422. data/test/plugin/test_in_exec.rb +261 -0
  423. data/test/plugin/test_in_forward.rb +1178 -0
  424. data/test/plugin/test_in_gc_stat.rb +62 -0
  425. data/test/plugin/test_in_http.rb +1103 -0
  426. data/test/plugin/test_in_monitor_agent.rb +923 -0
  427. data/test/plugin/test_in_object_space.rb +66 -0
  428. data/test/plugin/test_in_sample.rb +190 -0
  429. data/test/plugin/test_in_syslog.rb +505 -0
  430. data/test/plugin/test_in_tail.rb +2639 -0
  431. data/test/plugin/test_in_tcp.rb +243 -0
  432. data/test/plugin/test_in_udp.rb +268 -0
  433. data/test/plugin/test_in_unix.rb +181 -0
  434. data/test/plugin/test_input.rb +137 -0
  435. data/test/plugin/test_metadata.rb +89 -0
  436. data/test/plugin/test_metrics.rb +294 -0
  437. data/test/plugin/test_metrics_local.rb +96 -0
  438. data/test/plugin/test_multi_output.rb +204 -0
  439. data/test/plugin/test_out_copy.rb +308 -0
  440. data/test/plugin/test_out_exec.rb +312 -0
  441. data/test/plugin/test_out_exec_filter.rb +606 -0
  442. data/test/plugin/test_out_file.rb +1037 -0
  443. data/test/plugin/test_out_forward.rb +1358 -0
  444. data/test/plugin/test_out_http.rb +428 -0
  445. data/test/plugin/test_out_null.rb +105 -0
  446. data/test/plugin/test_out_relabel.rb +28 -0
  447. data/test/plugin/test_out_roundrobin.rb +146 -0
  448. data/test/plugin/test_out_secondary_file.rb +458 -0
  449. data/test/plugin/test_out_stdout.rb +205 -0
  450. data/test/plugin/test_out_stream.rb +103 -0
  451. data/test/plugin/test_output.rb +1065 -0
  452. data/test/plugin/test_output_as_buffered.rb +2024 -0
  453. data/test/plugin/test_output_as_buffered_backup.rb +363 -0
  454. data/test/plugin/test_output_as_buffered_compress.rb +165 -0
  455. data/test/plugin/test_output_as_buffered_overflow.rb +250 -0
  456. data/test/plugin/test_output_as_buffered_retries.rb +966 -0
  457. data/test/plugin/test_output_as_buffered_secondary.rb +882 -0
  458. data/test/plugin/test_output_as_standard.rb +374 -0
  459. data/test/plugin/test_owned_by.rb +35 -0
  460. data/test/plugin/test_parser.rb +399 -0
  461. data/test/plugin/test_parser_apache.rb +42 -0
  462. data/test/plugin/test_parser_apache2.rb +47 -0
  463. data/test/plugin/test_parser_apache_error.rb +45 -0
  464. data/test/plugin/test_parser_csv.rb +200 -0
  465. data/test/plugin/test_parser_json.rb +138 -0
  466. data/test/plugin/test_parser_labeled_tsv.rb +160 -0
  467. data/test/plugin/test_parser_multiline.rb +111 -0
  468. data/test/plugin/test_parser_nginx.rb +88 -0
  469. data/test/plugin/test_parser_none.rb +52 -0
  470. data/test/plugin/test_parser_regexp.rb +289 -0
  471. data/test/plugin/test_parser_syslog.rb +650 -0
  472. data/test/plugin/test_parser_tsv.rb +122 -0
  473. data/test/plugin/test_sd_file.rb +228 -0
  474. data/test/plugin/test_sd_srv.rb +230 -0
  475. data/test/plugin/test_storage.rb +167 -0
  476. data/test/plugin/test_storage_local.rb +335 -0
  477. data/test/plugin/test_string_util.rb +26 -0
  478. data/test/plugin_helper/data/cert/cert-key.pem +27 -0
  479. data/test/plugin_helper/data/cert/cert-with-CRLF.pem +19 -0
  480. data/test/plugin_helper/data/cert/cert-with-no-newline.pem +19 -0
  481. data/test/plugin_helper/data/cert/cert.pem +19 -0
  482. data/test/plugin_helper/data/cert/cert_chains/ca-cert-key.pem +27 -0
  483. data/test/plugin_helper/data/cert/cert_chains/ca-cert.pem +20 -0
  484. data/test/plugin_helper/data/cert/cert_chains/cert-key.pem +27 -0
  485. data/test/plugin_helper/data/cert/cert_chains/cert.pem +40 -0
  486. data/test/plugin_helper/data/cert/empty.pem +0 -0
  487. data/test/plugin_helper/data/cert/generate_cert.rb +125 -0
  488. data/test/plugin_helper/data/cert/with_ca/ca-cert-key-pass.pem +30 -0
  489. data/test/plugin_helper/data/cert/with_ca/ca-cert-key.pem +27 -0
  490. data/test/plugin_helper/data/cert/with_ca/ca-cert-pass.pem +20 -0
  491. data/test/plugin_helper/data/cert/with_ca/ca-cert.pem +20 -0
  492. data/test/plugin_helper/data/cert/with_ca/cert-key-pass.pem +30 -0
  493. data/test/plugin_helper/data/cert/with_ca/cert-key.pem +27 -0
  494. data/test/plugin_helper/data/cert/with_ca/cert-pass.pem +21 -0
  495. data/test/plugin_helper/data/cert/with_ca/cert.pem +21 -0
  496. data/test/plugin_helper/data/cert/without_ca/cert-key-pass.pem +30 -0
  497. data/test/plugin_helper/data/cert/without_ca/cert-key.pem +27 -0
  498. data/test/plugin_helper/data/cert/without_ca/cert-pass.pem +20 -0
  499. data/test/plugin_helper/data/cert/without_ca/cert.pem +20 -0
  500. data/test/plugin_helper/http_server/test_app.rb +65 -0
  501. data/test/plugin_helper/http_server/test_route.rb +32 -0
  502. data/test/plugin_helper/service_discovery/test_manager.rb +93 -0
  503. data/test/plugin_helper/service_discovery/test_round_robin_balancer.rb +21 -0
  504. data/test/plugin_helper/test_cert_option.rb +25 -0
  505. data/test/plugin_helper/test_child_process.rb +852 -0
  506. data/test/plugin_helper/test_compat_parameters.rb +358 -0
  507. data/test/plugin_helper/test_event_emitter.rb +80 -0
  508. data/test/plugin_helper/test_event_loop.rb +52 -0
  509. data/test/plugin_helper/test_extract.rb +194 -0
  510. data/test/plugin_helper/test_formatter.rb +255 -0
  511. data/test/plugin_helper/test_http_server_helper.rb +372 -0
  512. data/test/plugin_helper/test_inject.rb +561 -0
  513. data/test/plugin_helper/test_metrics.rb +137 -0
  514. data/test/plugin_helper/test_parser.rb +264 -0
  515. data/test/plugin_helper/test_record_accessor.rb +238 -0
  516. data/test/plugin_helper/test_retry_state.rb +1006 -0
  517. data/test/plugin_helper/test_server.rb +1841 -0
  518. data/test/plugin_helper/test_service_discovery.rb +165 -0
  519. data/test/plugin_helper/test_socket.rb +146 -0
  520. data/test/plugin_helper/test_storage.rb +542 -0
  521. data/test/plugin_helper/test_thread.rb +164 -0
  522. data/test/plugin_helper/test_timer.rb +130 -0
  523. data/test/scripts/exec_script.rb +32 -0
  524. data/test/scripts/fluent/plugin/formatter1/formatter_test1.rb +7 -0
  525. data/test/scripts/fluent/plugin/formatter2/formatter_test2.rb +7 -0
  526. data/test/scripts/fluent/plugin/formatter_known.rb +8 -0
  527. data/test/scripts/fluent/plugin/out_test.rb +81 -0
  528. data/test/scripts/fluent/plugin/out_test2.rb +80 -0
  529. data/test/scripts/fluent/plugin/parser_known.rb +4 -0
  530. data/test/test_capability.rb +74 -0
  531. data/test/test_clock.rb +164 -0
  532. data/test/test_config.rb +333 -0
  533. data/test/test_configdsl.rb +148 -0
  534. data/test/test_daemonizer.rb +91 -0
  535. data/test/test_engine.rb +203 -0
  536. data/test/test_event.rb +531 -0
  537. data/test/test_event_router.rb +348 -0
  538. data/test/test_event_time.rb +199 -0
  539. data/test/test_filter.rb +121 -0
  540. data/test/test_fluent_log_event_router.rb +99 -0
  541. data/test/test_formatter.rb +366 -0
  542. data/test/test_input.rb +31 -0
  543. data/test/test_log.rb +994 -0
  544. data/test/test_logger_initializer.rb +46 -0
  545. data/test/test_match.rb +148 -0
  546. data/test/test_mixin.rb +351 -0
  547. data/test/test_msgpack_factory.rb +18 -0
  548. data/test/test_oj_options.rb +55 -0
  549. data/test/test_output.rb +278 -0
  550. data/test/test_plugin.rb +251 -0
  551. data/test/test_plugin_classes.rb +370 -0
  552. data/test/test_plugin_helper.rb +81 -0
  553. data/test/test_plugin_id.rb +119 -0
  554. data/test/test_process.rb +14 -0
  555. data/test/test_root_agent.rb +951 -0
  556. data/test/test_static_config_analysis.rb +177 -0
  557. data/test/test_supervisor.rb +791 -0
  558. data/test/test_test_drivers.rb +136 -0
  559. data/test/test_time_formatter.rb +301 -0
  560. data/test/test_time_parser.rb +362 -0
  561. data/test/test_tls.rb +65 -0
  562. data/test/test_unique_id.rb +47 -0
  563. data/test/test_variable_store.rb +65 -0
  564. metadata +1191 -0
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEogIBAAKCAQEAzQtGZgClcBIDKC0U1sQpznVV9HzAZANDVazrDGA8Euf8Kx4X
3
+ dnVoE+HzwAviL4VLDPzNBLyoZ2wf3wg6D+1UAhA0DqPRCihhfJqBX0WgewakSl5a
4
+ wrc1XIXtiMxcWE/5+XtodjO71gECBgmd/l0UtdFY7mMt/gArH8PQf29ABGiB1zzn
5
+ d0MNgA0r2OlXICe4kDzTHqDBv7nFgQFro2vkI/QJD5fABbb62HRWgUfQ13DUShSG
6
+ H5FPkMxTkCs5GShyjYCC5IhI+AKx5RWvb4kuMRsxWC7JHc/XKPdbeLkNWRCFzTnO
7
+ OR09Qdp45tBbXtX0IjInxsnNOBzW0zTSg0xUtwIDAQABAoIBAG4N5zNIlYOZp2gh
8
+ ClZb47SU9hXL/9euiK2rql1yKcxcB9V8yUsjqUFCvfoOZtDq0mWeKsyoFhusxU6I
9
+ s+FomPaii85vzvuMwQaIR3hDfueJoRTpn/1zKIkIuX37cnVUN+/YdTE8g01SLSvg
10
+ bZThkQQl4X3SbhUvMfZSu84qgEncdtJ08zx81CB1Fpn0HIjpmpRM1F9jjDwtkVUw
11
+ 1gVQm9g7fwbgRfqSUyKkEqKvCVYnLQx3X5inuAEps4zIzAXF8RtxFymyHfExzZqr
12
+ Pj5uYjTbf/wkaU9nWQzXeCbRTz3ZrjvFnisFt1HI2uijd1DjJ7CB7Ls752RWekXS
13
+ Yc9FFwECgYEA/gZ3Hx4dIb6NW6UmPKjiQex/tVqwCRaxGtpA7qensf187N2nn4FD
14
+ jdQJ69XmoDRKr2X+e7tsgKpETGufdDQ8MNBHz2krfqXVSlsEIOjeLfRRqhh+8Bcr
15
+ flri0sumVbk0X9bnXzyCc4AGcRhtT9U69HCMTlly2z0pjIlVvmFXARECgYEAzqNV
16
+ FSHHbEU+5zToJK0jyTaE/F+u9n5YKDcRN9RrKrEYcoUzKbIYJrUulbRGfsqAxY5L
17
+ KtIDRI9NmPDBYqBwqSFnm9LcLn8CgQH/rRSFJv1Iw+sPHd/Nrk1KWjpO0OYRgfiB
18
+ oxcgGSzHp0OZP+e7Trtq1TKW6VyadEsPZ7oKeUcCgYB9TiMkrm4gXybLtkOOWKCD
19
+ dG3qv7lmQlNKs66kCv+lxS0CirRM8i6on5flRbZmAGV28BEAaAu1zEe0isI1SC8I
20
+ xTUnEvHpn1P/QbZfpX8zm/lMtpinRkamJZ8N7Hc4ggtb2152lBqlbtm+oBYL81sJ
21
+ iRss6uLFUv5T3Mr3Bn0sgQKBgGr4xQf+h6V2J307t12dQCRfE/MueX3jpDGVaFV1
22
+ otDkAxrt97GDH9uR+f7H56KlpIohAqq1M7nfUbV2FTbAhfIYd/GD9DYhzCMK7Ngm
23
+ AlRP1MaPvjCh9nFgU7hn7PtZzwBwrHPIefZuZyEg7onVpfK5NTIPUW6XYOIJJX12
24
+ IwvrAoGAGwg2Cq6Vs/KkiCDxoy42HVZLS/DS/iHfUTAXtekF88qwT1zHFqF1ImvO
25
+ +FEUx8IbxY1oifSQc3Jw9HYnmYqmFW1PThNG3CwyaOGgtlEFcvhHsNjLRGJSQbN2
26
+ cUYBe2hHXii7OL8T8kIvLlCAKGA8IIfPGhsu3uUtrvMBo5c0WmQ=
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,40 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDQjCCAiqgAwIBAgILANkmymLgb5e04tcwDQYJKoZIhvcNAQELBQAwVDELMAkG
3
+ A1UEBhMCVVMxCzAJBgNVBAgMAkNBMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MSAw
4
+ HgYDVQQDDBdjYTIudGVzdGluZy5mbHVlbnRkLm9yZzAgFw03MDAxMDEwMDAwMDBa
5
+ GA8yMTE4MTAyNzA4MDY1N1owVzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRYw
6
+ FAYDVQQHDA1Nb3VudGFpbiBWaWV3MSMwIQYDVQQDDBpzZXJ2ZXIudGVzdGluZy5m
7
+ bHVlbnRkLm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM0LRmYA
8
+ pXASAygtFNbEKc51VfR8wGQDQ1Ws6wxgPBLn/CseF3Z1aBPh88AL4i+FSwz8zQS8
9
+ qGdsH98IOg/tVAIQNA6j0QooYXyagV9FoHsGpEpeWsK3NVyF7YjMXFhP+fl7aHYz
10
+ u9YBAgYJnf5dFLXRWO5jLf4AKx/D0H9vQARogdc853dDDYANK9jpVyAnuJA80x6g
11
+ wb+5xYEBa6Nr5CP0CQ+XwAW2+th0VoFH0Ndw1EoUhh+RT5DMU5ArORkoco2AguSI
12
+ SPgCseUVr2+JLjEbMVguyR3P1yj3W3i5DVkQhc05zjkdPUHaeObQW17V9CIyJ8bJ
13
+ zTgc1tM00oNMVLcCAwEAAaMQMA4wDAYDVR0TBAUwAwEBADANBgkqhkiG9w0BAQsF
14
+ AAOCAQEAMzoxZJqhu8zyKI20Hz5SAqva+jcHbZbR9AXlt4LWQEttsXy4S52XLZBB
15
+ 4Es/Fah4lyou9R1xdUfF6iGBV6HgDMIuh+QYfqA/jJ4HXNMKLtDXakS8xYp2A0Wn
16
+ g0EnjGx44DNweBkKGB9asldgwOM7MYMoQvS3Nkyu3oFqpfLpuWpWB/3Vw3PMGEdx
17
+ r/c8Ev5XoVtl2+dXszsEp2jwUOFo8+DZzFdBZdA2F7RmcP+zxbAHIw/jHf/ptDGg
18
+ NtzHmLhxiLblGlJHw/4a0HhXa453jzLsD1+hQpqBRUNbXBp1qpjqEr5SF1iVNGpZ
19
+ peWFawp53MkIBXRls66ViJsl//fPBg==
20
+ -----END CERTIFICATE-----
21
+ -----BEGIN CERTIFICATE-----
22
+ MIIDPTCCAiWgAwIBAgIKRbRr9ZfmrY72TjANBgkqhkiG9w0BAQsFADBTMQswCQYD
23
+ VQQGEwJVUzELMAkGA1UECAwCQ0ExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxHzAd
24
+ BgNVBAMMFmNhLnRlc3RpbmcuZmx1ZW50ZC5vcmcwIBcNNzAwMTAxMDAwMDAwWhgP
25
+ MjExODEwMjcwODA2NTdaMFQxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEWMBQG
26
+ A1UEBwwNTW91bnRhaW4gVmlldzEgMB4GA1UEAwwXY2EyLnRlc3RpbmcuZmx1ZW50
27
+ ZC5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6gnGxD4RQuAA1
28
+ fQNMl9mctiIvcJ0Dz5f3JtCJlKKqBDKJ17py7tjFZ2MZ5vytIl1DUU2oxHew8F/u
29
+ U8s+8ljmL3seiXx2kMCOxCvSW3JYUQrzbTHKszna7Ffy94SzpRDh/4/2RGatnSqi
30
+ n4fRpalrchhH6Ds6v486o7YcwEKPR2dlD+Ltd/V3lMAOAmoRoe2aQlLudOUQjHJU
31
+ YWGim8XS2dNAEy4WR5DvjYEA+CwKEX7f9p0Dihs8FKBjB2TvBwUkdfILLEnwA1rs
32
+ r0coUt3kwYt9TYNYv6/SZYvFtaYjM3BmLVHI3mtEchaA+Tij4V4gRZ573Ai1+Fb8
33
+ rxn+oTsVAgMBAAGjEDAOMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEB
34
+ AHID7VD2PS7svmCXRg4qe7MkhA0veIadZRE6WZgJo3Z64p9jUWu/Y3ZrlZuDg0qI
35
+ yV65UgWrgUOiGN6RZmI5A850DH3ryjvQElPHWjRavm0GtrOxFhHYpX8N7DRFW7t0
36
+ 7mld7YvbKRj0BrovU3avPC1P9w8FpegMKh48HsoRCO3NhHvYwtAf2B767UuAaqnI
37
+ DW9rMPRTZv+Pv+G+kJN+updOs6HiHFxeS8Bwb8GlADcwWNGMqyJJyKmaefYVzDKt
38
+ xfBiKiwev6Hm8RVTk1H3rKVZox/ZkDiZfZhmBJqO4mdDR4LLFIRIPqjUPxENsKFJ
39
+ MyrDcwH+0Aq9ZSiRaVyfCkQ=
40
+ -----END CERTIFICATE-----
File without changes
@@ -0,0 +1,125 @@
1
+ require 'fluent/plugin_helper/cert_option'
2
+ require 'fileutils'
3
+
4
+ module CertUtil
5
+ extend Fluent::PluginHelper::CertOption
6
+ end
7
+
8
+ WITHOUT_CA_DIR = './without_ca'.freeze
9
+ WITH_CA_DIR = './with_ca'.freeze
10
+ WITH_CERT_CHAIN_DIR = './cert_chains'.freeze
11
+
12
+ CA_OPTION = {
13
+ private_key_length: 2048,
14
+ country: 'US',
15
+ state: 'CA',
16
+ locality: 'Mountain View',
17
+ common_name: 'ca.testing.fluentd.org',
18
+ expiration: 30 * 86400 * 12 * 100,
19
+ digest: :sha256,
20
+ }
21
+
22
+ SERVER_OPTION = {
23
+ private_key_length: 2048,
24
+ country: 'US',
25
+ state: 'CA',
26
+ locality: 'Mountain View',
27
+ common_name: 'server.testing.fluentd.org',
28
+ expiration: 30 * 86400 * 12 * 100,
29
+ digest: :sha256,
30
+ }
31
+
32
+ def write_cert_and_key(cert_path, cert, key_path, key, passphrase)
33
+ File.open(cert_path, 'w') { |f| f.write(cert.to_pem) }
34
+
35
+ # Write the secret key (raw or encrypted by AES256) in PEM format
36
+ key_str = passphrase ? key.export(OpenSSL::Cipher.new('AES-256-CBC'), passphrase) : key.export
37
+ File.open(key_path, 'w') { |f| f.write(key_str) }
38
+ File.chmod(0o600, cert_path, key_path)
39
+ end
40
+
41
+ def create_server_pair_signed_by_self(cert_path, private_key_path, passphrase)
42
+ cert, key, _ = CertUtil.cert_option_generate_server_pair_self_signed(SERVER_OPTION)
43
+ write_cert_and_key(cert_path, cert, private_key_path, key, passphrase)
44
+ cert
45
+ end
46
+
47
+ def create_ca_pair_signed_by_self(cert_path, private_key_path, passphrase)
48
+ cert, key, _ = CertUtil.cert_option_generate_ca_pair_self_signed(CA_OPTION)
49
+ write_cert_and_key(cert_path, cert, private_key_path, key, passphrase)
50
+ cert
51
+ end
52
+
53
+ def create_server_pair_signed_by_ca(ca_cert_path, ca_key_path, ca_key_passphrase, cert_path, private_key_path, passphrase)
54
+ cert, key, _ = CertUtil.cert_option_generate_server_pair_by_ca(ca_cert_path, ca_key_path, ca_key_passphrase, SERVER_OPTION)
55
+ write_cert_and_key(cert_path, cert, private_key_path, key, passphrase)
56
+ cert
57
+ end
58
+
59
+ def create_without_ca
60
+ FileUtils.mkdir_p(WITHOUT_CA_DIR)
61
+ cert_path = File.join(WITHOUT_CA_DIR, 'cert.pem')
62
+ cert_key_path = File.join(WITHOUT_CA_DIR, 'cert-key.pem')
63
+ cert_pass_path = File.join(WITHOUT_CA_DIR, 'cert-pass.pem')
64
+ cert_key_pass_path = File.join(WITHOUT_CA_DIR, 'cert-key-pass.pem')
65
+
66
+ create_server_pair_signed_by_self(cert_path, cert_key_path, nil)
67
+ create_server_pair_signed_by_self(cert_pass_path, cert_key_pass_path, 'apple') # with passphrase
68
+ end
69
+
70
+ def create_with_ca
71
+ FileUtils.mkdir_p(WITH_CA_DIR)
72
+ cert_path = File.join(WITH_CA_DIR, 'cert.pem')
73
+ cert_key_path = File.join(WITH_CA_DIR, 'cert-key.pem')
74
+ ca_cert_path = File.join(WITH_CA_DIR, 'ca-cert.pem')
75
+ ca_key_path = File.join(WITH_CA_DIR, 'ca-cert-key.pem')
76
+ create_ca_pair_signed_by_self(ca_cert_path, ca_key_path, nil)
77
+ create_server_pair_signed_by_ca(ca_cert_path, ca_key_path, nil, cert_path, cert_key_path, nil)
78
+
79
+ cert_pass_path = File.join(WITH_CA_DIR, 'cert-pass.pem')
80
+ cert_key_pass_path = File.join(WITH_CA_DIR, 'cert-key-pass.pem')
81
+ ca_cert_pass_path = File.join(WITH_CA_DIR, 'ca-cert-pass.pem')
82
+ ca_key_pass_path = File.join(WITH_CA_DIR, 'ca-cert-key-pass.pem')
83
+ create_ca_pair_signed_by_self(ca_cert_pass_path, ca_key_pass_path, 'orange') # with passphrase
84
+ create_server_pair_signed_by_ca(ca_cert_pass_path, ca_key_pass_path, 'orange', cert_pass_path, cert_key_pass_path, 'apple')
85
+ end
86
+
87
+ def create_cert_pair_chained_with_root_ca(ca_cert_path, ca_key_path, ca_key_passphrase, cert_path, private_key_path, passphrase)
88
+ root_cert, root_key, _ = CertUtil.cert_option_generate_ca_pair_self_signed(CA_OPTION)
89
+ write_cert_and_key(ca_cert_path, root_cert, ca_key_path, root_key, ca_key_passphrase)
90
+
91
+ intermediate_ca_options = CA_OPTION.dup
92
+ intermediate_ca_options[:common_name] = 'ca2.testing.fluentd.org'
93
+ chain_cert, chain_key = CertUtil.cert_option_generate_pair(intermediate_ca_options, root_cert.subject)
94
+ chain_cert.add_extension(OpenSSL::X509::Extension.new('basicConstraints', OpenSSL::ASN1.Sequence([OpenSSL::ASN1::Boolean(true)])))
95
+ chain_cert.sign(root_key, 'sha256')
96
+
97
+ cert, server_key, _ = CertUtil.cert_option_generate_pair(SERVER_OPTION, chain_cert.subject)
98
+ cert.add_extension OpenSSL::X509::Extension.new('basicConstraints', OpenSSL::ASN1.Sequence([OpenSSL::ASN1::Boolean(false)]))
99
+ cert.sign(chain_key, 'sha256')
100
+
101
+ # write chained cert
102
+ File.open(cert_path, 'w') do |f|
103
+ f.write(cert.to_pem)
104
+ f.write(chain_cert.to_pem)
105
+ end
106
+
107
+ key_str = passphrase ? server_key.export(OpenSSL::Cipher.new("AES-256-CBC"), passphrase) : server_key.export
108
+ File.open(private_key_path, "w") { |f| f.write(key_str) }
109
+ File.chmod(0600, cert_path, private_key_path)
110
+ end
111
+
112
+ def create_cert_chain
113
+ FileUtils.mkdir_p(WITH_CERT_CHAIN_DIR)
114
+ ca_cert_path = File.join(WITH_CERT_CHAIN_DIR, 'ca-cert.pem')
115
+ ca_key_path = File.join(WITH_CERT_CHAIN_DIR, 'ca-cert-key.pem')
116
+
117
+ cert_path = File.join(WITH_CERT_CHAIN_DIR, 'cert.pem')
118
+ private_key_path = File.join(WITH_CERT_CHAIN_DIR, 'cert-key.pem')
119
+
120
+ create_server_pair_chained_with_root_ca(ca_cert_path, ca_key_path, nil, cert_path, private_key_path, nil)
121
+ end
122
+
123
+ create_without_ca
124
+ create_with_ca
125
+ create_cert_chain
@@ -0,0 +1,30 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ Proc-Type: 4,ENCRYPTED
3
+ DEK-Info: AES-256-CBC,A73EC2C28AEE020735AE48A88ED5D3C2
4
+
5
+ Tpi5VwaaGpF7rrxjCtj+0Y3jZviTIBZSBYG43BPzRM+mhQ5AXBuLsttJkYURssoU
6
+ yn+1zoilnehx+RUWGEBFyPeyDHUaAeUEGf8d6/FHv3D/9hlrzil/pkvyKN9KXzG9
7
+ HYLJobLG1JPR0XgINMUP9W77n9bitR2hxm0ib3TAuTmEn7Ms3LoLmVIGYE91OExC
8
+ KXcIpt+0Ue6qEzKv+Q4/L+7a/i3pNUUvMc15c6cVGdA+wiCpBCkwKvUGapjeoYrB
9
+ +CVdKGte9Ug85fE68tIuSD7UG/1y1MXC0EwPAgO+U4S280aFiBfWgzfzEd5T72kN
10
+ 1O2vad/wCAN8Ruk2XXi7LlM1jFGY3R/CMuaiyVoFQZj5AY32BMxRIilsL8dnl7jG
11
+ Nmkpa0UOi0xhNpnXQ81BeN/nHFZY9xWX/uJwClw71IBJDk3+KKXEk7Ym0AhfAuao
12
+ mX6C7KDyAjG6O5VoQ0YwoROzC2sl6ui1zRkey53552025p4OvaDGbuMkPApp3b75
13
+ sVsA03evcFWQKF7roPN28+obW+SAgBNsg9EfR8Ebbmp4bPpZO9j1bitRxCtJEBLD
14
+ 9fHKfGRscRetWNBInkijM8+/vWMAf0U2gKwAJLXzelfIyqp2Ay03GgAEubcSWRjS
15
+ iU2AItmBsPHOaZ7dSh9MkU/H4DxqLZFxrj48sbDbm5i0zSgAi/9qd3LYXvL6oYZ9
16
+ 3ZHW2+hL6htemXf3DmMeNSnhU5W9Qqoths3CTJcIWeMuaKlkdiw4Gr3Qu0FCRcDE
17
+ crjpeR8ND5Bm2N/EkZKEMm/UDcobMW38F54Do/KVkyctelpW1XuYYcVqt4UhWatT
18
+ En64RbiSqG7wHa8jt4jHX10Zjc1LZAevXk5sVGJRN+y1IL6HFe4CcglLAOigvvPO
19
+ 33D0ft1faUgZlMQPAsXwnQyRpmeUrkyK3aec/6ML1PeJhDHl9OfQpkl2+8SL125o
20
+ rVIMzlRefAG6SqywxqGk7DiSzp4vqJ2dkV9J9NI8mJYpPGpbuICtuOOlaNdiO4na
21
+ eESgCxkOk0yh74n2ioweXeT7Z+mnI8KhMMBqFmM4zyH4s3W/DbojQxZ4+W9s798d
22
+ onoWoj6Knj9IgPlMOJGR7jtsPeTGNxWtvVMWD6uIy4Nml4hvSXn12MU3PJe0Iw+G
23
+ mAlaQySxXBJiaRUGE52HLPF39Td8lB7RT11alQRRFjnulh4ayQlXDPiuj0s2sbop
24
+ yFXCHYgPm16RCLk8qB/Ai2L0H6+A+KR7ewMPSjl6/xQQXf5UwjhU0RXoVpNjLnPA
25
+ rhep+L+YUuQlf5nJ/6jBuSxSO3pG5RkrmoTpq4z0QvlL7ooK4p8NfZZV0Bs+ud8D
26
+ 6OWCda18t1C5k+tr9rR5rQbLsTy9X0B4udvO0m1b7WWVRAfOX8MK7p+VFb0WmKmQ
27
+ DdzZ9Kmsi/j/VSlzqaqPq5XUgtMhnlLtf/9HK/QkDhIMITiyu9oGRASbOmRscVFH
28
+ QGhtXY1XBOHUtOH4d6Dy8/AZSW1u2rHsWJDnyYdFzyOPlrdBG4qOtTG9GitxtA64
29
+ BGDopav+kIdh0NsSG+6I9vxAP9MfGVtaXzVrdvBd3yXsZlRMWemj9SINq4GcMO3C
30
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpAIBAAKCAQEAvyCuBhvNR2ZUukny+Qly3e0CTlQSee1nEULxxmg9N6aZc8Sr
3
+ BW2RhCObexPYPUCVgyB0MJ2AYXXiXHy8xUXg6Cya6RqzPPLsvXcuoV2UgaKKG6HZ
4
+ UBgzE9o9k2upbDPsQzzz2EEQxfkjHqmZNzkw7BbO+g8OF10owo+fFxlVxLh02GQf
5
+ gkYns0rRb8YJcrEH/XdZrIJZkimQ1oX1RhpOvD5M63s8Yrg/WwX3e52W6IYmAzyi
6
+ l6HKSZ1fKzQAYNj63CkUt5gXCxQ5vN9jYq7dPdVXr+YLO4QlC9Yr+R98iWYgcahW
7
+ AISPWHC/9Nd2wQTLWubt9o8g8yaHqyIMcCCobwIDAQABAoIBAQCA7xfWsRyrZQIV
8
+ ZduOWuxtf/zFQHvyWs/j2ihmM13Q1AfDDFJe6Ap5fNffkISY1Z/HBLa9MRMxLChX
9
+ QiLKZhiSJ70dMdDmde505hjD7PBI/5BxkZ6bJKgYZWqSr9dsUh65QT4yjbo2A5rI
10
+ jZr5oRA6xCw+jrdv1X2wutiU6Zdti+N9ouq/7ne6EY8pHh5VQ+bXtMbVrm/ejWV2
11
+ PrsQwLqy1QyuNo9kUN126rlQIOy0s7KTBory3UGCSiZLeRlQPipIAuhQU1o+3B3b
12
+ 91ULwkzRorzqDoWsDOMeK/K76sQ+2HfAQYqjOIo3LcFA+xDxarIludVX4Aot3xkA
13
+ BbieE0IZAoGBAN1eDbwLGG3S7NN+qXuMnNRSN2F9SWuHBuxbNfE+bg2ydah2R6um
14
+ LL/jgzQhMiLMnkRqhgkvTDgWVlH0nH7JK6pt+vdrncygTrNmlLsaa62bm5zEQtzA
15
+ s6IEncKkK5T7JCeICQ1W6L3S971ScHVfb6D4B8IAGzlmsATCvRsJf6UFAoGBAN0H
16
+ f+XU8Qhuj4oJeF7KoA0hVgQoCO+LFCqYddwu7t1HGBhzKue7fs/45AX6gwEOPm3Q
17
+ IfWfktlQpIjSyrBdj8ewUTDd9jX/tGjwTFSpkX+BzT/Vtl9gYMXymylmkfD8F4ll
18
+ h5KdAHzxQuzhnsju9S3Py5x+zCN08ks1h7ACzBHjAoGBALBqlV2IJibYEv8WEXGy
19
+ BQY8o4AhPdLg4EabBilFTKXD1Hq2ELYeD8m5QkXYMsGC+pqhnkJRnFeSjaZw4As2
20
+ vYLsdTabYD3EgBP/K4bVLn1D5scPrg2J0V7MeQG2njjz0MNkaXplCcTGDcOmoJMZ
21
+ xLevE1eriAa97IdOvzB96GkVAoGAe+3ajnlI9FtZbCJHNY8TEomgexAfgoBOvFtj
22
+ qiM+lx9nqT3ZzrjYL6/z2k5N6eecpWHPyLLCWcrXlkfqkdzD40k/HNE3XauT8krZ
23
+ 4ZZ6GC4lcSdY7D1TxWl0ClCSf7Y5VDZzP4d8YJG93qfaqfshyZ/7IDIQL8lAmV7Y
24
+ R54p4dUCgYBeJzyD7SETML67K0VvJn9jLrcE+hZTqaXIMDMVWRp6ekNuFDUaT1/A
25
+ GYV9oPbo4QSg+FydWVuOwYvtf8YTfEt/FFNg2rmSXljHghRS6TbIAkS1kh3Xz6Vl
26
+ YOD0ekf1FqxCO+h3PuaPHpC7uOh6HoB2ppH7jCvb4z4iWATujnYiEg==
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,20 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDPDCCAiSgAwIBAgIKDYpkw43U3AatXzANBgkqhkiG9w0BAQsFADBTMQswCQYD
3
+ VQQGEwJVUzELMAkGA1UECAwCQ0ExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxHzAd
4
+ BgNVBAMMFmNhLnRlc3RpbmcuZmx1ZW50ZC5vcmcwIBcNNzAwMTAxMDAwMDAwWhgP
5
+ MjExODA5MTkwNjA0NTZaMFMxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEWMBQG
6
+ A1UEBwwNTW91bnRhaW4gVmlldzEfMB0GA1UEAwwWY2EudGVzdGluZy5mbHVlbnRk
7
+ Lm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKs8jpSiSUhphToD
8
+ YV+8I27mVBr48Wo+R876RRVLAkdKb934xSYRvsy8QD9k+ZaA2EspchQ7ky3sdztu
9
+ v4x5WqOHE7VE/HkbRcRfBKU9ujFou9l8ruSyLl8jTWoq1BPyVii7+ojcjNsodNF9
10
+ p0tsJOsnLgSA+yt3dI56V+PXsQkIwil5QGWDMCDQ80a1ncIA65uLjLwnWP6+XvgQ
11
+ jA/D2SrlORc18qGYC4J4ZA08VPdPtnzThjSV2UxkgBz+rT3FB97b/IzwImpG3GKI
12
+ YeI1wfZAVEp3sA+kC9ufGKyGTHbMltB3c1E6z93gWpRSEk7TT802ixcYvl9V3L/A
13
+ SbOseMkCAwEAAaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEA
14
+ AGQkwrLOnOyf4EZjfz1Sn6IdiU7zU0jDnl1+pU5xtU4qZRa7MvMsfUPRFk3sLKls
15
+ keVu4DOWjBaC2ivgUt+j8odRqii2UdyltXAAoO2o1MMKoUKRZHYl5RPorzjuKwiP
16
+ q6uxSkt/3c5Z6jAeS5JtDmX4EQgl9IHiV1zmWxV/rYJQ0kKBlsBhFX0CMJpNKJi5
17
+ bxYH9kg7jMAL8Q/10tzWFT45O91UJlxTxEJy2YDiAMwiiOwA51h8ro23I4ag6XGE
18
+ NYEd0C0GclxLgP9YCddHYXQe1ZwfeZIBNPboQurNhWes6igrhuPlJTDC9p8rF65b
19
+ zxWqJGLs6eM+ctNibLCQfg==
20
+ -----END CERTIFICATE-----
@@ -0,0 +1,20 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDPDCCAiSgAwIBAgIKRRRc9wNmgVG33zANBgkqhkiG9w0BAQsFADBTMQswCQYD
3
+ VQQGEwJVUzELMAkGA1UECAwCQ0ExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxHzAd
4
+ BgNVBAMMFmNhLnRlc3RpbmcuZmx1ZW50ZC5vcmcwIBcNNzAwMTAxMDAwMDAwWhgP
5
+ MjExODA5MTkwNjA0NTZaMFMxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEWMBQG
6
+ A1UEBwwNTW91bnRhaW4gVmlldzEfMB0GA1UEAwwWY2EudGVzdGluZy5mbHVlbnRk
7
+ Lm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL8grgYbzUdmVLpJ
8
+ 8vkJct3tAk5UEnntZxFC8cZoPTemmXPEqwVtkYQjm3sT2D1AlYMgdDCdgGF14lx8
9
+ vMVF4Ogsmukaszzy7L13LqFdlIGiihuh2VAYMxPaPZNrqWwz7EM889hBEMX5Ix6p
10
+ mTc5MOwWzvoPDhddKMKPnxcZVcS4dNhkH4JGJ7NK0W/GCXKxB/13WayCWZIpkNaF
11
+ 9UYaTrw+TOt7PGK4P1sF93udluiGJgM8opehykmdXys0AGDY+twpFLeYFwsUObzf
12
+ Y2Ku3T3VV6/mCzuEJQvWK/kffIlmIHGoVgCEj1hwv/TXdsEEy1rm7faPIPMmh6si
13
+ DHAgqG8CAwEAAaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEA
14
+ IDGochw4cgYtK2RKgHQhsZ2aXUBo4qtM3L4HGFluagkDns4oHp0i3lwterYDYmf6
15
+ nqVea3SJtk5XmVuGweOsilwIEmjUNk1kLwnjKyZYR1/vcfhriefGXmAzppRFeYh2
16
+ K1OrmFZXvs8tRtMSt9YBbBeGbDdqpc9O4VkZb+hrysaaZiCE58cMGbxQEkvbyoGx
17
+ EhRhIA+NbnWQ2RRoHXk76iMe2kbe3H5Bj06wJqYI2jH8yxEtDzMA96iVJuuz8l2p
18
+ 1Dv1f+4aFqUHOL0GgFuzwmmSQ6DS6/7WFglL3jeL9TqCSTiyY3PQtrzBI2hCDQpn
19
+ YN6ELSQUASXSVmEQ4V5I3Q==
20
+ -----END CERTIFICATE-----
@@ -0,0 +1,30 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ Proc-Type: 4,ENCRYPTED
3
+ DEK-Info: AES-256-CBC,F639769C79C6B97B06C4FD86B1ABC8B0
4
+
5
+ ++PSSn+v3H7i0DEZbM0Ypa718aw5CfkOleFFPn4FQNSZJckuIWblPQ6RLPdtkmlh
6
+ Kil/opC4y9dLoukze8CH+cGsqfPilT2ePs23t2ejdYu6N+3/aLbd0BIWCp2UtBqh
7
+ OaHu9cbyUCGV95xx404zljc+cgcnzgBPtkhoa3zRdYb1NOOJK9l7WItCugktGfEJ
8
+ MymOsRl2SspF9nni0pwz+VFUIRkCVii8u4sY5aGyasNzefIIuk2ItLIgmO+t9sz+
9
+ o0cfCxQndwrhEWKRTyOaP4tc6vHIToAlikjvf49K5YztNf+aMWQ5+FvwLQk5SxBx
10
+ 8Mba3UHZmFFG5R2pH/EiZKul2eXXFuEfamX7Sa2QoLQHlziev7QHQHNeOrpTIUYg
11
+ gV0vSgpMDqU2mAYFyLWxvmiyJLVozVlJuZWisT+rcgRkSnv4M6ybJCxvWBEkQDvF
12
+ AYh5OqZ8P/POxhDDWFpJCfzIdtUGT6ED/TyKtqbqFocEQYKUlp4EQjDmt0asbcqN
13
+ wcwliPeU5fcgiwZyxK6bIr+AV9emF5acDT7mKeAYZI83OnRzkBg+Pfgw0X0HCMJo
14
+ ZzQy0oYFhxVWe1yEGvyy3XbA2+N1TowzgCk5aMA0RmB30hyeBjZx7wFZFOx9ZzDj
15
+ UdC32L7Y1Tl+preRloQw5aYFbfKII88GiG8OqY9yusM3QHZUptjEXMv+nBfCsGg2
16
+ A1Ki3dbwYer9ML/E8ndFpLjEW9fAoBUW4Qa7tKTF77wkNN58pdgs+tGddAT2wuV5
17
+ F1YRVRENDXwaEoQirU7yn2cJtI1cX/Mx7pbkh7hYSTSekSZlHdRH/OFnitZ34BqA
18
+ yC2Du3ea5djMdCrtKkmpeR8GhHkihSfT8ANdZwA2dw2uSMbqT60Dr1zK78h/P4c7
19
+ scITpS1FB+tDBegZ2T6iFBYpReEXDpvpwVl6UHj7ds51se+752SHaW8Y54AEpkdH
20
+ /EvAEKtBc0zvOWT7BqUcgNfCaDD/4B11twc7weiQlK5i829U9VL+8DaLuGtSOuyM
21
+ A4+wLym9aeQIAMcdetaO3q6Ks66YQRHvuL205cYDik59SPQt6QjN3/fcc9enqsXg
22
+ pbQYduyDGW4po6dBaDsc20Jba61PNtKpU3qL8NhYysPPWlmw4CgZHm6m43NUkYxw
23
+ oWa4CRJuPR6c8XDX5GqPLDkd/dxmTHDIT64u/p2a5JNkT6SCMXHVQhI0DKcR+F7n
24
+ mkEzf/qptbClEL3IdqcFCHXhmFZ9x6Ed6zykgKb3i+qWKcXBRJ+PEQeANS/2HnyV
25
+ wtRN70UaLag9RBq8bFD9Fyh7NBKzlcf3CoqYKxGFnegHvhtwI+X2B9bNxJam/V49
26
+ 2TCHhx3GAtqL8f29PHUATudvdvTQXTsmm5CB5QD/hvwYO1f1DMP9qMQAr7FDz8t9
27
+ 2+sSWL8GyG7PI4aQ8pr7a6q2dXK2AWfXF/avAc1gXzmU8pk/m5j4qLRNA9OIxoec
28
+ rj5FCGkwP/mR9u3eB2AGTPU1OzWwkoQpy2H3kTVdQ7UWqz72pA3v3t+gEqAfw9RB
29
+ Bf/hugMNWXFdy8S0P6mzRq9gcjMrLfDI/0Q2tYXhzoMrBBgsSq3uM0N4WS0dj+ck
30
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpAIBAAKCAQEAyINyAOHXX8VRh8IC+hs+jB78tOqM6dvJt40L1sAjKc78zt+Y
3
+ WJI/DdU7c8Rs+gv0DvVwjEFDXk6O3DsREInmqXUsh6YyC2M4BdLrlUkuKJnTg3FS
4
+ BG5eXNA/eBOME0A94YQAkREEqHREfUZv6T8EwNPz17dtWD+wmezKA4ZtGugAajOK
5
+ 3txRJsGA4GAiAP1JL+yr3yAnI4gqkkekFrs0ChhfRXKMppGaSgBWOFOLtoUzWmXP
6
+ mI5etpyIUGpp7l7YLlc/HiwI7bwtVcpEDUqGj+iBrfAbsg8yrsNY5VDJXrABX2kB
7
+ 7rHuRga5FfZQZFzP1XiDAINdnI8zZ8/x6peAkwIDAQABAoIBAQDBa+LmLPUoglwi
8
+ fCmJAAz299FH59YkpQrRz/JypweEhhHisVfxYKoIewANrZZ+Ile8slBuS2pkJ52x
9
+ nhzY+l2Sa+CXvd8akwxwucTdTimDqteZPRAkDB9kotIGz7xYuai3yTEOvv7iTL3g
10
+ pri/pDW+mPboyR1mepGt+ffpLJxEzYAW6IbX7BYsDLVZgyluj0JguAZG+6IGATwm
11
+ AsvxWu32UclJIPvkZMmlmTiAXozqy4giZMkjujGq04srz6bk3vtfcnKqt7uTd/3J
12
+ 4RETTUTpTKfXmdiFeWacb8dJ9qpmq3fBsl6+AhuzIE7Uwfpf8s2ip0J7JnaMqldH
13
+ Cgs85xaJAoGBAO7v4+PbXkmMZZSyyKVMpj+KHnG0S0LqnuaxPGAHJhH3VUBFyQ99
14
+ UCZdn2CiR1m57LA5ZqI6RtpqN/iSCnyr6SBod03ngZQ8vqdlSleUYKzOn906yDNA
15
+ rO08vTSi4dgypgIE96TyPN0E6j0yIF+pz5xXr4HUPS61WAZ+VbziVRr3AoGBANbV
16
+ HeXypaL7h4JEzxwxGo5NdTV8dL8Gncy0KynNyLvHrc+EYGOG3ggKk2X/4xKBUUyr
17
+ KcVXPG+dKV8HGlnWqS1F6fnqQXxV+jfEGTPPM3npQNSavHPDAh0OpEOq9guY3yYd
18
+ FvEqNlXE/hr7sAJJizbtbZBud1QA34F9mYINZ6RFAoGARVysakwXXgB8yKLx7lKG
19
+ /HELD3UIWB+mC1AuN647lgGX5PWdPXriVpDdIH9beSepFytCqRuD0An/v5AdrT12
20
+ iqro31uyWScdLZkQ8MWpHuFItT9IOOCwkpoMTwhtyYZCfNmWTnLnyj2QBj3T+hFg
21
+ rIEj+Ot062dHa3MnTpLho9cCgYEAkBldN5s9fQgISdnLrhZFwMO15c14JZXTjLYg
22
+ 6aZtiX8TV8lsOfYBwhUN73HnJsd0998rYoH0OM2LLYF/LFlvGr31hjuZ90NYVcWE
23
+ PhsyZQiPAsxTsbZRGZpzliv7Y6YDr/X9KIBu97Lt2r2NvssDxTEWt7VQ9xiq0pmj
24
+ uPcy2J0CgYBNuetHnG0NBFHtidyjV/kvvJ2E5vt9dBxcC4dBssi6XWyiuO/KlRIM
25
+ T0tBXHS4PlkyO4O/KTugEZmLiGvVowCGx1CjhU0rTKwZNSAfyFRrngQvkHCqAaoK
26
+ CM7zlXxnRedmLKD83vNlP1jnpnuLPSJNZrQy1Avy5xKSmiO1NYvm0Q==
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,21 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDczCCAlugAwIBAgILALvoPZFcaSh8StIwDQYJKoZIhvcNAQELBQAwUzELMAkG
3
+ A1UEBhMCVVMxCzAJBgNVBAgMAkNBMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MR8w
4
+ HQYDVQQDDBZjYS50ZXN0aW5nLmZsdWVudGQub3JnMCAXDTcwMDEwMTAwMDAwMFoY
5
+ DzIxMTgwOTE5MDYwNDU2WjBXMQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExFjAU
6
+ BgNVBAcMDU1vdW50YWluIFZpZXcxIzAhBgNVBAMMGnNlcnZlci50ZXN0aW5nLmZs
7
+ dWVudGQub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5LPQ9WhJ
8
+ LE91y+ttRTgBhkDZo8lRBtxX5NDMR5dak2WCKwsM5ZtN5LaYNNbG73i7HOSu3zvu
9
+ NOUEop7q5ci0tcx8jw9DidwOYjqsC7IvcwCFzc4JuQuVZgofVUf8Ia0LWPtOMBqM
10
+ /LlXW0s+am9am0oNaOYV6VLTXr+2YzYhSoQEVu+FeoWN2wKfPuI01+6tWRwIDnbU
11
+ avRVDeFaHlSJVHaeNavMX7x+tWHpOy3JU0J5u29G7eplLXv8s8cI3p+CY9UpODFw
12
+ J9Ii7/SH4yR8iaOPhZPE/clf7AWioPOstctnPh2E+x6oM2Rkzp8HNX1s0gBpispW
13
+ ft+DJoEB28JCsQIDAQABo0IwQDAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIG
14
+ QDALBgNVHQ8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDQYJKoZIhvcNAQEL
15
+ BQADggEBAAAKJcp/ZBYyClafm4JXGaiolgH9z8BfOktSxOCWmJrfKbflkPOu2UqZ
16
+ UKJAUtDJVWU+U+oUDfnMpq0/iBm1HioxXfV8lSXKP380o7wQuar8G2jSjbGPWCxr
17
+ v0PMx3buD0saS2A5sDgH+V5gMIPP/ZiuEu3Mro0+mHRj194vs/1Iedfd5Khg0o15
18
+ Hs15qcqY16E2TvuirONBwwMu+Zuemnu0NbwxyRx0VoHCDTJ4JMhVTGNLa/xWvwD4
19
+ YoqYnWm3DIVr1hmWivCUD6p+wU6aywGMu8uGBA7pZtP748l/tsMOzOhYNE0h514F
20
+ FxFbU/Iyvo2KW60v9HnaJsCk1LjXIHU=
21
+ -----END CERTIFICATE-----
@@ -0,0 +1,21 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDcjCCAlqgAwIBAgIKUV9t8OkUnCm2mDANBgkqhkiG9w0BAQsFADBTMQswCQYD
3
+ VQQGEwJVUzELMAkGA1UECAwCQ0ExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxHzAd
4
+ BgNVBAMMFmNhLnRlc3RpbmcuZmx1ZW50ZC5vcmcwIBcNNzAwMTAxMDAwMDAwWhgP
5
+ MjExODA5MTkwNjA0NTZaMFcxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEWMBQG
6
+ A1UEBwwNTW91bnRhaW4gVmlldzEjMCEGA1UEAwwac2VydmVyLnRlc3RpbmcuZmx1
7
+ ZW50ZC5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIg3IA4ddf
8
+ xVGHwgL6Gz6MHvy06ozp28m3jQvWwCMpzvzO35hYkj8N1TtzxGz6C/QO9XCMQUNe
9
+ To7cOxEQieapdSyHpjILYzgF0uuVSS4omdODcVIEbl5c0D94E4wTQD3hhACREQSo
10
+ dER9Rm/pPwTA0/PXt21YP7CZ7MoDhm0a6ABqM4re3FEmwYDgYCIA/Ukv7KvfICcj
11
+ iCqSR6QWuzQKGF9FcoymkZpKAFY4U4u2hTNaZc+Yjl62nIhQamnuXtguVz8eLAjt
12
+ vC1VykQNSoaP6IGt8BuyDzKuw1jlUMlesAFfaQHuse5GBrkV9lBkXM/VeIMAg12c
13
+ jzNnz/Hql4CTAgMBAAGjQjBAMAkGA1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgZA
14
+ MAsGA1UdDwQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATANBgkqhkiG9w0BAQsF
15
+ AAOCAQEAnLqulP1n8fggiY5e6WukL8MmBitpalxLkzRRL7xBihQJzsiNjpA/Lt95
16
+ Syabg73nDOTl98wCQJw/PWmZjDCgKf2c1UA+L9fSkLxQf5gLTMnVz6g6tB5m2LdA
17
+ QAG+B2uucye4e/uFxJ1wkXDC508ipi0NzgG1/tO8ZX0SzeMxV2nH4jjn1X3jOHcM
18
+ xvB32+sZdYCk8tmZ4s3cSKLKjoP8YaTiII7MjmYNTGuuUE4QL5Q1t8u1NcGvLIc/
19
+ yfjHjvifA2aoyS20H06wOxUMtqP0n5yRYv7aLSqX7ZG9Srrnraaa1lSrv9mNR6GR
20
+ i4v43IXfyTa69dx2otUQpF2/NkUBNQ==
21
+ -----END CERTIFICATE-----
@@ -0,0 +1,30 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ Proc-Type: 4,ENCRYPTED
3
+ DEK-Info: AES-256-CBC,FDFF12531E3F46EA8FB2AF34CF90DAB0
4
+
5
+ wZAwCeW2uOYVFeZPKR9x1og5wXZl2HJiLTyG5wK5P+6naKMhr2sKtyB3QWpVUnTL
6
+ TPkqn3J8C0sWDNByI6nG4xtceFi9HMoBzwfhtmThnFE1BDqCaDktkg7SCc43/w6y
7
+ pw0GpJzgldGiMV1HSpFNAP/yUqV1Ybbro7wk7kRahT5ryKNqeWWgr9DvQ+O61dKK
8
+ jChFmDZgbokAFYl8SicAcUt8KIZp0UonLYe8neXki/gVip10+M9pphdntO7r68hJ
9
+ lDwuHoos9YNkfsaTW3Ef6e+nbnw6FwY+Yms/g/2ItkuhO+6zohhLniynB3kOsBnb
10
+ 9BxtY9EdkNbFijPZpAMOLprfmuVT/MpoHxGeCdIvS2iaOKPMzDWGD6QvFd+0cyoP
11
+ Dl8imzFf36FzBexdj3/0Luq/O4blxfaiUpWUTMFUxhwMI/FP60wANpBFMCLOkKZw
12
+ uJCmypJ3Bq4Ay72KGOp0/SuTn6gthkR7e1zqjOrncc4feEIWNN3GvGkJX/0hF9/h
13
+ ValvPboYB0C3Um3vP1lcva6HNTbnBROfHlpXs2PwuKNkHhifynY3cnU9qSR2LXEK
14
+ 4atBC3aJlcsZrAxYKLUhI/rCvZ2buLPqsELUNcauP1SR6OJtSG2QokAd8Tt+070D
15
+ WDPNhIP+06AaKhQI9r+eiKY12SZboxns+Fg8/0VTBxiX9OzOTz+4z5WHX7epPOKj
16
+ ITvI3lq577RHQvvc9BPTfWYvLv5GU00UQbbJ4BalUlV7j9EDpp+jyExtFMnucd/K
17
+ f8/WFchPbL/yqOf8T7BCTywk+nGho6pPNkMoja/ACtVau07MjizRT1MhrX2CMNuP
18
+ O/8BsjTDYRCtuM4bqe5hvOmyfZ4i2yx9CiAFc8iWQM3dVEchz5azaxKjX2YlSmNr
19
+ Ch4zbyBq7H0rHjLqSezgQivkLVDHhIe5Nt/lj5sF/QUT12sD2WJIt7rAk+Fb8qZX
20
+ cjSnirLC0qNhsLwLrS425r1vJgHB9VDQPlL5NJQW4kMmoNXv4+vHYVkxU7hxzw21
21
+ rFgOWoBXVRK1vO5nE95gX3zgF1F2JxmWjBTrAxG9fE7zbrcz2Bokz0jbUn+6UEyA
22
+ 79aYnuPBZL2DbHE7fsVZL19sb4LUVA+HtVzCEQDrnCR1ew0TXG9LLtVYzP/XiAgd
23
+ PaHrlYoyA/46+ho8bGckj37hFALulOP0a/RlJ1s7Axnl4R8GsK7IBA4igGaPyEET
24
+ r4IK1skY3xjCtiEDI/inuIr51hnqUoVhTqmA5YCT3qG3CoJ/glaaUL9d0/Er2IWp
25
+ nBcOIBEuE5gxwgNQPKXSV0VG1Pkp8nWpVkG1hk4uwQL0w/pLiouQk86Sz9VxBDlp
26
+ Llw+Y9gAdrSswZNRItOfUp7QZle48cbTnxhApGaAFKDjXDyXu2xEQsD+GXqsVrqE
27
+ 1ouiKcE5AIV6aZ7GiBm9Js8C5/sIQHqa900/R2H+avv6QYaQNrvE+ihQRRSQ5+79
28
+ 2EZWJhGLe5jfylVNjKGIZSN12GC7hSTbze0Lmr3W3FZnOOCm95XPuuZVaKVjXCW6
29
+ G37029JZjeoLjouMYFTxgyN/v5TlsuhPRzoFrODqanL/w8sXFPijSJaYW7R0sVJu
30
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEowIBAAKCAQEAv99VXFkMqdT//4p0lXTIlA68tP3kTTAmYemyi3nX2K5I03ML
3
+ O9OXpU6rNP/JA39fh2bk89la8l1jlDRzUO+dKxYZnyZ0BnYCeTsSM5JnJ96S97cV
4
+ EZRRqdtpArjKpaIL3dnnSk0j+67e+lxj/YbKizcErvvjRnvK0P7F5JtbusUQMQgL
5
+ UG1PwMviiNkrP40DiKOYjEaSYVSH9VtBgDX0x1oLjLBZUS7HD7lvO0cSIlcHns0N
6
+ NyxlribDPW0VKg4wbEa1qZpVFlxSHudfi/ZUKlAm8Ib7jN4dzpA9pMrhFBl/vStn
7
+ WpczYYg3ncHhMo6EOxyByyV+iEv9tR4ynbOu5QIDAQABAoIBAHPAly2kJ0iZ0Gro
8
+ q1ay4oK3tU53UPDkGHO/WdBdDEOTOSofYGqSRw0aPZ02pp0ujYIRKBSYTw6iGn4B
9
+ eoQcWjPxHDnwJ9TyAqICagOk0giydPVuhQ5a7T1MubhDpTVxYjlPyQIBMbEXmTtu
10
+ 23/Kfoyn/3JVUZJnAj89REObGia8yP7Iz1BtPIN34NvXVUcyt+DbqBWksFDcUAC7
11
+ B+yKHg9gbpQNlM8s4it1vWmmQNif/DBoV8/bUrCqh7G3mTPGr6vuovFR+m0PxZa2
12
+ nWn4V+I3/O0LxpKstOyg13YEaaw6U6IBZ2881hNPaDuZ+QPIBaM8fTWZCGjIMAeH
13
+ 25uN1GECgYEA9xMrAodz3EG4E9tNza+gEF6pGFALYlaK7xsrlfY0b5V1Yab7NAjG
14
+ XH4DBZ7V8KN86xFOZ36KlVw/3WgXW3Akw0LHkYPLtxKvArTxn6/gEUS0UiLS1mEi
15
+ tZO3ackRr9ZB/Z+SuwXpgS0ogtFIi7XVRNOGFfBarSENplsFTRGLEV0CgYEAxs2t
16
+ zi9sh+GmQW3CKYUFlH8bj/erYRy5ulV+sUxP94UUhTGz+XzlUn/k4lIu0vzRFIcY
17
+ Ed74KPzpDTZd1Sh8N5Cgq1ag83oYlTrpY1Dj3iShVYMnMCSYSHzNZGmTztnAiTq7
18
+ wGfKcV63hb7HMpoODcdqfgx3a601O3C1YDZ0EykCgYAzHwwvIcefMxnbQez/Oe9s
19
+ c6mZFjbEyhNFFeIWzTJcRBhddCdVxNsGGCyX5R1vBOS73oDSeSRDcyrjrL3odXOl
20
+ 0xNn0FU+M+dyL+4ulD1QVV7Z/8qQANklqMKyaJ/4OeS9jV7Ww4pk5+sR5iuUfLL7
21
+ 4qhDsc+RMt2YJg0avR6BIQKBgGj6jXAWbNooFvHv8pqYKsUqhbR1VWNXlt/Fa7xW
22
+ Dtgmxxo6j84L3NC+xm+YdC9n30RWvigZtLN4MdyPO+dmlImG7sDrYtyPOdH7pOiT
23
+ +2//qc4NDrGGcX+9n3wJoEqXg+szP5evdyB8oq6WenvHC+rMxfg/vwP2F+kGcFCZ
24
+ EJxZAoGBANiBa2CNHvK2E6Lqx5fRe//G9dvpjszQWIIWeFJ3uyEuQQ/mZu9S7Vmj
25
+ bhyeH2Z9r9D9MLZDVoclXOzvPvT8KhguLwnb1zJUoGmWIjkTQv7LAhWal12fDfRg
26
+ n4FhPKjvcRLMIf+IKYQ3ZDysJGUsGaduTBR5QjyZYxV1QZLNYMqp
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,20 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDVDCCAjygAwIBAgIKWcJH+2qScaQGFTANBgkqhkiG9w0BAQsFADBXMQswCQYD
3
+ VQQGEwJVUzELMAkGA1UECAwCQ0ExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxIzAh
4
+ BgNVBAMMGnNlcnZlci50ZXN0aW5nLmZsdWVudGQub3JnMCAXDTcwMDEwMTAwMDAw
5
+ MFoYDzIxMTgwOTE5MDYwNDU2WjBXMQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0Ex
6
+ FjAUBgNVBAcMDU1vdW50YWluIFZpZXcxIzAhBgNVBAMMGnNlcnZlci50ZXN0aW5n
7
+ LmZsdWVudGQub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAouXb
8
+ cQ3Ij+n8H4MyOk1CBOh8B7cblXsmyHtDnYstzFO6ouoYssZ8WbJmWetqA1z3Lcr9
9
+ 0Ft8gFIYkBywb4V1hFcJ/G4feIcAvVrjL22/jqqLA8dlXLCqCywo7yHffEzBAn59
10
+ vckYL69WZEJWP0bGz+0My82pU5r5rKgzhhuQKzdlypVSaKVvpYF9LMfLj/aiCPRM
11
+ hg+jwhVX0z2xYpu47IId/gmM2K81m+s/OSDBijuph6RxwoONkM3s40+HNLGxAaDz
12
+ 3XJenkcy4Zl+74n3yGxLYFoTUTapT1gd0/3uaA7Q+8rMc5aMKJtcksB/fAsz6v8B
13
+ Wdu1yyPtAmbAwA44FwIDAQABoyAwHjAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQE
14
+ AwIGQDANBgkqhkiG9w0BAQsFAAOCAQEAMyGTHFu4DRNx6HQMjcYEaNAFRYVjVkRV
15
+ 43hoTO5lBUNbe2RxwcRzIFW40PW3BQnO7xrMcgcy8X1sukTRV4iHR/RO1OSrOmI/
16
+ Dp1goB/XAhHHi6Q250M4HtuiBsfSCxk8ASNnXESYitT01Y9+WNIT5Ir65+3L8f2f
17
+ OygQ/QXv3PlK+HtbZJMsYfmFn45d8iXSuIZzjAIJ+GzB1chgslfqcPtWIzwyi3py
18
+ NLN5o7bnzhWzViq2g4MCh4nBJIPFRsCh7wzBy97KiU7Ex9L9WSRwTUbeRLx6K7YI
19
+ 4MV5v1pz3RbPbD4AS7QgIsBRlW0udWvc1zzNzHGEMGjMGz5K/UEsQQ==
20
+ -----END CERTIFICATE-----
@@ -0,0 +1,20 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDVTCCAj2gAwIBAgILALCfeVLdPoGOQEcwDQYJKoZIhvcNAQELBQAwVzELMAkG
3
+ A1UEBhMCVVMxCzAJBgNVBAgMAkNBMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MSMw
4
+ IQYDVQQDDBpzZXJ2ZXIudGVzdGluZy5mbHVlbnRkLm9yZzAgFw03MDAxMDEwMDAw
5
+ MDBaGA8yMTE4MDkxOTA2MDQ1NlowVzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNB
6
+ MRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MSMwIQYDVQQDDBpzZXJ2ZXIudGVzdGlu
7
+ Zy5mbHVlbnRkLm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL/f
8
+ VVxZDKnU//+KdJV0yJQOvLT95E0wJmHpsot519iuSNNzCzvTl6VOqzT/yQN/X4dm
9
+ 5PPZWvJdY5Q0c1DvnSsWGZ8mdAZ2Ank7EjOSZyfekve3FRGUUanbaQK4yqWiC93Z
10
+ 50pNI/uu3vpcY/2Gyos3BK7740Z7ytD+xeSbW7rFEDEIC1BtT8DL4ojZKz+NA4ij
11
+ mIxGkmFUh/VbQYA19MdaC4ywWVEuxw+5bztHEiJXB57NDTcsZa4mwz1tFSoOMGxG
12
+ tamaVRZcUh7nX4v2VCpQJvCG+4zeHc6QPaTK4RQZf70rZ1qXM2GIN53B4TKOhDsc
13
+ gcslfohL/bUeMp2zruUCAwEAAaMgMB4wCQYDVR0TBAIwADARBglghkgBhvhCAQEE
14
+ BAMCBkAwDQYJKoZIhvcNAQELBQADggEBAJ5U5HGK2lmK6NKQGw63tbBqQ38tSCix
15
+ a3OwOQ9M4KeVGgAiG6fgESgv0AAN37pzoNRQ1soPOIazovdsbKUcec/cbMQoODuO
16
+ g9KqueecB0BkSgIQXJWtoFWn1m9I/11VnbCbv1fYsui5fKANL9V6QUa052oNu1X+
17
+ 8I6FQpgzcY3sGw8jiu1sQYBg6wIQJfl4bf6wQBqVhUeaSeY++1F1SNuB0k6H2DgA
18
+ OgGULEvcIb0dvSh/luOpIHoUsyv77aKWnC3LSwUD/M8/Lv43bcJKfDT2KjLeW8DX
19
+ lCMESmm0ppShIa/fobNxq2Ale6oFxHma2t7pG8ZxCxn5ojiFQ3R6Lz0=
20
+ -----END CERTIFICATE-----
@@ -0,0 +1,65 @@
1
+ require_relative '../../helper'
2
+ require 'flexmock/test_unit'
3
+
4
+ begin
5
+ require 'fluent/plugin_helper/http_server/app'
6
+ skip = false
7
+ rescue LoadError => _
8
+ skip = true
9
+ end
10
+
11
+ unless skip
12
+ class HttpHelperAppTest < Test::Unit::TestCase
13
+ NULL_LOGGER = Logger.new(nil)
14
+
15
+ class DummyRounter
16
+ def initialize(table = {})
17
+ @table = table
18
+ end
19
+
20
+ def route!(method, path, _req)
21
+ r = @table.fetch(method).fetch(path)
22
+ [200, {}, r]
23
+ end
24
+ end
25
+
26
+ sub_test_case '#call' do
27
+ data(
28
+ 'GET request' => 'GET',
29
+ 'POST request' => 'POST',
30
+ 'DELETE request' => 'DELETE',
31
+ 'PUT request' => 'PUT',
32
+ 'PATCH request' => 'PATCH',
33
+ 'OPTION request' => 'OPTIONS',
34
+ 'CONNECT request' => 'CONNECT',
35
+ 'TRACE request' => 'TRACE',
36
+ )
37
+ test 'dispatch correct path' do |method|
38
+ r = DummyRounter.new(method.downcase.to_sym => { '/path/' => 'hi' })
39
+ app = Fluent::PluginHelper::HttpServer::App.new(r, NULL_LOGGER)
40
+ m = flexmock('request', method: method, path: '/path/')
41
+ r = app.call(m)
42
+ assert_equal(r.body.read, 'hi')
43
+ assert_equal(r.status, 200)
44
+ end
45
+
46
+ test 'dispatch correct path for head' do |method|
47
+ r = DummyRounter.new(head: { '/path/' => 'hi' })
48
+ app = Fluent::PluginHelper::HttpServer::App.new(r, NULL_LOGGER)
49
+ m = flexmock('request', method: method, path: '/path')
50
+ r = app.call(m)
51
+ assert_equal(r.body.read, '')
52
+ assert_equal(r.status, 200)
53
+ end
54
+
55
+ test 'if path does not end with `/`' do |method|
56
+ r = DummyRounter.new(head: { '/path/' => 'hi' })
57
+ app = Fluent::PluginHelper::HttpServer::App.new(r, NULL_LOGGER)
58
+ m = flexmock('request', method: method, path: '/path')
59
+ r = app.call(m)
60
+ assert_equal(r.body.read, '')
61
+ assert_equal(r.status, 200)
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,32 @@
1
+ require_relative '../../helper'
2
+ require 'flexmock/test_unit'
3
+
4
+ begin
5
+ require 'fluent/plugin_helper/http_server/router'
6
+ skip = false
7
+ rescue LoadError => _
8
+ skip = true
9
+ end
10
+
11
+ unless skip
12
+ class HttpHelperRouterTest < Test::Unit::TestCase
13
+ sub_test_case '#mount' do
14
+ test 'mount with method and path' do
15
+ router = Fluent::PluginHelper::HttpServer::Router.new
16
+ router.mount(:get, '/path/', ->(req) { req })
17
+ assert_equal(router.route!(:get, '/path/', 'request'), 'request')
18
+ end
19
+
20
+ test 'use default app if path is not found' do
21
+ router = Fluent::PluginHelper::HttpServer::Router.new
22
+ req = flexmock('request', path: 'path/')
23
+ assert_equal(router.route!(:get, '/path/', req), [404, { 'Content-Type' => 'text/plain' }, "404 Not Found\n"])
24
+ end
25
+
26
+ test 'default app is configurable' do
27
+ router = Fluent::PluginHelper::HttpServer::Router.new(->(req) { req })
28
+ assert_equal(router.route!(:get, '/path/', 'hello'), 'hello')
29
+ end
30
+ end
31
+ end
32
+ end