Sha256: e5d6713bf7a1acd1f6b814e593fd457e5eb70d145f97ae12687350f2693c1f18

Contents?: true

Size: 1.59 KB

Versions: 1

Compression:

Stored size: 1.59 KB

Contents

require 'fluent/load'
require 'fluent/test'
require 'socket'
require 'plugin/out_test'
require 'stringio'

class DummyFluentd
  def initialize
    output.emits.clear rescue nil
  end

  WAIT = ENV['WAIT'] ? ENV['WAIT'].to_f : 0.1

  def wait_transfer
    sleep WAIT
  end

  def port
    return @port if @port
    @port = 60001
    loop do
      begin
        TCPServer.open('localhost', @port).close
        break
      rescue Errno::EADDRINUSE
        @port += 1
      end
    end
    @port
  end

  def output
    sleep 0.0001 # next tick
    if Fluent::Engine.respond_to?(:match)
      Fluent::Engine.match('logger-test').output
    else
      Fluent::Engine.root_agent.event_router.match('logger-test')
    end
  end

  def queue
    queue = []
    output.emits.each {|tag, time, record|
      queue << [tag, record]
    }
    queue
  end

  def startup
    config = Fluent::Config.parse(<<EOF, '(logger-spec)', '(logger-spec-dir)', true)
<source>
  type forward
  port #{port}
</source>
<match logger-test.**>
  type test
</match>
EOF
    Fluent::Test.setup
    Fluent::Engine.run_configure(config)
    @coolio_default_loop = nil
    @thread = Thread.new {
      @coolio_default_loop = Coolio::Loop.default
      Fluent::Engine.run
    }
    wait_transfer
  end

  def shutdown
    @coolio_default_loop.stop rescue nil
    begin
      Fluent::Engine.stop
    rescue => e
      # for v0.12, calling stop may cause "loop not running" by internal default loop
      if e.message == "loop not running"
        Fluent::Engine.send :shutdown
      end
    end
    @thread.join
    @coolio_default_loop = @thread = nil
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fluent-logger-0.6.1 spec/support/dummy_fluentd.rb