class Fluent::Test::InputTestDriver
def emit_stream(tag, es)
def emit_stream(tag, es) @emit_streams << [tag, es.to_a] end
def emits
def emits all = [] @emit_streams.each {|tag,events| events.each {|time,record| all << [tag, time, record] } } all end
def events
def events all = [] @emit_streams.each {|tag,events| all.concat events } all end
def expect_emit(tag, time, record)
def expect_emit(tag, time, record) (@expects ||= []) << [tag, time, record] self end
def expected_emits
def expected_emits @expects ||= [] end
def initialize(klass, &block)
def initialize(klass, &block) super(klass, &block) @emit_streams = [] @expects = nil end
def records
def records all = [] @emit_streams.each {|tag,events| events.each {|time,record| all << record } } all end
def run(&block)
def run(&block) m = method(:emit_stream) super { Engine.define_singleton_method(:emit_stream) {|tag,es| m.call(tag, es) } block.call if block if @expects i = 0 @emit_streams.each {|tag,events| events.each {|time,record| assert_equal(@expects[i], [tag, time, record]) i += 1 } } assert_equal @expects.length, i end } self end