litmus_paper 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,8 @@
1
1
  module LitmusPaper
2
2
  class App < Sinatra::Base
3
3
  get "/" do
4
- output = "Services monitored:\n"
4
+ output = "Litmus Paper #{LitmusPaper::VERSION}\n"
5
+ output += "Services monitored:\n"
5
6
  output += LitmusPaper.services.keys.join("\n")
6
7
 
7
8
  text 200, output
@@ -17,6 +17,10 @@ module LitmusPaper
17
17
  available.size > 0
18
18
  end
19
19
 
20
+ def to_s
21
+ "Dependency::HaproxyBackends(#{@domain_socket}, #{@cluster})"
22
+ end
23
+
20
24
  def _servers_in(stats, cluster)
21
25
  stats.select do |line|
22
26
  line['# pxname'] == cluster && !["FRONTEND", "BACKEND"].include?(line["svname"])
@@ -20,12 +20,12 @@ module LitmusPaper
20
20
  return @memory_total unless @memory_total.nil?
21
21
 
22
22
  size, scale = @facter.value('memorytotal').split(' ')
23
- @memory_total = size.to_i * MULTIPLIER[scale]
23
+ @memory_total = (size.to_f * MULTIPLIER[scale]).to_i
24
24
  end
25
25
 
26
26
  def memory_free
27
27
  size, scale = @facter.value('memoryfree').split(' ')
28
- size.to_i * MULTIPLIER[scale]
28
+ (size.to_f * MULTIPLIER[scale]).to_i
29
29
  end
30
30
 
31
31
  def to_s
@@ -1,3 +1,3 @@
1
1
  module LitmusPaper
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
data/lib/litmus_paper.rb CHANGED
@@ -22,6 +22,7 @@ require 'litmus_paper/metric/available_memory'
22
22
  require 'litmus_paper/metric/cpu_load'
23
23
  require 'litmus_paper/service'
24
24
  require 'litmus_paper/status_file'
25
+ require 'litmus_paper/version'
25
26
 
26
27
  module LitmusPaper
27
28
  class << self
@@ -16,6 +16,13 @@ describe LitmusPaper::App do
16
16
  last_response.body.should include('test')
17
17
  last_response.body.should include('another')
18
18
  end
19
+
20
+ it "includes the litmus version" do
21
+ get "/"
22
+
23
+ last_response.status.should == 200
24
+ last_response.body.should include("Litmus Paper #{LitmusPaper::VERSION}")
25
+ end
19
26
  end
20
27
 
21
28
  describe "POST /force/*" do
@@ -20,5 +20,12 @@ describe LitmusPaper::Dependency::HaproxyBackends do
20
20
  haproxy.should_not be_available
21
21
  end
22
22
  end
23
+
24
+ describe "to_s" do
25
+ it "includes the socket file and the cluster" do
26
+ haproxy = LitmusPaper::Dependency::HaproxyBackends.new("/tmp/stub-haproxy-stats", "orange_cluster")
27
+ haproxy.to_s.should == 'Dependency::HaproxyBackends(/tmp/stub-haproxy-stats, orange_cluster)'
28
+ end
29
+ end
23
30
  end
24
31
 
@@ -8,12 +8,24 @@ describe LitmusPaper::Metric::AvailableMemory do
8
8
  memory.current_health.should == 25
9
9
  end
10
10
 
11
+ it "multiplies weight by memory available when handling floating point values" do
12
+ facter = StubFacter.new({"memorytotal" => "2.0 GB", "memoryfree" => "1.8 GB"})
13
+ memory = LitmusPaper::Metric::AvailableMemory.new(50, facter)
14
+ memory.current_health.should == 44
15
+ end
16
+
11
17
  describe "#memory_total" do
12
18
  it "is a positive integer" do
13
19
  metric = LitmusPaper::Metric::AvailableMemory.new(50)
14
20
  metric.memory_total.should > 1_000
15
21
  end
16
22
 
23
+ it "handles floating point values properly" do
24
+ facter = StubFacter.new("memorytotal" => "1.80 GB")
25
+ memory = LitmusPaper::Metric::AvailableMemory.new(50, facter)
26
+ memory.memory_total.should == 1932735283
27
+ end
28
+
17
29
  it "is cached" do
18
30
  Facter.should_receive(:value).once.and_return("10 MB")
19
31
  metric = LitmusPaper::Metric::AvailableMemory.new(50)
@@ -28,6 +40,12 @@ describe LitmusPaper::Metric::AvailableMemory do
28
40
  metric = LitmusPaper::Metric::AvailableMemory.new(50)
29
41
  metric.memory_free.should > 100
30
42
  end
43
+
44
+ it "handles floating point values properly" do
45
+ facter = StubFacter.new("memoryfree" => "1.80 GB")
46
+ memory = LitmusPaper::Metric::AvailableMemory.new(50, facter)
47
+ memory.memory_free.should == 1932735283
48
+ end
31
49
  end
32
50
 
33
51
  describe "#to_s" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: litmus_paper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-06-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sinatra
16
- requirement: &70366165028280 !ruby/object:Gem::Requirement
16
+ requirement: &70248649019060 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.3.2
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70366165028280
24
+ version_requirements: *70248649019060
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: facter
27
- requirement: &70366165009340 !ruby/object:Gem::Requirement
27
+ requirement: &70248649000380 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.6.7
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70366165009340
35
+ version_requirements: *70248649000380
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: SyslogLogger
38
- requirement: &70366164935220 !ruby/object:Gem::Requirement
38
+ requirement: &70248648925460 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.4.1
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70366164935220
46
+ version_requirements: *70248648925460
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &70366160654080 !ruby/object:Gem::Requirement
49
+ requirement: &70248644644480 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 2.9.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70366160654080
57
+ version_requirements: *70248644644480
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rack-test
60
- requirement: &70366160547260 !ruby/object:Gem::Requirement
60
+ requirement: &70248644537640 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 0.6.1
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70366160547260
68
+ version_requirements: *70248644537640
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
- requirement: &70366160552680 !ruby/object:Gem::Requirement
71
+ requirement: &70248644543240 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 0.9.2.2
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70366160552680
79
+ version_requirements: *70248644543240
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rake_commit
82
- requirement: &70366160551600 !ruby/object:Gem::Requirement
82
+ requirement: &70248644542440 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '0.13'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70366160551600
90
+ version_requirements: *70248644542440
91
91
  description: Backend health tester for HA Services
92
92
  email:
93
93
  - code@getbraintree.com