fluentd 1.16.5-x64-mingw32 → 1.17.1-x64-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 (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,112 +0,0 @@
1
- require_relative '../../helper'
2
- require 'flexmock/test_unit'
3
-
4
- require 'fluent/plugin/out_forward'
5
- require 'fluent/plugin/out_forward/handshake_protocol'
6
- require 'fluent/plugin/out_forward/connection_manager'
7
-
8
- class HandshakeProtocolTest < Test::Unit::TestCase
9
- sub_test_case '#invok when helo state' do
10
- test 'sends PING message and change state to pingpong' do
11
- hostname = 'hostname'
12
- handshake = Fluent::Plugin::ForwardOutput::HandshakeProtocol.new(log: $log, hostname: hostname, shared_key: 'shared_key', password: nil, username: nil)
13
- ri = Fluent::Plugin::ForwardOutput::ConnectionManager::RequestInfo.new(:helo)
14
-
15
- sock = StringIO.new('')
16
- handshake.invoke(sock, ri, ['HELO', {}])
17
-
18
- assert_equal(ri.state, :pingpong)
19
- Fluent::MessagePackFactory.msgpack_unpacker.feed_each(sock.string) do |ping|
20
- assert_equal(ping.size, 6)
21
- assert_equal(ping[0], 'PING')
22
- assert_equal(ping[1], hostname)
23
- assert(ping[2].is_a?(String)) # content is hashed value
24
- assert(ping[3].is_a?(String)) # content is hashed value
25
- assert_equal(ping[4], '')
26
- assert_equal(ping[5], '')
27
- end
28
- end
29
-
30
- test 'returns PING message with username if auth exists' do
31
- hostname = 'hostname'
32
- username = 'username'
33
- pass = 'pass'
34
- handshake = Fluent::Plugin::ForwardOutput::HandshakeProtocol.new(log: $log, hostname: hostname, shared_key: 'shared_key', password: pass, username: username)
35
- ri = Fluent::Plugin::ForwardOutput::ConnectionManager::RequestInfo.new(:helo)
36
-
37
- sock = StringIO.new('')
38
- handshake.invoke(sock, ri, ['HELO', { 'auth' => 'auth' }])
39
-
40
- assert_equal(ri.state, :pingpong)
41
- Fluent::MessagePackFactory.msgpack_unpacker.feed_each(sock.string) do |ping|
42
- assert_equal(ping.size, 6)
43
- assert_equal(ping[0], 'PING')
44
- assert_equal(ping[1], hostname)
45
- assert(ping[2].is_a?(String)) # content is hashed value
46
- assert(ping[3].is_a?(String)) # content is hashed value
47
- assert_equal(ping[4], username)
48
- assert_not_equal(ping[5], pass) # should be hashed
49
- end
50
- end
51
-
52
- data(
53
- lack_of_elem: ['HELO'],
54
- wrong_message: ['HELLO!', {}],
55
- )
56
- test 'raises an error when message is' do |msg|
57
- handshake = Fluent::Plugin::ForwardOutput::HandshakeProtocol.new(log: $log, hostname: 'hostname', shared_key: 'shared_key', password: nil, username: nil)
58
- ri = Fluent::Plugin::ForwardOutput::ConnectionManager::RequestInfo.new(:helo)
59
-
60
- sock = StringIO.new('')
61
- assert_raise(Fluent::Plugin::ForwardOutput::HeloError) do
62
- handshake.invoke(sock, ri, msg)
63
- end
64
-
65
- assert_equal(ri.state, :helo)
66
- end
67
- end
68
-
69
- sub_test_case '#invok when pingpong state' do
70
- test 'sends PING message and change state to pingpong' do
71
- handshake = Fluent::Plugin::ForwardOutput::HandshakeProtocol.new(log: $log, hostname: 'hostname', shared_key: 'shared_key', password: nil, username: nil)
72
- handshake.instance_variable_set(:@shared_key_salt, 'ce1897b0d3dbd76b90d7fb96010dcac3') # to fix salt
73
-
74
- ri = Fluent::Plugin::ForwardOutput::ConnectionManager::RequestInfo.new(:pingpong, '', '')
75
- handshake.invoke(
76
- '',
77
- ri,
78
- # 40a3.... = Digest::SHA512.new.update('ce1897b0d3dbd76b90d7fb96010dcac3').update('client_hostname').update('').update('shared_key').hexdigest
79
- ['PONG', true, '', 'client_hostname', '40a3c5943cc6256e0c5dcf176e97db3826b0909698c330dc8e53d15af63efb47e030d113130255dd6e7ced5176d2999cc2e02a44852d45152503af317b73b33f']
80
- )
81
- assert_equal(ri.state, :established)
82
- end
83
-
84
- test 'raises an error when password and username are nil if auth exists' do
85
- handshake = Fluent::Plugin::ForwardOutput::HandshakeProtocol.new(log: $log, hostname: 'hostname', shared_key: 'shared_key', password: nil, username: nil)
86
- ri = Fluent::Plugin::ForwardOutput::ConnectionManager::RequestInfo.new(:helo)
87
-
88
- assert_raise(Fluent::Plugin::ForwardOutput::PingpongError.new('username and password are required')) do
89
- handshake.invoke('', ri, ['HELO', { 'auth' => 'auth' }])
90
- end
91
- end
92
-
93
- data(
94
- lack_of_elem: ['PONG', true, '', 'client_hostname'],
95
- wrong_message: ['WRONG_PONG', true, '', 'client_hostname', '40a3c5943cc6256e0c5dcf176e97db3826b0909698c330dc8e53d15af63efb47e030d113130255dd6e7ced5176d2999cc2e02a44852d45152503af317b73b33f'],
96
- error_by_server: ['PONG', false, 'error', 'client_hostname', '40a3c5943cc6256e0c5dcf176e97db3826b0909698c330dc8e53d15af63efb47e030d113130255dd6e7ced5176d2999cc2e02a44852d45152503af317b73b33f'],
97
- same_hostname_as_server: ['PONG', true, '', 'hostname', '40a3c5943cc6256e0c5dcf176e97db3826b0909698c330dc8e53d15af63efb47e030d113130255dd6e7ced5176d2999cc2e02a44852d45152503af317b73b33f'],
98
- wrong_key: ['PONG', true, '', 'hostname', 'wrong_key'],
99
- )
100
- test 'raises an error when message is' do |msg|
101
- handshake = Fluent::Plugin::ForwardOutput::HandshakeProtocol.new(log: $log, hostname: 'hostname', shared_key: 'shared_key', password: '', username: '')
102
- handshake.instance_variable_set(:@shared_key_salt, 'ce1897b0d3dbd76b90d7fb96010dcac3') # to fix salt
103
-
104
- ri = Fluent::Plugin::ForwardOutput::ConnectionManager::RequestInfo.new(:pingpong, '', '')
105
- assert_raise(Fluent::Plugin::ForwardOutput::PingpongError) do
106
- handshake.invoke('', ri, msg)
107
- end
108
-
109
- assert_equal(ri.state, :pingpong)
110
- end
111
- end
112
- end
@@ -1,106 +0,0 @@
1
- require_relative '../../helper'
2
- require 'flexmock/test_unit'
3
-
4
- require 'fluent/plugin/out_forward/load_balancer'
5
-
6
- class LoadBalancerTest < Test::Unit::TestCase
7
- sub_test_case 'select_healthy_node' do
8
- test 'select healthy node' do
9
- lb = Fluent::Plugin::ForwardOutput::LoadBalancer.new($log)
10
- n1 = flexmock('node', :'standby?' => false, :'available?' => false, weight: 1)
11
- n2 = flexmock('node', :'standby?' => false, :'available?' => true, weight: 1)
12
-
13
- lb.rebuild_weight_array([n1, n2])
14
- lb.select_healthy_node do |node|
15
- assert_equal(node, n2)
16
- end
17
-
18
- lb.select_healthy_node do |node|
19
- assert_equal(node, n2)
20
- end
21
- end
22
-
23
- test 'call like round robin' do
24
- lb = Fluent::Plugin::ForwardOutput::LoadBalancer.new($log)
25
- n1 = flexmock('node', :'standby?' => false, :'available?' => true, weight: 1)
26
- n2 = flexmock('node', :'standby?' => false, :'available?' => true, weight: 1)
27
-
28
- lb.rebuild_weight_array([n1, n2])
29
-
30
- lb.select_healthy_node do |node|
31
- # to handle random choice
32
- if node == n1
33
- lb.select_healthy_node do |node|
34
- assert_equal(node, n2)
35
- end
36
-
37
- lb.select_healthy_node do |node|
38
- assert_equal(node, n1)
39
- end
40
- else
41
- lb.select_healthy_node do |node|
42
- assert_equal(node, n1)
43
- end
44
-
45
- lb.select_healthy_node do |node|
46
- assert_equal(node, n2)
47
- end
48
- end
49
- end
50
- end
51
-
52
- test 'call like round robin without weight=0 node' do
53
- lb = Fluent::Plugin::ForwardOutput::LoadBalancer.new($log)
54
- n1 = flexmock('node', :'standby?' => false, :'available?' => true, weight: 1)
55
- n2 = flexmock('node', :'standby?' => false, :'available?' => true, weight: 1)
56
- n3 = flexmock('node', :'standby?' => false, :'available?' => true, weight: 0)
57
-
58
- lb.rebuild_weight_array([n1, n2, n3])
59
-
60
- lb.select_healthy_node do |node|
61
- # to handle random choice
62
- if node == n1
63
- lb.select_healthy_node do |node|
64
- assert_equal(node, n2)
65
- end
66
-
67
- lb.select_healthy_node do |node|
68
- assert_equal(node, n1)
69
- end
70
-
71
- lb.select_healthy_node do |node|
72
- assert_equal(node, n2)
73
- end
74
- else
75
- lb.select_healthy_node do |node|
76
- assert_equal(node, n1)
77
- end
78
-
79
- lb.select_healthy_node do |node|
80
- assert_equal(node, n2)
81
- end
82
-
83
- lb.select_healthy_node do |node|
84
- assert_equal(node, n1)
85
- end
86
- end
87
- end
88
- end
89
-
90
- test 'raise an error if all node are unavialble' do
91
- lb = Fluent::Plugin::ForwardOutput::LoadBalancer.new($log)
92
- lb.rebuild_weight_array([flexmock('node', :'standby?' => false, :'available?' => false, weight: 1)])
93
- assert_raise(Fluent::Plugin::ForwardOutput::NoNodesAvailable) do
94
- lb.select_healthy_node
95
- end
96
- end
97
-
98
- test 'it regards weight=0 node as unavialble' do
99
- lb = Fluent::Plugin::ForwardOutput::LoadBalancer.new($log)
100
- lb.rebuild_weight_array([flexmock('node', :'standby?' => false, :'available?' => true, weight: 0)])
101
- assert_raise(Fluent::Plugin::ForwardOutput::NoNodesAvailable) do
102
- lb.select_healthy_node
103
- end
104
- end
105
- end
106
- end
@@ -1,174 +0,0 @@
1
- require_relative '../../helper'
2
-
3
- require 'fluent/plugin/out_forward/socket_cache'
4
- require 'timecop'
5
-
6
- class SocketCacheTest < Test::Unit::TestCase
7
- sub_test_case 'checkout_or' do
8
- test 'when given key does not exist' do
9
- c = Fluent::Plugin::ForwardOutput::SocketCache.new(10, $log)
10
- sock = mock!.open { 'socket' }.subject
11
- assert_equal('socket', c.checkout_or('key') { sock.open })
12
- end
13
-
14
- test 'when given key exists' do
15
- c = Fluent::Plugin::ForwardOutput::SocketCache.new(10, $log)
16
- socket = 'socket'
17
- assert_equal(socket, c.checkout_or('key') { socket })
18
- c.checkin(socket)
19
-
20
- sock = dont_allow(mock!).open
21
- assert_equal(socket, c.checkout_or('key') { sock.open })
22
- end
23
-
24
- test 'when given key exists but used by other' do
25
- c = Fluent::Plugin::ForwardOutput::SocketCache.new(10, $log)
26
- assert_equal('sock', c.checkout_or('key') { 'sock' })
27
-
28
- new_sock = 'new sock'
29
- sock = mock!.open { new_sock }.subject
30
- assert_equal(new_sock, c.checkout_or('key') { sock.open })
31
- end
32
-
33
- test "when given key's value was expired" do
34
- c = Fluent::Plugin::ForwardOutput::SocketCache.new(0, $log)
35
- assert_equal('sock', c.checkout_or('key') { 'sock' })
36
-
37
- new_sock = 'new sock'
38
- sock = mock!.open { new_sock }.subject
39
- assert_equal(new_sock, c.checkout_or('key') { sock.open })
40
- end
41
-
42
- test 'reuse same hash object after calling purge_obsolete_socks' do
43
- c = Fluent::Plugin::ForwardOutput::SocketCache.new(10, $log)
44
- c.checkout_or('key') { 'socket' }
45
- c.purge_obsolete_socks
46
-
47
- assert_nothing_raised(NoMethodError) do
48
- c.checkout_or('key') { 'new socket' }
49
- end
50
- end
51
- end
52
-
53
- sub_test_case 'checkin' do
54
- test 'when value exists' do
55
- c = Fluent::Plugin::ForwardOutput::SocketCache.new(10, $log)
56
- socket = 'socket'
57
- c.checkout_or('key') { socket }
58
- c.checkin(socket)
59
-
60
- assert_equal(socket, c.instance_variable_get(:@available_sockets)['key'].first.sock)
61
- assert_equal(1, c.instance_variable_get(:@available_sockets)['key'].size)
62
- assert_equal(0, c.instance_variable_get(:@inflight_sockets).size)
63
- end
64
-
65
- test 'when value does not exist' do
66
- c = Fluent::Plugin::ForwardOutput::SocketCache.new(10, $log)
67
- c.checkout_or('key') { 'sock' }
68
- c.checkin('other sock')
69
-
70
- assert_equal(0, c.instance_variable_get(:@available_sockets)['key'].size)
71
- assert_equal(1, c.instance_variable_get(:@inflight_sockets).size)
72
- end
73
- end
74
-
75
- test 'revoke' do
76
- c = Fluent::Plugin::ForwardOutput::SocketCache.new(10, $log)
77
- socket = 'socket'
78
- c.checkout_or('key') { socket }
79
- c.revoke(socket)
80
-
81
- assert_equal(1, c.instance_variable_get(:@inactive_sockets).size)
82
- assert_equal(0, c.instance_variable_get(:@inflight_sockets).size)
83
- assert_equal(0, c.instance_variable_get(:@available_sockets)['key'].size)
84
-
85
- sock = mock!.open { 1 }.subject
86
- assert_equal(1, c.checkout_or('key') { sock.open })
87
- end
88
-
89
- sub_test_case 'clear' do
90
- test 'when value is in available_sockets' do
91
- c = Fluent::Plugin::ForwardOutput::SocketCache.new(10, $log)
92
- m = mock!.close { 'closed' }.subject
93
- m2 = mock!.close { 'closed' }.subject
94
- m3 = mock!.close { 'closed' }.subject
95
- c.checkout_or('key') { m }
96
- c.revoke(m)
97
- c.checkout_or('key') { m2 }
98
- c.checkin(m2)
99
- c.checkout_or('key2') { m3 }
100
-
101
- assert_equal(1, c.instance_variable_get(:@inflight_sockets).size)
102
- assert_equal(1, c.instance_variable_get(:@available_sockets)['key'].size)
103
- assert_equal(1, c.instance_variable_get(:@inactive_sockets).size)
104
-
105
- c.clear
106
- assert_equal(0, c.instance_variable_get(:@inflight_sockets).size)
107
- assert_equal(0, c.instance_variable_get(:@available_sockets)['key'].size)
108
- assert_equal(0, c.instance_variable_get(:@inactive_sockets).size)
109
- end
110
- end
111
-
112
- sub_test_case 'purge_obsolete_socks' do
113
- def teardown
114
- Timecop.return
115
- end
116
-
117
- test 'delete key in inactive_socks' do
118
- c = Fluent::Plugin::ForwardOutput::SocketCache.new(10, $log)
119
- sock = mock!.close { 'closed' }.subject
120
- c.checkout_or('key') { sock }
121
- c.revoke(sock)
122
- assert_false(c.instance_variable_get(:@inactive_sockets).empty?)
123
-
124
- c.purge_obsolete_socks
125
- assert_true(c.instance_variable_get(:@inactive_sockets).empty?)
126
- end
127
-
128
- test 'move key from available_sockets to inactive_sockets' do
129
- Timecop.freeze(Time.parse('2016-04-13 14:00:00 +0900'))
130
-
131
- c = Fluent::Plugin::ForwardOutput::SocketCache.new(10, $log)
132
- sock = mock!.close { 'closed' }.subject
133
- sock2 = dont_allow(mock!).close
134
- stub(sock).inspect
135
- stub(sock2).inspect
136
-
137
- c.checkout_or('key') { sock }
138
- c.checkin(sock)
139
-
140
- # wait timeout
141
- Timecop.freeze(Time.parse('2016-04-13 14:00:11 +0900'))
142
- c.checkout_or('key') { sock2 }
143
-
144
- assert_equal(1, c.instance_variable_get(:@inflight_sockets).size)
145
- assert_equal(sock2, c.instance_variable_get(:@inflight_sockets).values.first.sock)
146
-
147
- c.purge_obsolete_socks
148
-
149
- assert_equal(1, c.instance_variable_get(:@inflight_sockets).size)
150
- assert_equal(sock2, c.instance_variable_get(:@inflight_sockets).values.first.sock)
151
- end
152
-
153
- test 'should not purge just after checkin and purge after timeout' do
154
- Timecop.freeze(Time.parse('2016-04-13 14:00:00 +0900'))
155
-
156
- c = Fluent::Plugin::ForwardOutput::SocketCache.new(10, $log)
157
- sock = dont_allow(mock!).close
158
- stub(sock).inspect
159
- c.checkout_or('key') { sock }
160
-
161
- Timecop.freeze(Time.parse('2016-04-13 14:00:11 +0900'))
162
- c.checkin(sock)
163
-
164
- assert_equal(1, c.instance_variable_get(:@available_sockets).size)
165
- c.purge_obsolete_socks
166
- assert_equal(1, c.instance_variable_get(:@available_sockets).size)
167
-
168
- Timecop.freeze(Time.parse('2016-04-13 14:00:22 +0900'))
169
- assert_equal(1, c.instance_variable_get(:@available_sockets).size)
170
- c.purge_obsolete_socks
171
- assert_equal(0, c.instance_variable_get(:@available_sockets).size)
172
- end
173
- end
174
- end
@@ -1,131 +0,0 @@
1
- require_relative '../helper'
2
- require 'fluent/plugin/bare_output'
3
- require 'fluent/event'
4
-
5
- module FluentPluginBareOutputTest
6
- class DummyPlugin < Fluent::Plugin::BareOutput
7
- attr_reader :store
8
- def initialize
9
- super
10
- @store = []
11
- end
12
- def process(tag, es)
13
- es.each do |time, record|
14
- @store << [tag, time, record]
15
- end
16
- end
17
- end
18
- end
19
-
20
- class BareOutputTest < Test::Unit::TestCase
21
- setup do
22
- Fluent::Test.setup
23
- @p = FluentPluginBareOutputTest::DummyPlugin.new
24
- end
25
-
26
- test 'has healthy lifecycle' do
27
- assert !@p.configured?
28
- @p.configure(config_element())
29
- assert @p.configured?
30
-
31
- assert !@p.started?
32
- @p.start
33
- assert @p.start
34
-
35
- assert !@p.stopped?
36
- @p.stop
37
- assert @p.stopped?
38
-
39
- assert !@p.before_shutdown?
40
- @p.before_shutdown
41
- assert @p.before_shutdown?
42
-
43
- assert !@p.shutdown?
44
- @p.shutdown
45
- assert @p.shutdown?
46
-
47
- assert !@p.after_shutdown?
48
- @p.after_shutdown
49
- assert @p.after_shutdown?
50
-
51
- assert !@p.closed?
52
- @p.close
53
- assert @p.closed?
54
-
55
- assert !@p.terminated?
56
- @p.terminate
57
- assert @p.terminated?
58
- end
59
-
60
- test 'has plugin_id automatically generated' do
61
- assert @p.respond_to?(:plugin_id_configured?)
62
- assert @p.respond_to?(:plugin_id)
63
-
64
- @p.configure(config_element())
65
-
66
- assert !@p.plugin_id_configured?
67
- assert @p.plugin_id
68
- assert{ @p.plugin_id != 'mytest' }
69
- end
70
-
71
- test 'has plugin_id manually configured' do
72
- @p.configure(config_element('ROOT', '', {'@id' => 'mytest'}))
73
- assert @p.plugin_id_configured?
74
- assert_equal 'mytest', @p.plugin_id
75
- end
76
-
77
- test 'has plugin logger' do
78
- assert @p.respond_to?(:log)
79
- assert @p.log
80
-
81
- # default logger
82
- original_logger = @p.log
83
-
84
- @p.configure(config_element('ROOT', '', {'@log_level' => 'debug'}))
85
-
86
- assert(@p.log.object_id != original_logger.object_id)
87
- assert_equal Fluent::Log::LEVEL_DEBUG, @p.log.level
88
- end
89
-
90
- test 'can load plugin helpers' do
91
- assert_nothing_raised do
92
- class FluentPluginBareOutputTest::DummyPlugin2 < Fluent::Plugin::BareOutput
93
- helpers :storage
94
- end
95
- end
96
- end
97
-
98
- test 'can use metrics plugins and fallback methods' do
99
- @p.configure(config_element('ROOT', '', {'@log_level' => 'debug'}))
100
-
101
- %w[num_errors_metrics emit_count_metrics emit_size_metrics emit_records_metrics].each do |metric_name|
102
- assert_true @p.instance_variable_get(:"@#{metric_name}").is_a?(Fluent::Plugin::Metrics)
103
- end
104
-
105
- assert_equal 0, @p.num_errors
106
- assert_equal 0, @p.emit_count
107
- assert_equal 0, @p.emit_size
108
- assert_equal 0, @p.emit_records
109
- end
110
-
111
- test 'can get input event stream to write' do
112
- @p.configure(config_element('ROOT'))
113
- @p.start
114
-
115
- es1 = Fluent::OneEventStream.new(event_time('2016-05-21 18:37:31 +0900'), {'k1' => 'v1'})
116
- es2 = Fluent::ArrayEventStream.new([
117
- [event_time('2016-05-21 18:38:33 +0900'), {'k2' => 'v2'}],
118
- [event_time('2016-05-21 18:39:10 +0900'), {'k3' => 'v3'}],
119
- ])
120
- @p.emit_events('mytest1', es1)
121
- @p.emit_events('mytest2', es2)
122
-
123
- all_events = [
124
- ['mytest1', event_time('2016-05-21 18:37:31 +0900'), {'k1' => 'v1'}],
125
- ['mytest2', event_time('2016-05-21 18:38:33 +0900'), {'k2' => 'v2'}],
126
- ['mytest2', event_time('2016-05-21 18:39:10 +0900'), {'k3' => 'v3'}],
127
- ]
128
-
129
- assert_equal all_events, @p.store
130
- end
131
- end