Sha256: 17bbde7560603392052c64c74dcff8300f7642a485360aef726acb516f0d0fd2

Contents?: true

Size: 1.1 KB

Versions: 120

Compression:

Stored size: 1.1 KB

Contents

module WaitForHelper
  # Wait for a condition to be met
  #
  # @example
  #   # Perform threaded operation
  #   wait_for("enough probe calls") { probe.calls >= 2 }
  #   # Assert on result
  #
  # @param name [String] The name of the condition to check. Used in the
  #   error when it fails.
  # @yield Assertion to check.
  # @yieldreturn [Boolean] True/False value that indicates if the condition
  #   is met.
  # @raise [StandardError] Raises error if the condition is not met after 5
  #   seconds, 5_000 tries.
  def wait_for(name)
    max_wait = 5_000
    i = 0
    error = nil
    while i < max_wait
      begin
        result = yield
        break if result
      rescue Exception => e # rubocop:disable Lint/RescueException
        # Capture error so we know if it exited with an error
        error = e
      ensure
        i += 1
        sleep 0.001
      end
    end

    return unless i >= max_wait

    error_message =
      ("\nError: #{error.class}: #{error.message}\n#{error.backtrace.join("\n")}" if error)
    raise "Waited 5 seconds for #{name} condition, but was not met.#{error_message}"
  end
end

Version data entries

120 entries across 120 versions & 1 rubygems

Version Path
appsignal-4.0.6-java spec/support/helpers/wait_for_helper.rb
appsignal-4.0.6 spec/support/helpers/wait_for_helper.rb
appsignal-4.0.5-java spec/support/helpers/wait_for_helper.rb
appsignal-4.0.5 spec/support/helpers/wait_for_helper.rb
appsignal-4.0.4-java spec/support/helpers/wait_for_helper.rb
appsignal-4.0.4 spec/support/helpers/wait_for_helper.rb
appsignal-4.0.3-java spec/support/helpers/wait_for_helper.rb
appsignal-4.0.3 spec/support/helpers/wait_for_helper.rb
appsignal-4.0.2-java spec/support/helpers/wait_for_helper.rb
appsignal-4.0.2 spec/support/helpers/wait_for_helper.rb
appsignal-4.0.1-java spec/support/helpers/wait_for_helper.rb
appsignal-4.0.1 spec/support/helpers/wait_for_helper.rb
appsignal-4.0.0-java spec/support/helpers/wait_for_helper.rb
appsignal-4.0.0 spec/support/helpers/wait_for_helper.rb
appsignal-3.13.1-java spec/support/helpers/wait_for_helper.rb
appsignal-3.13.1 spec/support/helpers/wait_for_helper.rb
appsignal-3.13.1.alpha.1-java spec/support/helpers/wait_for_helper.rb
appsignal-3.13.1.alpha.1 spec/support/helpers/wait_for_helper.rb
appsignal-4.0.0.beta.2-java spec/support/helpers/wait_for_helper.rb
appsignal-4.0.0.beta.2 spec/support/helpers/wait_for_helper.rb