fluentd 0.14.4-x86-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,38 @@
1
+ require_relative '../helper'
2
+ require 'fluent/test/driver/parser'
3
+ require 'fluent/plugin/parser'
4
+
5
+ class Apache2ParserTest < ::Test::Unit::TestCase
6
+ def setup
7
+ Fluent::Test.setup
8
+ @parser = Fluent::Test::Driver::Parser.new(Fluent::Plugin::Apache2Parser)
9
+ @expected = {
10
+ 'user' => nil,
11
+ 'method' => 'GET',
12
+ 'code' => 200,
13
+ 'size' => 777,
14
+ 'host' => '192.168.0.1',
15
+ 'path' => '/',
16
+ 'referer' => nil,
17
+ 'agent' => 'Opera/12.0'
18
+ }
19
+ end
20
+
21
+ def test_parse
22
+ @parser.instance.parse('192.168.0.1 - - [28/Feb/2013:12:00:00 +0900] "GET / HTTP/1.1" 200 777 "-" "Opera/12.0"') { |time, record|
23
+ assert_equal(event_time('28/Feb/2013:12:00:00 +0900', format: '%d/%b/%Y:%H:%M:%S %z'), time)
24
+ assert_equal(@expected, record)
25
+ }
26
+ assert_equal(Fluent::Plugin::Apache2Parser::REGEXP,
27
+ @parser.instance.patterns['format'])
28
+ assert_equal(Fluent::Plugin::Apache2Parser::TIME_FORMAT,
29
+ @parser.instance.patterns['time_format'])
30
+ end
31
+
32
+ def test_parse_without_http_version
33
+ @parser.instance.parse('192.168.0.1 - - [28/Feb/2013:12:00:00 +0900] "GET /" 200 777 "-" "Opera/12.0"') { |time, record|
34
+ assert_equal(event_time('28/Feb/2013:12:00:00 +0900', format: '%d/%b/%Y:%H:%M:%S %z'), time)
35
+ assert_equal(@expected, record)
36
+ }
37
+ end
38
+ end
@@ -0,0 +1,45 @@
1
+ require_relative '../helper'
2
+ require 'fluent/test/driver/parser'
3
+ require 'fluent/plugin/parser_apache_error'
4
+
5
+ class ApacheErrorParserTest < ::Test::Unit::TestCase
6
+ def setup
7
+ Fluent::Test.setup
8
+ @expected = {
9
+ 'level' => 'error',
10
+ 'client' => '127.0.0.1',
11
+ 'message' => 'client denied by server configuration'
12
+ }
13
+ end
14
+
15
+ def create_driver
16
+ Fluent::Test::Driver::Parser.new(Fluent::Plugin::ApacheErrorParser.new).configure({})
17
+ end
18
+
19
+ def test_parse
20
+ d = create_driver
21
+ d.instance.parse('[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration') { |time, record|
22
+ assert_equal(event_time('Wed Oct 11 14:32:52 2000'), time)
23
+ assert_equal(@expected, record)
24
+ }
25
+ end
26
+
27
+ def test_parse_with_pid
28
+ d = create_driver
29
+ d.instance.parse('[Wed Oct 11 14:32:52 2000] [error] [pid 1000] [client 127.0.0.1] client denied by server configuration') { |time, record|
30
+ assert_equal(event_time('Wed Oct 11 14:32:52 2000'), time)
31
+ assert_equal(@expected.merge('pid' => '1000'), record)
32
+ }
33
+ end
34
+
35
+ def test_parse_without_client
36
+ d = create_driver
37
+ d.instance.parse('[Wed Oct 11 14:32:52 2000] [notice] Apache/2.2.15 (Unix) DAV/2 configured -- resuming normal operations') { |time, record|
38
+ assert_equal(event_time('Wed Oct 11 14:32:52 2000'), time)
39
+ assert_equal({
40
+ 'level' => 'notice',
41
+ 'message' => 'Apache/2.2.15 (Unix) DAV/2 configured -- resuming normal operations'
42
+ }, record)
43
+ }
44
+ end
45
+ end
@@ -0,0 +1,32 @@
1
+ require_relative '../helper'
2
+ require 'fluent/test/driver/parser'
3
+ require 'fluent/plugin/parser'
4
+
5
+ module ParserTest
6
+ class BaseParserTest < ::Test::Unit::TestCase
7
+ def setup
8
+ Fluent::Test.setup
9
+ end
10
+
11
+ def create_driver(conf={})
12
+ Fluent::Test::Driver::Parser.new(Fluent::Plugin::Parser).configure(conf)
13
+ end
14
+
15
+ def test_init
16
+ d = create_driver
17
+ assert_true d.instance.estimate_current_event
18
+ end
19
+
20
+ def test_configure_against_string_literal
21
+ d = create_driver('keep_time_key true')
22
+ assert_true d.instance.keep_time_key
23
+ end
24
+
25
+ def test_parse
26
+ d = create_driver
27
+ assert_raise NotImplementedError do
28
+ d.instance.parse('')
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,104 @@
1
+ require_relative '../helper'
2
+ require 'fluent/test/driver/parser'
3
+ require 'fluent/plugin/parser_csv'
4
+
5
+ class CSVParserTest < ::Test::Unit::TestCase
6
+ def setup
7
+ Fluent::Test.setup
8
+ end
9
+
10
+ def create_driver(conf={})
11
+ Fluent::Test::Driver::Parser.new(Fluent::Plugin::CSVParser).configure(conf)
12
+ end
13
+
14
+ data('array param' => '["time","c","d"]', 'string param' => 'time,c,d')
15
+ def test_parse(param)
16
+ d = create_driver('keys' => param, 'time_key' => 'time')
17
+ d.instance.parse("2013/02/28 12:00:00,192.168.0.1,111") { |time, record|
18
+ assert_equal(event_time('2013/02/28 12:00:00', format: '%Y/%m/%d %H:%M:%S'), time)
19
+ assert_equal({
20
+ 'c' => '192.168.0.1',
21
+ 'd' => '111',
22
+ }, record)
23
+ }
24
+ end
25
+
26
+ data('array param' => '["c","d"]', 'string param' => 'c,d')
27
+ def test_parse_without_time(param)
28
+ time_at_start = Time.now.to_i
29
+
30
+ d = create_driver('keys' => param)
31
+ d.instance.parse("192.168.0.1,111") { |time, record|
32
+ assert time && time >= time_at_start, "parser puts current time without time input"
33
+ assert_equal({
34
+ 'c' => '192.168.0.1',
35
+ 'd' => '111',
36
+ }, record)
37
+ }
38
+
39
+ d = Fluent::Test::Driver::Parser.new(Fluent::Plugin::CSVParser)
40
+ d.instance.estimate_current_event = false
41
+ d.configure('keys' => param)
42
+ d.instance.parse("192.168.0.1,111") { |time, record|
43
+ assert_equal({
44
+ 'c' => '192.168.0.1',
45
+ 'd' => '111',
46
+ }, record)
47
+ assert_nil time, "parser returns nil w/o time and if configured so"
48
+ }
49
+ end
50
+
51
+ def test_parse_with_keep_time_key
52
+ d = create_driver(
53
+ 'keys'=>'time',
54
+ 'time_key'=>'time',
55
+ 'time_format'=>"%d/%b/%Y:%H:%M:%S %z",
56
+ 'keep_time_key'=>'true',
57
+ )
58
+ text = '28/Feb/2013:12:00:00 +0900'
59
+ d.instance.parse(text) do |time, record|
60
+ assert_equal text, record['time']
61
+ end
62
+ end
63
+
64
+ data('array param' => '["a","b","c","d","e","f"]', 'string param' => 'a,b,c,d,e,f')
65
+ def test_parse_with_null_value_pattern(param)
66
+ d = create_driver(
67
+ 'keys'=>param,
68
+ 'null_value_pattern'=>'^(-|null|NULL)$'
69
+ )
70
+ d.instance.parse("-,null,NULL,,--,nuLL") do |time, record|
71
+ assert_nil record['a']
72
+ assert_nil record['b']
73
+ assert_nil record['c']
74
+ assert_nil record['d']
75
+ assert_equal record['e'], '--'
76
+ assert_equal record['f'], 'nuLL'
77
+ end
78
+ end
79
+
80
+ data('array param' => '["a","b"]', 'string param' => 'a,b')
81
+ def test_parse_with_null_empty_string(param)
82
+ d = create_driver(
83
+ 'keys'=>param,
84
+ 'null_empty_string'=>true
85
+ )
86
+ d.instance.parse(", ") do |time, record|
87
+ assert_nil record['a']
88
+ assert_equal record['b'], ' '
89
+ end
90
+ end
91
+
92
+ data('array param' => '["a","b","c"]', 'string param' => 'a,b,c')
93
+ def test_parse_with_option_delimiter(param)
94
+ d = create_driver(
95
+ 'keys'=>param,
96
+ 'delimiter'=>' ',
97
+ )
98
+ d.instance.parse("123 456 789") do |time, record|
99
+ assert_equal record['a'], '123'
100
+ assert_equal record['b'], '456'
101
+ assert_equal record['c'], '789'
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,107 @@
1
+ require_relative '../helper'
2
+ require 'fluent/test/driver/parser'
3
+ require 'fluent/plugin/parser'
4
+
5
+ class JsonParserTest < ::Test::Unit::TestCase
6
+ def setup
7
+ Fluent::Test.setup
8
+ @parser = Fluent::Test::Driver::Parser.new(Fluent::Plugin::JSONParser)
9
+ end
10
+
11
+ data('oj' => 'oj', 'yajl' => 'yajl')
12
+ def test_parse(data)
13
+ @parser.configure('json_parser' => data)
14
+ @parser.instance.parse('{"time":1362020400,"host":"192.168.0.1","size":777,"method":"PUT"}') { |time, record|
15
+ assert_equal(event_time('2013-02-28 12:00:00 +0900').to_i, time)
16
+ assert_equal({
17
+ 'host' => '192.168.0.1',
18
+ 'size' => 777,
19
+ 'method' => 'PUT',
20
+ }, record)
21
+ }
22
+ end
23
+
24
+ data('oj' => 'oj', 'yajl' => 'yajl')
25
+ def test_parse_with_large_float(data)
26
+ @parser.configure('json_parser' => data)
27
+ @parser.instance.parse('{"num":999999999999999999999999999999.99999}') { |time, record|
28
+ assert_equal(Float, record['num'].class)
29
+ }
30
+ end
31
+
32
+ data('oj' => 'oj', 'yajl' => 'yajl')
33
+ def test_parse_without_time(data)
34
+ time_at_start = Time.now.to_i
35
+
36
+ @parser.configure('json_parser' => data)
37
+ @parser.instance.parse('{"host":"192.168.0.1","size":777,"method":"PUT"}') { |time, record|
38
+ assert time && time >= time_at_start, "parser puts current time without time input"
39
+ assert_equal({
40
+ 'host' => '192.168.0.1',
41
+ 'size' => 777,
42
+ 'method' => 'PUT',
43
+ }, record)
44
+ }
45
+
46
+ parser = Fluent::Test::Driver::Parser.new(Fluent::Plugin::JSONParser)
47
+ parser.instance.estimate_current_event = false
48
+ parser.configure('json_parser' => data)
49
+ parser.instance.parse('{"host":"192.168.0.1","size":777,"method":"PUT"}') { |time, record|
50
+ assert_equal({
51
+ 'host' => '192.168.0.1',
52
+ 'size' => 777,
53
+ 'method' => 'PUT',
54
+ }, record)
55
+ assert_nil time, "parser return nil w/o time and if specified so"
56
+ }
57
+ end
58
+
59
+ data('oj' => 'oj', 'yajl' => 'yajl')
60
+ def test_parse_with_invalid_time(data)
61
+ @parser.configure('json_parser' => data)
62
+ assert_raise Fluent::ParserError do
63
+ @parser.instance.parse('{"time":[],"k":"v"}') { |time, record| }
64
+ end
65
+ end
66
+
67
+ data('oj' => 'oj', 'yajl' => 'yajl')
68
+ def test_parse_float_time(data)
69
+ parser = Fluent::Test::Driver::Parser.new(Fluent::Plugin::JSONParser)
70
+ parser.configure('json_parser' => data)
71
+ text = "100.1"
72
+ parser.instance.parse("{\"time\":\"#{text}\"}") do |time, record|
73
+ assert_equal Time.at(text.to_f).to_i, time.sec
74
+ assert_equal Time.at(text.to_f).nsec, time.nsec
75
+ end
76
+ end
77
+
78
+ data('oj' => 'oj', 'yajl' => 'yajl')
79
+ def test_parse_with_keep_time_key(data)
80
+ parser = Fluent::Test::Driver::Parser.new(Fluent::Plugin::JSONParser)
81
+ format = "%d/%b/%Y:%H:%M:%S %z"
82
+ parser.configure(
83
+ 'time_format' => format,
84
+ 'keep_time_key' => 'true',
85
+ 'json_parser' => data
86
+ )
87
+ text = "28/Feb/2013:12:00:00 +0900"
88
+ parser.instance.parse("{\"time\":\"#{text}\"}") do |time, record|
89
+ assert_equal Time.strptime(text, format).to_i, time.sec
90
+ assert_equal text, record['time']
91
+ end
92
+ end
93
+
94
+ data('oj' => 'oj', 'yajl' => 'yajl')
95
+ def test_parse_with_keep_time_key_without_time_format(data)
96
+ parser = Fluent::Test::Driver::Parser.new(Fluent::Plugin::JSONParser)
97
+ parser.configure(
98
+ 'keep_time_key' => 'true',
99
+ 'json_parser' => data
100
+ )
101
+ text = "100"
102
+ parser.instance.parse("{\"time\":\"#{text}\"}") do |time, record|
103
+ assert_equal text.to_i, time.sec
104
+ assert_equal text, record['time']
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,129 @@
1
+ require_relative '../helper'
2
+ require 'fluent/test/driver/parser'
3
+ require 'fluent/plugin/parser'
4
+
5
+ class LabeledTSVParserTest < ::Test::Unit::TestCase
6
+ def setup
7
+ Fluent::Test.setup
8
+ end
9
+
10
+ def test_config_params
11
+ parser = Fluent::Test::Driver::Parser.new(Fluent::TextParser::LabeledTSVParser)
12
+
13
+ assert_equal "\t", parser.instance.delimiter
14
+ assert_equal ":", parser.instance.label_delimiter
15
+
16
+ parser.configure(
17
+ 'delimiter' => ',',
18
+ 'label_delimiter' => '=',
19
+ )
20
+
21
+ assert_equal ",", parser.instance.delimiter
22
+ assert_equal "=", parser.instance.label_delimiter
23
+ end
24
+
25
+ def test_parse
26
+ parser = Fluent::Test::Driver::Parser.new(Fluent::TextParser::LabeledTSVParser)
27
+ parser.configure({})
28
+ parser.instance.parse("time:2013/02/28 12:00:00\thost:192.168.0.1\treq_id:111") { |time, record|
29
+ assert_equal(event_time('2013/02/28 12:00:00', format: '%Y/%m/%d %H:%M:%S'), time)
30
+ assert_equal({
31
+ 'host' => '192.168.0.1',
32
+ 'req_id' => '111',
33
+ }, record)
34
+ }
35
+ end
36
+
37
+ def test_parse_with_customized_delimiter
38
+ parser = Fluent::Test::Driver::Parser.new(Fluent::TextParser::LabeledTSVParser)
39
+ parser.configure(
40
+ 'delimiter' => ',',
41
+ 'label_delimiter' => '=',
42
+ )
43
+ parser.instance.parse('time=2013/02/28 12:00:00,host=192.168.0.1,req_id=111') { |time, record|
44
+ assert_equal(event_time('2013/02/28 12:00:00', format: '%Y/%m/%d %H:%M:%S'), time)
45
+ assert_equal({
46
+ 'host' => '192.168.0.1',
47
+ 'req_id' => '111',
48
+ }, record)
49
+ }
50
+ end
51
+
52
+ def test_parse_with_customized_time_format
53
+ parser = Fluent::Test::Driver::Parser.new(Fluent::TextParser::LabeledTSVParser)
54
+ parser.configure(
55
+ 'time_key' => 'mytime',
56
+ 'time_format' => '%d/%b/%Y:%H:%M:%S %z',
57
+ )
58
+ parser.instance.parse("mytime:28/Feb/2013:12:00:00 +0900\thost:192.168.0.1\treq_id:111") { |time, record|
59
+ assert_equal(event_time('28/Feb/2013:12:00:00 +0900', format: '%d/%b/%Y:%H:%M:%S %z'), time)
60
+ assert_equal({
61
+ 'host' => '192.168.0.1',
62
+ 'req_id' => '111',
63
+ }, record)
64
+ }
65
+ end
66
+
67
+ def test_parse_without_time
68
+ time_at_start = Time.now.to_i
69
+
70
+ parser = Fluent::Test::Driver::Parser.new(Fluent::Plugin::LabeledTSVParser)
71
+ parser.configure({})
72
+ parser.instance.parse("host:192.168.0.1\treq_id:111") { |time, record|
73
+ assert time && time >= time_at_start, "parser puts current time without time input"
74
+ assert_equal({
75
+ 'host' => '192.168.0.1',
76
+ 'req_id' => '111',
77
+ }, record)
78
+ }
79
+
80
+ parser = Fluent::Test::Driver::Parser.new(Fluent::Plugin::LabeledTSVParser)
81
+ parser.instance.estimate_current_event = false
82
+ parser.configure({})
83
+ parser.instance.parse("host:192.168.0.1\treq_id:111") { |time, record|
84
+ assert_equal({
85
+ 'host' => '192.168.0.1',
86
+ 'req_id' => '111',
87
+ }, record)
88
+ assert_nil time, "parser returns nil w/o time and if configured so"
89
+ }
90
+ end
91
+
92
+ def test_parse_with_keep_time_key
93
+ parser = Fluent::Test::Driver::Parser.new(Fluent::Plugin::LabeledTSVParser)
94
+ parser.configure(
95
+ 'time_format'=>"%d/%b/%Y:%H:%M:%S %z",
96
+ 'keep_time_key'=>'true',
97
+ )
98
+ text = '28/Feb/2013:12:00:00 +0900'
99
+ parser.instance.parse("time:#{text}") do |time, record|
100
+ assert_equal text, record['time']
101
+ end
102
+ end
103
+
104
+ def test_parse_with_null_value_pattern
105
+ parser = Fluent::Test::Driver::Parser.new(Fluent::Plugin::LabeledTSVParser)
106
+ parser.configure(
107
+ 'null_value_pattern'=>'^(-|null|NULL)$'
108
+ )
109
+ parser.instance.parse("a:-\tb:null\tc:NULL\td:\te:--\tf:nuLL") do |time, record|
110
+ assert_nil record['a']
111
+ assert_nil record['b']
112
+ assert_nil record['c']
113
+ assert_equal record['d'], ''
114
+ assert_equal record['e'], '--'
115
+ assert_equal record['f'], 'nuLL'
116
+ end
117
+ end
118
+
119
+ def test_parse_with_null_empty_string
120
+ parser = Fluent::Test::Driver::Parser.new(Fluent::Plugin::LabeledTSVParser)
121
+ parser.configure(
122
+ 'null_empty_string'=>true
123
+ )
124
+ parser.instance.parse("a:\tb: ") do |time, record|
125
+ assert_nil record['a']
126
+ assert_equal record['b'], ' '
127
+ end
128
+ end
129
+ end