Skip to content

Commit

Permalink
test: don't use deprecated way of capturing logs
Browse files Browse the repository at this point in the history
`capture_log` is for older versions as well as the following.

https://github.com/fluent/fluentd/blob/6c649d189b5cf65ccfce58f6952a31b24c775e72/lib/fluent/test/helpers.rb#L110-L122

We should use `Driver::logs` instead.

In addition, this fixes the following points.

* Update `helper.rb` by the default plugin template, since it was
  updated very long ago and there is no need to be different from
  the template.
* Assert the entire log message (without the timestamp and the
  log level), since this is easier to see the diff of the expected
  and the actual when the assertion fails.

Signed-off-by: Daijiro Fukuda <[email protected]>
  • Loading branch information
daipom committed Apr 5, 2023
1 parent 5081e88 commit 55b4cf4
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 37 deletions.
37 changes: 12 additions & 25 deletions test/helper.rb
Original file line number Diff line number Diff line change
@@ -1,28 +1,15 @@
require 'rubygems'
require 'bundler'

require 'test/unit'
require 'test/unit/rr'

$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
$LOAD_PATH.unshift(File.dirname(__FILE__))

require 'fluent/test'

class Test::Unit::TestCase
def capture_log(log)
if defined?(Fluent::Test::TestLogger) and log.is_a?(Fluent::Test::TestLogger) # v0.14
yield
log.out.logs.join("\n")
else
begin
tmp = log.out
log.out = StringIO.new
yield
return log.out.string
ensure
log.out = tmp
end
$LOAD_PATH.unshift(File.expand_path("../../", __FILE__))
require "test-unit"
require "fluent/test"
require "fluent/test/helpers"

Test::Unit::TestCase.include(Fluent::Test::Helpers)
Test::Unit::TestCase.extend(Fluent::Test::Helpers)

module Helper
def normalize_logs(logs)
logs.collect do |log|
log.gsub(/\A\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} [-+]\d{4} \[info\]: /, "")
end
end
end
12 changes: 6 additions & 6 deletions test/plugin/test_filter_flowcounter_simple.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

class FlowCounterSimpleFilterTest < Test::Unit::TestCase
include Fluent
include Helper

def setup
Fluent::Test.setup
Expand All @@ -25,9 +26,10 @@ def test_filter
msgs << {'message'=> 'b' * 100}
end
d = create_driver
filtered, out = filter(d, msgs)
filtered, logs = filter(d, msgs)
assert_equal msgs, filtered
assert { out.include?("count:20") }
assert_equal(["plugin:filter_flowcounter_simple\tcount:20\tindicator:num\tunit:second\n"],
normalize_logs(logs))
end

private
Expand All @@ -37,10 +39,8 @@ def filter(d, msgs)
msgs.each {|msg|
d.feed(msg)
}
}
out = capture_log(d.instance.log) do
d.instance.flush_emit(0)
end
[d.filtered_records, out]
}
[d.filtered_records, d.logs]
end
end
17 changes: 11 additions & 6 deletions test/plugin/test_out_flowcounter_simple.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
require 'fluent/plugin/out_flowcounter_simple'

class FlowCounterSimpleOutputTest < Test::Unit::TestCase
include Helper

def setup
Fluent::Test.setup
end
Expand Down Expand Up @@ -38,9 +40,10 @@ def test_num
d1.feed({'message'=> 'b' * 100})
d1.feed({'message'=> 'c' * 100})
end
d1.instance.flush_emit(60)
end
out = capture_log(d1.instance.log) { d1.instance.flush_emit(60) }
assert { out.include?("count:30") }
assert_equal(["plugin:out_flowcounter_simple\tcount:30\tindicator:num\tunit:second\n"],
normalize_logs(d1.logs))
end

def test_byte
Expand All @@ -51,9 +54,10 @@ def test_byte
d1.feed({'message'=> 'b' * 100})
d1.feed({'message'=> 'c' * 100})
end
d1.instance.flush_emit(60)
end
out = capture_log(d1.instance.log) { d1.instance.flush_emit(60) }
assert { out =~ /count:\d+\tindicator:byte\tunit:second/ }
assert_equal(["plugin:out_flowcounter_simple\tcount:3330\tindicator:byte\tunit:second\n"],
normalize_logs(d1.logs))
end

def test_comment
Expand All @@ -64,8 +68,9 @@ def test_comment
d1.feed({'message'=> 'b' * 100})
d1.feed({'message'=> 'c' * 100})
end
d1.instance.flush_emit(60)
end
out = capture_log(d1.instance.log) { d1.instance.flush_emit(60) }
assert { out.include?("comment:foobar") }
assert_equal(["plugin:out_flowcounter_simple\tcount:3\tindicator:num\tunit:second\tcomment:foobar\n"],
normalize_logs(d1.logs))
end
end

0 comments on commit 55b4cf4

Please sign in to comment.