fluentd 0.14.4-x64-mingw32

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 (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,121 @@
1
+ require_relative 'helper'
2
+ require 'fluent/filter'
3
+
4
+ class FilterTest < Test::Unit::TestCase
5
+ include Fluent
6
+
7
+ setup do
8
+ Fluent::Test.setup
9
+ @time = Fluent::Engine.now
10
+ end
11
+
12
+ def create_driver(klass = Fluent::Filter, conf = '')
13
+ Test::FilterTestDriver.new(klass).configure(conf, true)
14
+ end
15
+
16
+ def emit(klass, msgs, conf = '')
17
+ d = create_driver(klass, conf)
18
+ d.run {
19
+ msgs.each {|msg|
20
+ d.emit({'message' => msg}, @time)
21
+ }
22
+ }.filtered
23
+ end
24
+
25
+ sub_test_case 'configure' do
26
+ test 'check to implement `filter` method' do
27
+ klass = Class.new(Fluent::Filter) do |c|
28
+ def filter(tag, time, record); end
29
+ end
30
+
31
+ assert_nothing_raised do
32
+ klass.new
33
+ end
34
+ end
35
+
36
+ test 'check to implement `filter_with_time` method' do
37
+ klass = Class.new(Fluent::Filter) do |c|
38
+ def filter_with_time(tag, time, record); end
39
+ end
40
+
41
+ assert_nothing_raised do
42
+ klass.new
43
+ end
44
+ end
45
+
46
+ test 'DO NOT check when implement `filter_stream`' do
47
+ klass = Class.new(Fluent::Filter) do |c|
48
+ def filter_stream(tag, es); end
49
+ end
50
+
51
+ assert_nothing_raised do
52
+ klass.new
53
+ end
54
+ end
55
+
56
+ test 'NotImplementedError' do
57
+ klass = Class.new(Fluent::Filter)
58
+
59
+ assert_raise NotImplementedError do
60
+ klass.new
61
+ end
62
+ end
63
+
64
+ test 'duplicated method implementation' do
65
+ klass = Class.new(Fluent::Filter) do |c|
66
+ def filter(tag, time, record); end
67
+ def filter_with_time(tag, time, record); end
68
+ end
69
+
70
+ assert_raise do
71
+ klass.new
72
+ end
73
+ end
74
+ end
75
+
76
+ sub_test_case 'filter' do
77
+ test 'null filter' do
78
+ null_filter = Class.new(Fluent::Filter) do |c|
79
+ def filter(tag, time, record)
80
+ nil
81
+ end
82
+ end
83
+ es = emit(null_filter, ['foo'])
84
+ assert_equal(0, es.instance_variable_get(:@record_array).size)
85
+ end
86
+
87
+ test 'pass filter' do
88
+ pass_filter = Class.new(Fluent::Filter) do |c|
89
+ def filter(tag, time, record)
90
+ record
91
+ end
92
+ end
93
+ es = emit(pass_filter, ['foo'])
94
+ assert_equal(1, es.instance_variable_get(:@record_array).size)
95
+ end
96
+ end
97
+
98
+ sub_test_case 'filter_stream' do
99
+ test 'null filter' do
100
+ null_filter = Class.new(Fluent::Filter) do |c|
101
+ def filter_stream(tag, es)
102
+ MultiEventStream.new
103
+ end
104
+ def filter(tag, time, record); record; end
105
+ end
106
+ es = emit(null_filter, ['foo'])
107
+ assert_equal(0, es.instance_variable_get(:@record_array).size)
108
+ end
109
+
110
+ test 'pass filter' do
111
+ pass_filter = Class.new(Fluent::Filter) do |c|
112
+ def filter_stream(tag, es)
113
+ es
114
+ end
115
+ def filter(tag, time, record); record; end
116
+ end
117
+ es = emit(pass_filter, ['foo'])
118
+ assert_equal(1, es.instance_variable_get(:@record_array).size)
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,319 @@
1
+ require_relative 'helper'
2
+ require 'fluent/test'
3
+ require 'fluent/formatter'
4
+
5
+ module FormatterTest
6
+ include Fluent
7
+
8
+ def tag
9
+ 'tag'
10
+ end
11
+
12
+ def record
13
+ {'message' => 'awesome', 'greeting' => 'hello'}
14
+ end
15
+
16
+ def with_timezone(tz)
17
+ oldtz, ENV['TZ'] = ENV['TZ'], tz
18
+ yield
19
+ ensure
20
+ ENV['TZ'] = oldtz
21
+ end
22
+
23
+ class BaseFormatterTest < ::Test::Unit::TestCase
24
+ include FormatterTest
25
+
26
+ def test_call
27
+ formatter = Formatter.new
28
+ formatter.configure({})
29
+ assert_raise NotImplementedError do
30
+ formatter.format('tag', Engine.now, {})
31
+ end
32
+ end
33
+ end
34
+
35
+ class BaseFormatterTestWithTestDriver < ::Test::Unit::TestCase
36
+ include FormatterTest
37
+
38
+ def create_driver(conf={})
39
+ Fluent::Test::FormatterTestDriver.new(Formatter).configure(conf)
40
+ end
41
+
42
+ def test_call
43
+ d = create_driver
44
+ assert_raise NotImplementedError do
45
+ d.format('tag', Engine.now, {})
46
+ end
47
+ end
48
+
49
+ def test_call_with_string_literal_configure
50
+ d = create_driver('')
51
+ assert_raise NotImplementedError do
52
+ d.format('tag', Engine.now, {})
53
+ end
54
+ end
55
+ end
56
+
57
+ class OutFileFormatterTest < ::Test::Unit::TestCase
58
+ include FormatterTest
59
+
60
+ def setup
61
+ @formatter = Fluent::Test::FormatterTestDriver.new('out_file')
62
+ @time = Engine.now
63
+ end
64
+
65
+ def configure(conf)
66
+ @formatter.configure({'utc' => true}.merge(conf))
67
+ end
68
+
69
+ def test_format
70
+ configure({})
71
+ formatted = @formatter.format(tag, @time, record)
72
+
73
+ assert_equal("#{time2str(@time)}\t#{tag}\t#{Yajl.dump(record)}\n", formatted)
74
+ end
75
+
76
+ def test_format_without_time
77
+ configure('output_time' => 'false')
78
+ formatted = @formatter.format(tag, @time, record)
79
+
80
+ assert_equal("#{tag}\t#{Yajl.dump(record)}\n", formatted)
81
+ end
82
+
83
+ def test_format_without_tag
84
+ configure('output_tag' => 'false')
85
+ formatted = @formatter.format(tag, @time, record)
86
+
87
+ assert_equal("#{time2str(@time)}\t#{Yajl.dump(record)}\n", formatted)
88
+ end
89
+
90
+ def test_format_without_time_and_tag
91
+ configure('output_tag' => 'false', 'output_time' => 'false')
92
+ formatted = @formatter.format('tag', @time, record)
93
+
94
+ assert_equal("#{Yajl.dump(record)}\n", formatted)
95
+ end
96
+
97
+ def test_format_without_time_and_tag_against_string_literal_configure
98
+ @formatter.configure(%[
99
+ utc true
100
+ output_tag false
101
+ output_time false
102
+ ])
103
+ formatted = @formatter.format('tag', @time, record)
104
+
105
+ assert_equal("#{Yajl.dump(record)}\n", formatted)
106
+ end
107
+ end
108
+
109
+ class JsonFormatterTest < ::Test::Unit::TestCase
110
+ include FormatterTest
111
+
112
+ def setup
113
+ @formatter = Fluent::Test::FormatterTestDriver.new(TextFormatter::JSONFormatter)
114
+ @time = Engine.now
115
+ end
116
+
117
+ data('oj' => 'oj', 'yajl' => 'yajl')
118
+ def test_format(data)
119
+ @formatter.configure('json_parser' => data)
120
+ formatted = @formatter.format(tag, @time, record)
121
+
122
+ assert_equal("#{Yajl.dump(record)}\n", formatted)
123
+ end
124
+ end
125
+
126
+ class MessagePackFormatterTest < ::Test::Unit::TestCase
127
+ include FormatterTest
128
+
129
+ def setup
130
+ @formatter = TextFormatter::MessagePackFormatter.new
131
+ @time = Engine.now
132
+ end
133
+
134
+ def test_format
135
+ @formatter.configure({})
136
+ formatted = @formatter.format(tag, @time, record)
137
+
138
+ assert_equal(record.to_msgpack, formatted)
139
+ end
140
+ end
141
+
142
+ class LabeledTSVFormatterTest < ::Test::Unit::TestCase
143
+ include FormatterTest
144
+
145
+ def setup
146
+ @formatter = TextFormatter::LabeledTSVFormatter.new
147
+ @time = Engine.now
148
+ end
149
+
150
+ def test_config_params
151
+ assert_equal "\t", @formatter.delimiter
152
+ assert_equal ":", @formatter.label_delimiter
153
+
154
+ @formatter.configure(
155
+ 'delimiter' => ',',
156
+ 'label_delimiter' => '=',
157
+ )
158
+
159
+ assert_equal ",", @formatter.delimiter
160
+ assert_equal "=", @formatter.label_delimiter
161
+ end
162
+
163
+ def test_format
164
+ @formatter.configure({})
165
+ formatted = @formatter.format(tag, @time, record)
166
+
167
+ assert_equal("message:awesome\tgreeting:hello\n", formatted)
168
+ end
169
+
170
+ def test_format_with_customized_delimiters
171
+ @formatter.configure(
172
+ 'delimiter' => ',',
173
+ 'label_delimiter' => '=',
174
+ )
175
+ formatted = @formatter.format(tag, @time, record)
176
+
177
+ assert_equal("message=awesome,greeting=hello\n", formatted)
178
+ end
179
+ end
180
+
181
+ class CsvFormatterTest < ::Test::Unit::TestCase
182
+ include FormatterTest
183
+
184
+ def setup
185
+ @formatter = TextFormatter::CsvFormatter.new
186
+ @time = Engine.now
187
+ end
188
+
189
+ def test_config_params
190
+ assert_equal ',', @formatter.delimiter
191
+ assert_equal true, @formatter.force_quotes
192
+ assert_nil @formatter.fields
193
+ end
194
+
195
+ data(
196
+ 'tab_char' => ["\t", '\t'],
197
+ 'tab_string' => ["\t", 'TAB'],
198
+ 'pipe' => ['|', '|'])
199
+ def test_config_params_with_customized_delimiters(data)
200
+ expected, target = data
201
+ @formatter.configure('delimiter' => target, 'fields' => 'a,b,c')
202
+ assert_equal expected, @formatter.delimiter
203
+ assert_equal ['a', 'b', 'c'], @formatter.fields
204
+ end
205
+
206
+ def test_format
207
+ @formatter.configure('fields' => 'message,message2')
208
+ formatted = @formatter.format(tag, @time, {
209
+ 'message' => 'awesome',
210
+ 'message2' => 'awesome2'
211
+ })
212
+ assert_equal("\"awesome\",\"awesome2\"\n", formatted)
213
+ end
214
+
215
+ def test_format_with_customized_delimiters
216
+ @formatter.configure(
217
+ 'fields' => 'message,message2',
218
+ 'delimiter' => '\t'
219
+ )
220
+ formatted = @formatter.format(tag, @time, {
221
+ 'message' => 'awesome',
222
+ 'message2' => 'awesome2'
223
+ })
224
+ assert_equal("\"awesome\"\t\"awesome2\"\n", formatted)
225
+ end
226
+
227
+ def test_format_with_non_quote
228
+ @formatter.configure(
229
+ 'fields' => 'message,message2',
230
+ 'force_quotes' => 'false'
231
+ )
232
+ formatted = @formatter.format(tag, @time, {
233
+ 'message' => 'awesome',
234
+ 'message2' => 'awesome2'
235
+ })
236
+ assert_equal("awesome,awesome2\n", formatted)
237
+ end
238
+
239
+ data(
240
+ 'nil' => {
241
+ 'message' => 'awesome',
242
+ 'message2' => nil,
243
+ 'message3' => 'awesome3'
244
+ },
245
+ 'blank' => {
246
+ 'message' => 'awesome',
247
+ 'message2' => '',
248
+ 'message3' => 'awesome3'
249
+ })
250
+ def test_format_with_empty_fields(data)
251
+ @formatter.configure(
252
+ 'fields' => 'message,message2,message3'
253
+ )
254
+ formatted = @formatter.format(tag, @time, data)
255
+ assert_equal("\"awesome\",\"\",\"awesome3\"\n", formatted)
256
+ end
257
+
258
+ data(
259
+ 'normally' => 'one,two,three',
260
+ 'white_space' => 'one , two , three',
261
+ 'blank' => 'one,,two,three')
262
+ def test_config_params_with_fields(data)
263
+ @formatter.configure('fields' => data)
264
+ assert_equal %w(one two three), @formatter.fields
265
+ end
266
+ end
267
+
268
+ class SingleValueFormatterTest < ::Test::Unit::TestCase
269
+ include FormatterTest
270
+
271
+ def test_config_params
272
+ formatter = TextFormatter::SingleValueFormatter.new
273
+ assert_equal "message", formatter.message_key
274
+
275
+ formatter.configure('message_key' => 'foobar')
276
+ assert_equal "foobar", formatter.message_key
277
+ end
278
+
279
+ def test_format
280
+ formatter = Fluent::Plugin.new_formatter('single_value')
281
+ formatted = formatter.format('tag', Engine.now, {'message' => 'awesome'})
282
+ assert_equal("awesome\n", formatted)
283
+ end
284
+
285
+ def test_format_without_newline
286
+ formatter = Fluent::Plugin.new_formatter('single_value')
287
+ formatter.configure('add_newline' => 'false')
288
+ formatted = formatter.format('tag', Engine.now, {'message' => 'awesome'})
289
+ assert_equal("awesome", formatted)
290
+ end
291
+
292
+ def test_format_with_message_key
293
+ formatter = TextFormatter::SingleValueFormatter.new
294
+ formatter.configure('message_key' => 'foobar')
295
+ formatted = formatter.format('tag', Engine.now, {'foobar' => 'foo'})
296
+
297
+ assert_equal("foo\n", formatted)
298
+ end
299
+ end
300
+
301
+ class FormatterLookupTest < ::Test::Unit::TestCase
302
+ include FormatterTest
303
+
304
+ def test_unknown_format
305
+ assert_raise ConfigError do
306
+ Fluent::Plugin.new_formatter('unknown')
307
+ end
308
+ end
309
+
310
+ data('register_formatter' => 'known', 'register_template' => 'known_old')
311
+ def test_find_formatter(data)
312
+ $LOAD_PATH.unshift(File.join(File.expand_path(File.dirname(__FILE__)), 'scripts'))
313
+ assert_nothing_raised ConfigError do
314
+ Fluent::Plugin.new_formatter(data)
315
+ end
316
+ $LOAD_PATH.shift
317
+ end
318
+ end
319
+ end
@@ -0,0 +1,31 @@
1
+ require_relative 'helper'
2
+ require 'fluent/input'
3
+
4
+ class FluentInputTest < ::Test::Unit::TestCase
5
+ include Fluent
6
+
7
+ def setup
8
+ Fluent::Test.setup
9
+ end
10
+
11
+ def create_driver(conf = '')
12
+ Fluent::Test::InputTestDriver.new(Fluent::Input).configure(conf, true)
13
+ end
14
+
15
+ def test_router
16
+ d = create_driver
17
+ assert_equal Engine.root_agent.event_router, d.instance.router
18
+
19
+ d = nil
20
+ assert_nothing_raised {
21
+ d = create_driver('@label @known')
22
+ }
23
+ expected = Engine.root_agent.find_label('@known').event_router
24
+ assert_equal expected, d.instance.router
25
+
26
+ # TestDriver helps to create a label instance automatically, so directly test here
27
+ assert_raise(ArgumentError) {
28
+ Fluent::Input.new.configure(Config.parse('@label @unknown', '(test)', '(test_dir)', true))
29
+ }
30
+ end
31
+ end