pulse-meter 0.3.0 → 0.3.1
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.
@@ -8,6 +8,7 @@ module PulseMeter
|
|
8
8
|
include PulseMeter::Mixins::Utils
|
9
9
|
|
10
10
|
MAX_TIMESPAN_POINTS = 1000
|
11
|
+
MAX_INTERVALS = 100
|
11
12
|
|
12
13
|
# @!attribute [r] interval
|
13
14
|
# @return [Fixnum] Rotation interval
|
@@ -82,12 +83,21 @@ module PulseMeter
|
|
82
83
|
|
83
84
|
# Reduces data in all raw interval
|
84
85
|
def reduce_all_raw
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
86
|
+
time = Time.now
|
87
|
+
min_time = time - reduce_delay - interval
|
88
|
+
max_depth = time - reduce_delay - interval * MAX_INTERVALS
|
89
|
+
ids = []
|
90
|
+
while (time > max_depth)
|
91
|
+
time -= interval
|
92
|
+
interval_id = get_interval_id(time)
|
93
|
+
next if Time.at(interval_id) > min_time
|
94
|
+
|
95
|
+
reduced_key = data_key(interval_id)
|
96
|
+
raw_key = raw_data_key(interval_id)
|
97
|
+
break if redis.exists(reduced_key)
|
98
|
+
ids << interval_id
|
90
99
|
end
|
100
|
+
ids.reverse.each {|id| reduce(id)}
|
91
101
|
end
|
92
102
|
|
93
103
|
def self.reduce_all_raw
|
data/lib/pulse-meter/version.rb
CHANGED
@@ -6,8 +6,8 @@ shared_examples_for "timeline sensor" do |extra_init_values, default_event|
|
|
6
6
|
end
|
7
7
|
|
8
8
|
let(:name){ :some_value_with_history }
|
9
|
-
let(:ttl){
|
10
|
-
let(:raw_data_ttl){
|
9
|
+
let(:ttl){ 10000 }
|
10
|
+
let(:raw_data_ttl){ 3000 }
|
11
11
|
let(:interval){ 5 }
|
12
12
|
let(:reduce_delay){ 3 }
|
13
13
|
let(:good_init_values){ {:ttl => ttl, :raw_data_ttl => raw_data_ttl, :interval => interval, :reduce_delay => reduce_delay}.merge(extra_init_values || {}) }
|
@@ -179,13 +179,29 @@ shared_examples_for "timeline sensor" do |extra_init_values, default_event|
|
|
179
179
|
Timecop.freeze(@start_of_interval + interval){ sensor.event(sample_event) }
|
180
180
|
val1 = sensor.summarize(@next_raw_data_key)
|
181
181
|
expect{
|
182
|
-
Timecop.freeze(@start_of_interval + interval + interval + reduce_delay + 1)
|
182
|
+
Timecop.freeze(@start_of_interval + interval + interval + reduce_delay + 1) do
|
183
|
+
sensor.reduce_all_raw
|
184
|
+
end
|
183
185
|
}.to change{ redis.keys(sensor.raw_data_key('*')).count }.from(2).to(0)
|
184
186
|
|
185
187
|
redis.get(sensor.data_key(@interval_id)).should == val0.to_s
|
186
188
|
redis.get(sensor.data_key(@interval_id + interval)).should == val1.to_s
|
187
189
|
end
|
188
190
|
|
191
|
+
it "creates up to MAX_INTERVALS compresed data pieces from previously uncompressed data" do
|
192
|
+
max_count = described_class::MAX_INTERVALS
|
193
|
+
start = @start_of_interval - reduce_delay - max_count * interval
|
194
|
+
(max_count + 100).times do |i|
|
195
|
+
Timecop.freeze(start + i * interval) {sensor.event(sample_event)}
|
196
|
+
end
|
197
|
+
|
198
|
+
Timecop.freeze(@start_of_interval) do
|
199
|
+
expect {
|
200
|
+
sensor.reduce_all_raw
|
201
|
+
}.to change {redis.keys(sensor.data_key('*')).count}.from(0).to(max_count)
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
189
205
|
it "should not reduce fresh data" do
|
190
206
|
Timecop.freeze(@start_of_interval){ sensor.event(sample_event) }
|
191
207
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pulse-meter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-11-03 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: gon-sinatra
|
@@ -585,9 +585,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
585
585
|
- - ! '>='
|
586
586
|
- !ruby/object:Gem::Version
|
587
587
|
version: '0'
|
588
|
-
segments:
|
589
|
-
- 0
|
590
|
-
hash: 2422587240922148030
|
591
588
|
requirements: []
|
592
589
|
rubyforge_project:
|
593
590
|
rubygems_version: 1.8.23
|