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,563 +0,0 @@
1
- require_relative '../helper'
2
- require 'fluent/counter/client'
3
- require 'fluent/counter/store'
4
- require 'fluent/counter/server'
5
- require 'flexmock/test_unit'
6
- require 'timecop'
7
-
8
- class CounterClientTest < ::Test::Unit::TestCase
9
- TEST_ADDR = '127.0.0.1'
10
- TEST_PORT = '8277'
11
-
12
- setup do
13
- # timecop isn't compatible with EventTime
14
- t = Time.parse('2016-09-22 16:59:59 +0900')
15
- Timecop.freeze(t)
16
- @now = Fluent::EventTime.now
17
-
18
- @options = {
19
- addr: TEST_ADDR,
20
- port: TEST_PORT,
21
- log: $log,
22
- }
23
-
24
- @server_name = 'server1'
25
- @scope = "worker1\tplugin1"
26
- @loop = Coolio::Loop.new
27
- @server = Fluent::Counter::Server.new(@server_name, @options).start
28
- @client = Fluent::Counter::Client.new(@loop, @options).start
29
- end
30
-
31
- teardown do
32
- Timecop.return
33
- @server.stop
34
- @client.stop
35
- end
36
-
37
- test 'Callable API' do
38
- [:establish, :init, :delete, :inc, :reset, :get].each do |m|
39
- assert_true @client.respond_to?(m)
40
- end
41
- end
42
-
43
- sub_test_case 'on_message' do
44
- setup do
45
- @future = flexmock('future')
46
- @client.instance_variable_set(:@responses, { 1 => @future })
47
- end
48
-
49
- test 'call a set method to a corresponding object' do
50
- @future.should_receive(:set).once.with(Hash)
51
- @client.send(:on_message, { 'id' => 1 })
52
- end
53
-
54
- test "output a warning log when passed id doesn't exist" do
55
- data = { 'id' => 2 }
56
- mock($log).warn("Receiving missing id data: #{data}")
57
- @client.send(:on_message, data)
58
- end
59
- end
60
-
61
- def extract_value_from_server(server, scope, name)
62
- store = server.instance_variable_get(:@store).instance_variable_get(:@storage).instance_variable_get(:@store)
63
- key = Fluent::Counter::Store.gen_key(scope, name)
64
- store[key]
65
- end
66
-
67
- def travel(sec)
68
- # Since Timecop.travel() causes test failures on Windows/AppVeyor by inducing
69
- # rounding errors to Time.now, we need to use Timecop.freeze() instead.
70
- Timecop.freeze(Time.now + sec)
71
- end
72
-
73
- sub_test_case 'establish' do
74
- test 'establish a scope' do
75
- @client.establish(@scope)
76
- assert_equal "#{@server_name}\t#{@scope}", @client.instance_variable_get(:@scope)
77
- end
78
-
79
- data(
80
- empty: '',
81
- invalid_string: '_scope',
82
- invalid_string2: 'Scope'
83
- )
84
- test 'raise an error when passed scope is invalid' do |scope|
85
- assert_raise do
86
- @client.establish(scope)
87
- end
88
- end
89
- end
90
-
91
- sub_test_case 'init' do
92
- setup do
93
- @client.instance_variable_set(:@scope, @scope)
94
- end
95
-
96
- data(
97
- numeric_type: [
98
- { name: 'key', reset_interval: 20, type: 'numeric' }, 0
99
- ],
100
- float_type: [
101
- { name: 'key', reset_interval: 20, type: 'float' }, 0.0
102
- ],
103
- integer_type: [
104
- { name: 'key', reset_interval: 20, type: 'integer' }, 0
105
- ]
106
- )
107
- test 'create a value' do |(param, initial_value)|
108
- assert_nil extract_value_from_server(@server, @scope, param[:name])
109
-
110
- response = @client.init(param).get
111
- data = response.data.first
112
-
113
- assert_nil response.errors
114
- assert_equal param[:name], data['name']
115
- assert_equal param[:reset_interval], data['reset_interval']
116
- assert_equal param[:type], data['type']
117
- assert_equal initial_value, data['current']
118
- assert_equal initial_value, data['total']
119
-
120
- v = extract_value_from_server(@server, @scope, param[:name])
121
- assert_equal param[:name], v['name']
122
- assert_equal param[:reset_interval], v['reset_interval']
123
- assert_equal param[:type], v['type']
124
- assert_equal initial_value, v['total']
125
- assert_equal initial_value, v['current']
126
- end
127
-
128
- test 'raise an error when @scope is nil' do
129
- @client.instance_variable_set(:@scope, nil)
130
- assert_raise 'Call `establish` method to get a `scope` before calling this method' do
131
- params = { name: 'key1', reset_interval: 10 }
132
- @client.init(params).get
133
- end
134
- end
135
-
136
- data(
137
- already_exist_key: [
138
- { name: 'key1', reset_interval: 10 },
139
- { 'code' => 'invalid_params', 'message' => "worker1\tplugin1\tkey1 already exists in counter" }
140
- ],
141
- missing_name: [
142
- { reset_interval: 10 },
143
- { 'code' => 'invalid_params', 'message' => '`name` is required' },
144
- ],
145
- missing_reset_interval: [
146
- { name: 'key' },
147
- { 'code' => 'invalid_params', 'message' => '`reset_interval` is required' },
148
- ],
149
- invalid_name: [
150
- { name: '\tkey' },
151
- { 'code' => 'invalid_params', 'message' => '`name` is the invalid format' }
152
- ]
153
- )
154
- test 'return an error object' do |(param, expected_error)|
155
- params = { name: 'key1', reset_interval: 10 }
156
- @client.init(params).get
157
- response = @client.init(param).get
158
- errors = response.errors.first
159
-
160
- assert_empty response.data
161
- assert_equal expected_error, errors
162
-
163
- assert_raise {
164
- @client.init(param).wait
165
- }
166
- end
167
-
168
- test 'return an existing value when passed key already exists and ignore option is true' do
169
- params = { name: 'key1', reset_interval: 10 }
170
- res1 = @client.init(params).get
171
- res2 = nil
172
- assert_nothing_raised do
173
- res2 = @client.init({ name: 'key1', reset_interval: 10 }, options: { ignore: true }).get
174
- end
175
- assert_equal res1.data, res2.data
176
- end
177
-
178
- test 'return an error object and data object' do
179
- param = { name: 'key1', reset_interval: 10 }
180
- param2 = { name: 'key2', reset_interval: 10 }
181
- @client.init(param).get
182
-
183
- response = @client.init([param2, param]).get
184
- data = response.data.first
185
- error = response.errors.first
186
-
187
- assert_equal param2[:name], data['name']
188
- assert_equal param2[:reset_interval], data['reset_interval']
189
-
190
- assert_equal 'invalid_params', error['code']
191
- assert_equal "#{@scope}\t#{param[:name]} already exists in counter", error['message']
192
- end
193
-
194
- test 'return a future object when async call' do
195
- param = { name: 'key', reset_interval: 10 }
196
- r = @client.init(param)
197
- assert_true r.is_a?(Fluent::Counter::Future)
198
- assert_nil r.errors
199
- end
200
- end
201
-
202
- sub_test_case 'delete' do
203
- setup do
204
- @client.instance_variable_set(:@scope, @scope)
205
- @name = 'key'
206
- @key = Fluent::Counter::Store.gen_key(@scope, @name)
207
-
208
- @init_obj = { name: @name, reset_interval: 20, type: 'numeric' }
209
- @client.init(@init_obj).get
210
- end
211
-
212
- test 'delete a value' do
213
- assert extract_value_from_server(@server, @scope, @name)
214
-
215
- response = @client.delete(@name).get
216
- v = response.data.first
217
-
218
- assert_nil response.errors
219
- assert_equal @init_obj[:name], v['name']
220
- assert_equal @init_obj[:type], v['type']
221
- assert_equal @init_obj[:reset_interval], v['reset_interval']
222
-
223
- assert_nil extract_value_from_server(@server, @scope, @name)
224
- end
225
-
226
- test 'raise an error when @scope is nil' do
227
- @client.instance_variable_set(:@scope, nil)
228
- assert_raise 'Call `establish` method to get a `scope` before calling this method' do
229
- @client.delete(@name).get
230
- end
231
- end
232
-
233
- data(
234
- key_not_found: [
235
- 'key2',
236
- { 'code' => 'unknown_key', 'message' => "`worker1\tplugin1\tkey2` doesn't exist in counter" }
237
- ],
238
- invalid_key: [
239
- '\tkey',
240
- { 'code' => 'invalid_params', 'message' => '`key` is the invalid format' }
241
- ]
242
- )
243
- test 'return an error object' do |(param, expected_error)|
244
- response = @client.delete(param).get
245
- errors = response.errors.first
246
-
247
- assert_empty response.data
248
- assert_equal expected_error, errors
249
- end
250
-
251
- test 'return an error object and data object' do
252
- unknown_name = 'key2'
253
-
254
- response = @client.delete(@name, unknown_name).get
255
- data = response.data.first
256
- error = response.errors.first
257
-
258
- assert_equal @name, data['name']
259
- assert_equal @init_obj[:reset_interval], data['reset_interval']
260
-
261
- assert_equal 'unknown_key', error['code']
262
- assert_equal "`#{@scope}\t#{unknown_name}` doesn't exist in counter", error['message']
263
-
264
- assert_nil extract_value_from_server(@server, @scope, @name)
265
- end
266
-
267
- test 'return a future object when async call' do
268
- r = @client.delete(@name)
269
- assert_true r.is_a?(Fluent::Counter::Future)
270
- assert_nil r.errors
271
- end
272
- end
273
-
274
- sub_test_case 'inc' do
275
- setup do
276
- @client.instance_variable_set(:@scope, @scope)
277
- @name = 'key'
278
- @key = Fluent::Counter::Store.gen_key(@scope, @name)
279
-
280
- @init_obj = { name: @name, reset_interval: 20, type: 'numeric' }
281
- @client.init(@init_obj).get
282
- end
283
-
284
- test 'increment a value' do
285
- v = extract_value_from_server(@server, @scope, @name)
286
- assert_equal 0, v['total']
287
- assert_equal 0, v['current']
288
-
289
- travel(1)
290
- inc_obj = { name: @name, value: 10 }
291
- @client.inc(inc_obj).get
292
-
293
- v = extract_value_from_server(@server, @scope, @name)
294
- assert_equal inc_obj[:value], v['total']
295
- assert_equal inc_obj[:value], v['current']
296
- assert_equal (@now + 1), Fluent::EventTime.new(*v['last_modified_at'])
297
- end
298
-
299
- test 'create and increment a value when force option is true' do
300
- name = 'new_key'
301
- param = { name: name, value: 11, reset_interval: 1 }
302
-
303
- assert_nil extract_value_from_server(@server, @scope, name)
304
-
305
- @client.inc(param, options: { force: true }).get
306
-
307
- v = extract_value_from_server(@server, @scope, name)
308
- assert v
309
- assert_equal param[:name], v['name']
310
- assert_equal 1, v['reset_interval']
311
- assert_equal param[:value], v['current']
312
- assert_equal param[:value], v['total']
313
- end
314
-
315
- test 'raise an error when @scope is nil' do
316
- @client.instance_variable_set(:@scope, nil)
317
- assert_raise 'Call `establish` method to get a `scope` before calling this method' do
318
- params = { name: 'name', value: 1 }
319
- @client.inc(params).get
320
- end
321
- end
322
-
323
- data(
324
- not_exist_key: [
325
- { name: 'key2', value: 10 },
326
- { 'code' => 'unknown_key', 'message' => "`worker1\tplugin1\tkey2` doesn't exist in counter" }
327
- ],
328
- missing_name: [
329
- { value: 10 },
330
- { 'code' => 'invalid_params', 'message' => '`name` is required' },
331
- ],
332
- missing_value: [
333
- { name: 'key' },
334
- { 'code' => 'invalid_params', 'message' => '`value` is required' },
335
- ],
336
- invalid_name: [
337
- { name: '\tkey' },
338
- { 'code' => 'invalid_params', 'message' => '`name` is the invalid format' }
339
- ]
340
- )
341
- test 'return an error object' do |(param, expected_error)|
342
- response = @client.inc(param).get
343
- errors = response.errors.first
344
- assert_empty response.data
345
- assert_equal expected_error, errors
346
- end
347
-
348
- test 'return an error object and data object' do
349
- parmas = [
350
- { name: @name, value: 10 },
351
- { name: 'unknown_key', value: 9 },
352
- ]
353
- response = @client.inc(parmas).get
354
-
355
- data = response.data.first
356
- error = response.errors.first
357
-
358
- assert_equal @name, data['name']
359
- assert_equal 10, data['current']
360
- assert_equal 10, data['total']
361
-
362
- assert_equal 'unknown_key', error['code']
363
- assert_equal "`#{@scope}\tunknown_key` doesn't exist in counter", error['message']
364
- end
365
-
366
- test 'return a future object when async call' do
367
- param = { name: 'key', value: 10 }
368
- r = @client.inc(param)
369
- assert_true r.is_a?(Fluent::Counter::Future)
370
- assert_nil r.errors
371
- end
372
- end
373
-
374
- sub_test_case 'get' do
375
- setup do
376
- @client.instance_variable_set(:@scope, @scope)
377
- @name = 'key'
378
-
379
- @init_obj = { name: @name, reset_interval: 20, type: 'numeric' }
380
- @client.init(@init_obj).get
381
- end
382
-
383
- test 'get a value' do
384
- v1 = extract_value_from_server(@server, @scope, @name)
385
- v2 = @client.get(@name).data.first
386
-
387
- assert_equal v1['name'], v2['name']
388
- assert_equal v1['current'], v2['current']
389
- assert_equal v1['total'], v2['total']
390
- assert_equal v1['type'], v2['type']
391
- end
392
-
393
- test 'raise an error when @scope is nil' do
394
- @client.instance_variable_set(:@scope, nil)
395
- assert_raise 'Call `establish` method to get a `scope` before calling this method' do
396
- @client.get(@name).get
397
- end
398
- end
399
-
400
- data(
401
- key_not_found: [
402
- 'key2',
403
- { 'code' => 'unknown_key', 'message' => "`worker1\tplugin1\tkey2` doesn't exist in counter" }
404
- ],
405
- invalid_key: [
406
- '\tkey',
407
- { 'code' => 'invalid_params', 'message' => '`key` is the invalid format' }
408
- ]
409
- )
410
- test 'return an error object' do |(param, expected_error)|
411
- response = @client.get(param).get
412
- errors = response.errors.first
413
- assert_empty response.data
414
- assert_equal expected_error, errors
415
- end
416
-
417
- test 'return an error object and data object' do
418
- unknown_name = 'key2'
419
-
420
- response = @client.get(@name, unknown_name).get
421
- data = response.data.first
422
- error = response.errors.first
423
-
424
- assert_equal @name, data['name']
425
- assert_equal @init_obj[:reset_interval], data['reset_interval']
426
-
427
- assert_equal 'unknown_key', error['code']
428
- assert_equal "`#{@scope}\t#{unknown_name}` doesn't exist in counter", error['message']
429
- end
430
-
431
- test 'return a future object when async call' do
432
- r = @client.get(@name)
433
- assert_true r.is_a?(Fluent::Counter::Future)
434
- assert_nil r.errors
435
- end
436
- end
437
-
438
- sub_test_case 'reset' do
439
- setup do
440
- @client.instance_variable_set(:@scope, @scope)
441
- @name = 'key'
442
- @key = Fluent::Counter::Store.gen_key(@scope, @name)
443
-
444
- @init_obj = { name: @name, reset_interval: 5, type: 'numeric' }
445
- @client.init(@init_obj).get
446
- @inc_obj = { name: @name, value: 10 }
447
- @client.inc(@inc_obj).get
448
- end
449
-
450
- test 'reset a value after `reset_interval` passed' do
451
- v1 = extract_value_from_server(@server, @scope, @name)
452
- assert_equal @inc_obj[:value], v1['total']
453
- assert_equal @inc_obj[:value], v1['current']
454
- assert_equal @now, Fluent::EventTime.new(*v1['last_reset_at'])
455
-
456
- travel_sec = 6 # greater than reset_interval
457
- travel(travel_sec)
458
-
459
- v2 = @client.reset(@name).get
460
- data = v2.data.first
461
-
462
- c = data['counter_data']
463
-
464
- assert_equal travel_sec, data['elapsed_time']
465
- assert_true data['success']
466
-
467
- assert_equal @inc_obj[:value], c['current']
468
- assert_equal @inc_obj[:value], c['total']
469
- assert_equal @now, c['last_reset_at']
470
-
471
- v1 = extract_value_from_server(@server, @scope, @name)
472
- assert_equal 0, v1['current']
473
- assert_equal @inc_obj[:value], v1['total']
474
- assert_equal (@now + travel_sec), Fluent::EventTime.new(*v1['last_reset_at'])
475
- assert_equal (@now + travel_sec), Fluent::EventTime.new(*v1['last_modified_at'])
476
- end
477
-
478
- test 'areturn a value object before `reset_interval` passed' do
479
- v1 = extract_value_from_server(@server, @scope, @name)
480
- assert_equal @inc_obj[:value], v1['total']
481
- assert_equal @inc_obj[:value], v1['current']
482
- assert_equal @now, Fluent::EventTime.new(*v1['last_reset_at'])
483
-
484
- travel_sec = 4 # less than reset_interval
485
- travel(travel_sec)
486
-
487
- v2 = @client.reset(@name).get
488
- data = v2.data.first
489
-
490
- c = data['counter_data']
491
-
492
- assert_equal travel_sec, data['elapsed_time']
493
- assert_equal false, data['success']
494
-
495
- assert_equal @inc_obj[:value], c['current']
496
- assert_equal @inc_obj[:value], c['total']
497
- assert_equal @now, c['last_reset_at']
498
-
499
- v1 = extract_value_from_server(@server, @scope, @name)
500
- assert_equal @inc_obj[:value], v1['current']
501
- assert_equal @inc_obj[:value], v1['total']
502
- assert_equal @now, Fluent::EventTime.new(*v1['last_reset_at'])
503
- end
504
-
505
- test 'raise an error when @scope is nil' do
506
- @client.instance_variable_set(:@scope, nil)
507
- assert_raise 'Call `establish` method to get a `scope` before calling this method' do
508
- @client.reset(@name).get
509
- end
510
- end
511
-
512
- data(
513
- key_not_found: [
514
- 'key2',
515
- { 'code' => 'unknown_key', 'message' => "`worker1\tplugin1\tkey2` doesn't exist in counter" }
516
- ],
517
- invalid_key: [
518
- '\tkey',
519
- { 'code' => 'invalid_params', 'message' => '`key` is the invalid format' }
520
- ]
521
- )
522
- test 'return an error object' do |(param, expected_error)|
523
- response = @client.reset(param).get
524
- errors = response.errors.first
525
- assert_empty response.data
526
- assert_equal expected_error, errors
527
- end
528
-
529
- test 'return an error object and data object' do
530
- unknown_name = 'key2'
531
-
532
- travel_sec = 6 # greater than reset_interval
533
- travel(travel_sec)
534
-
535
- response = @client.reset(@name, unknown_name).get
536
- data = response.data.first
537
- error = response.errors.first
538
- counter = data['counter_data']
539
-
540
- assert_true data['success']
541
- assert_equal travel_sec, data['elapsed_time']
542
- assert_equal @name, counter['name']
543
- assert_equal @init_obj[:reset_interval], counter['reset_interval']
544
- assert_equal @inc_obj[:value], counter['total']
545
- assert_equal @inc_obj[:value], counter['current']
546
-
547
- assert_equal 'unknown_key', error['code']
548
- assert_equal "`#{@scope}\t#{unknown_name}` doesn't exist in counter", error['message']
549
-
550
- v1 = extract_value_from_server(@server, @scope, @name)
551
- assert_equal 0, v1['current']
552
- assert_equal @inc_obj[:value], v1['total']
553
- assert_equal (@now + travel_sec), Fluent::EventTime.new(*v1['last_reset_at'])
554
- assert_equal (@now + travel_sec), Fluent::EventTime.new(*v1['last_modified_at'])
555
- end
556
-
557
- test 'return a future object when async call' do
558
- r = @client.reset(@name)
559
- assert_true r.is_a?(Fluent::Counter::Future)
560
- assert_nil r.errors
561
- end
562
- end
563
- end
@@ -1,44 +0,0 @@
1
- require_relative '../helper'
2
- require 'fluent/counter/error'
3
-
4
- class CounterErrorTest < ::Test::Unit::TestCase
5
- setup do
6
- @message = 'error message'
7
- end
8
-
9
- test 'invalid_params' do
10
- error = Fluent::Counter::InvalidParams.new(@message)
11
- expected = { 'code' => 'invalid_params', 'message' => @message }
12
- assert_equal expected, error.to_hash
13
- end
14
-
15
- test 'unknown_key' do
16
- error = Fluent::Counter::UnknownKey.new(@message)
17
- expected = { 'code' => 'unknown_key', 'message' => @message }
18
- assert_equal expected, error.to_hash
19
- end
20
-
21
- test 'parse_error' do
22
- error = Fluent::Counter::ParseError.new(@message)
23
- expected = { 'code' => 'parse_error', 'message' => @message }
24
- assert_equal expected, error.to_hash
25
- end
26
-
27
- test 'method_not_found' do
28
- error = Fluent::Counter::MethodNotFound.new(@message)
29
- expected = { 'code' => 'method_not_found', 'message' => @message }
30
- assert_equal expected, error.to_hash
31
- end
32
-
33
- test 'invalid_request' do
34
- error = Fluent::Counter::InvalidRequest.new(@message)
35
- expected = { 'code' => 'invalid_request', 'message' => @message }
36
- assert_equal expected, error.to_hash
37
- end
38
-
39
- test 'internal_server_error' do
40
- error = Fluent::Counter::InternalServerError.new(@message)
41
- expected = { 'code' => 'internal_server_error', 'message' => @message }
42
- assert_equal expected, error.to_hash
43
- end
44
- end