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
|
-
|
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
|
|
data/lib/flapjack/version.rb
CHANGED
@@ -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
|
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
|