hq-check-drill 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b858a5f2f3da01a9d22cdb35c658b98c1e9d6926
4
+ data.tar.gz: 3bc5e121a32adb93a23932c31914560f2b8cad99
5
+ SHA512:
6
+ metadata.gz: 5f8aa6616c0dfdca977f70a11797c5acfa386a8fee5cf2ac521b9591313dbe3330c3e5ee3b57068091f4857b99882178116e3308b2b363823b15fff02727a5a7
7
+ data.tar.gz: 0b2b548b76b078cec0e9aa5d0971885ab94e0f08c59e100e2c431048d45ae2e061de82d90dcd114998d067cca9001a0b6962e5b1813435c8fb9ce75675124d3e
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "hq/check-drill/script"
4
+
5
+ script = HQ::CheckDrill::Script.new
6
+ script.args = ARGV
7
+ script.main
8
+ exit script.status
@@ -0,0 +1,19 @@
1
+ Feature: Bin wrapper
2
+
3
+ Scenario:
4
+
5
+ Given a file "default.config":
6
+ """
7
+ <hq-check-drill-config/>
8
+ """
9
+
10
+ When I execute
11
+ """
12
+ hq-check-drill --config default.config
13
+ """
14
+
15
+ Then the exit status should be 0
16
+ And the stdout should be:
17
+ """
18
+ Drill OK: no drills just now
19
+ """
@@ -0,0 +1,49 @@
1
+ Feature: Check if drill active
2
+
3
+ Background:
4
+
5
+ Given a file "default.config":
6
+ """
7
+ <hq-check-drill-config>
8
+ <drill level="critical" message="this is a drill">
9
+ <match template="%A" regex="Monday"/>
10
+ <match template="%H" regex="09"/>
11
+ </drill>
12
+ </hq-check-drill-config>
13
+ """
14
+
15
+ Scenario: Critical drill active
16
+
17
+ Given the time is 2013-05-13 09:30:00
18
+
19
+ When I invoke check-drill --config default.config
20
+
21
+ Then the exit status should be 2
22
+ And the stdout should be:
23
+ """
24
+ Drill CRITICAL: this is a drill
25
+ """
26
+
27
+ Scenario: Wrong day
28
+
29
+ Given the time is 2013-05-14 09:30:00
30
+
31
+ When I invoke check-drill --config default.config
32
+
33
+ Then the exit status should be 0
34
+ And the stdout should be:
35
+ """
36
+ Drill OK: no drills just now
37
+ """
38
+
39
+ Scenario: Wrong time
40
+
41
+ Given the time is 2013-05-13 10:30:00
42
+
43
+ When I invoke check-drill --config default.config
44
+
45
+ Then the exit status should be 0
46
+ And the stdout should be:
47
+ """
48
+ Drill OK: no drills just now
49
+ """
@@ -0,0 +1,2 @@
1
+ require "hq/cucumber/temp-dir"
2
+ require "hq/cucumber/time"
@@ -0,0 +1,54 @@
1
+ require "tempfile"
2
+
3
+ require "hq/check-drill/script"
4
+
5
+ When /^I execute$/ do
6
+ |cmd_str|
7
+
8
+ stdout_temp = Tempfile.new "cuke-stdout-"
9
+ stderr_temp = Tempfile.new "cuke-stderr-"
10
+
11
+ system "(#{cmd_str}) >#{stdout_temp.path} 2>#{stderr_temp.path}"
12
+
13
+ @command_status = $?.exitstatus
14
+
15
+ @command_stdout = File.read(stdout_temp.path)
16
+ @command_stderr = File.read(stderr_temp.path)
17
+
18
+ stdout_temp.unlink
19
+ stderr_temp.unlink
20
+
21
+ end
22
+
23
+ When /^I invoke check\-drill (.*?)$/ do
24
+ |args_str|
25
+
26
+ @script = HQ::CheckDrill::Script.new
27
+
28
+ @script.args = Shellwords.split args_str
29
+ @script.stdout = StringIO.new
30
+ @script.stderr = StringIO.new
31
+
32
+ @script.main
33
+
34
+ @command_status = @script.status
35
+ @command_stdout = @script.stdout.string
36
+ @command_stderr = @script.stderr.string
37
+
38
+ end
39
+
40
+ Then /^the exit status should be (\d+)$/ do
41
+ |status_str|
42
+
43
+ status = status_str.to_i
44
+
45
+ @command_status.should == status
46
+
47
+ end
48
+
49
+ Then /^the stdout should be:$/ do
50
+ |message|
51
+
52
+ @command_stdout.strip.should == message.strip
53
+
54
+ end
@@ -0,0 +1,74 @@
1
+ require "hq/tools/check-script"
2
+ require "hq/tools/getopt"
3
+
4
+ require "xml"
5
+
6
+ module HQ
7
+ module CheckDrill
8
+
9
+ class Script < Tools::CheckScript
10
+
11
+ def initialize
12
+ super
13
+ @name = "Drill"
14
+ end
15
+
16
+ def process_args
17
+
18
+ @opts, @args =
19
+ Tools::Getopt.process args, [
20
+
21
+ { :name => :config,
22
+ :required => true },
23
+
24
+ ]
25
+
26
+ @args.empty? \
27
+ or raise "Extra args on command line"
28
+
29
+ end
30
+
31
+ def prepare
32
+
33
+ config_doc =
34
+ XML::Document.file @opts[:config]
35
+
36
+ @config_elem =
37
+ config_doc.root
38
+
39
+ @drill_elems =
40
+ config_doc.find("drill").to_a
41
+
42
+ end
43
+
44
+ def perform_checks
45
+
46
+ now = Time.now
47
+
48
+ @drill_elems.each do
49
+ |drill_elem|
50
+
51
+ next unless drill_elem.find("match").all? {
52
+ |match_elem|
53
+
54
+ current = now.strftime match_elem["template"]
55
+ regex = Regexp.new match_elem["regex"]
56
+
57
+ current =~ regex
58
+
59
+ }
60
+
61
+ critical drill_elem["message"]
62
+
63
+ return
64
+
65
+ end
66
+
67
+ message "no drills just now"
68
+
69
+ end
70
+
71
+ end
72
+
73
+ end
74
+ end
metadata ADDED
@@ -0,0 +1,180 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hq-check-drill
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - James Pharaoh
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-05-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: hq-tools
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 0.8.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 0.8.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: libxml-ruby
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 2.6.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: 2.6.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: cucumber
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: 1.3.1
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: 1.3.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: hq-dev
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 0.0.8
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: 0.0.8
69
+ - !ruby/object:Gem::Dependency
70
+ name: json
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: 1.7.7
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: 1.7.7
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: 10.0.4
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: 10.0.4
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: 2.13.0
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: 2.13.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec_junit_formatter
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: 0.1.6
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: 0.1.6
125
+ - !ruby/object:Gem::Dependency
126
+ name: simplecov
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '>='
130
+ - !ruby/object:Gem::Version
131
+ version: 0.7.1
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '>='
137
+ - !ruby/object:Gem::Version
138
+ version: 0.7.1
139
+ description: HQ icinga/nagios plugin to show a specific status based on the time
140
+ email:
141
+ - james@phsys.co.uk
142
+ executables:
143
+ - hq-check-drill
144
+ extensions: []
145
+ extra_rdoc_files: []
146
+ files:
147
+ - lib/hq/check-drill/script.rb
148
+ - features/check-drill.feature
149
+ - features/bin-wrapper.feature
150
+ - features/support/steps.rb
151
+ - features/support/env.rb
152
+ - bin/hq-check-drill
153
+ homepage: https://github.com/jamespharaoh/hq-check-drill
154
+ licenses: []
155
+ metadata: {}
156
+ post_install_message:
157
+ rdoc_options: []
158
+ require_paths:
159
+ - lib
160
+ required_ruby_version: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - '>='
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ required_rubygems_version: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - '>='
168
+ - !ruby/object:Gem::Version
169
+ version: 1.3.6
170
+ requirements: []
171
+ rubyforge_project: hq-check-drill
172
+ rubygems_version: 2.0.3
173
+ signing_key:
174
+ specification_version: 4
175
+ summary: HQ check drill
176
+ test_files:
177
+ - features/check-drill.feature
178
+ - features/bin-wrapper.feature
179
+ - features/support/steps.rb
180
+ - features/support/env.rb