fluentd 0.14.4-x86-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of fluentd might be problematic. Click here for more details.

Files changed (328) hide show
  1. checksums.yaml +7 -0
  2. data/.github/ISSUE_TEMPLATE.md +6 -0
  3. data/.gitignore +26 -0
  4. data/.travis.yml +45 -0
  5. data/AUTHORS +2 -0
  6. data/CONTRIBUTING.md +35 -0
  7. data/COPYING +14 -0
  8. data/ChangeLog +276 -0
  9. data/Gemfile +9 -0
  10. data/README.md +51 -0
  11. data/Rakefile +53 -0
  12. data/Vagrantfile +17 -0
  13. data/appveyor.yml +41 -0
  14. data/bin/fluent-debug +5 -0
  15. data/example/copy_roundrobin.conf +39 -0
  16. data/example/filter_stdout.conf +22 -0
  17. data/example/in_forward.conf +11 -0
  18. data/example/in_http.conf +14 -0
  19. data/example/in_out_forward.conf +17 -0
  20. data/example/in_syslog.conf +15 -0
  21. data/example/in_tail.conf +14 -0
  22. data/example/in_tcp.conf +13 -0
  23. data/example/in_udp.conf +13 -0
  24. data/example/multi_filters.conf +61 -0
  25. data/example/out_buffered_null.conf +32 -0
  26. data/example/out_copy.conf +20 -0
  27. data/example/out_file.conf +13 -0
  28. data/example/out_forward.conf +35 -0
  29. data/example/out_forward_buf_file.conf +23 -0
  30. data/example/v0_12_filter.conf +78 -0
  31. data/example/v1_literal_example.conf +36 -0
  32. data/fluent.conf +139 -0
  33. data/fluentd.gemspec +51 -0
  34. data/lib/fluent/agent.rb +194 -0
  35. data/lib/fluent/command/bundler_injection.rb +45 -0
  36. data/lib/fluent/command/cat.rb +319 -0
  37. data/lib/fluent/command/debug.rb +102 -0
  38. data/lib/fluent/command/fluentd.rb +273 -0
  39. data/lib/fluent/compat/call_super_mixin.rb +67 -0
  40. data/lib/fluent/compat/exec_util.rb +129 -0
  41. data/lib/fluent/compat/file_util.rb +54 -0
  42. data/lib/fluent/compat/filter.rb +68 -0
  43. data/lib/fluent/compat/formatter.rb +111 -0
  44. data/lib/fluent/compat/formatter_utils.rb +85 -0
  45. data/lib/fluent/compat/handle_tag_and_time_mixin.rb +62 -0
  46. data/lib/fluent/compat/handle_tag_name_mixin.rb +53 -0
  47. data/lib/fluent/compat/input.rb +49 -0
  48. data/lib/fluent/compat/output.rb +677 -0
  49. data/lib/fluent/compat/output_chain.rb +60 -0
  50. data/lib/fluent/compat/parser.rb +180 -0
  51. data/lib/fluent/compat/parser_utils.rb +40 -0
  52. data/lib/fluent/compat/propagate_default.rb +62 -0
  53. data/lib/fluent/compat/record_filter_mixin.rb +34 -0
  54. data/lib/fluent/compat/set_tag_key_mixin.rb +50 -0
  55. data/lib/fluent/compat/set_time_key_mixin.rb +69 -0
  56. data/lib/fluent/compat/socket_util.rb +165 -0
  57. data/lib/fluent/compat/string_util.rb +34 -0
  58. data/lib/fluent/compat/structured_format_mixin.rb +26 -0
  59. data/lib/fluent/compat/type_converter.rb +90 -0
  60. data/lib/fluent/config.rb +56 -0
  61. data/lib/fluent/config/basic_parser.rb +123 -0
  62. data/lib/fluent/config/configure_proxy.rb +366 -0
  63. data/lib/fluent/config/dsl.rb +149 -0
  64. data/lib/fluent/config/element.rb +218 -0
  65. data/lib/fluent/config/error.rb +26 -0
  66. data/lib/fluent/config/literal_parser.rb +251 -0
  67. data/lib/fluent/config/parser.rb +107 -0
  68. data/lib/fluent/config/section.rb +212 -0
  69. data/lib/fluent/config/types.rb +136 -0
  70. data/lib/fluent/config/v1_parser.rb +190 -0
  71. data/lib/fluent/configurable.rb +176 -0
  72. data/lib/fluent/daemon.rb +15 -0
  73. data/lib/fluent/engine.rb +220 -0
  74. data/lib/fluent/env.rb +27 -0
  75. data/lib/fluent/event.rb +287 -0
  76. data/lib/fluent/event_router.rb +259 -0
  77. data/lib/fluent/filter.rb +21 -0
  78. data/lib/fluent/formatter.rb +23 -0
  79. data/lib/fluent/input.rb +21 -0
  80. data/lib/fluent/label.rb +38 -0
  81. data/lib/fluent/load.rb +36 -0
  82. data/lib/fluent/log.rb +445 -0
  83. data/lib/fluent/match.rb +141 -0
  84. data/lib/fluent/mixin.rb +31 -0
  85. data/lib/fluent/msgpack_factory.rb +62 -0
  86. data/lib/fluent/output.rb +26 -0
  87. data/lib/fluent/output_chain.rb +23 -0
  88. data/lib/fluent/parser.rb +23 -0
  89. data/lib/fluent/plugin.rb +161 -0
  90. data/lib/fluent/plugin/bare_output.rb +63 -0
  91. data/lib/fluent/plugin/base.rb +130 -0
  92. data/lib/fluent/plugin/buf_file.rb +154 -0
  93. data/lib/fluent/plugin/buf_memory.rb +34 -0
  94. data/lib/fluent/plugin/buffer.rb +603 -0
  95. data/lib/fluent/plugin/buffer/chunk.rb +160 -0
  96. data/lib/fluent/plugin/buffer/file_chunk.rb +323 -0
  97. data/lib/fluent/plugin/buffer/memory_chunk.rb +90 -0
  98. data/lib/fluent/plugin/exec_util.rb +22 -0
  99. data/lib/fluent/plugin/file_util.rb +22 -0
  100. data/lib/fluent/plugin/file_wrapper.rb +120 -0
  101. data/lib/fluent/plugin/filter.rb +93 -0
  102. data/lib/fluent/plugin/filter_grep.rb +75 -0
  103. data/lib/fluent/plugin/filter_record_transformer.rb +342 -0
  104. data/lib/fluent/plugin/filter_stdout.rb +53 -0
  105. data/lib/fluent/plugin/formatter.rb +45 -0
  106. data/lib/fluent/plugin/formatter_csv.rb +47 -0
  107. data/lib/fluent/plugin/formatter_hash.rb +29 -0
  108. data/lib/fluent/plugin/formatter_json.rb +44 -0
  109. data/lib/fluent/plugin/formatter_ltsv.rb +41 -0
  110. data/lib/fluent/plugin/formatter_msgpack.rb +29 -0
  111. data/lib/fluent/plugin/formatter_out_file.rb +78 -0
  112. data/lib/fluent/plugin/formatter_single_value.rb +34 -0
  113. data/lib/fluent/plugin/formatter_stdout.rb +74 -0
  114. data/lib/fluent/plugin/in_debug_agent.rb +64 -0
  115. data/lib/fluent/plugin/in_dummy.rb +135 -0
  116. data/lib/fluent/plugin/in_exec.rb +149 -0
  117. data/lib/fluent/plugin/in_forward.rb +366 -0
  118. data/lib/fluent/plugin/in_gc_stat.rb +52 -0
  119. data/lib/fluent/plugin/in_http.rb +422 -0
  120. data/lib/fluent/plugin/in_monitor_agent.rb +401 -0
  121. data/lib/fluent/plugin/in_object_space.rb +90 -0
  122. data/lib/fluent/plugin/in_syslog.rb +204 -0
  123. data/lib/fluent/plugin/in_tail.rb +838 -0
  124. data/lib/fluent/plugin/in_tcp.rb +41 -0
  125. data/lib/fluent/plugin/in_udp.rb +37 -0
  126. data/lib/fluent/plugin/in_unix.rb +201 -0
  127. data/lib/fluent/plugin/input.rb +33 -0
  128. data/lib/fluent/plugin/multi_output.rb +95 -0
  129. data/lib/fluent/plugin/out_buffered_null.rb +59 -0
  130. data/lib/fluent/plugin/out_buffered_stdout.rb +70 -0
  131. data/lib/fluent/plugin/out_copy.rb +42 -0
  132. data/lib/fluent/plugin/out_exec.rb +114 -0
  133. data/lib/fluent/plugin/out_exec_filter.rb +393 -0
  134. data/lib/fluent/plugin/out_file.rb +167 -0
  135. data/lib/fluent/plugin/out_forward.rb +646 -0
  136. data/lib/fluent/plugin/out_null.rb +27 -0
  137. data/lib/fluent/plugin/out_relabel.rb +28 -0
  138. data/lib/fluent/plugin/out_roundrobin.rb +80 -0
  139. data/lib/fluent/plugin/out_stdout.rb +48 -0
  140. data/lib/fluent/plugin/out_stream.rb +130 -0
  141. data/lib/fluent/plugin/output.rb +1020 -0
  142. data/lib/fluent/plugin/owned_by_mixin.rb +42 -0
  143. data/lib/fluent/plugin/parser.rb +175 -0
  144. data/lib/fluent/plugin/parser_apache.rb +28 -0
  145. data/lib/fluent/plugin/parser_apache2.rb +84 -0
  146. data/lib/fluent/plugin/parser_apache_error.rb +26 -0
  147. data/lib/fluent/plugin/parser_csv.rb +33 -0
  148. data/lib/fluent/plugin/parser_json.rb +79 -0
  149. data/lib/fluent/plugin/parser_ltsv.rb +50 -0
  150. data/lib/fluent/plugin/parser_multiline.rb +104 -0
  151. data/lib/fluent/plugin/parser_nginx.rb +28 -0
  152. data/lib/fluent/plugin/parser_none.rb +36 -0
  153. data/lib/fluent/plugin/parser_regexp.rb +73 -0
  154. data/lib/fluent/plugin/parser_syslog.rb +82 -0
  155. data/lib/fluent/plugin/parser_tsv.rb +37 -0
  156. data/lib/fluent/plugin/socket_util.rb +22 -0
  157. data/lib/fluent/plugin/storage.rb +84 -0
  158. data/lib/fluent/plugin/storage_local.rb +132 -0
  159. data/lib/fluent/plugin/string_util.rb +22 -0
  160. data/lib/fluent/plugin_helper.rb +42 -0
  161. data/lib/fluent/plugin_helper/child_process.rb +298 -0
  162. data/lib/fluent/plugin_helper/compat_parameters.rb +224 -0
  163. data/lib/fluent/plugin_helper/event_emitter.rb +80 -0
  164. data/lib/fluent/plugin_helper/event_loop.rb +118 -0
  165. data/lib/fluent/plugin_helper/formatter.rb +149 -0
  166. data/lib/fluent/plugin_helper/inject.rb +125 -0
  167. data/lib/fluent/plugin_helper/parser.rb +147 -0
  168. data/lib/fluent/plugin_helper/retry_state.rb +177 -0
  169. data/lib/fluent/plugin_helper/storage.rb +331 -0
  170. data/lib/fluent/plugin_helper/thread.rb +147 -0
  171. data/lib/fluent/plugin_helper/timer.rb +90 -0
  172. data/lib/fluent/plugin_id.rb +63 -0
  173. data/lib/fluent/process.rb +504 -0
  174. data/lib/fluent/registry.rb +99 -0
  175. data/lib/fluent/root_agent.rb +314 -0
  176. data/lib/fluent/rpc.rb +94 -0
  177. data/lib/fluent/supervisor.rb +680 -0
  178. data/lib/fluent/system_config.rb +122 -0
  179. data/lib/fluent/test.rb +56 -0
  180. data/lib/fluent/test/base.rb +85 -0
  181. data/lib/fluent/test/driver/base.rb +179 -0
  182. data/lib/fluent/test/driver/base_owned.rb +70 -0
  183. data/lib/fluent/test/driver/base_owner.rb +125 -0
  184. data/lib/fluent/test/driver/event_feeder.rb +98 -0
  185. data/lib/fluent/test/driver/filter.rb +57 -0
  186. data/lib/fluent/test/driver/formatter.rb +30 -0
  187. data/lib/fluent/test/driver/input.rb +31 -0
  188. data/lib/fluent/test/driver/multi_output.rb +52 -0
  189. data/lib/fluent/test/driver/output.rb +76 -0
  190. data/lib/fluent/test/driver/parser.rb +30 -0
  191. data/lib/fluent/test/driver/test_event_router.rb +45 -0
  192. data/lib/fluent/test/filter_test.rb +77 -0
  193. data/lib/fluent/test/formatter_test.rb +65 -0
  194. data/lib/fluent/test/helpers.rb +79 -0
  195. data/lib/fluent/test/input_test.rb +172 -0
  196. data/lib/fluent/test/log.rb +73 -0
  197. data/lib/fluent/test/output_test.rb +156 -0
  198. data/lib/fluent/test/parser_test.rb +70 -0
  199. data/lib/fluent/time.rb +175 -0
  200. data/lib/fluent/timezone.rb +133 -0
  201. data/lib/fluent/unique_id.rb +39 -0
  202. data/lib/fluent/version.rb +21 -0
  203. data/lib/fluent/winsvc.rb +71 -0
  204. data/test/compat/test_calls_super.rb +166 -0
  205. data/test/compat/test_parser.rb +82 -0
  206. data/test/config/assertions.rb +42 -0
  207. data/test/config/test_config_parser.rb +507 -0
  208. data/test/config/test_configurable.rb +1194 -0
  209. data/test/config/test_configure_proxy.rb +386 -0
  210. data/test/config/test_dsl.rb +415 -0
  211. data/test/config/test_element.rb +403 -0
  212. data/test/config/test_literal_parser.rb +297 -0
  213. data/test/config/test_section.rb +184 -0
  214. data/test/config/test_system_config.rb +120 -0
  215. data/test/config/test_types.rb +171 -0
  216. data/test/helper.rb +119 -0
  217. data/test/plugin/data/2010/01/20100102-030405.log +0 -0
  218. data/test/plugin/data/2010/01/20100102-030406.log +0 -0
  219. data/test/plugin/data/2010/01/20100102.log +0 -0
  220. data/test/plugin/data/log/bar +0 -0
  221. data/test/plugin/data/log/foo/bar.log +0 -0
  222. data/test/plugin/data/log/test.log +0 -0
  223. data/test/plugin/test_bare_output.rb +118 -0
  224. data/test/plugin/test_base.rb +75 -0
  225. data/test/plugin/test_buf_file.rb +571 -0
  226. data/test/plugin/test_buf_memory.rb +42 -0
  227. data/test/plugin/test_buffer.rb +1200 -0
  228. data/test/plugin/test_buffer_chunk.rb +168 -0
  229. data/test/plugin/test_buffer_file_chunk.rb +771 -0
  230. data/test/plugin/test_buffer_memory_chunk.rb +265 -0
  231. data/test/plugin/test_file_util.rb +96 -0
  232. data/test/plugin/test_filter.rb +353 -0
  233. data/test/plugin/test_filter_grep.rb +119 -0
  234. data/test/plugin/test_filter_record_transformer.rb +600 -0
  235. data/test/plugin/test_filter_stdout.rb +211 -0
  236. data/test/plugin/test_formatter_csv.rb +94 -0
  237. data/test/plugin/test_formatter_json.rb +30 -0
  238. data/test/plugin/test_formatter_ltsv.rb +52 -0
  239. data/test/plugin/test_formatter_msgpack.rb +28 -0
  240. data/test/plugin/test_formatter_out_file.rb +95 -0
  241. data/test/plugin/test_formatter_single_value.rb +38 -0
  242. data/test/plugin/test_in_debug_agent.rb +28 -0
  243. data/test/plugin/test_in_dummy.rb +188 -0
  244. data/test/plugin/test_in_exec.rb +133 -0
  245. data/test/plugin/test_in_forward.rb +635 -0
  246. data/test/plugin/test_in_gc_stat.rb +39 -0
  247. data/test/plugin/test_in_http.rb +442 -0
  248. data/test/plugin/test_in_monitor_agent.rb +329 -0
  249. data/test/plugin/test_in_object_space.rb +64 -0
  250. data/test/plugin/test_in_syslog.rb +205 -0
  251. data/test/plugin/test_in_tail.rb +1001 -0
  252. data/test/plugin/test_in_tcp.rb +102 -0
  253. data/test/plugin/test_in_udp.rb +121 -0
  254. data/test/plugin/test_in_unix.rb +126 -0
  255. data/test/plugin/test_input.rb +122 -0
  256. data/test/plugin/test_multi_output.rb +180 -0
  257. data/test/plugin/test_out_buffered_null.rb +79 -0
  258. data/test/plugin/test_out_buffered_stdout.rb +122 -0
  259. data/test/plugin/test_out_copy.rb +160 -0
  260. data/test/plugin/test_out_exec.rb +155 -0
  261. data/test/plugin/test_out_exec_filter.rb +262 -0
  262. data/test/plugin/test_out_file.rb +383 -0
  263. data/test/plugin/test_out_forward.rb +590 -0
  264. data/test/plugin/test_out_null.rb +29 -0
  265. data/test/plugin/test_out_relabel.rb +28 -0
  266. data/test/plugin/test_out_roundrobin.rb +146 -0
  267. data/test/plugin/test_out_stdout.rb +92 -0
  268. data/test/plugin/test_out_stream.rb +93 -0
  269. data/test/plugin/test_output.rb +568 -0
  270. data/test/plugin/test_output_as_buffered.rb +1604 -0
  271. data/test/plugin/test_output_as_buffered_overflow.rb +250 -0
  272. data/test/plugin/test_output_as_buffered_retries.rb +839 -0
  273. data/test/plugin/test_output_as_buffered_secondary.rb +817 -0
  274. data/test/plugin/test_output_as_standard.rb +374 -0
  275. data/test/plugin/test_owned_by.rb +35 -0
  276. data/test/plugin/test_parser_apache.rb +42 -0
  277. data/test/plugin/test_parser_apache2.rb +38 -0
  278. data/test/plugin/test_parser_apache_error.rb +45 -0
  279. data/test/plugin/test_parser_base.rb +32 -0
  280. data/test/plugin/test_parser_csv.rb +104 -0
  281. data/test/plugin/test_parser_json.rb +107 -0
  282. data/test/plugin/test_parser_labeled_tsv.rb +129 -0
  283. data/test/plugin/test_parser_multiline.rb +100 -0
  284. data/test/plugin/test_parser_nginx.rb +48 -0
  285. data/test/plugin/test_parser_none.rb +53 -0
  286. data/test/plugin/test_parser_regexp.rb +277 -0
  287. data/test/plugin/test_parser_syslog.rb +66 -0
  288. data/test/plugin/test_parser_time.rb +46 -0
  289. data/test/plugin/test_parser_tsv.rb +121 -0
  290. data/test/plugin/test_storage.rb +167 -0
  291. data/test/plugin/test_storage_local.rb +8 -0
  292. data/test/plugin/test_string_util.rb +26 -0
  293. data/test/plugin_helper/test_child_process.rb +608 -0
  294. data/test/plugin_helper/test_compat_parameters.rb +242 -0
  295. data/test/plugin_helper/test_event_emitter.rb +51 -0
  296. data/test/plugin_helper/test_event_loop.rb +52 -0
  297. data/test/plugin_helper/test_formatter.rb +252 -0
  298. data/test/plugin_helper/test_inject.rb +487 -0
  299. data/test/plugin_helper/test_parser.rb +263 -0
  300. data/test/plugin_helper/test_retry_state.rb +399 -0
  301. data/test/plugin_helper/test_storage.rb +521 -0
  302. data/test/plugin_helper/test_thread.rb +164 -0
  303. data/test/plugin_helper/test_timer.rb +131 -0
  304. data/test/scripts/exec_script.rb +32 -0
  305. data/test/scripts/fluent/plugin/formatter_known.rb +8 -0
  306. data/test/scripts/fluent/plugin/out_test.rb +81 -0
  307. data/test/scripts/fluent/plugin/out_test2.rb +80 -0
  308. data/test/scripts/fluent/plugin/parser_known.rb +4 -0
  309. data/test/test_config.rb +179 -0
  310. data/test/test_configdsl.rb +148 -0
  311. data/test/test_event.rb +329 -0
  312. data/test/test_event_router.rb +331 -0
  313. data/test/test_event_time.rb +184 -0
  314. data/test/test_filter.rb +121 -0
  315. data/test/test_formatter.rb +319 -0
  316. data/test/test_input.rb +31 -0
  317. data/test/test_log.rb +572 -0
  318. data/test/test_match.rb +137 -0
  319. data/test/test_mixin.rb +351 -0
  320. data/test/test_output.rb +214 -0
  321. data/test/test_plugin_classes.rb +136 -0
  322. data/test/test_plugin_helper.rb +81 -0
  323. data/test/test_process.rb +48 -0
  324. data/test/test_root_agent.rb +278 -0
  325. data/test/test_supervisor.rb +339 -0
  326. data/test/test_time_formatter.rb +186 -0
  327. data/test/test_unique_id.rb +47 -0
  328. metadata +823 -0
@@ -0,0 +1,137 @@
1
+ require_relative 'helper'
2
+ require 'fluent/match'
3
+
4
+ class MatchTest < Test::Unit::TestCase
5
+ include Fluent
6
+
7
+ def test_simple
8
+ assert_glob_match('a', 'a')
9
+ assert_glob_match('a.b', 'a.b')
10
+ assert_glob_not_match('a', 'b')
11
+ assert_glob_not_match('a.b', 'aab')
12
+ end
13
+
14
+ def test_wildcard
15
+ assert_glob_match('a*', 'a')
16
+ assert_glob_match('a*', 'ab')
17
+ assert_glob_match('a*', 'abc')
18
+
19
+ assert_glob_match('*a', 'a')
20
+ assert_glob_match('*a', 'ba')
21
+ assert_glob_match('*a', 'cba')
22
+
23
+ assert_glob_match('*a*', 'a')
24
+ assert_glob_match('*a*', 'ba')
25
+ assert_glob_match('*a*', 'ac')
26
+ assert_glob_match('*a*', 'bac')
27
+
28
+ assert_glob_not_match('a*', 'a.b')
29
+ assert_glob_not_match('a*', 'ab.c')
30
+ assert_glob_not_match('a*', 'ba')
31
+ assert_glob_not_match('*a', 'ab')
32
+
33
+ assert_glob_match('a.*', 'a.b')
34
+ assert_glob_match('a.*', 'a.c')
35
+ assert_glob_not_match('a.*', 'ab')
36
+
37
+ assert_glob_match('a.*.c', 'a.b.c')
38
+ assert_glob_match('a.*.c', 'a.c.c')
39
+ assert_glob_not_match('a.*.c', 'a.c')
40
+ end
41
+
42
+ def test_recursive_wildcard
43
+ assert_glob_match('a.**', 'a')
44
+ assert_glob_not_match('a.**', 'ab')
45
+ assert_glob_not_match('a.**', 'abc')
46
+ assert_glob_match('a.**', 'a.b')
47
+ assert_glob_not_match('a.**', 'ab.c')
48
+ assert_glob_not_match('a.**', 'ab.d.e')
49
+
50
+ assert_glob_match('a**', 'a')
51
+ assert_glob_match('a**', 'ab')
52
+ assert_glob_match('a**', 'abc')
53
+ assert_glob_match('a**', 'a.b')
54
+ assert_glob_match('a**', 'ab.c')
55
+ assert_glob_match('a**', 'ab.d.e')
56
+
57
+ assert_glob_match('**.a', 'a')
58
+ assert_glob_not_match('**.a', 'ba')
59
+ assert_glob_not_match('**.a', 'c.ba')
60
+ assert_glob_match('**.a', 'b.a')
61
+ assert_glob_match('**.a', 'cb.a')
62
+ assert_glob_match('**.a', 'd.e.a')
63
+
64
+ assert_glob_match('**a', 'a')
65
+ assert_glob_match('**a', 'ba')
66
+ assert_glob_match('**a', 'c.ba')
67
+ assert_glob_match('**a', 'b.a')
68
+ assert_glob_match('**a', 'cb.a')
69
+ assert_glob_match('**a', 'd.e.a')
70
+ end
71
+
72
+ def test_or
73
+ assert_glob_match('a.{b,c}', 'a.b')
74
+ assert_glob_match('a.{b,c}', 'a.c')
75
+ assert_glob_not_match('a.{b,c}', 'a.d')
76
+
77
+ assert_glob_match('a.{b,c}.**', 'a.b')
78
+ assert_glob_match('a.{b,c}.**', 'a.c')
79
+ assert_glob_not_match('a.{b,c}.**', 'a.d')
80
+ assert_glob_not_match('a.{b,c}.**', 'a.cd')
81
+
82
+ assert_glob_match('a.{b.**,c}', 'a.b')
83
+ assert_glob_match('a.{b.**,c}', 'a.b.c')
84
+ assert_glob_match('a.{b.**,c}', 'a.c')
85
+ assert_glob_not_match('a.{b.**,c}', 'a.c.d')
86
+ end
87
+
88
+ def test_multi_pattern_or
89
+ assert_or_match('a.b a.c', 'a.b')
90
+ assert_or_match('a.b a.c', 'a.c')
91
+ assert_or_not_match('a.b a.c', 'a.d')
92
+
93
+ assert_or_match('a.b.** a.c.**', 'a.b')
94
+ assert_or_match('a.b.** a.c.**', 'a.c')
95
+ assert_or_not_match('a.b.** a.c.**', 'a.d')
96
+ assert_or_not_match('a.b.** a.c.**', 'a.cd')
97
+
98
+ assert_or_match('a.b.** a.c', 'a.b')
99
+ assert_or_match('a.b.** a.c', 'a.b.c')
100
+ assert_or_match('a.b.** a.c', 'a.c')
101
+ assert_or_not_match('a.b.** a.c', 'a.c.d')
102
+ end
103
+
104
+ #def test_character_class
105
+ # assert_match('[a]', 'a')
106
+ # assert_match('[ab]', 'a')
107
+ # assert_match('[ab]', 'b')
108
+ # assert_not_match('[ab]', 'c')
109
+ #
110
+ # assert_match('[a-b]', 'a')
111
+ # assert_match('[a-b]', 'a')
112
+ # assert_match('[a-b]', 'b')
113
+ # assert_not_match('[a-b]', 'c')
114
+ #
115
+ # assert_match('[a-b0-9]', 'a')
116
+ # assert_match('[a-b0-9]', '0')
117
+ # assert_not_match('[a-b0-9]', 'c')
118
+ #end
119
+
120
+ def assert_glob_match(pat, str)
121
+ assert_true GlobMatchPattern.new(pat).match(str)
122
+ assert_true EventRouter::Rule.new(pat, nil).match?(str)
123
+ end
124
+
125
+ def assert_glob_not_match(pat, str)
126
+ assert_false GlobMatchPattern.new(pat).match(str)
127
+ assert_false EventRouter::Rule.new(pat, nil).match?(str)
128
+ end
129
+
130
+ def assert_or_match(pats, str)
131
+ assert_true EventRouter::Rule.new(pats, nil).match?(str)
132
+ end
133
+
134
+ def assert_or_not_match(pats, str)
135
+ assert_false EventRouter::Rule.new(pats, nil).match?(str)
136
+ end
137
+ end
@@ -0,0 +1,351 @@
1
+ require_relative 'helper'
2
+ require 'fluent/mixin'
3
+ require 'fluent/env'
4
+ require 'fluent/plugin'
5
+ require 'fluent/config'
6
+ require 'fluent/test'
7
+ require 'timecop'
8
+
9
+ module MixinTest
10
+ module Utils
11
+ def setup
12
+ super
13
+ Fluent::Test.setup
14
+ @time = Time.utc(1,2,3,4,5,2010,nil,nil,nil,nil)
15
+ Timecop.freeze(@time)
16
+ end
17
+
18
+ def teardown
19
+ super
20
+ Timecop.return
21
+ GC.start
22
+ end
23
+
24
+ module Checker
25
+ extend self
26
+ def format_check(tag, time, record); end
27
+ end
28
+
29
+ @@num = 0
30
+
31
+ def create_register_output_name
32
+ @@num += 1
33
+ "mixin_text_#{@@num}"
34
+ end
35
+
36
+ def format_check(hash, tagname = 'test')
37
+ mock(Checker).format_check(tagname, @time.to_i, hash)
38
+ end
39
+
40
+ def create_driver(include_klass, conf = '', tag = "test", &block)
41
+ register_output_name = create_register_output_name
42
+ include_klasses = [include_klass].flatten
43
+
44
+ klass = Class.new(Fluent::BufferedOutput) {
45
+ include_klasses.each {|k| include k }
46
+
47
+ Fluent::Plugin.register_output(register_output_name, self)
48
+ def format(tag, time, record)
49
+ Checker.format_check(tag, time, record)
50
+ [tag, time, record].to_msgpack
51
+ end
52
+
53
+ def write(chunk); end
54
+ }
55
+
56
+ if block
57
+ Utils.const_set("MixinTestClass#{@@num}", klass)
58
+ klass.module_eval(&block)
59
+ end
60
+
61
+ Fluent::Test::BufferedOutputTestDriver.new(klass, tag) {
62
+ }.configure("type #{register_output_name}" + conf)
63
+ end
64
+ end
65
+
66
+ class SetTagKeyMixinText < Test::Unit::TestCase
67
+ include Utils
68
+
69
+ def test_tag_key_default
70
+ format_check({
71
+ 'a' => 1
72
+ })
73
+
74
+ d = create_driver(Fluent::SetTagKeyMixin, %[
75
+ ])
76
+ d.emit({'a' => 1})
77
+ d.run
78
+ end
79
+
80
+ def test_include_tag_key_true
81
+ format_check({
82
+ 'tag' => 'test',
83
+ 'a' => 1
84
+ })
85
+
86
+ d = create_driver(Fluent::SetTagKeyMixin, %[
87
+ include_tag_key true
88
+ ])
89
+
90
+ d.emit({'a' => 1})
91
+ d.run
92
+ end
93
+
94
+ def test_include_tag_key_false
95
+ format_check({
96
+ 'a' => 1
97
+ })
98
+
99
+ d = create_driver(Fluent::SetTagKeyMixin, %[
100
+ include_tag_key false
101
+ ])
102
+ d.emit({'a' => 1})
103
+ d.run
104
+ end
105
+
106
+ def test_tag_key_set
107
+ format_check({
108
+ 'tag_key_changed' => 'test',
109
+ 'a' => 1
110
+ })
111
+
112
+ d = create_driver(Fluent::SetTagKeyMixin, %[
113
+ include_tag_key true
114
+ tag_key tag_key_changed
115
+ ])
116
+
117
+ d.emit({'a' => 1})
118
+ d.run
119
+ end
120
+
121
+ sub_test_case "mixin" do
122
+ data(
123
+ 'true' => true,
124
+ 'false' => false)
125
+ test 'include_tag_key' do |param|
126
+ d = create_driver(Fluent::SetTagKeyMixin) {
127
+ config_set_default :include_tag_key, param
128
+ }
129
+
130
+ assert_equal(param, d.instance.include_tag_key)
131
+ end
132
+ end
133
+ end
134
+
135
+ class SetTimeKeyMixinText < Test::Unit::TestCase
136
+ include Utils
137
+
138
+ def test_time_key_default
139
+ format_check({
140
+ 'a' => 1
141
+ })
142
+
143
+ d = create_driver(Fluent::SetTimeKeyMixin, %[
144
+ ])
145
+
146
+ d.emit({'a' => 1})
147
+ d.run
148
+ end
149
+
150
+ def test_include_time_key_true
151
+ format_check({
152
+ 'time' => "2010-05-04T03:02:01Z",
153
+ 'a' => 1
154
+ })
155
+
156
+ d = create_driver(Fluent::SetTimeKeyMixin, %[
157
+ include_time_key true
158
+ ])
159
+
160
+ d.emit({'a' => 1})
161
+ d.run
162
+ end
163
+
164
+ def test_time_format
165
+ format_check({
166
+ 'time' => "20100504",
167
+ 'a' => 1
168
+ })
169
+
170
+ d = create_driver(Fluent::SetTimeKeyMixin, %[
171
+ include_time_key true
172
+ time_format %Y%m%d
173
+ ])
174
+
175
+ d.emit({'a' => 1})
176
+ d.run
177
+ end
178
+
179
+ def test_timezone_1
180
+ format_check({
181
+ 'time' => "2010-05-03T17:02:01-10:00",
182
+ 'a' => 1
183
+ })
184
+
185
+ d = create_driver(Fluent::SetTimeKeyMixin, %[
186
+ include_time_key true
187
+ timezone Pacific/Honolulu
188
+ ])
189
+
190
+ d.emit({'a' => 1})
191
+ d.run
192
+ end
193
+
194
+ def test_timezone_2
195
+ format_check({
196
+ 'time' => "2010-05-04T08:32:01+05:30",
197
+ 'a' => 1
198
+ })
199
+
200
+ d = create_driver(Fluent::SetTimeKeyMixin, %[
201
+ include_time_key true
202
+ timezone +05:30
203
+ ])
204
+
205
+ d.emit({'a' => 1})
206
+ d.run
207
+ end
208
+
209
+ def test_timezone_invalid
210
+ assert_raise(Fluent::ConfigError) do
211
+ create_driver(Fluent::SetTimeKeyMixin, %[
212
+ include_time_key true
213
+ timezone Invalid/Invalid
214
+ ])
215
+ end
216
+ end
217
+
218
+ sub_test_case "mixin" do
219
+ data(
220
+ 'true' => true,
221
+ 'false' => false)
222
+ test 'include_time_key' do |param|
223
+ d = create_driver(Fluent::SetTimeKeyMixin) {
224
+ config_set_default :include_time_key, param
225
+ }
226
+
227
+ assert_equal(param, d.instance.include_time_key)
228
+ end
229
+ end
230
+ end
231
+
232
+ class HandleTagMixinTest < Test::Unit::TestCase
233
+ include Utils
234
+
235
+ def test_add_tag_prefix
236
+ format_check({
237
+ 'a' => 1
238
+ }, 'tag_prefix.test')
239
+ format_check({
240
+ 'a' => 2
241
+ }, 'tag_prefix.test')
242
+
243
+ d = create_driver(Fluent::HandleTagNameMixin, %[
244
+ add_tag_prefix tag_prefix.
245
+ include_tag_key true
246
+ ])
247
+
248
+ d.emit({'a' => 1})
249
+ d.emit({'a' => 2})
250
+ d.run
251
+ end
252
+
253
+ def test_add_tag_suffix
254
+ format_check({
255
+ 'a' => 1
256
+ }, 'test.test_suffix')
257
+ format_check({
258
+ 'a' => 2
259
+ }, 'test.test_suffix')
260
+
261
+ d = create_driver(Fluent::HandleTagNameMixin, %[
262
+ add_tag_suffix .test_suffix
263
+ include_tag_key true
264
+ ])
265
+
266
+ d.emit({'a' => 1})
267
+ d.emit({'a' => 2})
268
+ d.run
269
+ end
270
+
271
+ def test_remove_tag_prefix
272
+ format_check({
273
+ 'a' => 1
274
+ }, 'test')
275
+ format_check({
276
+ 'a' => 2
277
+ }, 'test')
278
+
279
+ d = create_driver(Fluent::HandleTagNameMixin, %[
280
+ remove_tag_prefix te
281
+ include_tag_key true
282
+ ], "tetest")
283
+
284
+ d.emit({'a' => 1})
285
+ d.emit({'a' => 2})
286
+ d.run
287
+ end
288
+
289
+ def test_remove_tag_suffix
290
+ format_check({
291
+ 'a' => 1
292
+ }, 'test')
293
+ format_check({
294
+ 'a' => 2
295
+ }, 'test')
296
+
297
+ d = create_driver(Fluent::HandleTagNameMixin, %[
298
+ remove_tag_suffix st
299
+ include_tag_key true
300
+ ], "testst")
301
+
302
+ d.emit({'a' => 1})
303
+ d.emit({'a' => 2})
304
+ d.run
305
+ end
306
+
307
+ def test_mix_tag_handle
308
+ format_check({
309
+ 'a' => 1
310
+ }, 'prefix.t')
311
+
312
+ d = create_driver(Fluent::HandleTagNameMixin, %[
313
+ remove_tag_prefix tes
314
+ add_tag_prefix prefix.
315
+ ])
316
+
317
+ d.emit({'a' => 1})
318
+ d.run
319
+ end
320
+
321
+ def test_with_set_tag_key_mixin
322
+ format_check({
323
+ 'tag' => 'tag_prefix.test',
324
+ 'a' => 1
325
+ }, 'tag_prefix.test')
326
+
327
+ d = create_driver([Fluent::SetTagKeyMixin, Fluent::HandleTagNameMixin], %[
328
+ add_tag_prefix tag_prefix.
329
+ include_tag_key true
330
+ ])
331
+
332
+ d.emit({'a' => 1})
333
+ d.run
334
+ end
335
+
336
+ def test_with_set_tag_key_mixin_include_order_reverse
337
+ format_check({
338
+ 'tag' => 'tag_prefix.test',
339
+ 'a' => 1
340
+ }, 'tag_prefix.test')
341
+
342
+ d = create_driver([Fluent::HandleTagNameMixin, Fluent::SetTagKeyMixin], %[
343
+ add_tag_prefix tag_prefix.
344
+ include_tag_key true
345
+ ])
346
+
347
+ d.emit({'a' => 1})
348
+ d.run
349
+ end
350
+ end
351
+ end