fluentd 1.17.0-x64-mingw-ucrt → 1.18.0-x64-mingw-ucrt

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.
Files changed (278) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +100 -0
  3. data/README.md +1 -0
  4. data/SECURITY.md +2 -2
  5. data/fluent.conf +14 -14
  6. data/lib/fluent/command/cap_ctl.rb +4 -4
  7. data/lib/fluent/command/fluentd.rb +7 -1
  8. data/lib/fluent/compat/call_super_mixin.rb +3 -3
  9. data/lib/fluent/compat/propagate_default.rb +4 -4
  10. data/lib/fluent/config/literal_parser.rb +9 -2
  11. data/lib/fluent/config/yaml_parser/parser.rb +4 -0
  12. data/lib/fluent/engine.rb +49 -33
  13. data/lib/fluent/env.rb +3 -0
  14. data/lib/fluent/event_router.rb +2 -2
  15. data/lib/fluent/log/console_adapter.rb +4 -2
  16. data/lib/fluent/plugin/filter_parser.rb +27 -51
  17. data/lib/fluent/plugin/in_exec.rb +14 -2
  18. data/lib/fluent/plugin/in_http.rb +6 -1
  19. data/lib/fluent/plugin/in_sample.rb +13 -7
  20. data/lib/fluent/plugin/in_syslog.rb +4 -0
  21. data/lib/fluent/plugin/in_tail.rb +65 -23
  22. data/lib/fluent/plugin/in_tcp.rb +4 -0
  23. data/lib/fluent/plugin/in_udp.rb +10 -1
  24. data/lib/fluent/plugin/input.rb +4 -0
  25. data/lib/fluent/plugin/out_buffer.rb +40 -0
  26. data/lib/fluent/plugin/out_copy.rb +1 -1
  27. data/lib/fluent/plugin/out_file.rb +8 -0
  28. data/lib/fluent/plugin/out_http.rb +12 -0
  29. data/lib/fluent/plugin/output.rb +2 -0
  30. data/lib/fluent/plugin/parser_json.rb +4 -12
  31. data/lib/fluent/plugin_helper/cert_option.rb +8 -0
  32. data/lib/fluent/plugin_helper/event_emitter.rb +12 -0
  33. data/lib/fluent/plugin_helper/http_server/server.rb +24 -8
  34. data/lib/fluent/plugin_helper/server.rb +9 -0
  35. data/lib/fluent/root_agent.rb +114 -19
  36. data/lib/fluent/source_only_buffer_agent.rb +102 -0
  37. data/lib/fluent/supervisor.rb +207 -34
  38. data/lib/fluent/system_config.rb +15 -3
  39. data/lib/fluent/version.rb +1 -1
  40. data/templates/new_gem/fluent-plugin.gemspec.erb +6 -5
  41. metadata +24 -483
  42. data/.github/DISCUSSION_TEMPLATE/q-a-japanese.yml +0 -50
  43. data/.github/DISCUSSION_TEMPLATE/q-a.yml +0 -47
  44. data/.github/ISSUE_TEMPLATE/bug_report.yml +0 -71
  45. data/.github/ISSUE_TEMPLATE/config.yml +0 -5
  46. data/.github/ISSUE_TEMPLATE/feature_request.yml +0 -39
  47. data/.github/ISSUE_TEMPLATE.md +0 -17
  48. data/.github/PULL_REQUEST_TEMPLATE.md +0 -14
  49. data/.github/workflows/stale-actions.yml +0 -24
  50. data/.github/workflows/test-ruby-head.yml +0 -31
  51. data/.github/workflows/test.yml +0 -32
  52. data/.gitignore +0 -30
  53. data/Gemfile +0 -9
  54. data/fluentd.gemspec +0 -62
  55. data/test/command/test_binlog_reader.rb +0 -362
  56. data/test/command/test_ca_generate.rb +0 -70
  57. data/test/command/test_cap_ctl.rb +0 -100
  58. data/test/command/test_cat.rb +0 -128
  59. data/test/command/test_ctl.rb +0 -56
  60. data/test/command/test_fluentd.rb +0 -1291
  61. data/test/command/test_plugin_config_formatter.rb +0 -397
  62. data/test/command/test_plugin_generator.rb +0 -109
  63. data/test/compat/test_calls_super.rb +0 -166
  64. data/test/compat/test_parser.rb +0 -92
  65. data/test/config/assertions.rb +0 -42
  66. data/test/config/test_config_parser.rb +0 -551
  67. data/test/config/test_configurable.rb +0 -1784
  68. data/test/config/test_configure_proxy.rb +0 -604
  69. data/test/config/test_dsl.rb +0 -415
  70. data/test/config/test_element.rb +0 -518
  71. data/test/config/test_literal_parser.rb +0 -309
  72. data/test/config/test_plugin_configuration.rb +0 -56
  73. data/test/config/test_section.rb +0 -191
  74. data/test/config/test_system_config.rb +0 -195
  75. data/test/config/test_types.rb +0 -408
  76. data/test/counter/test_client.rb +0 -563
  77. data/test/counter/test_error.rb +0 -44
  78. data/test/counter/test_mutex_hash.rb +0 -179
  79. data/test/counter/test_server.rb +0 -589
  80. data/test/counter/test_store.rb +0 -258
  81. data/test/counter/test_validator.rb +0 -137
  82. data/test/helper.rb +0 -155
  83. data/test/helpers/fuzzy_assert.rb +0 -89
  84. data/test/helpers/process_extenstion.rb +0 -33
  85. data/test/log/test_console_adapter.rb +0 -117
  86. data/test/plugin/data/2010/01/20100102-030405.log +0 -0
  87. data/test/plugin/data/2010/01/20100102-030406.log +0 -0
  88. data/test/plugin/data/2010/01/20100102.log +0 -0
  89. data/test/plugin/data/log/bar +0 -0
  90. data/test/plugin/data/log/foo/bar.log +0 -0
  91. data/test/plugin/data/log/foo/bar2 +0 -0
  92. data/test/plugin/data/log/test.log +0 -0
  93. data/test/plugin/data/log_numeric/01.log +0 -0
  94. data/test/plugin/data/log_numeric/02.log +0 -0
  95. data/test/plugin/data/log_numeric/12.log +0 -0
  96. data/test/plugin/data/log_numeric/14.log +0 -0
  97. data/test/plugin/data/sd_file/config +0 -11
  98. data/test/plugin/data/sd_file/config.json +0 -17
  99. data/test/plugin/data/sd_file/config.yaml +0 -11
  100. data/test/plugin/data/sd_file/config.yml +0 -11
  101. data/test/plugin/data/sd_file/invalid_config.yml +0 -7
  102. data/test/plugin/in_tail/test_fifo.rb +0 -121
  103. data/test/plugin/in_tail/test_io_handler.rb +0 -150
  104. data/test/plugin/in_tail/test_position_file.rb +0 -346
  105. data/test/plugin/out_forward/test_ack_handler.rb +0 -140
  106. data/test/plugin/out_forward/test_connection_manager.rb +0 -145
  107. data/test/plugin/out_forward/test_handshake_protocol.rb +0 -112
  108. data/test/plugin/out_forward/test_load_balancer.rb +0 -106
  109. data/test/plugin/out_forward/test_socket_cache.rb +0 -174
  110. data/test/plugin/test_bare_output.rb +0 -131
  111. data/test/plugin/test_base.rb +0 -247
  112. data/test/plugin/test_buf_file.rb +0 -1314
  113. data/test/plugin/test_buf_file_single.rb +0 -898
  114. data/test/plugin/test_buf_memory.rb +0 -42
  115. data/test/plugin/test_buffer.rb +0 -1493
  116. data/test/plugin/test_buffer_chunk.rb +0 -209
  117. data/test/plugin/test_buffer_file_chunk.rb +0 -871
  118. data/test/plugin/test_buffer_file_single_chunk.rb +0 -611
  119. data/test/plugin/test_buffer_memory_chunk.rb +0 -339
  120. data/test/plugin/test_compressable.rb +0 -87
  121. data/test/plugin/test_file_util.rb +0 -96
  122. data/test/plugin/test_filter.rb +0 -368
  123. data/test/plugin/test_filter_grep.rb +0 -697
  124. data/test/plugin/test_filter_parser.rb +0 -731
  125. data/test/plugin/test_filter_record_transformer.rb +0 -577
  126. data/test/plugin/test_filter_stdout.rb +0 -207
  127. data/test/plugin/test_formatter_csv.rb +0 -136
  128. data/test/plugin/test_formatter_hash.rb +0 -38
  129. data/test/plugin/test_formatter_json.rb +0 -61
  130. data/test/plugin/test_formatter_ltsv.rb +0 -70
  131. data/test/plugin/test_formatter_msgpack.rb +0 -28
  132. data/test/plugin/test_formatter_out_file.rb +0 -116
  133. data/test/plugin/test_formatter_single_value.rb +0 -44
  134. data/test/plugin/test_formatter_tsv.rb +0 -76
  135. data/test/plugin/test_in_debug_agent.rb +0 -49
  136. data/test/plugin/test_in_exec.rb +0 -261
  137. data/test/plugin/test_in_forward.rb +0 -1178
  138. data/test/plugin/test_in_gc_stat.rb +0 -62
  139. data/test/plugin/test_in_http.rb +0 -1124
  140. data/test/plugin/test_in_monitor_agent.rb +0 -922
  141. data/test/plugin/test_in_object_space.rb +0 -66
  142. data/test/plugin/test_in_sample.rb +0 -190
  143. data/test/plugin/test_in_syslog.rb +0 -505
  144. data/test/plugin/test_in_tail.rb +0 -3429
  145. data/test/plugin/test_in_tcp.rb +0 -328
  146. data/test/plugin/test_in_udp.rb +0 -296
  147. data/test/plugin/test_in_unix.rb +0 -181
  148. data/test/plugin/test_input.rb +0 -137
  149. data/test/plugin/test_metadata.rb +0 -89
  150. data/test/plugin/test_metrics.rb +0 -294
  151. data/test/plugin/test_metrics_local.rb +0 -96
  152. data/test/plugin/test_multi_output.rb +0 -204
  153. data/test/plugin/test_out_copy.rb +0 -308
  154. data/test/plugin/test_out_exec.rb +0 -312
  155. data/test/plugin/test_out_exec_filter.rb +0 -606
  156. data/test/plugin/test_out_file.rb +0 -1038
  157. data/test/plugin/test_out_forward.rb +0 -1349
  158. data/test/plugin/test_out_http.rb +0 -557
  159. data/test/plugin/test_out_null.rb +0 -105
  160. data/test/plugin/test_out_relabel.rb +0 -28
  161. data/test/plugin/test_out_roundrobin.rb +0 -146
  162. data/test/plugin/test_out_secondary_file.rb +0 -458
  163. data/test/plugin/test_out_stdout.rb +0 -205
  164. data/test/plugin/test_out_stream.rb +0 -103
  165. data/test/plugin/test_output.rb +0 -1334
  166. data/test/plugin/test_output_as_buffered.rb +0 -2024
  167. data/test/plugin/test_output_as_buffered_backup.rb +0 -363
  168. data/test/plugin/test_output_as_buffered_compress.rb +0 -179
  169. data/test/plugin/test_output_as_buffered_overflow.rb +0 -250
  170. data/test/plugin/test_output_as_buffered_retries.rb +0 -966
  171. data/test/plugin/test_output_as_buffered_secondary.rb +0 -882
  172. data/test/plugin/test_output_as_standard.rb +0 -374
  173. data/test/plugin/test_owned_by.rb +0 -34
  174. data/test/plugin/test_parser.rb +0 -399
  175. data/test/plugin/test_parser_apache.rb +0 -42
  176. data/test/plugin/test_parser_apache2.rb +0 -47
  177. data/test/plugin/test_parser_apache_error.rb +0 -45
  178. data/test/plugin/test_parser_csv.rb +0 -200
  179. data/test/plugin/test_parser_json.rb +0 -244
  180. data/test/plugin/test_parser_labeled_tsv.rb +0 -160
  181. data/test/plugin/test_parser_msgpack.rb +0 -127
  182. data/test/plugin/test_parser_multiline.rb +0 -111
  183. data/test/plugin/test_parser_nginx.rb +0 -88
  184. data/test/plugin/test_parser_none.rb +0 -52
  185. data/test/plugin/test_parser_regexp.rb +0 -284
  186. data/test/plugin/test_parser_syslog.rb +0 -650
  187. data/test/plugin/test_parser_tsv.rb +0 -122
  188. data/test/plugin/test_sd_file.rb +0 -228
  189. data/test/plugin/test_sd_srv.rb +0 -230
  190. data/test/plugin/test_storage.rb +0 -166
  191. data/test/plugin/test_storage_local.rb +0 -335
  192. data/test/plugin/test_string_util.rb +0 -26
  193. data/test/plugin_helper/data/cert/cert-key.pem +0 -27
  194. data/test/plugin_helper/data/cert/cert-with-CRLF.pem +0 -19
  195. data/test/plugin_helper/data/cert/cert-with-no-newline.pem +0 -19
  196. data/test/plugin_helper/data/cert/cert.pem +0 -19
  197. data/test/plugin_helper/data/cert/cert_chains/ca-cert-key.pem +0 -27
  198. data/test/plugin_helper/data/cert/cert_chains/ca-cert.pem +0 -20
  199. data/test/plugin_helper/data/cert/cert_chains/cert-key.pem +0 -27
  200. data/test/plugin_helper/data/cert/cert_chains/cert.pem +0 -40
  201. data/test/plugin_helper/data/cert/empty.pem +0 -0
  202. data/test/plugin_helper/data/cert/generate_cert.rb +0 -125
  203. data/test/plugin_helper/data/cert/with_ca/ca-cert-key-pass.pem +0 -30
  204. data/test/plugin_helper/data/cert/with_ca/ca-cert-key.pem +0 -27
  205. data/test/plugin_helper/data/cert/with_ca/ca-cert-pass.pem +0 -20
  206. data/test/plugin_helper/data/cert/with_ca/ca-cert.pem +0 -20
  207. data/test/plugin_helper/data/cert/with_ca/cert-key-pass.pem +0 -30
  208. data/test/plugin_helper/data/cert/with_ca/cert-key.pem +0 -27
  209. data/test/plugin_helper/data/cert/with_ca/cert-pass.pem +0 -21
  210. data/test/plugin_helper/data/cert/with_ca/cert.pem +0 -21
  211. data/test/plugin_helper/data/cert/without_ca/cert-key-pass.pem +0 -30
  212. data/test/plugin_helper/data/cert/without_ca/cert-key.pem +0 -27
  213. data/test/plugin_helper/data/cert/without_ca/cert-pass.pem +0 -20
  214. data/test/plugin_helper/data/cert/without_ca/cert.pem +0 -20
  215. data/test/plugin_helper/http_server/test_app.rb +0 -65
  216. data/test/plugin_helper/http_server/test_route.rb +0 -32
  217. data/test/plugin_helper/service_discovery/test_manager.rb +0 -93
  218. data/test/plugin_helper/service_discovery/test_round_robin_balancer.rb +0 -21
  219. data/test/plugin_helper/test_cert_option.rb +0 -25
  220. data/test/plugin_helper/test_child_process.rb +0 -862
  221. data/test/plugin_helper/test_compat_parameters.rb +0 -358
  222. data/test/plugin_helper/test_event_emitter.rb +0 -80
  223. data/test/plugin_helper/test_event_loop.rb +0 -52
  224. data/test/plugin_helper/test_extract.rb +0 -194
  225. data/test/plugin_helper/test_formatter.rb +0 -255
  226. data/test/plugin_helper/test_http_server_helper.rb +0 -372
  227. data/test/plugin_helper/test_inject.rb +0 -561
  228. data/test/plugin_helper/test_metrics.rb +0 -137
  229. data/test/plugin_helper/test_parser.rb +0 -264
  230. data/test/plugin_helper/test_record_accessor.rb +0 -238
  231. data/test/plugin_helper/test_retry_state.rb +0 -1006
  232. data/test/plugin_helper/test_server.rb +0 -1895
  233. data/test/plugin_helper/test_service_discovery.rb +0 -165
  234. data/test/plugin_helper/test_socket.rb +0 -146
  235. data/test/plugin_helper/test_storage.rb +0 -542
  236. data/test/plugin_helper/test_thread.rb +0 -164
  237. data/test/plugin_helper/test_timer.rb +0 -130
  238. data/test/scripts/exec_script.rb +0 -32
  239. data/test/scripts/fluent/plugin/formatter1/formatter_test1.rb +0 -7
  240. data/test/scripts/fluent/plugin/formatter2/formatter_test2.rb +0 -7
  241. data/test/scripts/fluent/plugin/formatter_known.rb +0 -8
  242. data/test/scripts/fluent/plugin/out_test.rb +0 -81
  243. data/test/scripts/fluent/plugin/out_test2.rb +0 -80
  244. data/test/scripts/fluent/plugin/parser_known.rb +0 -4
  245. data/test/test_capability.rb +0 -74
  246. data/test/test_clock.rb +0 -164
  247. data/test/test_config.rb +0 -369
  248. data/test/test_configdsl.rb +0 -148
  249. data/test/test_daemonizer.rb +0 -91
  250. data/test/test_engine.rb +0 -203
  251. data/test/test_event.rb +0 -531
  252. data/test/test_event_router.rb +0 -348
  253. data/test/test_event_time.rb +0 -199
  254. data/test/test_file_wrapper.rb +0 -53
  255. data/test/test_filter.rb +0 -121
  256. data/test/test_fluent_log_event_router.rb +0 -99
  257. data/test/test_formatter.rb +0 -369
  258. data/test/test_input.rb +0 -31
  259. data/test/test_log.rb +0 -1076
  260. data/test/test_match.rb +0 -148
  261. data/test/test_mixin.rb +0 -351
  262. data/test/test_msgpack_factory.rb +0 -50
  263. data/test/test_oj_options.rb +0 -55
  264. data/test/test_output.rb +0 -278
  265. data/test/test_plugin.rb +0 -251
  266. data/test/test_plugin_classes.rb +0 -370
  267. data/test/test_plugin_helper.rb +0 -81
  268. data/test/test_plugin_id.rb +0 -119
  269. data/test/test_process.rb +0 -14
  270. data/test/test_root_agent.rb +0 -951
  271. data/test/test_static_config_analysis.rb +0 -177
  272. data/test/test_supervisor.rb +0 -821
  273. data/test/test_test_drivers.rb +0 -136
  274. data/test/test_time_formatter.rb +0 -301
  275. data/test/test_time_parser.rb +0 -362
  276. data/test/test_tls.rb +0 -65
  277. data/test/test_unique_id.rb +0 -47
  278. data/test/test_variable_store.rb +0 -65
@@ -1,312 +0,0 @@
1
- require_relative '../helper'
2
- require 'fluent/test/driver/output'
3
- require 'fluent/plugin/out_exec'
4
- require 'fileutils'
5
-
6
- class ExecOutputTest < Test::Unit::TestCase
7
- def setup
8
- Fluent::Test.setup
9
- FileUtils.rm_rf(TMP_DIR, secure: true)
10
- if File.exist?(TMP_DIR)
11
- # ensure files are closed for Windows, on which deleted files
12
- # are still visible from filesystem
13
- GC.start(full_mark: true, immediate_sweep: true)
14
- FileUtils.remove_entry_secure(TMP_DIR)
15
- end
16
- FileUtils.mkdir_p(TMP_DIR)
17
- end
18
-
19
- TMP_DIR = File.dirname(__FILE__) + "/../tmp/out_exec#{ENV['TEST_ENV_NUMBER']}"
20
-
21
- def create_driver(config)
22
- Fluent::Test::Driver::Output.new(Fluent::Plugin::ExecOutput).configure(config)
23
- end
24
-
25
- def create_test_data
26
- time = event_time("2011-01-02 13:14:15.123")
27
- records = [{"k1"=>"v1","kx"=>"vx"}, {"k1"=>"v2","kx"=>"vx"}]
28
- return time, records
29
- end
30
-
31
- DEFAULT_CONFIG_ONLY_WITH_KEYS = %[
32
- command cat >#{TMP_DIR}/out
33
- <format>
34
- keys ["k1", "kx"]
35
- </format>
36
- ]
37
-
38
- test 'configure in default' do
39
- d = create_driver DEFAULT_CONFIG_ONLY_WITH_KEYS
40
- assert{ d.instance.formatter.is_a? Fluent::Plugin::TSVFormatter }
41
- assert_equal ["k1", "kx"], d.instance.formatter.keys
42
- assert_nil d.instance.inject_config
43
- end
44
-
45
- TSV_CONFIG = %[
46
- command cat >#{TMP_DIR}/out
47
- <inject>
48
- tag_key tag
49
- time_key time
50
- time_format %Y-%m-%d %H:%M:%S
51
- localtime yes
52
- </inject>
53
- <format>
54
- @type tsv
55
- keys time, tag, k1
56
- </format>
57
- ]
58
- TSV_CONFIG_WITH_SUBSEC = %[
59
- command cat >#{TMP_DIR}/out
60
- <inject>
61
- tag_key tag
62
- time_key time
63
- time_format %Y-%m-%d %H:%M:%S.%3N
64
- localtime yes
65
- </inject>
66
- <format>
67
- @type tsv
68
- keys time, tag, k1
69
- </format>
70
- ]
71
- TSV_CONFIG_WITH_BUFFER = TSV_CONFIG + %[
72
- <buffer time>
73
- @type memory
74
- timekey 3600
75
- flush_thread_count 5
76
- chunk_limit_size 50m
77
- total_limit_size #{50 * 1024 * 1024 * 128}
78
- flush_at_shutdown yes
79
- </buffer>
80
- ]
81
- JSON_CONFIG = %[
82
- command cat >#{TMP_DIR}/out
83
- <format>
84
- @type json
85
- </format>
86
- ]
87
- MSGPACK_CONFIG = %[
88
- command cat >#{TMP_DIR}/out
89
- <format>
90
- @type msgpack
91
- </format>
92
- ]
93
-
94
- CONFIG_COMPAT = %[
95
- buffer_path #{TMP_DIR}/buffer
96
- command cat >#{TMP_DIR}/out
97
- localtime
98
- ]
99
- TSV_CONFIG_COMPAT = %[
100
- keys "time,tag,k1"
101
- tag_key "tag"
102
- time_key "time"
103
- time_format %Y-%m-%d %H:%M:%S
104
- ]
105
- BUFFER_CONFIG_COMPAT = %[
106
- buffer_type memory
107
- time_slice_format %Y%m%d%H
108
- num_threads 5
109
- buffer_chunk_limit 50m
110
- buffer_queue_limit 128
111
- flush_at_shutdown yes
112
- ]
113
- TSV_CONFIG_WITH_SUBSEC_COMPAT = %[
114
- keys "time,tag,k1"
115
- tag_key "tag"
116
- time_key "time"
117
- time_format %Y-%m-%d %H:%M:%S.%3N
118
- ]
119
-
120
- data(
121
- 'with sections' => TSV_CONFIG,
122
- 'traditional' => CONFIG_COMPAT + TSV_CONFIG_COMPAT,
123
- )
124
- test 'configure for tsv' do |conf|
125
- d = create_driver(conf)
126
-
127
- assert_equal ["time","tag","k1"], d.instance.formatter.keys
128
- assert_equal "tag", d.instance.inject_config.tag_key
129
- assert_equal "time", d.instance.inject_config.time_key
130
- assert_equal "%Y-%m-%d %H:%M:%S", d.instance.inject_config.time_format
131
- assert_equal true, d.instance.inject_config.localtime
132
- end
133
-
134
- data(
135
- 'with sections' => TSV_CONFIG_WITH_BUFFER,
136
- 'traditional' => CONFIG_COMPAT + TSV_CONFIG_COMPAT + BUFFER_CONFIG_COMPAT,
137
- )
138
- test 'configure_with_compat_buffer_parameters' do |conf|
139
- d = create_driver(conf)
140
- assert_equal 3600, d.instance.buffer_config.timekey
141
- assert_equal 5, d.instance.buffer_config.flush_thread_count
142
- assert_equal 50*1024*1024, d.instance.buffer.chunk_limit_size
143
- assert_equal 50*1024*1024*128, d.instance.buffer.total_limit_size
144
- assert d.instance.buffer_config.flush_at_shutdown
145
- end
146
-
147
- data(
148
- 'with sections' => TSV_CONFIG,
149
- 'traditional' => CONFIG_COMPAT + TSV_CONFIG_COMPAT,
150
- )
151
- test 'format' do |conf|
152
- d = create_driver(conf)
153
- time, records = create_test_data
154
-
155
- d.run(default_tag: 'test') do
156
- d.feed(time, records[0])
157
- d.feed(time, records[1])
158
- end
159
-
160
- assert_equal %[2011-01-02 13:14:15\ttest\tv1\n], d.formatted[0]
161
- assert_equal %[2011-01-02 13:14:15\ttest\tv2\n], d.formatted[1]
162
- end
163
-
164
- data(
165
- 'with sections' => JSON_CONFIG,
166
- 'traditional' => CONFIG_COMPAT + "format json",
167
- )
168
- test 'format_json' do |conf|
169
- d = create_driver(conf)
170
- time, records = create_test_data
171
-
172
- d.run(default_tag: 'test') do
173
- d.feed(time, records[0])
174
- d.feed(time, records[1])
175
- end
176
-
177
- assert_equal Yajl.dump(records[0]) + "\n", d.formatted[0]
178
- assert_equal Yajl.dump(records[1]) + "\n", d.formatted[1]
179
- end
180
-
181
- data(
182
- 'with sections' => MSGPACK_CONFIG,
183
- 'traditional' => CONFIG_COMPAT + "format msgpack"
184
- )
185
- test 'format_msgpack' do |conf|
186
- d = create_driver(conf)
187
- time, records = create_test_data
188
-
189
- d.run(default_tag: 'test') do
190
- d.feed(time, records[0])
191
- d.feed(time, records[1])
192
- end
193
-
194
- assert_equal records[0].to_msgpack, d.formatted[0]
195
- assert_equal records[1].to_msgpack, d.formatted[1]
196
- end
197
-
198
- data(
199
- 'with sections' => TSV_CONFIG_WITH_SUBSEC,
200
- 'traditional' => CONFIG_COMPAT + TSV_CONFIG_WITH_SUBSEC_COMPAT,
201
- )
202
- test 'format subsecond time' do |conf|
203
- d = create_driver(conf)
204
- time, records = create_test_data
205
-
206
- d.run(default_tag: 'test') do
207
- d.feed(time, records[0])
208
- d.feed(time, records[1])
209
- end
210
-
211
- assert_equal %[2011-01-02 13:14:15.123\ttest\tv1\n], d.formatted[0]
212
- assert_equal %[2011-01-02 13:14:15.123\ttest\tv2\n], d.formatted[1]
213
- end
214
-
215
- data(
216
- 'with sections' => TSV_CONFIG,
217
- 'traditional' => CONFIG_COMPAT + TSV_CONFIG_COMPAT,
218
- )
219
- test 'write' do |conf|
220
- d = create_driver(conf)
221
- time, records = create_test_data
222
-
223
- d.run(default_tag: 'test', flush: true) do
224
- d.feed(time, records[0])
225
- d.feed(time, records[1])
226
- end
227
-
228
- expect_path = "#{TMP_DIR}/out"
229
-
230
- waiting(10, plugin: d.instance) do
231
- sleep(0.1) until File.exist?(expect_path)
232
- end
233
-
234
- assert_equal true, File.exist?(expect_path)
235
-
236
- data = File.read(expect_path)
237
- expect_data =
238
- %[2011-01-02 13:14:15\ttest\tv1\n] +
239
- %[2011-01-02 13:14:15\ttest\tv2\n]
240
- assert_equal expect_data, data
241
- end
242
-
243
- sub_test_case 'when executed process dies unexpectedly' do
244
- setup do
245
- @gen_config = ->(num){ <<EOC
246
- command ruby -e "ARGV.first.to_i == 0 ? open(ARGV[1]){|f| STDOUT.write(f.read); STDOUT.flush} : (sleep 1 ; exit ARGV.first.to_i)" #{num} >#{TMP_DIR}/fail_out
247
- <inject>
248
- tag_key tag
249
- time_key time
250
- time_format %Y-%m-%d %H:%M:%S
251
- localtime yes
252
- </inject>
253
- <format>
254
- @type tsv
255
- keys time, tag, k1
256
- </format>
257
- EOC
258
- }
259
- end
260
-
261
- test 'flushed chunk will be committed after child process successfully exits' do
262
- d = create_driver(@gen_config.call(0))
263
- time, records = create_test_data
264
-
265
- expect_path = "#{TMP_DIR}/fail_out"
266
-
267
- d.end_if{ File.exist?(expect_path) }
268
- d.run(default_tag: 'test', flush: true, wait_flush_completion: true, shutdown: false) do
269
- d.feed(time, records[0])
270
- d.feed(time, records[1])
271
- end
272
-
273
- assert{ File.exist?(expect_path) }
274
-
275
- data = File.read(expect_path)
276
- expect_data =
277
- %[2011-01-02 13:14:15\ttest\tv1\n] +
278
- %[2011-01-02 13:14:15\ttest\tv2\n]
279
- assert_equal expect_data, data
280
-
281
- assert{ d.instance.buffer.queue.empty? }
282
- assert{ d.instance.dequeued_chunks.empty? }
283
-
284
- ensure
285
- d.instance_shutdown if d && d.instance
286
- end
287
-
288
- test 'flushed chunk will be taken back after child process unexpectedly exits' do
289
- d = create_driver(@gen_config.call(3))
290
- time, records = create_test_data
291
-
292
- expect_path = "#{TMP_DIR}/fail_out"
293
-
294
- d.end_if{ d.instance.log.out.logs.any?{|line| line.include?("command exits with error code") } }
295
- d.run(default_tag: 'test', flush: true, wait_flush_completion: false, shutdown: false) do
296
- d.feed(time, records[0])
297
- d.feed(time, records[1])
298
- end
299
-
300
- assert{ d.instance.dequeued_chunks.empty? } # because it's already taken back
301
- assert{ d.instance.buffer.queue.size == 1 }
302
-
303
- logs = d.instance.log.out.logs
304
- assert{ logs.any?{|line| line.include?("command exits with error code") && line.include?("status=3") } }
305
-
306
- assert{ File.exist?(expect_path) && File.size(expect_path) == 0 }
307
-
308
- ensure
309
- d.instance_shutdown if d && d.instance
310
- end
311
- end
312
- end