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