sumo-check-sumo 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3d6fb0f192134fd82e63b3d83fcc0079c600bd93
4
+ data.tar.gz: cd079adaf6449d996f908d4caf5751ed6d10ae2a
5
+ SHA512:
6
+ metadata.gz: 2c9f8b8be9a7fb308f6c718896be05e7e4eda180d3e6544f614c12af2f226590036d6889c7479703c5a09237e322a6388e5913df54c56abee1303ba80ea84a58
7
+ data.tar.gz: 453e0a563678b3192e5f87efe02ca6fa64eb7b4fe1a5a06e882b36c12184fefef0fa1f8fe1408d76b07a538952a05d2ad737e566a0ab6401bab3fce5e8c47bd0
@@ -0,0 +1,160 @@
1
+ #!/usr/bin/env ruby
2
+ # gem "webdrivers", "~> 3.0"
3
+ require 'watir'
4
+ require 'webdrivers'
5
+ require 'sensu-plugin/check/cli'
6
+
7
+ class SensuSumoNewRelicAppdex < Sensu::Plugin::Check::CLI
8
+
9
+ option :server,
10
+ :short => "-s https://newrelic.com/",
11
+ :long => "--server https://newrelic.com/",
12
+ :default => 'https://newrelic.com/',
13
+ :description => "New Relic Site URL"
14
+
15
+ option :email,
16
+ :short => "-e email",
17
+ :long => "--email bob@smith.com",
18
+ :default => 'ogg@sr375.com',
19
+ :description => "email address of sumo account to test"
20
+
21
+ option :password,
22
+ :short => "-p urabus",
23
+ :long => "--password urabus",
24
+ :default => 'urabus',
25
+ :description => "Password to use for test"
26
+
27
+ option :app,
28
+ :short => "-a urabus",
29
+ :long => "--application urabus",
30
+ :default => 'urabus',
31
+ :description => "New Relic Application to Monitor"
32
+
33
+ option :error_rate_crit,
34
+ :short => "-K 5",
35
+ :long => "--error-rate-crit 5",
36
+ :default => 5,
37
+ :description => "Error rate critial in PERCENT"
38
+
39
+ option :error_rate_warn,
40
+ :short => "-k 3",
41
+ :long => "--error-rate-warn 3",
42
+ :default => 3,
43
+ :description => "Error rate warning in PERCENT"
44
+
45
+ option :apdex_crit,
46
+ :short => "-Z 0.94",
47
+ :long => "--apdex-crit 0.94",
48
+ :default => 0.94,
49
+ :description => "Apdex critial"
50
+
51
+ option :apdex_warn,
52
+ :short => "-z 0.96",
53
+ :long => "--apdex-warn 0.96",
54
+ :default => 0.96,
55
+ :description => "Apdex Warn"
56
+
57
+ option :interactive,
58
+ :short => "-i",
59
+ :default => false,
60
+ :boolean => true,
61
+ :description => "Run Chrome in an interactive window"
62
+
63
+
64
+ def run
65
+
66
+ args = ['--disable-popup-blocking', '--disable-translate']
67
+ if config[:interactive]
68
+ browser = Watir::Browser.new :chrome, options: {args: args}, headless: false
69
+ else
70
+ browser = Watir::Browser.new :chrome, options: {args: args}, headless: true
71
+ end
72
+
73
+ browser.goto config[:server]
74
+
75
+ begin
76
+
77
+ browser.link(:id =>"desk-login").click
78
+ browser.element(:xpath,'//*[@id="login_submit"]').wait_until_present
79
+ browser.execute_script("
80
+ form = document.forms[\"login\"];
81
+ username = form.elements[\"login_email\"];
82
+ username.value = \"#{config[:email]}\";
83
+ ")
84
+ browser.execute_script("
85
+ form = document.forms[\"login\"];
86
+ username = form.elements[\"login_password\"];
87
+ username.value = \"#{config[:password]}\";
88
+ ")
89
+ browser.element(:xpath => '//*[@id="login_submit"]').click # Click the login button
90
+ # browser.link(:text =>"SumoMe Production").click
91
+ browser.link(:text =>config[:app]).click
92
+
93
+ monitor_url = browser.url
94
+
95
+ # APDEX SCORE
96
+ browser.element(:xpath => '//*[@id="primary_content"]/div[2]/div[2]/div[1]/h2[1]').wait_until_present
97
+ apdex_score = browser.element(:xpath => '//*[@id="primary_content"]/div[2]/div[2]/div[1]/h2[1]/div/p[1]').text.strip.split(' ')[0].to_f
98
+
99
+ # ERROR RATE PERCENT
100
+ browser.element(:xpath => '//*[@id="hosts_content_container"]/section/h3/div/p').wait_until_present
101
+ error_rate_percent = browser.element(:xpath => '//*[@id="hosts_content_container"]/section/h3/div/p').text.strip.to_f
102
+
103
+ rescue Exception => e
104
+ critical(e.message)
105
+ ensure
106
+ browser.close
107
+ end
108
+
109
+
110
+ def crital_check(apdex,error)
111
+ if apdex_score < config[:apdex_crit].to_f && error_rate_percent > config[:error_rate_crit]
112
+ # Both things are critical
113
+ critical("Application: #{config[:app]}, Apdex score CRITICAL: #{apdex_score}, Error rate CRITICAL: #{error_rate_percent}%, URL: #{monitor_url}")
114
+ elsif apdex_score < config[:apdex_crit].to_f
115
+ # apdex is critial
116
+ if error_rate_percent > config[:error_rate_warn]
117
+ # error rate is also wanring
118
+ critical("Application: #{config[:app]}, Apdex score CRITICAL: #{apdex_score}, Error rate WARNING: #{error_rate_percent}%, URL: #{monitor_url}")
119
+ else
120
+ critical("Application: #{config[:app]}, Apdex score CRITICAL: #{apdex_score}, Error rate ok: #{error_rate_percent}%, URL: #{monitor_url}")
121
+ end
122
+
123
+ elsif error_rate_percent > config[:error_rate_crit]
124
+ # error rate is critial
125
+ if apdex_score < config[:apdex_warn].to_f
126
+ critical("Application: #{config[:app]}, Apdex score WARNING: #{apdex_score}, Error rate CRITICAL: #{error_rate_percent}%, URL: #{monitor_url}")
127
+ else
128
+ critical("Application: #{config[:app]}, Apdex score ok: #{apdex_score}, Error rate CRITICAL: #{error_rate_percent}%, URL: #{monitor_url}")
129
+ end
130
+ end
131
+ end
132
+
133
+ def warn_check(apdex,error)
134
+ # Somthings warning....
135
+ if apdex_score < config[:apdex_warn].to_f && error_rate_percent > config[:error_rate_warn]
136
+ warning("Application: #{config[:app]}, Apdex score WARNING: #{apdex_score}, Error rate WARNING: #{error_rate_percent}%, URL: #{monitor_url}")
137
+ elsif apdex_score < config[:apdex_warn].to_f
138
+ # apdex is warning
139
+ warning("Application: #{config[:app]}, Apdex score WARNING: #{apdex_score}, Error rate ok: #{error_rate_percent}%, URL: #{monitor_url}")
140
+ elsif error_rate_percent > config[:error_rate_warn]
141
+ # error rate is wanring
142
+ warning("Application: #{config[:app]}, Apdex score ok: #{apdex_score}, Error rate WARNING: #{error_rate_percent}%, URL: #{monitor_url}")
143
+ end
144
+ end
145
+
146
+
147
+ if apdex_score < config[:apdex_crit].to_f || error_rate_percent > config[:error_rate_crit]
148
+ # Somthings critial...
149
+ crital_check(config[:apdex_crit].to_f,config[:error_rate_crit])
150
+ elsif apdex_score < config[:apdex_warn].to_f || error_rate_percent > config[:error_rate_warn]
151
+ # Somthings warning...
152
+ warn_check(config[:apdex_crit].to_f,config[:error_rate_crit])
153
+ else
154
+ ok("Application: #{config[:app]} is ok, Apdex Score: #{apdex_score}, Error rate: #{error_rate_percent}%, URL: #{monitor_url}")
155
+ end
156
+
157
+ browser.close
158
+ end
159
+
160
+ end
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/env ruby
2
+ # gem "webdrivers", "~> 3.0"
3
+ require 'watir'
4
+ require 'webdrivers'
5
+ require 'sensu-plugin/check/cli'
6
+
7
+ # url = "http://test.sr375.com/test-1.html"
8
+ # url = "http://test.sr375.com/test-2.html"
9
+
10
+ class SensuSumoBasicClientTest < Sensu::Plugin::Check::CLI
11
+ option :server,
12
+ short: '-s http://localhost',
13
+ long: '--server',
14
+ description: 'URL of test suite',
15
+ default: 'http://sumotest.sumo.com/test-1.html'
16
+
17
+ option :interactive,
18
+ short: '-i',
19
+ long: '--interactive',
20
+ boolean: true,
21
+ default: false,
22
+ description: 'Run Chrome in an interactive window'
23
+
24
+ def run
25
+
26
+ args = ['--disable-popup-blocking', '--disable-translate']
27
+ if config[:interactive]
28
+ browser = Watir::Browser.new :chrome, options: {args: args}, headless: false
29
+ else
30
+ browser = Watir::Browser.new :chrome, options: {args: args}, headless: true
31
+ end
32
+
33
+ browser.goto config[:server]
34
+
35
+ logs = browser.driver.manage.logs.get :browser
36
+ critical(logs.join("\n")) if logs.length > 0
37
+
38
+ begin
39
+ browser.element(:xpath,'//*[@id="sumome-contactform-bp"]/div/div[2]/div[3]/a').wait_until_present
40
+ browser.element(:xpath,'//*[@id="sumome-contactform-bp"]/div/div[2]/div[3]/a').exists? # Powered by Sumo
41
+ browser.element(:xpath,'//*[@id="contactform_email_address"]').exists? # Emain address input box
42
+ browser.element(:xpath, '//*[@id="contactform_message"]').exists? # contact from message
43
+ rescue Exception => e
44
+ critical(e.message)
45
+ ensure
46
+ browser.close
47
+ end
48
+
49
+ browser.close
50
+ ok("Checks Passed")
51
+
52
+ end
53
+
54
+ end
@@ -0,0 +1,110 @@
1
+ #!/usr/bin/env ruby
2
+ # gem "webdrivers", "~> 3.0"
3
+ require 'watir'
4
+ require 'webdrivers'
5
+ require 'sensu-plugin/check/cli'
6
+
7
+ class SensuSumoLoginLogoutTest < Sensu::Plugin::Check::CLI
8
+
9
+ option :server,
10
+ :short => "-s http://sumo.com",
11
+ :long => "--server http://sumo.com",
12
+ :default => 'http://sumo.com',
13
+ :description => "webserver to run our test on"
14
+
15
+ option :email,
16
+ :short => "-e email",
17
+ :long => "--email bob@smith.com",
18
+ :default => 'ogg@sr375.com',
19
+ :description => "email address of sumo account to test"
20
+
21
+ option :password,
22
+ :short => "-p urabus",
23
+ :long => "--password urabus",
24
+ :default => 'urabus',
25
+ :description => "Password to use for test"
26
+
27
+ option :site_name,
28
+ :short => "-n sr375.com",
29
+ :long => "--name sr375.com",
30
+ :default => 'sr375.com',
31
+ :description => "Site name to check for upon login"
32
+
33
+ option :interactive,
34
+ :short => "-i",
35
+ :default => false,
36
+ :boolean => true,
37
+ :description => "Run Chrome in an interactive window"
38
+
39
+
40
+ def run
41
+
42
+ args = ['--disable-popup-blocking', '--disable-translate']
43
+ if config[:interactive]
44
+ browser = Watir::Browser.new :chrome, options: {args: args}, headless: false
45
+ else
46
+ browser = Watir::Browser.new :chrome, options: {args: args}, headless: true
47
+ end
48
+
49
+ browser.goto config[:server]
50
+
51
+ logs = browser.driver.manage.logs.get :browser
52
+ critical(logs.join("\n")) if logs.length > 0
53
+
54
+ begin
55
+
56
+ logs = browser.driver.manage.logs.get :browser
57
+ critical(logs.join("\n")) if logs.length > 0
58
+
59
+ browser.link(:title =>"Log In").click
60
+
61
+ logs = browser.driver.manage.logs.get :browser
62
+ critical(logs.join("\n")) if logs.length > 0
63
+
64
+ browser.element(:xpath,'//*[@id="loginForm"]/div[2]/div/div/div/fieldset/h3').wait_until_present
65
+ browser.execute_script("
66
+ form = document.forms[\"loginForm\"];
67
+ username = form.elements[\"email\"];
68
+ username.value = \"#{config[:email]}\";
69
+ ")
70
+ browser.execute_script("
71
+ form = document.forms[\"loginForm\"];
72
+ username = form.elements[\"password\"];
73
+ username.value = \"#{config[:password]}\";
74
+ ")
75
+
76
+ # browser.element(:xpath => '//*[@id="loginForm"]/div[2]/div/div/div/fieldset/div[3]/div/button').click
77
+ browser.element(:xpath => '//*[@id="loginForm"]/div[2]/div/div/div[1]/fieldset/div[4]/div/button').click
78
+
79
+ # browser.element(:xpath,'/html/body/div[1]/div/div[2]/div/ul/li[1]/a').wait_until_present
80
+ browser.element(:xpath,'/html/body/div/div/div[2]/div/div/div[3]/div/a').wait_until_present
81
+
82
+
83
+ logs = browser.driver.manage.logs.get :browser
84
+ critical(logs.join("\n")) if logs.length > 0
85
+
86
+ critical("Login Unsuccessful") if !browser.text.include? config[:site_name]
87
+
88
+ browser.element(:xpath => "/html/body/div[1]/div/div[1]/div[2]/div/div/div[3]/div/a").hover
89
+ browser.link(:title =>"Log Out").click
90
+
91
+ logs = browser.driver.manage.logs.get :browser
92
+ critical(logs.join("\n")) if logs.length > 0
93
+
94
+ browser.element(:xpath,'/html/body/div[1]/div/div[2]/div[4]/div/form/div/div/div/div[2]').wait_until_present
95
+
96
+ critical("Log Out Unsuccessful") if browser.text.include? config[:site_name]
97
+
98
+
99
+ rescue Exception => e
100
+ critical(e.message)
101
+ ensure
102
+ browser.close
103
+ end
104
+
105
+ #browser.close
106
+ ok("Login Logout Test Passed")
107
+
108
+ end
109
+
110
+ end
metadata ADDED
@@ -0,0 +1,104 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sumo-check-sumo
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ platform: ruby
6
+ authors:
7
+ - Dr. Ogg
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-10-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: sensu-plugin
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: selenium-webdriver
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.6'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.6'
41
+ - !ruby/object:Gem::Dependency
42
+ name: webdrivers
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.2'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: watir
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '6.8'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '6.8'
69
+ description:
70
+ email:
71
+ executables:
72
+ - sumo-check-sumo_basic_contact_us_form.rb
73
+ - sumo-check-sumo_main_site_login_logout.rb
74
+ - sumo-check-new-relic-apdex.rb
75
+ extensions: []
76
+ extra_rdoc_files: []
77
+ files:
78
+ - bin/sumo-check-new-relic-apdex.rb
79
+ - bin/sumo-check-sumo_basic_contact_us_form.rb
80
+ - bin/sumo-check-sumo_main_site_login_logout.rb
81
+ homepage:
82
+ licenses: []
83
+ metadata: {}
84
+ post_install_message:
85
+ rdoc_options: []
86
+ require_paths:
87
+ - lib
88
+ required_ruby_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ required_rubygems_version: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ requirements: []
99
+ rubyforge_project:
100
+ rubygems_version: 2.6.13
101
+ signing_key:
102
+ specification_version: 4
103
+ summary: Sumo Sensu gem for testing our front end website
104
+ test_files: []