flapjack 0.6.30 → 0.6.31

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.
@@ -29,7 +29,8 @@ module Flapjack
29
29
  hist_states.each_with_index do |obj, index|
30
30
  if (index == 0)
31
31
  # initial
32
- obj[:start_time] = [obj.delete(:timestamp), start_time].max
32
+ ts = obj.delete(:timestamp)
33
+ obj[:start_time] = start_time ? [ts, start_time].max : ts
33
34
  obj[:end_time] = hist_states[index + 1][:timestamp]
34
35
  elsif index == (num_states - 1)
35
36
  # last
@@ -40,7 +41,7 @@ module Flapjack
40
41
  obj[:start_time] = obj.delete(:timestamp)
41
42
  obj[:end_time] = hist_states[index + 1][:timestamp]
42
43
  end
43
- obj[:duration] = obj[:end_time] - obj[:start_time]
44
+ obj[:duration] = obj[:end_time] ? (obj[:end_time] - obj[:start_time]) : nil
44
45
  end
45
46
 
46
47
  hist_states.reject {|obj| obj[:state] == 'ok'}
@@ -159,11 +160,11 @@ module Flapjack
159
160
  total_secs.each_pair do |st, ts|
160
161
  percentages[st] = (total_secs[st] * 100.0) / (end_time.to_f - start_time.to_f)
161
162
  end
163
+ total_secs['ok'] = (end_time - start_time) - total_secs.values.reduce(:+)
164
+ percentages['ok'] = 100 - percentages.values.reduce(:+)
162
165
  end
163
166
  end
164
167
 
165
- total_secs['ok'] = (end_time - start_time) - total_secs.values.reduce(:+)
166
- percentages['ok'] = 100 - percentages.values.reduce(:+)
167
168
  {:total_seconds => total_secs, :percentages => percentages, :downtime => outs}
168
169
  end
169
170
 
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  module Flapjack
4
- VERSION = "0.6.30"
4
+ VERSION = "0.6.31"
5
5
  end
@@ -56,6 +56,22 @@ describe 'Flapjack::API::EntityCheck::Presenter' do
56
56
  # TODO check the data in those hashes
57
57
  end
58
58
 
59
+ it "returns the same list of outage hashes with no start and end time set" do
60
+ entity_check.should_receive(:historical_states).
61
+ with(nil, nil).and_return(states)
62
+
63
+ entity_check.should_receive(:historical_state_before).
64
+ with(time - (4 * 60 * 60)).and_return(nil)
65
+
66
+ ecp = Flapjack::API::EntityCheckPresenter.new(entity_check)
67
+ outages = ecp.outages(nil, nil)
68
+ outages.should_not be_nil
69
+ outages.should be_an(Array)
70
+ outages.should have(4).time_ranges
71
+
72
+ # TODO check the data in those hashes
73
+ end
74
+
59
75
  it "a list of unscheduled maintenances for an entity check" do
60
76
  entity_check.should_receive(:maintenances).
61
77
  with(time - (12 * 60 * 60), time, :scheduled => false).and_return(maintenances)
@@ -88,7 +104,7 @@ describe 'Flapjack::API::EntityCheck::Presenter' do
88
104
  # TODO check the data in those hashes
89
105
  end
90
106
 
91
- it "returns downtime and percentage for an entity check" do
107
+ it "returns downtime and percentage for a downtime check" do
92
108
  entity_check.should_receive(:historical_states).
93
109
  with(time - (12 * 60 * 60), time).and_return(states)
94
110
 
@@ -117,4 +133,27 @@ describe 'Flapjack::API::EntityCheck::Presenter' do
117
133
  downtimes[:downtime].should have(4).time_ranges
118
134
  end
119
135
 
136
+ it "returns downtime (but no percentage) for an unbounded downtime check" do
137
+ entity_check.should_receive(:historical_states).
138
+ with(nil, nil).and_return(states)
139
+
140
+ entity_check.should_receive(:historical_state_before).
141
+ with(time - (4 * 60 * 60)).and_return(nil)
142
+
143
+ entity_check.should_receive(:maintenances).
144
+ with(nil, nil, :scheduled => true).and_return(maintenances)
145
+
146
+ ecp = Flapjack::API::EntityCheckPresenter.new(entity_check)
147
+ downtimes = ecp.downtime(nil, nil)
148
+
149
+ # 22 minutes, 3 + 8 + 11
150
+ downtimes.should be_a(Hash)
151
+ downtimes[:total_seconds].should == {'critical' => (22 * 60)}
152
+ downtimes[:percentages].should == {'critical' => nil}
153
+ downtimes[:downtime].should be_an(Array)
154
+ # the last outage gets split by the intervening maintenance period,
155
+ # but the fully covered one gets removed.
156
+ downtimes[:downtime].should have(4).time_ranges
157
+ end
158
+
120
159
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flapjack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.30
4
+ version: 0.6.31
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: