Sha256: c66c3bca32acc891bbe24030d22a31efa7d3130484199ed030662b14b4843570

Contents?: true

Size: 805 Bytes

Versions: 2

Compression:

Stored size: 805 Bytes

Contents

require 'fluq'

module FluQ::Testing
  extend self
  EXCEPTION_TRACKER = ->ex { FluQ::Testing.exceptions.push(ex) }

  def wait_until(opts = {}, &block)
    tick = opts[:tick] || 0.01
    max  = opts[:max]  || (tick * 50)
    Timeout.timeout(max) { sleep(tick) until block.call }
  rescue Timeout::Error
  end

  def exceptions
    @exceptions ||= []
  end

  def track_exceptions!(logger = FluQ.logger)
    return if logger.exception_handlers.include?(EXCEPTION_TRACKER)
    logger.exception_handler(&EXCEPTION_TRACKER)
  end

end

class FluQ::Handler::Test < FluQ::Handler::Base
  attr_reader :events

  def initialize(*)
    super
    @events = []
  end

  def on_events(events)
    raise RuntimeError, "Test Failure!" if events.any? {|e| e.tag == "error.event" }
    @events.concat events
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fluq-0.7.5 lib/fluq/testing.rb
fluq-0.7.3 lib/fluq/testing.rb