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