class Kapnismology::SmokeTest

This is the base class for all the smoke tests. Inherit from this class and implement the result and self.name method

Constants

DEFAULT_TAGS
DEPLOYMENT_TAG
RUNTIME_TAG

Public Class Methods

inherited(klass) click to toggle source
# File lib/kapnismology/smoke_test.rb, line 42
def inherited(klass)
  SmokeTestCollection.add_smoke_test(klass)
end
tags() click to toggle source
# File lib/kapnismology/smoke_test.rb, line 46
def tags
  DEFAULT_TAGS
end
timeout() click to toggle source
# File lib/kapnismology/smoke_test.rb, line 50
def timeout
  10
end

Public Instance Methods

__result__() click to toggle source

Internally Kapnismology is calling this method. We are handling exceptions under the hood here

# File lib/kapnismology/smoke_test.rb, line 19
def __result__
  start_time = Time.now
  execution = Timeout.timeout(self.class.timeout) { result }
  result_object = execution || Result.new(false, {}, 'This test has not returned any result')
  unless result_object.class.ancestors.include?(BaseResult)
    message = "Smoke test #{self.class}, returned #{result_object.class} instead of a Result"
    result_object = Result.new(false, { returned_class: result_object.class }, message)
  end
rescue Kapnismology::SmokeTestFailed => e
  result_object = e.result
rescue Timeout::Error => e
  message = "#{self.class} took more than #{self.class.timeout} seconds to finish and timed-out"
  result_object = Result.new(false, { exception: e.class, message: e.message }, message)
rescue Exception => e # Socket, IO errors inherit from Exception, not StandardError
  message = "Unrescued error happened in #{self.class}"
  result_object = Result.new(false, { exception: e.class, message: e.message }, message)
ensure
  @all_result_messages ||= []
  result_object.record_duration(start_time)
  return result_object.add_debug_messages(@all_result_messages)
end
result() click to toggle source
# File lib/kapnismology/smoke_test.rb, line 16
def result; end

Protected Instance Methods

puts_to_result(message) click to toggle source
# File lib/kapnismology/smoke_test.rb, line 57
def puts_to_result(message)
  @all_result_messages ||= []
  @all_result_messages.push(message)
end