tabs 0.5.2 → 0.5.3
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/.travis.yml +5 -0
- data/Gemfile +1 -2
- data/README.md +2 -0
- data/Rakefile +4 -0
- data/lib/tabs/metrics/counter.rb +9 -0
- data/lib/tabs/tabs.rb +18 -8
- data/lib/tabs/version.rb +1 -1
- data/spec/lib/tabs/metrics/counter_spec.rb +9 -0
- data/spec/lib/tabs_spec.rb +22 -0
- data/tabs.gemspec +1 -0
- metadata +19 -2
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/README.md
CHANGED
data/Rakefile
CHANGED
data/lib/tabs/metrics/counter.rb
CHANGED
@@ -15,6 +15,7 @@ module Tabs
|
|
15
15
|
Tabs::RESOLUTIONS.each do |resolution|
|
16
16
|
increment_resolution(resolution, timestamp)
|
17
17
|
end
|
18
|
+
increment_total
|
18
19
|
true
|
19
20
|
end
|
20
21
|
|
@@ -29,6 +30,10 @@ module Tabs
|
|
29
30
|
filtered_pairs.map { |p| Hash[[p]] }
|
30
31
|
end
|
31
32
|
|
33
|
+
def total
|
34
|
+
get("stat:#{key}:total").to_i
|
35
|
+
end
|
36
|
+
|
32
37
|
private
|
33
38
|
|
34
39
|
def increment_resolution(resolution, timestamp)
|
@@ -38,6 +43,10 @@ module Tabs
|
|
38
43
|
incr(stat_key)
|
39
44
|
end
|
40
45
|
|
46
|
+
def increment_total
|
47
|
+
incr("stat:#{key}:total")
|
48
|
+
end
|
49
|
+
|
41
50
|
end
|
42
51
|
end
|
43
52
|
end
|
data/lib/tabs/tabs.rb
CHANGED
@@ -25,6 +25,12 @@ module Tabs
|
|
25
25
|
get_metric(key).increment
|
26
26
|
end
|
27
27
|
|
28
|
+
def counter_total(key, period=nil)
|
29
|
+
raise UnknownMetricError.new("Unknown metric: #{key}") unless metric_exists?(key)
|
30
|
+
raise MetricTypeMismatchError.new("Only counter metrics can be incremented") unless metric_type(key) == "counter"
|
31
|
+
get_metric(key).total
|
32
|
+
end
|
33
|
+
|
28
34
|
def record_value(key, value)
|
29
35
|
raise UnknownMetricError.new("Unknown metric: #{key}") unless metric_exists?(key)
|
30
36
|
raise MetricTypeMismatchError.new("Only value metrics can record a value") unless metric_type(key) == "value"
|
@@ -39,21 +45,33 @@ module Tabs
|
|
39
45
|
end
|
40
46
|
|
41
47
|
def get_metric(key)
|
48
|
+
raise UnknownMetricError.new("Unknown metric: #{key}") unless metric_exists?(key)
|
42
49
|
metrics = get("metrics")
|
43
50
|
type = metrics[key]
|
44
51
|
metric_klass(type).new(key)
|
45
52
|
end
|
46
53
|
|
47
54
|
def get_stats(key, period, resolution)
|
55
|
+
raise UnknownMetricError.new("Unknown metric: #{key}") unless metric_exists?(key)
|
48
56
|
metric = get_metric(key)
|
49
57
|
metric.stats(period, resolution)
|
50
58
|
end
|
51
59
|
|
52
60
|
def metric_type(key)
|
61
|
+
raise UnknownMetricError.new("Unknown metric: #{key}") unless metric_exists?(key)
|
53
62
|
hget "metrics", key
|
54
63
|
end
|
55
64
|
|
65
|
+
def list_metrics
|
66
|
+
hkeys "metrics"
|
67
|
+
end
|
68
|
+
|
69
|
+
def metric_exists?(key)
|
70
|
+
list_metrics.include? key
|
71
|
+
end
|
72
|
+
|
56
73
|
def drop_metric(key)
|
74
|
+
raise UnknownMetricError.new("Unknown metric: #{key}") unless metric_exists?(key)
|
57
75
|
hdel "metrics", key
|
58
76
|
Tabs::RESOLUTIONS.each do |resolution|
|
59
77
|
stat_key = "stat:keys:#{key}:#{resolution}"
|
@@ -63,14 +81,6 @@ module Tabs
|
|
63
81
|
end
|
64
82
|
end
|
65
83
|
|
66
|
-
def list_metrics
|
67
|
-
hkeys "metrics"
|
68
|
-
end
|
69
|
-
|
70
|
-
def metric_exists?(key)
|
71
|
-
list_metrics.include? key
|
72
|
-
end
|
73
|
-
|
74
84
|
private
|
75
85
|
|
76
86
|
def metric_klass(type)
|
data/lib/tabs/version.rb
CHANGED
@@ -16,6 +16,15 @@ describe Tabs::Metrics::Counter do
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
+
describe "total count" do
|
20
|
+
|
21
|
+
it "is incremented every time regardless of resolution" do
|
22
|
+
30.times { metric.increment }
|
23
|
+
expect(metric.total).to eq(30)
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
19
28
|
describe "retrieving stats" do
|
20
29
|
|
21
30
|
before do
|
data/spec/lib/tabs_spec.rb
CHANGED
@@ -125,4 +125,26 @@ describe Tabs do
|
|
125
125
|
|
126
126
|
end
|
127
127
|
|
128
|
+
describe "#list_metrics" do
|
129
|
+
|
130
|
+
it "lists all metrics that are defined" do
|
131
|
+
Tabs.create_metric("foo", "counter")
|
132
|
+
Tabs.create_metric("bar", "counter")
|
133
|
+
Tabs.create_metric("baz", "counter")
|
134
|
+
expect(Tabs.list_metrics).to eq(["foo", "bar", "baz"])
|
135
|
+
end
|
136
|
+
|
137
|
+
end
|
138
|
+
|
139
|
+
describe "#metric_type" do
|
140
|
+
|
141
|
+
it "returns the type of a given metric" do
|
142
|
+
Tabs.create_metric("foo", "counter")
|
143
|
+
Tabs.create_metric("bar", "value")
|
144
|
+
expect(Tabs.metric_type("foo")).to eq("counter")
|
145
|
+
expect(Tabs.metric_type("bar")).to eq("value")
|
146
|
+
end
|
147
|
+
|
148
|
+
end
|
149
|
+
|
128
150
|
end
|
data/tabs.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tabs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-02-
|
12
|
+
date: 2013-02-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: redis
|
@@ -123,6 +123,22 @@ dependencies:
|
|
123
123
|
- - ! '>='
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: rake
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
126
142
|
description: A redis-backed metrics tracker for keeping tabs on pretty much anything
|
127
143
|
;)
|
128
144
|
email:
|
@@ -133,6 +149,7 @@ extra_rdoc_files: []
|
|
133
149
|
files:
|
134
150
|
- .gitignore
|
135
151
|
- .ruby-version
|
152
|
+
- .travis.yml
|
136
153
|
- Gemfile
|
137
154
|
- LICENSE.txt
|
138
155
|
- README.md
|