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,362 +0,0 @@
1
- require_relative '../helper'
2
-
3
- require 'yajl'
4
- require 'flexmock/test_unit'
5
-
6
- require 'fluent/command/binlog_reader'
7
- require 'fluent/event'
8
-
9
- class TestFluentBinlogReader < ::Test::Unit::TestCase
10
- module ::BinlogReaderCommand
11
- class Dummy < Base
12
- def call; end
13
- end
14
- end
15
-
16
- def suppress_stdout
17
- out = StringIO.new
18
- $stdout = out
19
- yield
20
- ensure
21
- $stdout = STDOUT
22
- end
23
-
24
- sub_test_case 'call' do
25
- data(
26
- empty: [],
27
- invalid: %w(invalid packed.log),
28
- )
29
- test 'should fail when invalid command' do |argv|
30
- fu = FluentBinlogReader.new(argv)
31
-
32
- assert_raise(SystemExit) do
33
- suppress_stdout { fu.call }
34
- end
35
- end
36
-
37
- data(
38
- cat: %w(cat packed.log),
39
- head: %w(head packed.log),
40
- formats: %w(formats packed.log)
41
- )
42
- test 'should succeed when valid command' do |argv|
43
- fu = FluentBinlogReader.new(argv)
44
-
45
- flexstub(::BinlogReaderCommand) do |command|
46
- command.should_receive(:const_get).once.and_return(::BinlogReaderCommand::Dummy)
47
- assert_nothing_raised do
48
- fu.call
49
- end
50
- end
51
- end
52
- end
53
- end
54
-
55
- class TestBaseCommand < ::Test::Unit::TestCase
56
- TMP_DIR = File.expand_path(File.dirname(__FILE__) + "/../tmp/command/binlog_reader#{ENV['TEST_ENV_NUMBER']}")
57
-
58
- def create_message_packed_file(path, times = [event_time], records = [{ 'message' => 'dummy' }])
59
- es = Fluent::MultiEventStream.new(times, records)
60
- v = es.to_msgpack_stream
61
- out_path = "#{TMP_DIR}/#{path}"
62
- File.open(out_path, 'wb') do |f|
63
- f.print(v)
64
- end
65
- waiting(5) do
66
- sleep 0.5 until File.size(out_path) == v.bytesize
67
- end
68
- end
69
-
70
- def setup
71
- FileUtils.rm_rf(TMP_DIR)
72
- FileUtils.mkdir_p(TMP_DIR)
73
- end
74
-
75
- def timezone(timezone = 'UTC')
76
- old = ENV['TZ']
77
- ENV['TZ'] = timezone
78
- yield
79
- ensure
80
- ENV['TZ'] = old
81
- end
82
- end
83
-
84
- class TestHead < TestBaseCommand
85
- setup do
86
- @default_newline = if Fluent.windows?
87
- "\r\n"
88
- else
89
- "\n"
90
- end
91
- end
92
-
93
- sub_test_case 'initialize' do
94
- data(
95
- 'file is not passed' => %w(),
96
- 'file is not found' => %w(invalid_path.log)
97
- )
98
- test 'should fail if file is invalid' do |argv|
99
- assert_raise(SystemExit) do
100
- capture_stdout { BinlogReaderCommand::Head.new(argv) }
101
- end
102
- end
103
-
104
- test 'should succeed if a file is valid' do
105
- file_name = 'packed.log'
106
- argv = ["#{TMP_DIR}/#{file_name}"]
107
- create_message_packed_file(file_name)
108
-
109
- assert_nothing_raised do
110
- BinlogReaderCommand::Head.new(argv)
111
- end
112
- end
113
-
114
- test 'should fail when config_params format is invalid' do
115
- file_name = 'packed.log'
116
- argv = ["#{TMP_DIR}/#{file_name}", '--format=csv', '-e', 'only_key']
117
- create_message_packed_file(file_name)
118
-
119
- assert_raise(SystemExit) do
120
- capture_stdout { BinlogReaderCommand::Head.new(argv) }
121
- end
122
- end
123
-
124
- test 'should succeed if config_params format is valid' do
125
- file_name = 'packed.log'
126
- argv = ["#{TMP_DIR}/#{file_name}", '--format=csv', '-e', 'fields=message']
127
- create_message_packed_file(file_name)
128
-
129
- assert_nothing_raised do
130
- capture_stdout { BinlogReaderCommand::Head.new(argv) }
131
- end
132
- end
133
- end
134
-
135
- sub_test_case 'call' do
136
- setup do
137
- @file_name = 'packed.log'
138
- @t = '2011-01-02 13:14:15 UTC'
139
- @record = { 'message' => 'dummy' }
140
- end
141
-
142
- test 'should output the beginning of the file with default format (out_file)' do
143
- argv = ["#{TMP_DIR}/#{@file_name}"]
144
-
145
- timezone do
146
- create_message_packed_file(@file_name, [event_time(@t).to_i] * 6, [@record] * 6)
147
- head = BinlogReaderCommand::Head.new(argv)
148
- out = capture_stdout { head.call }
149
- assert_equal "2011-01-02T13:14:15+00:00\t#{TMP_DIR}/#{@file_name}\t#{Yajl.dump(@record)}#{@default_newline}" * 5, out
150
- end
151
- end
152
-
153
- test 'should set the number of lines to display' do
154
- argv = ["#{TMP_DIR}/#{@file_name}", '-n', '1']
155
-
156
- timezone do
157
- create_message_packed_file(@file_name, [event_time(@t).to_i] * 6, [@record] * 6)
158
- head = BinlogReaderCommand::Head.new(argv)
159
- out = capture_stdout { head.call }
160
- assert_equal "2011-01-02T13:14:15+00:00\t#{TMP_DIR}/#{@file_name}\t#{Yajl.dump(@record)}#{@default_newline}", out
161
- end
162
- end
163
-
164
- test 'should fail when the number of lines is invalid' do
165
- argv = ["#{TMP_DIR}/#{@file_name}", '-n', '0']
166
-
167
- create_message_packed_file(@file_name)
168
- assert_raise(SystemExit) do
169
- capture_stdout { BinlogReaderCommand::Head.new(argv) }
170
- end
171
- end
172
-
173
- test 'should output content of a file with json format' do
174
- argv = ["#{TMP_DIR}/#{@file_name}", '--format=json']
175
-
176
- timezone do
177
- create_message_packed_file(@file_name, [event_time(@t).to_i], [@record])
178
- head = BinlogReaderCommand::Head.new(argv)
179
- out = capture_stdout { head.call }
180
- assert_equal "#{Yajl.dump(@record)}#{@default_newline}", out
181
- end
182
- end
183
-
184
- test 'should fail with an invalid format' do
185
- argv = ["#{TMP_DIR}/#{@file_name}", '--format=invalid']
186
-
187
- timezone do
188
- create_message_packed_file(@file_name, [event_time(@t).to_i], [@record])
189
- head = BinlogReaderCommand::Head.new(argv)
190
-
191
- assert_raise(SystemExit) do
192
- capture_stdout { head.call }
193
- end
194
- end
195
- end
196
-
197
- test 'should succeed if multiple config_params format' do
198
- file_name = 'packed.log'
199
- argv = ["#{TMP_DIR}/#{file_name}", '--format=csv', '-e', 'fields=message,fo', '-e', 'delimiter=|']
200
- create_message_packed_file(file_name, [event_time], [{ 'message' => 'dummy', 'fo' => 'dummy2' }])
201
-
202
- head = BinlogReaderCommand::Head.new(argv)
203
- assert_equal "\"dummy\"|\"dummy2\"\n", capture_stdout { head.call }
204
- end
205
- end
206
- end
207
-
208
- class TestCat < TestBaseCommand
209
- setup do
210
- @default_newline = if Fluent.windows?
211
- "\r\n"
212
- else
213
- "\n"
214
- end
215
- end
216
-
217
- sub_test_case 'initialize' do
218
- data(
219
- 'file is not passed' => [],
220
- 'file is not found' => %w(invalid_path.log)
221
- )
222
- test 'should fail if a file is invalid' do |argv|
223
- assert_raise(SystemExit) do
224
- capture_stdout { BinlogReaderCommand::Head.new(argv) }
225
- end
226
- end
227
-
228
- test 'should succeed if a file is valid' do
229
- file_name = 'packed.log'
230
- argv = ["#{TMP_DIR}/#{file_name}"]
231
- create_message_packed_file(file_name)
232
-
233
- assert_nothing_raised do
234
- BinlogReaderCommand::Cat.new(argv)
235
- end
236
- end
237
-
238
- test 'should fail when config_params format is invalid' do
239
- file_name = 'packed.log'
240
- argv = ["#{TMP_DIR}/#{file_name}", '--format=json', '-e', 'only_key']
241
- create_message_packed_file(file_name)
242
-
243
- assert_raise(SystemExit) do
244
- capture_stdout { BinlogReaderCommand::Cat.new(argv) }
245
- end
246
- end
247
-
248
- test 'should succeed when config_params format is valid' do
249
- file_name = 'packed.log'
250
- argv = ["#{TMP_DIR}/#{file_name}", '--format=csv', '-e', 'fields=message']
251
- create_message_packed_file(file_name)
252
-
253
- assert_nothing_raised do
254
- capture_stdout { BinlogReaderCommand::Cat.new(argv) }
255
- end
256
- end
257
- end
258
-
259
- sub_test_case 'call' do
260
- setup do
261
- @file_name = 'packed.log'
262
- @t = '2011-01-02 13:14:15 UTC'
263
- @record = { 'message' => 'dummy' }
264
- end
265
-
266
- test 'should output the file with default format(out_file)' do
267
- argv = ["#{TMP_DIR}/#{@file_name}"]
268
-
269
- timezone do
270
- create_message_packed_file(@file_name, [event_time(@t).to_i] * 6, [@record] * 6)
271
- head = BinlogReaderCommand::Cat.new(argv)
272
- out = capture_stdout { head.call }
273
- assert_equal "2011-01-02T13:14:15+00:00\t#{TMP_DIR}/#{@file_name}\t#{Yajl.dump(@record)}#{@default_newline}" * 6, out
274
- end
275
- end
276
-
277
- test 'should set the number of lines to display' do
278
- argv = ["#{TMP_DIR}/#{@file_name}", '-n', '1']
279
-
280
- timezone do
281
- create_message_packed_file(@file_name, [event_time(@t).to_i] * 6, [@record] * 6)
282
- head = BinlogReaderCommand::Cat.new(argv)
283
- out = capture_stdout { head.call }
284
- assert_equal "2011-01-02T13:14:15+00:00\t#{TMP_DIR}/#{@file_name}\t#{Yajl.dump(@record)}#{@default_newline}", out
285
- end
286
- end
287
-
288
- test 'should output content of a file with json format' do
289
- argv = ["#{TMP_DIR}/#{@file_name}", '--format=json']
290
-
291
- timezone do
292
- create_message_packed_file(@file_name, [event_time(@t).to_i], [@record])
293
- head = BinlogReaderCommand::Cat.new(argv)
294
- out = capture_stdout { head.call }
295
- assert_equal "#{Yajl.dump(@record)}#{@default_newline}", out
296
- end
297
- end
298
-
299
- test 'should fail with an invalid format' do
300
- argv = ["#{TMP_DIR}/#{@file_name}", '--format=invalid']
301
-
302
- timezone do
303
- create_message_packed_file(@file_name, [event_time(@t).to_i], [@record])
304
- head = BinlogReaderCommand::Cat.new(argv)
305
-
306
- assert_raise(SystemExit) do
307
- capture_stdout { head.call }
308
- end
309
- end
310
- end
311
-
312
- test 'should succeed if multiple config_params format' do
313
- file_name = 'packed.log'
314
- argv = ["#{TMP_DIR}/#{file_name}", '--format=csv', '-e', 'fields=message,fo', '-e', 'delimiter=|']
315
- create_message_packed_file(file_name, [event_time], [{ 'message' => 'dummy', 'fo' => 'dummy2' }])
316
-
317
- head = BinlogReaderCommand::Cat.new(argv)
318
- assert_equal "\"dummy\"|\"dummy2\"\n", capture_stdout { head.call }
319
- end
320
- end
321
- end
322
-
323
- class TestFormats < TestBaseCommand
324
- test 'parse_option!' do
325
- assert_raise(SystemExit) do
326
- capture_stdout do
327
- BinlogReaderCommand::Formats.new(['--plugin=invalid_dir_path'])
328
- end
329
- end
330
- end
331
-
332
- sub_test_case 'call' do
333
- test 'display available plugins' do
334
- f = BinlogReaderCommand::Formats.new
335
- out = capture_stdout { f.call }
336
- assert out.include?('json')
337
- assert out.include?('csv')
338
- end
339
-
340
- test 'add new plugins using --plugin option' do
341
- dir_path = File.expand_path(File.dirname(__FILE__) + '/../scripts/fluent/plugin/formatter1')
342
-
343
- f = BinlogReaderCommand::Formats.new(["--plugin=#{dir_path}"])
344
- out = capture_stdout { f.call }
345
- assert out.include?('json')
346
- assert out.include?('csv')
347
- assert out.include?('test1')
348
- end
349
-
350
- test 'add multiple plugins using --plugin option' do
351
- dir_path1 = File.expand_path(File.dirname(__FILE__) + '/../scripts/fluent/plugin/formatter1')
352
- dir_path2 = File.expand_path(File.dirname(__FILE__) + '/../scripts/fluent/plugin/formatter2')
353
-
354
- f = BinlogReaderCommand::Formats.new(["--plugin=#{dir_path1}", '-p', dir_path2])
355
- out = capture_stdout { f.call }
356
- assert out.include?('json')
357
- assert out.include?('csv')
358
- assert out.include?('test1')
359
- assert out.include?('test2')
360
- end
361
- end
362
- end
@@ -1,70 +0,0 @@
1
- require_relative '../helper'
2
-
3
- require 'yajl'
4
- require 'flexmock/test_unit'
5
- require 'tmpdir'
6
-
7
- require 'fluent/command/ca_generate'
8
- require 'fluent/event'
9
-
10
- class TestFluentCaGenerate < ::Test::Unit::TestCase
11
- def test_generate_ca_pair
12
- cert, key = Fluent::CaGenerate.generate_ca_pair(Fluent::CaGenerate::DEFAULT_OPTIONS)
13
- assert_equal(OpenSSL::X509::Certificate, cert.class)
14
- assert_true(key.private?)
15
- end
16
-
17
- def test_ca_generate
18
- dumped_output = capture_stdout do
19
- Dir.mktmpdir do |dir|
20
- Fluent::CaGenerate.new([dir, "fluentd"]).call
21
- assert_true(File.exist?(File.join(dir, "ca_key.pem")))
22
- assert_true(File.exist?(File.join(dir, "ca_cert.pem")))
23
- end
24
- end
25
- expected = <<TEXT
26
- successfully generated: ca_key.pem, ca_cert.pem
27
- copy and use ca_cert.pem to client(out_forward)
28
- TEXT
29
- assert_equal(expected, dumped_output)
30
- end
31
-
32
- sub_test_case "configure options" do
33
- test "should respond multiple options" do
34
- dumped_output = capture_stdout do
35
- Dir.mktmpdir do |dir|
36
- Fluent::CaGenerate.new([dir, "fluentd",
37
- "--country", "JP", "--key-length", "4096",
38
- "--state", "Tokyo", "--locality", "Chiyoda-ku",
39
- "--common-name", "Forward CA"]).call
40
- assert_true(File.exist?(File.join(dir, "ca_key.pem")))
41
- assert_true(File.exist?(File.join(dir, "ca_cert.pem")))
42
- end
43
- end
44
- expected = <<TEXT
45
- successfully generated: ca_key.pem, ca_cert.pem
46
- copy and use ca_cert.pem to client(out_forward)
47
- TEXT
48
- assert_equal(expected, dumped_output)
49
- end
50
-
51
- test "invalid options" do
52
- Dir.mktmpdir do |dir|
53
- assert_raise(OptionParser::InvalidOption) do
54
- Fluent::CaGenerate.new([dir, "fluentd",
55
- "--invalid"]).call
56
- end
57
- assert_false(File.exist?(File.join(dir, "ca_key.pem")))
58
- assert_false(File.exist?(File.join(dir, "ca_cert.pem")))
59
- end
60
- end
61
-
62
- test "empty options" do
63
- assert_raise(SystemExit) do
64
- capture_stdout do
65
- Fluent::CaGenerate.new([]).call
66
- end
67
- end
68
- end
69
- end
70
- end
@@ -1,100 +0,0 @@
1
- require_relative '../helper'
2
-
3
- require 'tempfile'
4
- require 'fluent/command/cap_ctl'
5
-
6
- class TestFluentCapCtl < Test::Unit::TestCase
7
- setup do
8
- omit "This environment does not handle Linux capability" unless defined?(CapNG)
9
- end
10
-
11
- sub_test_case "success" do
12
- test "clear capability" do
13
- logs = capture_stdout do
14
- Fluent::CapCtl.new(["--clear"]).call
15
- end
16
- expression = /\AClear capabilities .*\n/m
17
- assert_match expression, logs
18
- end
19
-
20
- test "add capability" do
21
- logs = capture_stdout do
22
- Fluent::CapCtl.new(["--add", "dac_override"]).call
23
- end
24
- expression = /\AUpdating .* done.\nAdding .*\n/m
25
- assert_match expression, logs
26
- end
27
-
28
- test "drop capability" do
29
- logs = capture_stdout do
30
- Fluent::CapCtl.new(["--drop", "chown"]).call
31
- end
32
- expression = /\AUpdating .* done.\nDropping .*\n/m
33
- assert_match expression, logs
34
- end
35
-
36
- test "get capability" do
37
- logs = capture_stdout do
38
- Fluent::CapCtl.new(["--get"]).call
39
- end
40
- expression = /\ACapabilities in .*,\nEffective: .*\nInheritable: .*\nPermitted: .*/m
41
- assert_match expression, logs
42
- end
43
- end
44
-
45
- sub_test_case "success with file" do
46
- test "clear capability" do
47
- logs = capture_stdout do
48
- Tempfile.create("fluent-cap-") do |tempfile|
49
- Fluent::CapCtl.new(["--clear-cap", "-f", tempfile.path]).call
50
- end
51
- end
52
- expression = /\AClear capabilities .*\n/m
53
- assert_match expression, logs
54
- end
55
-
56
- test "add capability" do
57
- logs = capture_stdout do
58
- Tempfile.create("fluent-cap-") do |tempfile|
59
- Fluent::CapCtl.new(["--add", "dac_override", "-f", tempfile.path]).call
60
- end
61
- end
62
- expression = /\AUpdating .* done.\nAdding .*\n/m
63
- assert_match expression, logs
64
- end
65
-
66
- test "drop capability" do
67
- logs = capture_stdout do
68
- Tempfile.create("fluent-cap-") do |tempfile|
69
- Fluent::CapCtl.new(["--drop", "chown", "-f", tempfile.path]).call
70
- end
71
- end
72
- expression = /\AUpdating .* done.\nDropping .*\n/m
73
- assert_match expression, logs
74
- end
75
-
76
- test "get capability" do
77
- logs = capture_stdout do
78
- Tempfile.create("fluent-cap-") do |tempfile|
79
- Fluent::CapCtl.new(["--get", "-f", tempfile.path]).call
80
- end
81
- end
82
- expression = /\ACapabilities in .*,\nEffective: .*\nInheritable: .*\nPermitted: .*/m
83
- assert_match expression, logs
84
- end
85
- end
86
-
87
- sub_test_case "invalid" do
88
- test "add capability" do
89
- assert_raise(ArgumentError) do
90
- Fluent::CapCtl.new(["--add", "nonexitent"]).call
91
- end
92
- end
93
-
94
- test "drop capability" do
95
- assert_raise(ArgumentError) do
96
- Fluent::CapCtl.new(["--drop", "invalid"]).call
97
- end
98
- end
99
- end
100
- end
@@ -1,128 +0,0 @@
1
- require_relative '../helper'
2
-
3
- require 'test-unit'
4
- require 'open3'
5
- require 'fluent/plugin/output'
6
- require 'fluent/plugin/in_forward'
7
- require 'fluent/plugin/out_secondary_file'
8
- require 'fluent/test/driver/output'
9
- require 'fluent/test/driver/input'
10
-
11
- class TestFluentCat < ::Test::Unit::TestCase
12
- def setup
13
- Fluent::Test.setup
14
- FileUtils.mkdir_p(TMP_DIR)
15
- @record = { 'key' => 'value' }
16
- @time = event_time
17
- @es = Fluent::OneEventStream.new(@time, @record)
18
- @primary = create_primary
19
- metadata = @primary.buffer.new_metadata
20
- @chunk = create_chunk(@primary, metadata, @es)
21
- @port = unused_port
22
- end
23
-
24
- def teardown
25
- FileUtils.rm_rf(TMP_DIR)
26
- @port = nil
27
- end
28
-
29
- TMP_DIR = File.expand_path(File.dirname(__FILE__) + "/../tmp/command/fluent_cat#{ENV['TEST_ENV_NUMBER']}")
30
- FLUENT_CAT_COMMAND = File.expand_path(File.dirname(__FILE__) + "/../../bin/fluent-cat")
31
-
32
- def config
33
- %[
34
- port #{@port}
35
- bind 127.0.0.1
36
- ]
37
- end
38
-
39
- SECONDARY_CONFIG = %[
40
- directory #{TMP_DIR}
41
- ]
42
-
43
- class DummyOutput < Fluent::Plugin::Output
44
- def write(chunk); end
45
- end
46
-
47
- def create_driver(conf=config)
48
- Fluent::Test::Driver::Input.new(Fluent::Plugin::ForwardInput).configure(conf)
49
- end
50
-
51
- def create_primary(buffer_cofig = config_element('buffer'))
52
- DummyOutput.new.configure(config_element('ROOT','',{}, [buffer_cofig]))
53
- end
54
-
55
- def create_secondary_driver(conf=SECONDARY_CONFIG)
56
- c = Fluent::Test::Driver::Output.new(Fluent::Plugin::SecondaryFileOutput)
57
- c.instance.acts_as_secondary(@primary)
58
- c.configure(conf)
59
- end
60
-
61
- def create_chunk(primary, metadata, es)
62
- primary.buffer.generate_chunk(metadata).tap do |c|
63
- c.concat(es.to_msgpack_stream, es.size)
64
- c.commit
65
- end
66
- end
67
-
68
- sub_test_case "json" do
69
- def test_cat_json
70
- d = create_driver
71
- d.run(expect_records: 1) do
72
- Open3.pipeline_w("#{ServerEngine.ruby_bin_path} #{FLUENT_CAT_COMMAND} --port #{@port} json") do |stdin|
73
- stdin.puts('{"key":"value"}')
74
- stdin.close
75
- end
76
- end
77
- event = d.events.first
78
- assert_equal([1, "json", @record],
79
- [d.events.size, event.first, event.last])
80
- end
81
- end
82
-
83
- sub_test_case "msgpack" do
84
- def test_cat_secondary_file
85
- d = create_secondary_driver
86
- path = d.instance.write(@chunk)
87
- d = create_driver
88
- d.run(expect_records: 1) do
89
- Open3.pipeline_w("#{ServerEngine.ruby_bin_path} #{FLUENT_CAT_COMMAND} --port #{@port} --format msgpack secondary") do |stdin|
90
- stdin.write(File.read(path))
91
- stdin.close
92
- end
93
- end
94
- event = d.events.first
95
- assert_equal([1, "secondary", @record],
96
- [d.events.size, event.first, event.last])
97
- end
98
- end
99
-
100
- sub_test_case "send specific event time" do
101
- def test_without_event_time
102
- event_time = Fluent::EventTime.now
103
- d = create_driver
104
- d.run(expect_records: 1) do
105
- Open3.pipeline_w("#{ServerEngine.ruby_bin_path} #{FLUENT_CAT_COMMAND} --port #{@port} tag") do |stdin|
106
- stdin.puts('{"key":"value"}')
107
- stdin.close
108
- end
109
- end
110
- event = d.events.first
111
- assert_in_delta(event_time.to_f, event[1].to_f, 3.0) # expect command to be finished in 3 seconds
112
- assert_equal([1, "tag", true, @record],
113
- [d.events.size, event.first, event_time.to_f < event[1].to_f, event.last])
114
- end
115
-
116
- def test_with_event_time
117
- event_time = "2021-01-02 13:14:15.0+00:00"
118
- d = create_driver
119
- d.run(expect_records: 1) do
120
- Open3.pipeline_w("#{ServerEngine.ruby_bin_path} #{FLUENT_CAT_COMMAND} --port #{@port} --event-time '#{event_time}' tag") do |stdin|
121
- stdin.puts('{"key":"value"}')
122
- stdin.close
123
- end
124
- end
125
- assert_equal([["tag", Fluent::EventTime.parse(event_time), @record]], d.events)
126
- end
127
- end
128
- end