fluentd 1.17.0-x86-mingw32 → 1.17.1-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.
Files changed (259) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +46 -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/compat/call_super_mixin.rb +3 -3
  8. data/lib/fluent/compat/propagate_default.rb +4 -4
  9. data/lib/fluent/config/yaml_parser/parser.rb +4 -0
  10. data/lib/fluent/log/console_adapter.rb +4 -2
  11. data/lib/fluent/plugin/in_exec.rb +14 -2
  12. data/lib/fluent/plugin/in_http.rb +1 -1
  13. data/lib/fluent/plugin/in_sample.rb +13 -7
  14. data/lib/fluent/plugin/in_tail.rb +65 -23
  15. data/lib/fluent/plugin/out_copy.rb +1 -1
  16. data/lib/fluent/plugin/out_file.rb +8 -0
  17. data/lib/fluent/plugin/out_http.rb +12 -0
  18. data/lib/fluent/plugin/parser_json.rb +4 -12
  19. data/lib/fluent/plugin_helper/http_server/server.rb +1 -1
  20. data/lib/fluent/version.rb +1 -1
  21. data/templates/new_gem/fluent-plugin.gemspec.erb +6 -5
  22. metadata +25 -472
  23. data/.github/DISCUSSION_TEMPLATE/q-a-japanese.yml +0 -50
  24. data/.github/DISCUSSION_TEMPLATE/q-a.yml +0 -47
  25. data/.github/ISSUE_TEMPLATE/bug_report.yml +0 -71
  26. data/.github/ISSUE_TEMPLATE/config.yml +0 -5
  27. data/.github/ISSUE_TEMPLATE/feature_request.yml +0 -39
  28. data/.github/ISSUE_TEMPLATE.md +0 -17
  29. data/.github/PULL_REQUEST_TEMPLATE.md +0 -14
  30. data/.github/workflows/stale-actions.yml +0 -24
  31. data/.github/workflows/test-ruby-head.yml +0 -31
  32. data/.github/workflows/test.yml +0 -32
  33. data/.gitignore +0 -30
  34. data/Gemfile +0 -9
  35. data/fluentd.gemspec +0 -62
  36. data/test/command/test_binlog_reader.rb +0 -362
  37. data/test/command/test_ca_generate.rb +0 -70
  38. data/test/command/test_cap_ctl.rb +0 -100
  39. data/test/command/test_cat.rb +0 -128
  40. data/test/command/test_ctl.rb +0 -56
  41. data/test/command/test_fluentd.rb +0 -1291
  42. data/test/command/test_plugin_config_formatter.rb +0 -397
  43. data/test/command/test_plugin_generator.rb +0 -109
  44. data/test/compat/test_calls_super.rb +0 -166
  45. data/test/compat/test_parser.rb +0 -92
  46. data/test/config/assertions.rb +0 -42
  47. data/test/config/test_config_parser.rb +0 -551
  48. data/test/config/test_configurable.rb +0 -1784
  49. data/test/config/test_configure_proxy.rb +0 -604
  50. data/test/config/test_dsl.rb +0 -415
  51. data/test/config/test_element.rb +0 -518
  52. data/test/config/test_literal_parser.rb +0 -309
  53. data/test/config/test_plugin_configuration.rb +0 -56
  54. data/test/config/test_section.rb +0 -191
  55. data/test/config/test_system_config.rb +0 -195
  56. data/test/config/test_types.rb +0 -408
  57. data/test/counter/test_client.rb +0 -563
  58. data/test/counter/test_error.rb +0 -44
  59. data/test/counter/test_mutex_hash.rb +0 -179
  60. data/test/counter/test_server.rb +0 -589
  61. data/test/counter/test_store.rb +0 -258
  62. data/test/counter/test_validator.rb +0 -137
  63. data/test/helper.rb +0 -155
  64. data/test/helpers/fuzzy_assert.rb +0 -89
  65. data/test/helpers/process_extenstion.rb +0 -33
  66. data/test/log/test_console_adapter.rb +0 -117
  67. data/test/plugin/data/2010/01/20100102-030405.log +0 -0
  68. data/test/plugin/data/2010/01/20100102-030406.log +0 -0
  69. data/test/plugin/data/2010/01/20100102.log +0 -0
  70. data/test/plugin/data/log/bar +0 -0
  71. data/test/plugin/data/log/foo/bar.log +0 -0
  72. data/test/plugin/data/log/foo/bar2 +0 -0
  73. data/test/plugin/data/log/test.log +0 -0
  74. data/test/plugin/data/log_numeric/01.log +0 -0
  75. data/test/plugin/data/log_numeric/02.log +0 -0
  76. data/test/plugin/data/log_numeric/12.log +0 -0
  77. data/test/plugin/data/log_numeric/14.log +0 -0
  78. data/test/plugin/data/sd_file/config +0 -11
  79. data/test/plugin/data/sd_file/config.json +0 -17
  80. data/test/plugin/data/sd_file/config.yaml +0 -11
  81. data/test/plugin/data/sd_file/config.yml +0 -11
  82. data/test/plugin/data/sd_file/invalid_config.yml +0 -7
  83. data/test/plugin/in_tail/test_fifo.rb +0 -121
  84. data/test/plugin/in_tail/test_io_handler.rb +0 -150
  85. data/test/plugin/in_tail/test_position_file.rb +0 -346
  86. data/test/plugin/out_forward/test_ack_handler.rb +0 -140
  87. data/test/plugin/out_forward/test_connection_manager.rb +0 -145
  88. data/test/plugin/out_forward/test_handshake_protocol.rb +0 -112
  89. data/test/plugin/out_forward/test_load_balancer.rb +0 -106
  90. data/test/plugin/out_forward/test_socket_cache.rb +0 -174
  91. data/test/plugin/test_bare_output.rb +0 -131
  92. data/test/plugin/test_base.rb +0 -247
  93. data/test/plugin/test_buf_file.rb +0 -1314
  94. data/test/plugin/test_buf_file_single.rb +0 -898
  95. data/test/plugin/test_buf_memory.rb +0 -42
  96. data/test/plugin/test_buffer.rb +0 -1493
  97. data/test/plugin/test_buffer_chunk.rb +0 -209
  98. data/test/plugin/test_buffer_file_chunk.rb +0 -871
  99. data/test/plugin/test_buffer_file_single_chunk.rb +0 -611
  100. data/test/plugin/test_buffer_memory_chunk.rb +0 -339
  101. data/test/plugin/test_compressable.rb +0 -87
  102. data/test/plugin/test_file_util.rb +0 -96
  103. data/test/plugin/test_filter.rb +0 -368
  104. data/test/plugin/test_filter_grep.rb +0 -697
  105. data/test/plugin/test_filter_parser.rb +0 -731
  106. data/test/plugin/test_filter_record_transformer.rb +0 -577
  107. data/test/plugin/test_filter_stdout.rb +0 -207
  108. data/test/plugin/test_formatter_csv.rb +0 -136
  109. data/test/plugin/test_formatter_hash.rb +0 -38
  110. data/test/plugin/test_formatter_json.rb +0 -61
  111. data/test/plugin/test_formatter_ltsv.rb +0 -70
  112. data/test/plugin/test_formatter_msgpack.rb +0 -28
  113. data/test/plugin/test_formatter_out_file.rb +0 -116
  114. data/test/plugin/test_formatter_single_value.rb +0 -44
  115. data/test/plugin/test_formatter_tsv.rb +0 -76
  116. data/test/plugin/test_in_debug_agent.rb +0 -49
  117. data/test/plugin/test_in_exec.rb +0 -261
  118. data/test/plugin/test_in_forward.rb +0 -1178
  119. data/test/plugin/test_in_gc_stat.rb +0 -62
  120. data/test/plugin/test_in_http.rb +0 -1124
  121. data/test/plugin/test_in_monitor_agent.rb +0 -922
  122. data/test/plugin/test_in_object_space.rb +0 -66
  123. data/test/plugin/test_in_sample.rb +0 -190
  124. data/test/plugin/test_in_syslog.rb +0 -505
  125. data/test/plugin/test_in_tail.rb +0 -3429
  126. data/test/plugin/test_in_tcp.rb +0 -328
  127. data/test/plugin/test_in_udp.rb +0 -296
  128. data/test/plugin/test_in_unix.rb +0 -181
  129. data/test/plugin/test_input.rb +0 -137
  130. data/test/plugin/test_metadata.rb +0 -89
  131. data/test/plugin/test_metrics.rb +0 -294
  132. data/test/plugin/test_metrics_local.rb +0 -96
  133. data/test/plugin/test_multi_output.rb +0 -204
  134. data/test/plugin/test_out_copy.rb +0 -308
  135. data/test/plugin/test_out_exec.rb +0 -312
  136. data/test/plugin/test_out_exec_filter.rb +0 -606
  137. data/test/plugin/test_out_file.rb +0 -1038
  138. data/test/plugin/test_out_forward.rb +0 -1349
  139. data/test/plugin/test_out_http.rb +0 -557
  140. data/test/plugin/test_out_null.rb +0 -105
  141. data/test/plugin/test_out_relabel.rb +0 -28
  142. data/test/plugin/test_out_roundrobin.rb +0 -146
  143. data/test/plugin/test_out_secondary_file.rb +0 -458
  144. data/test/plugin/test_out_stdout.rb +0 -205
  145. data/test/plugin/test_out_stream.rb +0 -103
  146. data/test/plugin/test_output.rb +0 -1334
  147. data/test/plugin/test_output_as_buffered.rb +0 -2024
  148. data/test/plugin/test_output_as_buffered_backup.rb +0 -363
  149. data/test/plugin/test_output_as_buffered_compress.rb +0 -179
  150. data/test/plugin/test_output_as_buffered_overflow.rb +0 -250
  151. data/test/plugin/test_output_as_buffered_retries.rb +0 -966
  152. data/test/plugin/test_output_as_buffered_secondary.rb +0 -882
  153. data/test/plugin/test_output_as_standard.rb +0 -374
  154. data/test/plugin/test_owned_by.rb +0 -34
  155. data/test/plugin/test_parser.rb +0 -399
  156. data/test/plugin/test_parser_apache.rb +0 -42
  157. data/test/plugin/test_parser_apache2.rb +0 -47
  158. data/test/plugin/test_parser_apache_error.rb +0 -45
  159. data/test/plugin/test_parser_csv.rb +0 -200
  160. data/test/plugin/test_parser_json.rb +0 -244
  161. data/test/plugin/test_parser_labeled_tsv.rb +0 -160
  162. data/test/plugin/test_parser_msgpack.rb +0 -127
  163. data/test/plugin/test_parser_multiline.rb +0 -111
  164. data/test/plugin/test_parser_nginx.rb +0 -88
  165. data/test/plugin/test_parser_none.rb +0 -52
  166. data/test/plugin/test_parser_regexp.rb +0 -284
  167. data/test/plugin/test_parser_syslog.rb +0 -650
  168. data/test/plugin/test_parser_tsv.rb +0 -122
  169. data/test/plugin/test_sd_file.rb +0 -228
  170. data/test/plugin/test_sd_srv.rb +0 -230
  171. data/test/plugin/test_storage.rb +0 -166
  172. data/test/plugin/test_storage_local.rb +0 -335
  173. data/test/plugin/test_string_util.rb +0 -26
  174. data/test/plugin_helper/data/cert/cert-key.pem +0 -27
  175. data/test/plugin_helper/data/cert/cert-with-CRLF.pem +0 -19
  176. data/test/plugin_helper/data/cert/cert-with-no-newline.pem +0 -19
  177. data/test/plugin_helper/data/cert/cert.pem +0 -19
  178. data/test/plugin_helper/data/cert/cert_chains/ca-cert-key.pem +0 -27
  179. data/test/plugin_helper/data/cert/cert_chains/ca-cert.pem +0 -20
  180. data/test/plugin_helper/data/cert/cert_chains/cert-key.pem +0 -27
  181. data/test/plugin_helper/data/cert/cert_chains/cert.pem +0 -40
  182. data/test/plugin_helper/data/cert/empty.pem +0 -0
  183. data/test/plugin_helper/data/cert/generate_cert.rb +0 -125
  184. data/test/plugin_helper/data/cert/with_ca/ca-cert-key-pass.pem +0 -30
  185. data/test/plugin_helper/data/cert/with_ca/ca-cert-key.pem +0 -27
  186. data/test/plugin_helper/data/cert/with_ca/ca-cert-pass.pem +0 -20
  187. data/test/plugin_helper/data/cert/with_ca/ca-cert.pem +0 -20
  188. data/test/plugin_helper/data/cert/with_ca/cert-key-pass.pem +0 -30
  189. data/test/plugin_helper/data/cert/with_ca/cert-key.pem +0 -27
  190. data/test/plugin_helper/data/cert/with_ca/cert-pass.pem +0 -21
  191. data/test/plugin_helper/data/cert/with_ca/cert.pem +0 -21
  192. data/test/plugin_helper/data/cert/without_ca/cert-key-pass.pem +0 -30
  193. data/test/plugin_helper/data/cert/without_ca/cert-key.pem +0 -27
  194. data/test/plugin_helper/data/cert/without_ca/cert-pass.pem +0 -20
  195. data/test/plugin_helper/data/cert/without_ca/cert.pem +0 -20
  196. data/test/plugin_helper/http_server/test_app.rb +0 -65
  197. data/test/plugin_helper/http_server/test_route.rb +0 -32
  198. data/test/plugin_helper/service_discovery/test_manager.rb +0 -93
  199. data/test/plugin_helper/service_discovery/test_round_robin_balancer.rb +0 -21
  200. data/test/plugin_helper/test_cert_option.rb +0 -25
  201. data/test/plugin_helper/test_child_process.rb +0 -862
  202. data/test/plugin_helper/test_compat_parameters.rb +0 -358
  203. data/test/plugin_helper/test_event_emitter.rb +0 -80
  204. data/test/plugin_helper/test_event_loop.rb +0 -52
  205. data/test/plugin_helper/test_extract.rb +0 -194
  206. data/test/plugin_helper/test_formatter.rb +0 -255
  207. data/test/plugin_helper/test_http_server_helper.rb +0 -372
  208. data/test/plugin_helper/test_inject.rb +0 -561
  209. data/test/plugin_helper/test_metrics.rb +0 -137
  210. data/test/plugin_helper/test_parser.rb +0 -264
  211. data/test/plugin_helper/test_record_accessor.rb +0 -238
  212. data/test/plugin_helper/test_retry_state.rb +0 -1006
  213. data/test/plugin_helper/test_server.rb +0 -1895
  214. data/test/plugin_helper/test_service_discovery.rb +0 -165
  215. data/test/plugin_helper/test_socket.rb +0 -146
  216. data/test/plugin_helper/test_storage.rb +0 -542
  217. data/test/plugin_helper/test_thread.rb +0 -164
  218. data/test/plugin_helper/test_timer.rb +0 -130
  219. data/test/scripts/exec_script.rb +0 -32
  220. data/test/scripts/fluent/plugin/formatter1/formatter_test1.rb +0 -7
  221. data/test/scripts/fluent/plugin/formatter2/formatter_test2.rb +0 -7
  222. data/test/scripts/fluent/plugin/formatter_known.rb +0 -8
  223. data/test/scripts/fluent/plugin/out_test.rb +0 -81
  224. data/test/scripts/fluent/plugin/out_test2.rb +0 -80
  225. data/test/scripts/fluent/plugin/parser_known.rb +0 -4
  226. data/test/test_capability.rb +0 -74
  227. data/test/test_clock.rb +0 -164
  228. data/test/test_config.rb +0 -369
  229. data/test/test_configdsl.rb +0 -148
  230. data/test/test_daemonizer.rb +0 -91
  231. data/test/test_engine.rb +0 -203
  232. data/test/test_event.rb +0 -531
  233. data/test/test_event_router.rb +0 -348
  234. data/test/test_event_time.rb +0 -199
  235. data/test/test_file_wrapper.rb +0 -53
  236. data/test/test_filter.rb +0 -121
  237. data/test/test_fluent_log_event_router.rb +0 -99
  238. data/test/test_formatter.rb +0 -369
  239. data/test/test_input.rb +0 -31
  240. data/test/test_log.rb +0 -1076
  241. data/test/test_match.rb +0 -148
  242. data/test/test_mixin.rb +0 -351
  243. data/test/test_msgpack_factory.rb +0 -50
  244. data/test/test_oj_options.rb +0 -55
  245. data/test/test_output.rb +0 -278
  246. data/test/test_plugin.rb +0 -251
  247. data/test/test_plugin_classes.rb +0 -370
  248. data/test/test_plugin_helper.rb +0 -81
  249. data/test/test_plugin_id.rb +0 -119
  250. data/test/test_process.rb +0 -14
  251. data/test/test_root_agent.rb +0 -951
  252. data/test/test_static_config_analysis.rb +0 -177
  253. data/test/test_supervisor.rb +0 -821
  254. data/test/test_test_drivers.rb +0 -136
  255. data/test/test_time_formatter.rb +0 -301
  256. data/test/test_time_parser.rb +0 -362
  257. data/test/test_tls.rb +0 -65
  258. data/test/test_unique_id.rb +0 -47
  259. 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