# test/plugin/test_filter_your_own.rb
require 'fluent/plugin/test/driver/filter'
require 'fluent/plugin/filter_your_own'
class YourOwnFilterTest < Test::Unit::TestCase
Fluent::Test.setup # this is required to setup router and others
# default configuration for tests
def create_driver(conf = CONFIG)
Fluent::Test::Driver::Filter.new(Fluent::Plugin::YourOwnFilter).configure(conf)
def filter(config, messages)
d = create_driver(config)
d.run(default_tag: 'input.access') do
messages.each do |message|
sub_test_case 'configured with invalid configuration' do
test 'empty configuration' do
assert_raise(Fluent::ConfigError) do
test 'param1 should reject too short string' do
assert_raise(Fluent::ConfigError) do
sub_test_case 'plugin will add some fields' do
test 'add hostname to record' do
{ 'message' => 'This is test message' }
{ 'message' => 'This is test message', 'hostname' => 'example.com' }
filtered_records = filter(conf, messages)
assert_equal(expected, filtered_records)