hq-tools 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -13,6 +13,7 @@ class CheckScript
13
13
  @critical = false
14
14
  @warning = false
15
15
  @unknown = false
16
+ @performances = []
16
17
  @postscript = []
17
18
  @stdout = $stdout
18
19
  @stderr = $stderr
@@ -48,25 +49,36 @@ class CheckScript
48
49
 
49
50
  def perform_output
50
51
 
51
- if @critical
52
- @stdout.puts "#{@name} CRITICAL: #{@messages.join ", "}"
53
- @status = 2
52
+ str = StringIO.new
54
53
 
55
- elsif @warning
56
- @stdout.puts "#{@name} WARNING: #{@messages.join ", "}"
57
- @status = 1
54
+ str.print @name, " "
58
55
 
56
+ if @critical
57
+ str.print "CRITICAL"
58
+ elsif @warning
59
+ str.print "WARNING"
59
60
  elsif @unknown
60
- @stdout.puts "#{@name} UNKNOWN: #{@messages.join ", "}"
61
- @status = 3
62
-
61
+ str.print "UNKNOWN"
63
62
  else
64
- @stdout.puts "#{@name} OK: #{@messages.join ", "}"
65
- @status = 0
63
+ str.print "OK"
66
64
  end
67
65
 
68
- @postscript.each do |ps|
69
- @stderr.puts ps
66
+ str.print ": "
67
+
68
+ str.print @messages.join(", ")
69
+
70
+ unless @performances.empty?
71
+ str.print " | "
72
+ str.print @performances.join(" ")
73
+ end
74
+
75
+ str.print "\n"
76
+
77
+ @stdout.print str.string
78
+
79
+ @postscript.each do
80
+ |postscript|
81
+ @stderr.puts postscript
70
82
  end
71
83
 
72
84
  end
@@ -90,6 +102,17 @@ class CheckScript
90
102
  @unknown = true
91
103
  end
92
104
 
105
+ def performance name, value, options = {}
106
+ parts = []
107
+ parts[0] = "%s%s" % [ value, options[:units] ]
108
+ parts[1] = options[:warning].to_s if options[:warning]
109
+ parts[2] = options[:critical].to_s if options[:critical]
110
+ parts[3] = options[:minimum].to_s if options[:minimum]
111
+ parts[4] = options[:maximum].to_s if options[:maximum]
112
+ name = "'#{name.gsub "'", "''"}'" if name.include? "'"
113
+ @performances << "%s=%s" % [ name, parts.join(";") ]
114
+ end
115
+
93
116
  end
94
117
  end
95
118
  end
@@ -0,0 +1,78 @@
1
+ require "hq/tools/check-script"
2
+
3
+ module HQ
4
+ module Tools
5
+
6
+ describe CheckScript do
7
+
8
+ before do
9
+ subject.stub(:process_args)
10
+ subject.stub(:perform_checks)
11
+ subject.stdout = StringIO.new
12
+ end
13
+
14
+ context "performance data" do
15
+
16
+ it "none" do
17
+ subject.stub(:perform_checks) do
18
+ subject.message "hello"
19
+ end
20
+ subject.main
21
+ subject.stdout.string.should ==
22
+ "Unnamed OK: hello\n"
23
+ end
24
+
25
+ it "single metric" do
26
+ subject.stub(:perform_checks) do
27
+ subject.message "hello"
28
+ subject.performance "metric1", 1
29
+ end
30
+ subject.main
31
+ subject.stdout.string.should ==
32
+ "Unnamed OK: hello | metric1=1\n"
33
+ end
34
+
35
+ it "special chars" do
36
+ subject.stub(:perform_checks) do
37
+ subject.message "hello"
38
+ subject.performance "apos'trophe", 1
39
+ end
40
+ subject.main
41
+ subject.stdout.string.should ==
42
+ "Unnamed OK: hello | 'apos''trophe'=1\n"
43
+ end
44
+
45
+ it "optional fields" do
46
+ subject.stub(:perform_checks) do
47
+ subject.message "hello"
48
+ subject.performance \
49
+ "metric1",
50
+ 1,
51
+ :units => "blops",
52
+ :warning => 2,
53
+ :critical => 5,
54
+ :minimum => 0,
55
+ :maximum => 10
56
+ end
57
+ subject.main
58
+ subject.stdout.string.should ==
59
+ "Unnamed OK: hello | metric1=1blops;2;5;0;10\n"
60
+ end
61
+
62
+ it "two metrics" do
63
+ subject.stub(:perform_checks) do
64
+ subject.message "hello"
65
+ subject.performance "metric1", 1
66
+ subject.performance "metric2", 5
67
+ end
68
+ subject.main
69
+ subject.stdout.string.should ==
70
+ "Unnamed OK: hello | metric1=1 metric2=5\n"
71
+ end
72
+
73
+ end
74
+
75
+ end
76
+
77
+ end
78
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hq-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-05 00:00:00.000000000 Z
12
+ date: 2013-04-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cucumber
@@ -102,6 +102,7 @@ files:
102
102
  - lib/hq/tools/escape.rb
103
103
  - lib/hq/tools/check-script.rb
104
104
  - spec/hq/tools/getopt-spec.rb
105
+ - spec/hq/tools/check-script-spec.rb
105
106
  homepage: https://github.com/jamespharaoh/hq-tools
106
107
  licenses: []
107
108
  post_install_message:
@@ -128,3 +129,4 @@ specification_version: 3
128
129
  summary: HQ tools
129
130
  test_files:
130
131
  - spec/hq/tools/getopt-spec.rb
132
+ - spec/hq/tools/check-script-spec.rb