class Ragios::Plugins::UptimeMonitor

Attributes

browser_info[R]
has_screenshot[R]
monitor[R]
s_expr[R]
screenshot_url[R]
success[R]
test_result[R]
validations[R]

Public Class Methods

new() click to toggle source
# File lib/uptime_monitor/uptime_monitor.rb, line 13
def initialize
  @result_set = []
  @test_result = {results: @result_set}
end

Public Instance Methods

close_browser() click to toggle source
# File lib/uptime_monitor/uptime_monitor.rb, line 51
def close_browser
  @browser.close if @browser.respond_to?('close')
end
exists(page_elements) click to toggle source
# File lib/uptime_monitor/uptime_monitor.rb, line 59
def exists(page_elements)
  for i in 0..(page_elements.length - 1)
    if @browser.exists?(page_elements[i])
      result!(@validations[i], true)
    else
      take_screenshot
      result!(@validations[i], false)
    end
  end
end
init(monitor) click to toggle source
# File lib/uptime_monitor/uptime_monitor.rb, line 18
def init(monitor)
  @monitor = OpenStruct.new(monitor)
  message = "A url must be provided for uptime_monitor: #{@monitor.monitor}"
  raise(Hercules::UptimeMonitor::NoUrlProvided.new(error: message), message) if @monitor.url.nil?
  message = "A browser must be provided for uptime_monitor: #{@monitor.monitor}"
  raise(Hercules::UptimeMonitor::NoBrowserProvided.new(error: message), message) if @monitor.browser.nil?
  @browser_info = Hercules::UptimeMonitor::BrowsersLangParser.new.parse(@monitor.browser)
  message = "A validation (exists?) must be provided for uptime_monitor: #{@monitor.monitor}"
  raise(Hercules::UptimeMonitor::NoValidationProvided.new(error: message), message) if @monitor.exists?.nil?
  @s_expr = Hercules::UptimeMonitor::MaestroLangParser.new.parse(@monitor.exists?)
  @validations = Hercules::UptimeMonitor::MaestroLangParser.new.parse(@monitor.exists?, description = true)
  {ok: true}
end
result!(validation, state) click to toggle source
# File lib/uptime_monitor/uptime_monitor.rb, line 70
def result!(validation, state)
  @success = false if state == false
  result = state ? [validation, "exists_as_expected"] : [validation, "does_not_exist_as_expected"]
  @result_set << result
end
start_browser(url, browser_name, headless) click to toggle source
# File lib/uptime_monitor/uptime_monitor.rb, line 55
def start_browser(url, browser_name, headless)
  @browser = Hercules::UptimeMonitor::Browser.new(url, browser_name, headless)
end
take_screenshot() click to toggle source
# File lib/uptime_monitor/uptime_monitor.rb, line 76
def take_screenshot
  if RAGIOS_HERCULES_ENABLE_SCREENSHOTS && not(@monitor.disable_screenshots) && not(@has_screenshot)
    @screenshot_url = @browser.capture_screenshot
    @has_screenshot = true
  end
end
test_command?() click to toggle source
# File lib/uptime_monitor/uptime_monitor.rb, line 32
def test_command?
  @result_set = []
  @success = true
  @has_screenshot = false
  start_browser(@monitor.url, browser_info[:browser], !!browser_info[:headless] )
  exists(@s_expr)
  @test_result = {results: @result_set}
  @test_result[:screenshot] = @screenshot_url if @has_screenshot
  close_browser
  @success
rescue Net::ReadTimeout => e
  close_browser rescue nil
  @test_result = {results: ["Page Load Timeout", "Page could not load after 2 minutes"]}
  return true
rescue Exception => e
  close_browser rescue nil
  raise e
end