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,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