require 'helper' require 'fluent/test' class RoundRobinOutputTest < Test::Unit::TestCase def setup Fluent::Test.setup end CONFIG = %[ type test name c0 type test name c1 type test name c2 ] CONFIG_WITH_WEIGHT = %[ type test name c0 weight 3 type test name c1 weight 3 type test name c2 ] def create_driver(conf = CONFIG) Fluent::Test::OutputTestDriver.new(Fluent::RoundRobinOutput).configure(conf) end def test_configure d = create_driver outputs = d.instance.outputs assert_equal 3, outputs.size assert_equal Fluent::TestOutput, outputs[0].class assert_equal Fluent::TestOutput, outputs[1].class assert_equal Fluent::TestOutput, outputs[2].class assert_equal "c0", outputs[0].name assert_equal "c1", outputs[1].name assert_equal "c2", outputs[2].name weights = d.instance.weights assert_equal 3, weights.size assert_equal 1, weights[0] assert_equal 1, weights[1] assert_equal 1, weights[2] d = create_driver(CONFIG_WITH_WEIGHT) outputs = d.instance.outputs assert_equal 3, outputs.size assert_equal Fluent::TestOutput, outputs[0].class assert_equal Fluent::TestOutput, outputs[1].class assert_equal Fluent::TestOutput, outputs[2].class assert_equal "c0", outputs[0].name assert_equal "c1", outputs[1].name assert_equal "c2", outputs[2].name weights = d.instance.weights assert_equal 3, weights.size assert_equal 3, weights[0] assert_equal 3, weights[1] assert_equal 1, weights[2] end def test_emit d = create_driver time = Time.parse("2011-01-02 13:14:15 UTC").to_i d.run do d.emit({"a"=>1}, time) d.emit({"a"=>2}, time) d.emit({"a"=>3}, time) d.emit({"a"=>4}, time) end os = d.instance.outputs assert_equal [ [time, {"a"=>1}], [time, {"a"=>4}], ], os[0].events assert_equal [ [time, {"a"=>2}], ], os[1].events assert_equal [ [time, {"a"=>3}], ], os[2].events end def test_emit_weighted d = create_driver(CONFIG_WITH_WEIGHT) time = Time.parse("2011-01-02 13:14:15 UTC").to_i d.run do 14.times do |i| d.emit({"a"=>i}, time) end end os = d.instance.outputs assert_equal 6, os[0].events.size # weight=3 assert_equal 6, os[1].events.size # weight=3 assert_equal 2, os[2].events.size # weight=1 end end