right_support 2.8.21 → 2.8.22
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.
- data/VERSION +1 -1
- data/lib/right_support/stats/activity.rb +12 -19
- data/right_support.gemspec +2 -2
- data/spec/stats/activity_spec.rb +19 -18
- data/spec/stats/helpers_spec.rb +3 -3
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.8.
|
1
|
+
2.8.22
|
@@ -66,7 +66,6 @@ module RightSupport::Stats
|
|
66
66
|
|
67
67
|
# Mark the start of an activity and update counts and average rate
|
68
68
|
# with weighting toward past activity
|
69
|
-
# Ignore the update if its type contains "stats"
|
70
69
|
#
|
71
70
|
# @param type [String, Symbol] Type of activity, with anything that is not a symbol, true, or false
|
72
71
|
# automatically converted to a String and truncated to MAX_TYPE_SIZE characters; defaults to nil
|
@@ -75,20 +74,18 @@ module RightSupport::Stats
|
|
75
74
|
# @return [Time] Update time
|
76
75
|
def update(type = nil, id = nil)
|
77
76
|
now = Time.now
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
unless type.
|
83
|
-
|
84
|
-
|
85
|
-
type = type[0, MAX_TYPE_SIZE - 3] + "..." if type.size > (MAX_TYPE_SIZE - 3)
|
86
|
-
end
|
87
|
-
@count_per_type[type] = (@count_per_type[type] || 0) + 1
|
77
|
+
@interval = average(@interval, now - @last_start_time) if @measure_rate
|
78
|
+
@last_start_time = now
|
79
|
+
@total += 1
|
80
|
+
unless type.nil?
|
81
|
+
unless [Symbol, TrueClass, FalseClass].include?(type.class)
|
82
|
+
type = type.inspect unless type.is_a?(String)
|
83
|
+
type = type[0, MAX_TYPE_SIZE - 3] + "..." if type.size > (MAX_TYPE_SIZE - 3)
|
88
84
|
end
|
89
|
-
@
|
90
|
-
@last_id = id
|
85
|
+
@count_per_type[type] = (@count_per_type[type] || 0) + 1
|
91
86
|
end
|
87
|
+
@last_type = type
|
88
|
+
@last_id = id
|
92
89
|
now
|
93
90
|
end
|
94
91
|
|
@@ -127,17 +124,13 @@ module RightSupport::Stats
|
|
127
124
|
end
|
128
125
|
|
129
126
|
# Convert average interval to average rate
|
127
|
+
# Adjust interval before computing average to take into account when last activity occurred
|
130
128
|
#
|
131
129
|
# @return [Float, NilClass] Recent average rate, or nil if total is 0
|
132
130
|
def avg_rate
|
133
|
-
if @total >
|
134
|
-
@interval == 0.0 ? 0.0 : 1.0 / @interval
|
135
|
-
elsif @total == 1
|
136
|
-
0.0
|
137
|
-
end
|
131
|
+
1.0 / average(@interval, Time.now - @last_start_time) if @measure_rate && @total > 0
|
138
132
|
end
|
139
133
|
|
140
|
-
|
141
134
|
# Get average duration of activity
|
142
135
|
#
|
143
136
|
# @return [Float, NilClass] Average duration in seconds of activity weighted
|
data/right_support.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{right_support}
|
8
|
-
s.version = "2.8.
|
8
|
+
s.version = "2.8.22"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Tony Spataro", "Sergey Sergyenko", "Ryan Williamson", "Lee Kirchhoff", "Alexey Karpik", "Scott Messier"]
|
12
|
-
s.date = %q{2014-04-
|
12
|
+
s.date = %q{2014-04-07}
|
13
13
|
s.description = %q{A toolkit of useful, reusable foundation code created by RightScale.}
|
14
14
|
s.email = %q{support@rightscale.com}
|
15
15
|
s.extra_rdoc_files = [
|
data/spec/stats/activity_spec.rb
CHANGED
@@ -74,16 +74,6 @@ describe RightSupport::Stats::Activity do
|
|
74
74
|
@stats.instance_variable_get(:@count_per_type).should == {"test" => 1}
|
75
75
|
end
|
76
76
|
|
77
|
-
it "doesn't update counts when type contains 'stats'" do
|
78
|
-
flexmock(Time).should_receive(:now).and_return(1000010)
|
79
|
-
@stats.update("my stats")
|
80
|
-
@stats.instance_variable_get(:@interval).should == 0.0
|
81
|
-
@stats.instance_variable_get(:@last_start_time).should == @now
|
82
|
-
@stats.instance_variable_get(:@avg_duration).should be_nil
|
83
|
-
@stats.instance_variable_get(:@total).should == 0
|
84
|
-
@stats.instance_variable_get(:@count_per_type).should == {}
|
85
|
-
end
|
86
|
-
|
87
77
|
it "limits length of type string when submitting update" do
|
88
78
|
flexmock(Time).should_receive(:now).and_return(1000010)
|
89
79
|
@stats.update("test 12345678901234567890123456789012345678901234567890123456789")
|
@@ -184,17 +174,28 @@ describe RightSupport::Stats::Activity do
|
|
184
174
|
flexmock(Time).should_receive(:now).and_return(1000020, 1000042)
|
185
175
|
@stats.avg_rate.should be_nil
|
186
176
|
@stats.update
|
187
|
-
@stats.
|
188
|
-
@stats.instance_variable_get(:@interval).should == 4.0
|
177
|
+
@stats.instance_variable_get(:@interval).should == 2.0
|
189
178
|
@stats.avg_rate.should == 0.25
|
190
179
|
end
|
191
180
|
|
192
|
-
it "
|
193
|
-
flexmock(Time).should_receive(:now).and_return(1000020)
|
181
|
+
it "adjusts rate based on interval since last event" do
|
182
|
+
flexmock(Time).should_receive(:now).and_return(1000020, 1000042, 1000086)
|
194
183
|
@stats.avg_rate.should be_nil
|
195
184
|
@stats.update
|
196
|
-
@stats.
|
197
|
-
@stats.
|
185
|
+
@stats.update
|
186
|
+
@stats.instance_variable_get(:@interval).should == 4.0
|
187
|
+
@stats.avg_rate.should == 0.125
|
188
|
+
end
|
189
|
+
|
190
|
+
it "does not compute average unless measuring rate is enabled" do
|
191
|
+
@stats = RightSupport::Stats::Activity.new(false)
|
192
|
+
flexmock(Time).should_receive(:now).and_return(1000010)
|
193
|
+
@stats.update
|
194
|
+
@stats.avg_rate.should be_nil
|
195
|
+
end
|
196
|
+
|
197
|
+
it "does not compute average if there have been no events" do
|
198
|
+
@stats.avg_rate.should be_nil
|
198
199
|
end
|
199
200
|
end
|
200
201
|
|
@@ -243,9 +244,9 @@ describe RightSupport::Stats::Activity do
|
|
243
244
|
|
244
245
|
context :all do
|
245
246
|
it "returns all activity aspects that were measured except duration" do
|
246
|
-
flexmock(Time).should_receive(:now).and_return(
|
247
|
+
flexmock(Time).should_receive(:now).and_return(1000020, 1000042)
|
247
248
|
@stats.update
|
248
|
-
@stats.all.should == {"last" => {"elapsed" =>
|
249
|
+
@stats.all.should == {"last" => {"elapsed" => 22}, "total" => 1, "rate" => 0.25}
|
249
250
|
end
|
250
251
|
|
251
252
|
it "excludes rate if it is not being measured" do
|
data/spec/stats/helpers_spec.rb
CHANGED
@@ -336,7 +336,7 @@ describe RightSupport::Stats do
|
|
336
336
|
" (1) Mon Jan 12 #{@hr}:46:40 Exception: Test error\n" +
|
337
337
|
" heartbeat : 60 sec\n" +
|
338
338
|
" returns : no queue consumers: 67%, no queue: 33%, total: 3, \n" +
|
339
|
-
" last: no queue consumers (10 sec ago), rate: 0/sec\n"
|
339
|
+
" last: no queue consumers (10 sec ago), rate: 1.0/sec\n"
|
340
340
|
end
|
341
341
|
end
|
342
342
|
|
@@ -350,7 +350,7 @@ describe RightSupport::Stats do
|
|
350
350
|
activity.update("more testing")
|
351
351
|
flexmock(Time).should_receive(:now).and_return(1000010)
|
352
352
|
@helpers.activity_str(activity.all).should == "more testing: 75%, testing: 25%, total: 4, last: more testing (10 sec ago), " +
|
353
|
-
"rate: 0/sec"
|
353
|
+
"rate: 1.0/sec"
|
354
354
|
end
|
355
355
|
|
356
356
|
it 'converts last activity stats to string' do
|
@@ -496,7 +496,7 @@ describe RightSupport::Stats do
|
|
496
496
|
result = @helpers.sub_stats_str("my sub-stats", stats, :name_width => 13, :sub_stat_value_width => 60)
|
497
497
|
result.should == "my sub-stats : activity1 % : none\n" +
|
498
498
|
" activity1 last : none\n" +
|
499
|
-
" activity2 % : more testing:
|
499
|
+
" activity2 % : more testing: 60%, testing: 20%, stats: 20%, total: 5\n" +
|
500
500
|
" activity2 last : more testing: 46 min 40 sec ago\n" +
|
501
501
|
" activity3 last : testing forever: 46 min 40 sec ago and still active\n" +
|
502
502
|
" empty_hash : none\n" +
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: right_support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 3
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 8
|
9
|
-
-
|
10
|
-
version: 2.8.
|
9
|
+
- 22
|
10
|
+
version: 2.8.22
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tony Spataro
|
@@ -20,7 +20,7 @@ autorequire:
|
|
20
20
|
bindir: bin
|
21
21
|
cert_chain: []
|
22
22
|
|
23
|
-
date: 2014-04-
|
23
|
+
date: 2014-04-07 00:00:00 -07:00
|
24
24
|
default_executable:
|
25
25
|
dependencies:
|
26
26
|
- !ruby/object:Gem::Dependency
|