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,122 +0,0 @@
1
- require_relative '../helper'
2
- require 'fluent/test/driver/parser'
3
- require 'fluent/plugin/parser_tsv'
4
-
5
- class TSVParserTest < ::Test::Unit::TestCase
6
- def setup
7
- Fluent::Test.setup
8
- end
9
-
10
- def create_driver(conf={})
11
- Fluent::Test::Driver::Parser.new(Fluent::TextParser::TSVParser).configure(conf)
12
- end
13
-
14
- data('array param' => '["a","b"]', 'string param' => 'a,b')
15
- def test_config_params(param)
16
- d = create_driver(
17
- 'keys' => param,
18
- )
19
-
20
- assert_equal "\t", d.instance.delimiter
21
-
22
- d = create_driver(
23
- 'keys' => param,
24
- 'delimiter' => ',',
25
- )
26
-
27
- assert_equal ['a', 'b'], d.instance.keys
28
- assert_equal ",", d.instance.delimiter
29
- end
30
-
31
- data('array param' => '["time","a","b"]', 'string param' => 'time,a,b')
32
- def test_parse(param)
33
- d = create_driver('keys' => param, 'time_key' => 'time')
34
- d.instance.parse("2013/02/28 12:00:00\t192.168.0.1\t111") { |time, record|
35
- assert_equal(event_time('2013/02/28 12:00:00', format: '%Y/%m/%d %H:%M:%S'), time)
36
- assert_equal({
37
- 'a' => '192.168.0.1',
38
- 'b' => '111',
39
- }, record)
40
- }
41
- end
42
-
43
- def test_parse_with_time
44
- time_at_start = Time.now.to_i
45
-
46
- d = create_driver('keys' => 'a,b')
47
- d.instance.parse("192.168.0.1\t111") { |time, record|
48
- assert time && time >= time_at_start, "parser puts current time without time input"
49
- assert_equal({
50
- 'a' => '192.168.0.1',
51
- 'b' => '111',
52
- }, record)
53
- }
54
-
55
- d = Fluent::Test::Driver::Parser.new(Fluent::Plugin::TSVParser)
56
- d.configure('keys' => 'a,b', 'time_key' => 'time', 'estimate_current_event' => 'no')
57
- d.instance.parse("192.168.0.1\t111") { |time, record|
58
- assert_equal({
59
- 'a' => '192.168.0.1',
60
- 'b' => '111',
61
- }, record)
62
- assert_nil time, "parser returns nil w/o time and if configured so"
63
- }
64
- end
65
-
66
- data(
67
- 'left blank column' => ["\t@\t@", {"1" => "","2" => "@","3" => "@"}],
68
- 'center blank column' => ["@\t\t@", {"1" => "@","2" => "","3" => "@"}],
69
- 'right blank column' => ["@\t@\t", {"1" => "@","2" => "@","3" => ""}],
70
- '2 right blank columns' => ["@\t\t", {"1" => "@","2" => "","3" => ""}],
71
- 'left blank columns' => ["\t\t@", {"1" => "","2" => "","3" => "@"}],
72
- 'all blank columns' => ["\t\t", {"1" => "","2" => "","3" => ""}])
73
- def test_black_column(data)
74
- line, expected = data
75
-
76
- d = create_driver('keys' => '1,2,3')
77
- d.instance.parse(line) { |time, record|
78
- assert_equal(expected, record)
79
- }
80
- end
81
-
82
- def test_parse_with_keep_time_key
83
- d = create_driver(
84
- 'keys'=>'time',
85
- 'time_key'=>'time',
86
- 'time_format'=>"%d/%b/%Y:%H:%M:%S %z",
87
- 'keep_time_key'=>'true',
88
- )
89
- text = '28/Feb/2013:12:00:00 +0900'
90
- d.instance.parse(text) do |time, record|
91
- assert_equal text, record['time']
92
- end
93
- end
94
-
95
- data('array param' => '["a","b","c","d","e","f"]', 'string param' => 'a,b,c,d,e,f')
96
- def test_parse_with_null_value_pattern(param)
97
- d = create_driver(
98
- 'keys'=>param,
99
- 'null_value_pattern'=>'^(-|null|NULL)$'
100
- )
101
- d.instance.parse("-\tnull\tNULL\t\t--\tnuLL") do |time, record|
102
- assert_nil record['a']
103
- assert_nil record['b']
104
- assert_nil record['c']
105
- assert_equal record['d'], ''
106
- assert_equal record['e'], '--'
107
- assert_equal record['f'], 'nuLL'
108
- end
109
- end
110
-
111
- data('array param' => '["a","b"]', 'string param' => 'a,b')
112
- def test_parse_with_null_empty_string(param)
113
- d = create_driver(
114
- 'keys'=>param,
115
- 'null_empty_string'=>true
116
- )
117
- d.instance.parse("\t ") do |time, record|
118
- assert_nil record['a']
119
- assert_equal record['b'], ' '
120
- end
121
- end
122
- end
@@ -1,228 +0,0 @@
1
- require_relative '../helper'
2
- require 'fluent/plugin/sd_file'
3
- require 'fileutils'
4
- require 'json'
5
-
6
- class FileServiceDiscoveryTest < ::Test::Unit::TestCase
7
- setup do
8
- @dir = File.expand_path('data/sd_file', __dir__)
9
- FileUtils.mkdir_p(File.join(@dir, 'tmp'))
10
- end
11
-
12
- teardown do
13
- FileUtils.rm_r(File.join(@dir, 'tmp'))
14
- end
15
-
16
- sub_test_case 'configure' do
17
- test 'load yml' do
18
- sdf = Fluent::Plugin::FileServiceDiscovery.new
19
- sdf.configure(config_element('service_discovery', '', { 'path' => File.join(@dir, 'config.yml') }))
20
- assert_equal Fluent::Plugin::ServiceDiscovery::Service.new(:file, '127.0.0.1', 24224, 'test1', 1, false, 'user1', 'pass1', 'key1'), sdf.services[0]
21
- assert_equal Fluent::Plugin::ServiceDiscovery::Service.new(:file, '127.0.0.1', 24225, nil, 1), sdf.services[1]
22
- end
23
-
24
- test 'load yaml' do
25
- sdf = Fluent::Plugin::FileServiceDiscovery.new
26
- sdf.configure(config_element('service_discovery', '', { 'path' => File.join(@dir, 'config.yaml') }))
27
- assert_equal Fluent::Plugin::ServiceDiscovery::Service.new(:file, '127.0.0.1', 24224, 'test1', 1, false, 'user1', 'pass1', 'key1'), sdf.services[0]
28
- assert_equal Fluent::Plugin::ServiceDiscovery::Service.new(:file, '127.0.0.1', 24225, nil, 1), sdf.services[1]
29
- end
30
-
31
- test 'load json' do
32
- sdf = Fluent::Plugin::FileServiceDiscovery.new
33
- sdf.configure(config_element('service_discovery', '', { 'path' => File.join(@dir, 'config.json') }))
34
- assert_equal Fluent::Plugin::ServiceDiscovery::Service.new(:file, '127.0.0.1', 24224, 'test1', 1, false, 'user1', 'pass1', 'key1'), sdf.services[0]
35
- assert_equal Fluent::Plugin::ServiceDiscovery::Service.new(:file, '127.0.0.1', 24225, nil, 1), sdf.services[1]
36
- end
37
-
38
- test 'regard as yaml if ext is not givened' do
39
- sdf = Fluent::Plugin::FileServiceDiscovery.new
40
- sdf.configure(config_element('service_discovery', '', { 'path' => File.join(@dir, 'config') }))
41
- assert_equal Fluent::Plugin::ServiceDiscovery::Service.new(:file, '127.0.0.1', 24224, 'test1', 1, false, 'user1', 'pass1', 'key1'), sdf.services[0]
42
- assert_equal Fluent::Plugin::ServiceDiscovery::Service.new(:file, '127.0.0.1', 24225, nil, 1), sdf.services[1]
43
- end
44
-
45
- test 'raise an error if config has error' do
46
- sdf = Fluent::Plugin::FileServiceDiscovery.new
47
- e = assert_raise Fluent::ConfigError do
48
- sdf.configure(config_element('service_discovery', '', { 'path' => File.join(@dir, 'invalid_config.yaml') }))
49
- end
50
- assert_match(/path=/, e.message)
51
- end
52
-
53
- test 'raise an error if config file does not exist' do
54
- sdf = Fluent::Plugin::FileServiceDiscovery.new
55
- e = assert_raise Fluent::ConfigError do
56
- sdf.configure(config_element('service_discovery', '', { 'path' => File.join(@dir, 'invalid_not_found.json') }))
57
- end
58
- assert_match(/not found/, e.message)
59
- end
60
- end
61
-
62
- sub_test_case '#start' do
63
- module TestStatEventHelperWrapper
64
- # easy to control statsevent
65
- def event_loop_attach(watcher)
66
- unless watcher.is_a?(Fluent::Plugin::FileServiceDiscovery::StatWatcher)
67
- super
68
- return
69
- end
70
-
71
- @test_stat_event_helper_wrapper_watchers ||= []
72
- @test_stat_event_helper_wrapper_watchers << watcher
73
-
74
- @test_stat_event_helper_wrapper_context = Fiber.new do
75
- loop do
76
- @test_stat_event_helper_wrapper_watchers.each do |w|
77
- w.on_change('old', 'new')
78
- end
79
-
80
- if Fiber.yield == :finish
81
- break
82
- end
83
- end
84
- end
85
- resume
86
- end
87
-
88
- def resume
89
- @test_stat_event_helper_wrapper_context.resume(:resume)
90
- end
91
-
92
- def shutdown
93
- super
94
-
95
- if @test_stat_event_helper_wrapper_context
96
- @test_stat_event_helper_wrapper_context.resume(:finish)
97
- end
98
- end
99
- end
100
-
101
- def create_tmp_config(path, body)
102
- File.write(File.join(@dir, 'tmp', path), body)
103
- end
104
-
105
- setup do
106
- sdf = Fluent::Plugin::FileServiceDiscovery.new
107
- @sd_file = sdf
108
- end
109
-
110
- teardown do
111
- if @sd_file
112
- @sd_file.stop unless @sd_file.stopped?
113
- @sd_file.before_shutdown unless @sd_file.before_shutdown?
114
- @sd_file.shutdown unless @sd_file.shutdown?
115
- @sd_file.after_shutdown unless @sd_file.after_shutdown?
116
- @sd_file.close unless @sd_file.closed?
117
- @sd_file.terminate unless @sd_file.terminated?
118
- end
119
- end
120
-
121
- test 'Skip if file is not updated' do
122
- @sd_file.extend(TestStatEventHelperWrapper)
123
-
124
- create_tmp_config('config.json', JSON.generate([{ port: 1233, host: '127.0.0.1' }]))
125
- @sd_file.configure(config_element('service_discovery', '', { 'path' => File.join(@dir, 'config.yml') }))
126
- queue = []
127
- mock.proxy(@sd_file).refresh_file(queue).twice
128
-
129
- @sd_file.start(queue)
130
- assert_empty queue
131
-
132
- @sd_file.resume
133
- assert_empty queue
134
- end
135
-
136
- test 'Skip if file is invalid contents' do
137
- @sd_file.extend(TestStatEventHelperWrapper)
138
-
139
- create_tmp_config('config.json', JSON.generate([{ port: 1233, host: '127.0.0.1' }]))
140
- @sd_file.configure(config_element('service_discovery', '', { 'path' => File.join(@dir, 'config.yml') }))
141
-
142
- queue = []
143
- @sd_file.start(queue)
144
-
145
- mock.proxy(@sd_file).refresh_file(queue).once
146
- create_tmp_config('test.json', 'invalid contents')
147
- @sd_file.resume
148
-
149
- assert_empty queue
150
- end
151
-
152
- test 'Skip if error is occurred' do
153
- @sd_file.extend(TestStatEventHelperWrapper)
154
-
155
- create_tmp_config('config.json', JSON.generate([{ port: 1233, host: '127.0.0.1' }]))
156
- @sd_file.configure(config_element('service_discovery', '', { 'path' => File.join(@dir, 'config.yml') }))
157
- queue = []
158
-
159
- FileUtils.rm_r(File.join(@dir, 'tmp', 'config.json'))
160
- mock.proxy(@sd_file).refresh_file(queue).twice
161
-
162
- @sd_file.start(queue)
163
- assert_empty queue
164
-
165
- @sd_file.resume
166
- assert_empty queue
167
- end
168
-
169
- test 'if service is updated, service_in and service_out event happen' do
170
- @sd_file.extend(TestStatEventHelperWrapper)
171
-
172
- create_tmp_config('test.json', JSON.generate([{ port: 1233, host: '127.0.0.1' }]))
173
- @sd_file.configure(config_element('service_discovery', '', { 'path' => File.join(@dir, 'tmp/test.json') }))
174
-
175
- queue = []
176
- @sd_file.start(queue)
177
- create_tmp_config('test.json', JSON.generate([{ port: 1234, host: '127.0.0.1' }]))
178
- @sd_file.resume
179
-
180
- assert_equal 2, queue.size
181
- join = queue.shift
182
- drain = queue.shift
183
- assert_equal Fluent::Plugin::ServiceDiscovery::SERVICE_IN, join.type
184
- assert_equal 1234, join.service.port
185
- assert_equal '127.0.0.1', join.service.host
186
-
187
- assert_equal Fluent::Plugin::ServiceDiscovery::SERVICE_OUT, drain.type
188
- assert_equal 1233, drain.service.port
189
- assert_equal '127.0.0.1', drain.service.host
190
- end
191
-
192
- test 'if service is deleted, service_out event happens' do
193
- @sd_file.extend(TestStatEventHelperWrapper)
194
-
195
- create_tmp_config('test.json', JSON.generate([{ port: 1233, host: '127.0.0.1' }, { port: 1234, host: '127.0.0.2' }]))
196
- @sd_file.configure(config_element('service_discovery', '', { 'path' => File.join(@dir, 'tmp/test.json') }))
197
-
198
- queue = []
199
- @sd_file.start(queue)
200
- create_tmp_config('test.json', JSON.generate([{ port: 1233, host: '127.0.0.1' }]))
201
- @sd_file.resume
202
-
203
- assert_equal 1, queue.size
204
- drain = queue.shift
205
- assert_equal Fluent::Plugin::ServiceDiscovery::SERVICE_OUT, drain.type
206
- assert_equal 1234, drain.service.port
207
- assert_equal '127.0.0.2', drain.service.host
208
- end
209
-
210
- test 'if new service is added, service_in event happens' do
211
- @sd_file.extend(TestStatEventHelperWrapper)
212
-
213
- create_tmp_config('test.json', JSON.generate([{ port: 1233, host: '127.0.0.1' }]))
214
- @sd_file.configure(config_element('service_discovery', '', { 'path' => File.join(@dir, 'tmp/test.json') }))
215
-
216
- queue = []
217
- @sd_file.start(queue)
218
- create_tmp_config('test.json', JSON.generate([{ port: 1233, host: '127.0.0.1' }, { port: 1234, host: '127.0.0.2' }]))
219
- @sd_file.resume
220
-
221
- assert_equal 1, queue.size
222
- join = queue.shift
223
- assert_equal Fluent::Plugin::ServiceDiscovery::SERVICE_IN, join.type
224
- assert_equal 1234, join.service.port
225
- assert_equal '127.0.0.2', join.service.host
226
- end
227
- end
228
- end
@@ -1,230 +0,0 @@
1
- require_relative '../helper'
2
- require 'fluent/plugin/sd_srv'
3
- require 'fileutils'
4
- require 'flexmock/test_unit'
5
- require 'json'
6
-
7
- class SrvServiceDiscoveryTest < ::Test::Unit::TestCase
8
- SRV_RECORD1 = Resolv::DNS::Resource::IN::SRV.new(1, 10, 8081, 'service1.example.com')
9
- SRV_RECORD2 = Resolv::DNS::Resource::IN::SRV.new(2, 20, 8082, 'service2.example.com')
10
-
11
- sub_test_case 'configure' do
12
- test 'set services ordered by priority' do
13
- sdf = Fluent::Plugin::SrvServiceDiscovery.new
14
- mock(Resolv::DNS).new { flexmock('dns_resolver', getresources: [SRV_RECORD2, SRV_RECORD1], getaddress: '127.0.0.1') }
15
-
16
- sdf.configure(config_element('service_discovery', '', { 'service' => 'service1', 'hostname' => 'example.com' }))
17
- assert_equal Fluent::Plugin::ServiceDiscovery::Service.new(:srv, '127.0.0.1', 8081, 'service1.example.com', 10, false, '', '', nil), sdf.services[0]
18
- assert_equal Fluent::Plugin::ServiceDiscovery::Service.new(:srv, '127.0.0.1', 8082, 'service2.example.com', 20, false, '', '', nil), sdf.services[1]
19
- end
20
-
21
- test 'reuturn host name without revolving name when dns_lookup is flase' do
22
- sdf = Fluent::Plugin::SrvServiceDiscovery.new
23
- mock(Resolv::DNS).new { flexmock('dns_resolver', getresources: [SRV_RECORD1, SRV_RECORD2], getaddress: '127.0.0.1') }
24
-
25
- sdf.configure(config_element('service_discovery', '', { 'service' => 'service1', 'hostname' => 'example.com', 'dns_lookup' => false }))
26
- assert_equal Fluent::Plugin::ServiceDiscovery::Service.new(:srv, 'service1.example.com', 8081, 'service1.example.com', 10, false, '', '', nil), sdf.services[0]
27
- assert_equal Fluent::Plugin::ServiceDiscovery::Service.new(:srv, 'service2.example.com', 8082, 'service2.example.com', 20, false, '', '', nil), sdf.services[1]
28
- end
29
-
30
- test 'pass a value as :nameserver to Resolve::DNS when dns_server_host is given' do
31
- sdf = Fluent::Plugin::SrvServiceDiscovery.new
32
- mock(Resolv::DNS).new(nameserver: '8.8.8.8') { flexmock('dns_resolver', getresources: [SRV_RECORD1, SRV_RECORD2], getaddress: '127.0.0.1') }
33
-
34
- sdf.configure(config_element('service_discovery', '', { 'service' => 'service1', 'hostname' => 'example.com', 'dns_server_host' => '8.8.8.8' }))
35
- assert_equal Fluent::Plugin::ServiceDiscovery::Service.new(:srv, '127.0.0.1', 8081, 'service1.example.com', 10, false, '', '', nil), sdf.services[0]
36
- assert_equal Fluent::Plugin::ServiceDiscovery::Service.new(:srv, '127.0.0.1', 8082, 'service2.example.com', 20, false, '', '', nil), sdf.services[1]
37
- end
38
-
39
- test 'pass a value as :nameserver_port to Resolve::DNS when dns_server_host has port' do
40
- sdf = Fluent::Plugin::SrvServiceDiscovery.new
41
- mock(Resolv::DNS).new(nameserver_port: [['8.8.8.8', 8080]]) { flexmock('dns_resolver', getresources: [SRV_RECORD1, SRV_RECORD2], getaddress: '127.0.0.1') }
42
-
43
- sdf.configure(config_element('service_discovery', '', { 'service' => 'service1', 'hostname' => 'example.com', 'dns_server_host' => '8.8.8.8:8080' }))
44
- assert_equal Fluent::Plugin::ServiceDiscovery::Service.new(:srv, '127.0.0.1', 8081, 'service1.example.com', 10, false, '', '', nil), sdf.services[0]
45
- assert_equal Fluent::Plugin::ServiceDiscovery::Service.new(:srv, '127.0.0.1', 8082, 'service2.example.com', 20, false, '', '', nil), sdf.services[1]
46
- end
47
-
48
- test 'target follows RFC2782' do
49
- sdf = Fluent::Plugin::SrvServiceDiscovery.new
50
- mock = flexmock('dns_resolver', getaddress: '127.0.0.1')
51
- .should_receive(:getresources).with("_service1._tcp.example.com", Resolv::DNS::Resource::IN::SRV)
52
- .and_return([SRV_RECORD1, SRV_RECORD2])
53
- .mock
54
-
55
- mock(Resolv::DNS).new { mock }
56
- sdf.configure(config_element('service_discovery', '', { 'service' => 'service1', 'hostname' => 'example.com' }))
57
- assert_equal Fluent::Plugin::ServiceDiscovery::Service.new(:srv, '127.0.0.1', 8081, 'service1.example.com', 10, false, '', '', nil), sdf.services[0]
58
- assert_equal Fluent::Plugin::ServiceDiscovery::Service.new(:srv, '127.0.0.1', 8082, 'service2.example.com', 20, false, '', '', nil), sdf.services[1]
59
- end
60
-
61
- test 'can change protocol' do
62
- sdf = Fluent::Plugin::SrvServiceDiscovery.new
63
- mock = flexmock('dns_resolver', getaddress: '127.0.0.1')
64
- .should_receive(:getresources).with("_service1._udp.example.com", Resolv::DNS::Resource::IN::SRV)
65
- .and_return([SRV_RECORD1, SRV_RECORD2])
66
- .mock
67
-
68
- mock(Resolv::DNS).new { mock }
69
- sdf.configure(config_element('service_discovery', '', { 'service' => 'service1', 'hostname' => 'example.com', 'proto' => 'udp' }))
70
- assert_equal Fluent::Plugin::ServiceDiscovery::Service.new(:srv, '127.0.0.1', 8081, 'service1.example.com', 10, false, '', '', nil), sdf.services[0]
71
- assert_equal Fluent::Plugin::ServiceDiscovery::Service.new(:srv, '127.0.0.1', 8082, 'service2.example.com', 20, false, '', '', nil), sdf.services[1]
72
- end
73
-
74
- test 'can set password, username, password' do
75
- sdf = Fluent::Plugin::SrvServiceDiscovery.new
76
- mock(Resolv::DNS).new { flexmock('dns_resolver', getresources: [SRV_RECORD2, SRV_RECORD1], getaddress: '127.0.0.1') }
77
-
78
- sdf.configure(config_element('service_discovery', '', { 'service' => 'service1', 'hostname' => 'example.com', 'shared_key' => 'key', 'username' => 'user', 'password' => 'pass' }))
79
- assert_equal Fluent::Plugin::ServiceDiscovery::Service.new(:srv, '127.0.0.1', 8081, 'service1.example.com', 10, false, 'user', 'pass', 'key'), sdf.services[0]
80
- assert_equal Fluent::Plugin::ServiceDiscovery::Service.new(:srv, '127.0.0.1', 8082, 'service2.example.com', 20, false, 'user', 'pass', 'key'), sdf.services[1]
81
- end
82
- end
83
-
84
- sub_test_case '#start' do
85
- module TestTimerEventHelperWrapper
86
- # easy to control statsevent
87
- def timer_execute(_name, _interval, &block)
88
- @test_timer_event_helper_wrapper_context = Fiber.new do
89
- loop do
90
- block.call
91
-
92
- if Fiber.yield == :finish
93
- break
94
- end
95
- end
96
- end
97
-
98
- resume
99
- end
100
-
101
- def resume
102
- @test_timer_event_helper_wrapper_context.resume(:resume)
103
- end
104
-
105
- def shutdown
106
- super
107
-
108
- if @test_timer_event_helper_wrapper_context
109
- @test_timer_event_helper_wrapper_context.resume(:finish)
110
- end
111
-
112
- end
113
- end
114
-
115
- setup do
116
- sds = Fluent::Plugin::SrvServiceDiscovery.new
117
- @sd_srv = sds
118
- end
119
-
120
- teardown do
121
- if @sd_srv
122
- @sd_srv.stop unless @sd_srv.stopped?
123
- @sd_srv.before_shutdown unless @sd_srv.before_shutdown?
124
- @sd_srv.shutdown unless @sd_srv.shutdown?
125
- @sd_srv.after_shutdown unless @sd_srv.after_shutdown?
126
- @sd_srv.close unless @sd_srv.closed?
127
- @sd_srv.terminate unless @sd_srv.terminated?
128
- end
129
- end
130
-
131
- test 'Skip if srv record is not updated' do
132
- @sd_srv.extend(TestTimerEventHelperWrapper)
133
- mock(Resolv::DNS).new { flexmock('dns_resolver', getresources: [SRV_RECORD2, SRV_RECORD1], getaddress: '127.0.0.1') }
134
- @sd_srv.configure(config_element('service_discovery', '', { 'service' => 'service1', 'hostname' => 'example.com' }))
135
- queue = []
136
-
137
- @sd_srv.start(queue)
138
- assert_empty queue
139
-
140
- @sd_srv.resume
141
- assert_empty queue
142
- end
143
-
144
- test 'Skip if DNS resolver raise an error' do
145
- @sd_srv.extend(TestTimerEventHelperWrapper)
146
- mock = flexmock('dns_resolver', getaddress: '127.0.0.1')
147
- .should_receive(:getresources)
148
- .and_return([SRV_RECORD1, SRV_RECORD2])
149
- .and_return { raise 'some error' } # for start
150
- .and_return { raise 'some error' } # for resume
151
- .mock
152
-
153
- mock(Resolv::DNS).new { mock }
154
- @sd_srv.configure(config_element('service_discovery', '', { 'service' => 'service1', 'hostname' => 'example.com' }))
155
- queue = []
156
-
157
- @sd_srv.start(queue)
158
- assert_empty queue
159
-
160
- @sd_srv.resume
161
- assert_empty queue
162
- end
163
-
164
- test 'if service is updated, service_in and service_out event happen' do
165
- @sd_srv.extend(TestTimerEventHelperWrapper)
166
- mock = flexmock('dns_resolver', getaddress: '127.0.0.1')
167
- .should_receive(:getresources)
168
- .and_return([SRV_RECORD1])
169
- .and_return([SRV_RECORD2])
170
- .mock
171
-
172
- mock(Resolv::DNS).new { mock }
173
- @sd_srv.configure(config_element('service_discovery', '', { 'service' => 'service1', 'hostname' => 'example.com', 'dns_lookup' => false }))
174
- queue = []
175
-
176
- @sd_srv.start(queue)
177
- join = queue.shift
178
- drain = queue.shift
179
- assert_equal Fluent::Plugin::ServiceDiscovery::SERVICE_IN, join.type
180
- assert_equal 8082, join.service.port
181
- assert_equal 'service2.example.com', join.service.host
182
-
183
- assert_equal Fluent::Plugin::ServiceDiscovery::SERVICE_OUT, drain.type
184
- assert_equal 8081, drain.service.port
185
- assert_equal 'service1.example.com', drain.service.host
186
- end
187
-
188
- test 'if service is deleted, service_out event happens' do
189
- @sd_srv.extend(TestTimerEventHelperWrapper)
190
- mock = flexmock('dns_resolver', getaddress: '127.0.0.1')
191
- .should_receive(:getresources)
192
- .and_return([SRV_RECORD1, SRV_RECORD2])
193
- .and_return([SRV_RECORD2])
194
- .mock
195
-
196
- mock(Resolv::DNS).new { mock }
197
- @sd_srv.configure(config_element('service_discovery', '', { 'service' => 'service1', 'hostname' => 'example.com', 'dns_lookup' => false }))
198
- queue = []
199
-
200
- @sd_srv.start(queue)
201
-
202
- assert_equal 1, queue.size
203
- drain = queue.shift
204
- assert_equal Fluent::Plugin::ServiceDiscovery::SERVICE_OUT, drain.type
205
- assert_equal 8081, drain.service.port
206
- assert_equal 'service1.example.com', drain.service.host
207
- end
208
-
209
- test 'if new service is added, service_in event happens' do
210
- @sd_srv.extend(TestTimerEventHelperWrapper)
211
- mock = flexmock('dns_resolver', getaddress: '127.0.0.1')
212
- .should_receive(:getresources)
213
- .and_return([SRV_RECORD2])
214
- .and_return([SRV_RECORD1, SRV_RECORD2])
215
- .mock
216
-
217
- mock(Resolv::DNS).new { mock }
218
- @sd_srv.configure(config_element('service_discovery', '', { 'service' => 'service1', 'hostname' => 'example.com', 'dns_lookup' => false }))
219
- queue = []
220
-
221
- @sd_srv.start(queue)
222
-
223
- assert_equal 1, queue.size
224
- join = queue.shift
225
- assert_equal Fluent::Plugin::ServiceDiscovery::SERVICE_IN, join.type
226
- assert_equal 8081, join.service.port
227
- assert_equal 'service1.example.com', join.service.host
228
- end
229
- end
230
- end