fluent-plugin-kafka 0.15.2 → 0.16.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 866fb421d7097ccbac1bde2e279d9975bce4de086dab74609cadbe50429bb312
4
- data.tar.gz: 0e763fc4276177949f6cec2b4839ad5168892cd4d346d633f81449fdb8df84d7
3
+ metadata.gz: 1cc628766df718a6fff17debcf2cffdcc041419cb96c1c9b6ce1fee532807b58
4
+ data.tar.gz: 543ccbd91345f45ee75c3e5e84ef5b3414420a0e2557c76a40afc8e308d70735
5
5
  SHA512:
6
- metadata.gz: b41f5cb35d1c4dea3743e513b505e11f634dfcbc33e339f188f2ac4c2b710ed1357c00779e24873c5f4a0bdd5326f8c1a731b4f2a4c323dc6fde8b85bc78ef28
7
- data.tar.gz: df4061316f692fbe264b2344fd74f7ba1d15174bb91a617c09f5d9d3de6d50a5f0b6c8aa702ce9322d438ee6ed83b09cf620e71537e96e13db73882f01e291cb
6
+ metadata.gz: 7cb27a4fe28ccc0f31e36449046faf8d4d3389be7820f7cfce8f612aad84b3239234663a71b50523cb08a13e145f78fdc86e93cf9cec28d35d82765b96c9dddc
7
+ data.tar.gz: 98f52a5d84fb348178f9df6ede6592412ddccd43891c95e9d6937622bff8b02bb4cbb3231c7ca7d709a3ae6cdbfb90d3f00074eefe4cc0703379315098424809
@@ -0,0 +1,36 @@
1
+ name: linux
2
+ on:
3
+ - push
4
+ - pull_request
5
+ jobs:
6
+ build:
7
+ runs-on: ${{ matrix.os }}
8
+ strategy:
9
+ fail-fast: false
10
+ matrix:
11
+ ruby: [ '2.4', '2.5', '2.6', '2.7', '3.0' ]
12
+ os:
13
+ - ubuntu-latest
14
+ name: Ruby ${{ matrix.ruby }} unit testing on ${{ matrix.os }}
15
+ steps:
16
+ - uses: actions/checkout@v2
17
+ - uses: ruby/setup-ruby@v1
18
+ with:
19
+ ruby-version: ${{ matrix.ruby }}
20
+ - name: Install confluent-kafka
21
+ run: |
22
+ sudo apt install -V -y gnupg2 wget
23
+ wget https://packages.confluent.io/deb/6.0/archive.key
24
+ sudo gpg2 --homedir /tmp --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/confluent-archive-keyring.gpg --import archive.key
25
+ sudo chmod 644 /usr/share/keyrings/confluent-archive-keyring.gpg
26
+ sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/confluent-archive-keyring.gpg] https://packages.confluent.io/deb/6.0 stable main" > /etc/apt/sources.list.d/confluent.list'
27
+ sudo apt update
28
+ sudo apt install -y confluent-community-2.13 openjdk-11-jre netcat-openbsd
29
+ - name: unit testing
30
+ env:
31
+ CI: true
32
+ run: |
33
+ sudo ./ci/prepare-kafka-server.sh
34
+ gem install bundler rake
35
+ bundle install --jobs 4 --retry 3
36
+ bundle exec rake test
data/ChangeLog CHANGED
@@ -1,3 +1,22 @@
1
+ Release 0.16.3 - 2021/05/17
2
+ * in_kafka_group: Fix one more Ruby 3.0 keyword arguments issue
3
+
4
+ Release 0.16.2 - 2021/05/17
5
+ * in_kafka, in_kafka_group: Support Ruby 3.0 keyword arguments interop
6
+
7
+ Release 0.16.1 - 2021/04/14
8
+ * out_kafka/out_kafka_buffered: Support Ruby 3.0.0 keyword arguments interop
9
+ * kafka_plugin_util: Treat empty string in read_ssl_file as nil
10
+
11
+ Release 0.16.0 - 2021/01/25
12
+
13
+ * input: Add `tag_source` and `record_tag_key` parameters for using record field as tag
14
+ * in_kafka_group: Use NumericParser for floating point
15
+
16
+ Release 0.15.3 - 2020/12/08
17
+
18
+ * in_kafka: Fix `record_time_key` parameter not working
19
+
1
20
  Release 0.15.2 - 2020/09/30
2
21
 
3
22
  * input: Support 3rd party parser
@@ -28,6 +47,7 @@ Release 0.14.0 - 2020/08/07
28
47
  Release 0.13.1 - 2020/07/17
29
48
 
30
49
  * in_kafka_group: Support ssl_verify_hostname parameter
50
+ * in_kafka_group: Support regex based topics
31
51
  * out_kafka2/out_rdkafka2: Support topic parameter with placeholders
32
52
 
33
53
  Release 0.13.0 - 2020/03/09
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # fluent-plugin-kafka, a plugin for [Fluentd](http://fluentd.org)
2
2
 
3
- [![Build Status](https://travis-ci.org/fluent/fluent-plugin-kafka.svg?branch=master)](https://travis-ci.org/fluent/fluent-plugin-kafka)
3
+ [![GitHub Actions Status](https://github.com/fluent/fluent-plugin-kafka/actions/workflows/linux.yml/badge.svg)](https://github.com/fluent/fluent-plugin-kafka/actions/workflows/linux.yml)
4
+
4
5
 
5
6
  A fluentd plugin to both consume and produce data for Apache Kafka.
6
7
 
@@ -139,6 +140,8 @@ Consume events by kafka consumer group features..
139
140
 
140
141
  See also [ruby-kafka README](https://github.com/zendesk/ruby-kafka#consuming-messages-from-kafka) for more detailed documentation about ruby-kafka options.
141
142
 
143
+ `topics` supports regex pattern since v0.13.1. If you want to use regex pattern, use `/pattern/` like `/foo.*/`.
144
+
142
145
  Consuming topic name is used for event tag. So when the target topic name is `app_event`, the tag is `app_event`. If you want to modify tag, use `add_prefix` or `add_suffix` parameter. With `add_prefix kafka`, the tag is `kafka.app_event`.
143
146
 
144
147
  ### Input plugin (@type 'rdkafka_group', supports kafka consumer groups, uses rdkafka-ruby)
@@ -0,0 +1,33 @@
1
+ #!/bin/sh
2
+
3
+ export KAFKA_OPTS=-Dzookeeper.4lw.commands.whitelist=ruok
4
+ /usr/bin/zookeeper-server-start /etc/kafka/zookeeper.properties &
5
+ N_POLLING=30
6
+ n=1
7
+ while true ; do
8
+ sleep 1
9
+ status=$(echo ruok | nc localhost 2181)
10
+ if [ "$status" = "imok" ]; then
11
+ break
12
+ fi
13
+ n=$((n + 1))
14
+ if [ $n -ge $N_POLLING ]; then
15
+ echo "failed to get response from zookeeper-server"
16
+ exit 1
17
+ fi
18
+ done
19
+ /usr/bin/kafka-server-start /etc/kafka/server.properties &
20
+ n=1
21
+ while true ; do
22
+ sleep 1
23
+ status=$(/usr/bin/zookeeper-shell localhost:2181 ls /brokers/ids | sed -n 6p)
24
+ if [ "$status" = "[0]" ]; then
25
+ break
26
+ fi
27
+ n=$((n + 1))
28
+ if [ $n -ge $N_POLLING ]; then
29
+ echo "failed to get response from kafka-server"
30
+ exit 1
31
+ fi
32
+ done
33
+ /usr/bin/kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
@@ -13,7 +13,7 @@ Gem::Specification.new do |gem|
13
13
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
14
  gem.name = "fluent-plugin-kafka"
15
15
  gem.require_paths = ["lib"]
16
- gem.version = '0.15.2'
16
+ gem.version = '0.16.3'
17
17
  gem.required_ruby_version = ">= 2.1.0"
18
18
 
19
19
  gem.add_dependency "fluentd", [">= 0.10.58", "< 2"]
@@ -21,4 +21,5 @@ Gem::Specification.new do |gem|
21
21
  gem.add_dependency 'ruby-kafka', '>= 1.2.0', '< 2'
22
22
  gem.add_development_dependency "rake", ">= 0.9.2"
23
23
  gem.add_development_dependency "test-unit", ">= 3.0.8"
24
+ gem.add_development_dependency "webrick"
24
25
  end
@@ -31,6 +31,10 @@ class Fluent::KafkaInput < Fluent::Input
31
31
  config_param :add_suffix, :string, :default => nil,
32
32
  :desc => "tag suffix"
33
33
  config_param :add_offset_in_record, :bool, :default => false
34
+ config_param :tag_source, :enum, :list => [:topic, :record], :default => :topic,
35
+ :desc => "Source for the fluentd event tag"
36
+ config_param :record_tag_key, :string, :default => 'tag',
37
+ :desc => "Tag field when tag_source is 'record'"
34
38
 
35
39
  config_param :offset_zookeeper, :string, :default => nil
36
40
  config_param :offset_zk_root_node, :string, :default => '/fluent-plugin-kafka'
@@ -224,6 +228,9 @@ class Fluent::KafkaInput < Fluent::Input
224
228
  router,
225
229
  @kafka_message_key,
226
230
  @time_source,
231
+ @record_time_key,
232
+ @tag_source,
233
+ @record_tag_key,
227
234
  opt)
228
235
  }
229
236
  @topic_watchers.each {|tw|
@@ -248,7 +255,7 @@ class Fluent::KafkaInput < Fluent::Input
248
255
  end
249
256
 
250
257
  class TopicWatcher < Coolio::TimerWatcher
251
- def initialize(topic_entry, kafka, interval, parser, add_prefix, add_suffix, offset_manager, router, kafka_message_key, time_source, options={})
258
+ def initialize(topic_entry, kafka, interval, parser, add_prefix, add_suffix, offset_manager, router, kafka_message_key, time_source, record_time_key, tag_source, record_tag_key, options={})
252
259
  @topic_entry = topic_entry
253
260
  @kafka = kafka
254
261
  @callback = method(:consume)
@@ -260,6 +267,9 @@ class Fluent::KafkaInput < Fluent::Input
260
267
  @router = router
261
268
  @kafka_message_key = kafka_message_key
262
269
  @time_source = time_source
270
+ @record_time_key = record_time_key
271
+ @tag_source = tag_source
272
+ @record_tag_key = record_tag_key
263
273
 
264
274
  @next_offset = @topic_entry.offset
265
275
  if @topic_entry.offset == -1 && offset_manager
@@ -284,7 +294,7 @@ class Fluent::KafkaInput < Fluent::Input
284
294
  def consume
285
295
  offset = @next_offset
286
296
  @fetch_args[:offset] = offset
287
- messages = @kafka.fetch_messages(@fetch_args)
297
+ messages = @kafka.fetch_messages(**@fetch_args)
288
298
 
289
299
  return if messages.size.zero?
290
300
 
@@ -296,6 +306,11 @@ class Fluent::KafkaInput < Fluent::Input
296
306
  messages.each { |msg|
297
307
  begin
298
308
  record = @parser.call(msg, @topic_entry)
309
+ if @tag_source == :record
310
+ tag = record[@record_tag_key]
311
+ tag = @add_prefix + "." + tag if @add_prefix
312
+ tag = tag + "." + @add_suffix if @add_suffix
313
+ end
299
314
  case @time_source
300
315
  when :kafka
301
316
  record_time = Fluent::EventTime.from_time(msg.create_time)
@@ -36,6 +36,10 @@ class Fluent::KafkaGroupInput < Fluent::Input
36
36
  config_param :get_kafka_client_log, :bool, :default => false
37
37
  config_param :time_format, :string, :default => nil,
38
38
  :desc => "Time format to be used to parse 'time' field."
39
+ config_param :tag_source, :enum, :list => [:topic, :record], :default => :topic,
40
+ :desc => "Source for the fluentd event tag"
41
+ config_param :record_tag_key, :string, :default => 'tag',
42
+ :desc => "Tag field when tag_source is 'record'"
39
43
  config_param :kafka_message_key, :string, :default => nil,
40
44
  :desc => "Set kafka's message key to this field"
41
45
  config_param :connect_timeout, :integer, :default => nil,
@@ -138,6 +142,10 @@ class Fluent::KafkaGroupInput < Fluent::Input
138
142
  @time_parser = Fluent::TextParser::TimeParser.new(@time_format)
139
143
  end
140
144
  end
145
+
146
+ if @time_source == :record && defined?(Fluent::NumericTimeParser)
147
+ @float_numeric_parse = Fluent::NumericTimeParser.new(:float)
148
+ end
141
149
  end
142
150
 
143
151
  def setup_parser(conf)
@@ -209,7 +217,7 @@ class Fluent::KafkaGroupInput < Fluent::Input
209
217
  end
210
218
 
211
219
  def setup_consumer
212
- consumer = @kafka.consumer(@consumer_opts)
220
+ consumer = @kafka.consumer(**@consumer_opts)
213
221
  @topics.each { |topic|
214
222
  if m = /^\/(.+)\/$/.match(topic)
215
223
  topic_or_regex = Regexp.new(m[1])
@@ -244,49 +252,104 @@ class Fluent::KafkaGroupInput < Fluent::Input
244
252
  end
245
253
  end
246
254
 
247
- def run
248
- while @consumer
255
+ def process_batch_with_record_tag(batch)
256
+ es = {}
257
+ batch.messages.each { |msg|
249
258
  begin
250
- @consumer.each_batch(@fetch_opts) { |batch|
251
- es = Fluent::MultiEventStream.new
252
- tag = batch.topic
253
- tag = @add_prefix + "." + tag if @add_prefix
254
- tag = tag + "." + @add_suffix if @add_suffix
255
-
256
- batch.messages.each { |msg|
257
- begin
258
- record = @parser_proc.call(msg)
259
- case @time_source
260
- when :kafka
261
- record_time = Fluent::EventTime.from_time(msg.create_time)
262
- when :now
263
- record_time = Fluent::Engine.now
264
- when :record
265
- if @time_format
266
- record_time = @time_parser.parse(record[@record_time_key].to_s)
267
- else
268
- record_time = record[@record_time_key]
269
- end
270
- else
271
- log.fatal "BUG: invalid time_source: #{@time_source}"
272
- end
273
- if @kafka_message_key
274
- record[@kafka_message_key] = msg.key
275
- end
276
- if @add_headers
277
- msg.headers.each_pair { |k, v|
278
- record[k] = v
279
- }
280
- end
281
- es.add(record_time, record)
282
- rescue => e
283
- log.warn "parser error in #{batch.topic}/#{batch.partition}", :error => e.to_s, :value => msg.value, :offset => msg.offset
284
- log.debug_backtrace
285
- end
259
+ record = @parser_proc.call(msg)
260
+ tag = record[@record_tag_key]
261
+ tag = @add_prefix + "." + tag if @add_prefix
262
+ tag = tag + "." + @add_suffix if @add_suffix
263
+ es[tag] ||= Fluent::MultiEventStream.new
264
+ case @time_source
265
+ when :kafka
266
+ record_time = Fluent::EventTime.from_time(msg.create_time)
267
+ when :now
268
+ record_time = Fluent::Engine.now
269
+ when :record
270
+ if @time_format
271
+ record_time = @time_parser.parse(record[@record_time_key].to_s)
272
+ else
273
+ record_time = record[@record_time_key]
274
+ end
275
+ else
276
+ log.fatal "BUG: invalid time_source: #{@time_source}"
277
+ end
278
+ if @kafka_message_key
279
+ record[@kafka_message_key] = msg.key
280
+ end
281
+ if @add_headers
282
+ msg.headers.each_pair { |k, v|
283
+ record[k] = v
284
+ }
285
+ end
286
+ es[tag].add(record_time, record)
287
+ rescue => e
288
+ log.warn "parser error in #{batch.topic}/#{batch.partition}", :error => e.to_s, :value => msg.value, :offset => msg.offset
289
+ log.debug_backtrace
290
+ end
291
+ }
292
+
293
+ unless es.empty?
294
+ es.each { |tag,es|
295
+ emit_events(tag, es)
296
+ }
297
+ end
298
+ end
299
+
300
+ def process_batch(batch)
301
+ es = Fluent::MultiEventStream.new
302
+ tag = batch.topic
303
+ tag = @add_prefix + "." + tag if @add_prefix
304
+ tag = tag + "." + @add_suffix if @add_suffix
305
+
306
+ batch.messages.each { |msg|
307
+ begin
308
+ record = @parser_proc.call(msg)
309
+ case @time_source
310
+ when :kafka
311
+ record_time = Fluent::EventTime.from_time(msg.create_time)
312
+ when :now
313
+ record_time = Fluent::Engine.now
314
+ when :record
315
+ record_time = record[@record_time_key]
316
+
317
+ if @time_format
318
+ record_time = @time_parser.parse(record_time.to_s)
319
+ elsif record_time.is_a?(Float) && @float_numeric_parse
320
+ record_time = @float_numeric_parse.parse(record_time)
321
+ end
322
+ else
323
+ log.fatal "BUG: invalid time_source: #{@time_source}"
324
+ end
325
+ if @kafka_message_key
326
+ record[@kafka_message_key] = msg.key
327
+ end
328
+ if @add_headers
329
+ msg.headers.each_pair { |k, v|
330
+ record[k] = v
286
331
  }
332
+ end
333
+ es.add(record_time, record)
334
+ rescue => e
335
+ log.warn "parser error in #{batch.topic}/#{batch.partition}", :error => e.to_s, :value => msg.value, :offset => msg.offset
336
+ log.debug_backtrace
337
+ end
338
+ }
339
+
340
+ unless es.empty?
341
+ emit_events(tag, es)
342
+ end
343
+ end
287
344
 
288
- unless es.empty?
289
- emit_events(tag, es)
345
+ def run
346
+ while @consumer
347
+ begin
348
+ @consumer.each_batch(**@fetch_opts) { |batch|
349
+ if @tag_source == :record
350
+ process_batch_with_record_tag(batch)
351
+ else
352
+ process_batch(batch)
290
353
  end
291
354
  }
292
355
  rescue ForShutdown
@@ -33,7 +33,7 @@ module Fluent
33
33
  end
34
34
 
35
35
  def read_ssl_file(path)
36
- return nil if path.nil?
36
+ return nil if path.nil? || path.respond_to?(:strip) && path.strip.empty?
37
37
 
38
38
  if path.is_a?(Array)
39
39
  path.map { |fp| File.read(fp) }
@@ -215,7 +215,7 @@ DESC
215
215
  chain.next
216
216
 
217
217
  # out_kafka is mainly for testing so don't need the performance unlike out_kafka_buffered.
218
- producer = @kafka.producer(@producer_opts)
218
+ producer = @kafka.producer(**@producer_opts)
219
219
 
220
220
  es.each do |time, record|
221
221
  if @output_include_time
@@ -239,7 +239,7 @@ DESC
239
239
  @producers_mutex.synchronize {
240
240
  producer = @producers[Thread.current.object_id]
241
241
  unless producer
242
- producer = @kafka.producer(@producer_opts)
242
+ producer = @kafka.producer(**@producer_opts)
243
243
  @producers[Thread.current.object_id] = producer
244
244
  end
245
245
  producer
data/test/helper.rb CHANGED
@@ -22,6 +22,8 @@ unless ENV.has_key?('VERBOSE')
22
22
  end
23
23
 
24
24
  require 'fluent/plugin/out_kafka'
25
+ require 'fluent/plugin/in_kafka'
26
+ require 'fluent/plugin/in_kafka_group'
25
27
 
26
28
  class Test::Unit::TestCase
27
29
  end
@@ -0,0 +1,66 @@
1
+ require 'helper'
2
+ require 'fluent/test/driver/input'
3
+ require 'securerandom'
4
+
5
+ class KafkaInputTest < Test::Unit::TestCase
6
+ def setup
7
+ Fluent::Test.setup
8
+ end
9
+
10
+ TOPIC_NAME = "kafka-input-#{SecureRandom.uuid}"
11
+
12
+ CONFIG = %[
13
+ @type kafka
14
+ brokers localhost:9092
15
+ format text
16
+ @label @kafka
17
+ topics #{TOPIC_NAME}
18
+ ]
19
+
20
+ def create_driver(conf = CONFIG)
21
+ Fluent::Test::Driver::Input.new(Fluent::KafkaInput).configure(conf)
22
+ end
23
+
24
+
25
+ def test_configure
26
+ d = create_driver
27
+ assert_equal TOPIC_NAME, d.instance.topics
28
+ assert_equal 'text', d.instance.format
29
+ assert_equal 'localhost:9092', d.instance.brokers
30
+ end
31
+
32
+ def test_multi_worker_support
33
+ d = create_driver
34
+ assert_false d.instance.multi_workers_ready?
35
+ end
36
+
37
+ class ConsumeTest < self
38
+ def setup
39
+ @kafka = Kafka.new(["localhost:9092"], client_id: 'kafka')
40
+ @producer = @kafka.producer
41
+ end
42
+
43
+ def teardown
44
+ @kafka.delete_topic(TOPIC_NAME)
45
+ @kafka.close
46
+ end
47
+
48
+ def test_consume
49
+ conf = %[
50
+ @type kafka
51
+ brokers localhost:9092
52
+ format text
53
+ @label @kafka
54
+ topics #{TOPIC_NAME}
55
+ ]
56
+ d = create_driver
57
+
58
+ d.run(expect_records: 1, timeout: 10) do
59
+ @producer.produce("Hello, fluent-plugin-kafka!", topic: TOPIC_NAME)
60
+ @producer.deliver_messages
61
+ end
62
+ expected = {'message' => 'Hello, fluent-plugin-kafka!'}
63
+ assert_equal expected, d.events[0][2]
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,67 @@
1
+ require 'helper'
2
+ require 'fluent/test/driver/input'
3
+ require 'securerandom'
4
+
5
+ class KafkaGroupInputTest < Test::Unit::TestCase
6
+ def setup
7
+ Fluent::Test.setup
8
+ end
9
+
10
+ TOPIC_NAME = "kafka-input-#{SecureRandom.uuid}"
11
+
12
+ CONFIG = %[
13
+ @type kafka
14
+ brokers localhost:9092
15
+ consumer_group fluentd
16
+ format text
17
+ @label @kafka
18
+ topics #{TOPIC_NAME}
19
+ ]
20
+
21
+ def create_driver(conf = CONFIG)
22
+ Fluent::Test::Driver::Input.new(Fluent::KafkaGroupInput).configure(conf)
23
+ end
24
+
25
+
26
+ def test_configure
27
+ d = create_driver
28
+ assert_equal [TOPIC_NAME], d.instance.topics
29
+ assert_equal 'text', d.instance.format
30
+ assert_equal 'localhost:9092', d.instance.brokers
31
+ end
32
+
33
+ def test_multi_worker_support
34
+ d = create_driver
35
+ assert_true d.instance.multi_workers_ready?
36
+ end
37
+
38
+ class ConsumeTest < self
39
+ def setup
40
+ @kafka = Kafka.new(["localhost:9092"], client_id: 'kafka')
41
+ @producer = @kafka.producer
42
+ end
43
+
44
+ def teardown
45
+ @kafka.delete_topic(TOPIC_NAME)
46
+ @kafka.close
47
+ end
48
+
49
+ def test_consume
50
+ conf = %[
51
+ @type kafka
52
+ brokers localhost:9092
53
+ format text
54
+ @label @kafka
55
+ topics #{TOPIC_NAME}
56
+ ]
57
+ d = create_driver
58
+
59
+ d.run(expect_records: 1, timeout: 10) do
60
+ @producer.produce("Hello, fluent-plugin-kafka!", topic: TOPIC_NAME)
61
+ @producer.deliver_messages
62
+ end
63
+ expected = {'message' => 'Hello, fluent-plugin-kafka!'}
64
+ assert_equal expected, d.events[0][2]
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,38 @@
1
+ require 'helper'
2
+ require 'fluent/plugin/kafka_plugin_util'
3
+
4
+ class File
5
+ def File::read(path)
6
+ path
7
+ end
8
+ end
9
+
10
+ class KafkaPluginUtilTest < Test::Unit::TestCase
11
+
12
+ def self.config_param(name, type, options)
13
+ end
14
+ include Fluent::KafkaPluginUtil::SSLSettings
15
+
16
+ def config_param
17
+ end
18
+ def setup
19
+ Fluent::Test.setup
20
+ end
21
+
22
+ def test_read_ssl_file_when_nil
23
+ assert_equal(nil, read_ssl_file(nil))
24
+ end
25
+
26
+ def test_read_ssl_file_when_empty_string
27
+ assert_equal(nil, read_ssl_file(""))
28
+ end
29
+
30
+ def test_read_ssl_file_when_non_empty_path
31
+ assert_equal("path", read_ssl_file("path"))
32
+ end
33
+
34
+ def test_read_ssl_file_when_non_empty_array
35
+ assert_equal(["a","b"], read_ssl_file(["a","b"]))
36
+ end
37
+
38
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-kafka
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.2
4
+ version: 0.16.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hidemasa Togashi
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-09-30 00:00:00.000000000 Z
12
+ date: 2021-05-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fluentd
@@ -93,6 +93,20 @@ dependencies:
93
93
  - - ">="
94
94
  - !ruby/object:Gem::Version
95
95
  version: 3.0.8
96
+ - !ruby/object:Gem::Dependency
97
+ name: webrick
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
96
110
  description: Fluentd plugin for Apache Kafka > 0.8
97
111
  email:
98
112
  - togachiro@gmail.com
@@ -101,13 +115,14 @@ executables: []
101
115
  extensions: []
102
116
  extra_rdoc_files: []
103
117
  files:
118
+ - ".github/workflows/linux.yml"
104
119
  - ".gitignore"
105
- - ".travis.yml"
106
120
  - ChangeLog
107
121
  - Gemfile
108
122
  - LICENSE
109
123
  - README.md
110
124
  - Rakefile
125
+ - ci/prepare-kafka-server.sh
111
126
  - fluent-plugin-kafka.gemspec
112
127
  - lib/fluent/plugin/in_kafka.rb
113
128
  - lib/fluent/plugin/in_kafka_group.rb
@@ -120,6 +135,9 @@ files:
120
135
  - lib/fluent/plugin/out_rdkafka.rb
121
136
  - lib/fluent/plugin/out_rdkafka2.rb
122
137
  - test/helper.rb
138
+ - test/plugin/test_in_kafka.rb
139
+ - test/plugin/test_in_kafka_group.rb
140
+ - test/plugin/test_kafka_plugin_util.rb
123
141
  - test/plugin/test_out_kafka.rb
124
142
  homepage: https://github.com/fluent/fluent-plugin-kafka
125
143
  licenses:
@@ -140,10 +158,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
158
  - !ruby/object:Gem::Version
141
159
  version: '0'
142
160
  requirements: []
143
- rubygems_version: 3.0.3
161
+ rubygems_version: 3.2.5
144
162
  signing_key:
145
163
  specification_version: 4
146
164
  summary: Fluentd plugin for Apache Kafka > 0.8
147
165
  test_files:
148
166
  - test/helper.rb
167
+ - test/plugin/test_in_kafka.rb
168
+ - test/plugin/test_in_kafka_group.rb
169
+ - test/plugin/test_kafka_plugin_util.rb
149
170
  - test/plugin/test_out_kafka.rb
data/.travis.yml DELETED
@@ -1,21 +0,0 @@
1
- language: ruby
2
-
3
- rvm:
4
- - 2.1
5
- - 2.2
6
- - 2.3.1
7
- - 2.4.1
8
- - 2.5.0
9
- - ruby-head
10
-
11
- before_install:
12
- - gem update --system=2.7.8
13
- script:
14
- - bundle exec rake test
15
-
16
- sudo: false
17
-
18
- matrix:
19
- allow_failures:
20
- - rvm: ruby-head
21
-