nosey 0.0.3 → 0.0.4
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/README.md +8 -5
- data/lib/nosey/probe.rb +42 -36
- data/lib/nosey/version.rb +1 -1
- data/spec/lib/nosey/munin_spec.rb +6 -3
- data/spec/lib/nosey/probe_spec.rb +46 -37
- data/spec/lib/nosey_spec.rb +1 -1
- metadata +3 -3
data/README.md
CHANGED
@@ -36,15 +36,18 @@ Instrument your Ruby app with nosey.
|
|
36
36
|
nosey.touch 'started_at'
|
37
37
|
end
|
38
38
|
|
39
|
-
def growl
|
40
|
-
nosey.
|
41
|
-
nosey.
|
42
|
-
|
39
|
+
def growl(volume=1)
|
40
|
+
nosey.touch 'last-growled-at'
|
41
|
+
nosey.increment 'growl-count'
|
42
|
+
nosey.avg 'growl-volume-avg', volume
|
43
|
+
nosey.min 'growl-volume-min', volume
|
44
|
+
nosey.max 'growl-volume-max', volume
|
45
|
+
"G#{'r' * volume}!"
|
43
46
|
end
|
44
47
|
end
|
45
48
|
|
46
49
|
princess = PandaBear.new
|
47
|
-
princess.growl
|
50
|
+
10.times {|n| princess.growl rand * 5 }
|
48
51
|
princess.nosey.report # Soon to be a fantastico report, prolly in YML
|
49
52
|
|
50
53
|
When you fire Ruby this up, Nosey will open up a socket and report the stats.
|
data/lib/nosey/probe.rb
CHANGED
@@ -26,52 +26,42 @@ module Nosey
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
-
|
30
|
-
class Sampler < Base
|
31
|
-
attr_reader :min, :max, :sum, :count
|
32
|
-
|
33
|
-
def initialize(*args)
|
34
|
-
reset
|
35
|
-
super(*args)
|
36
|
-
end
|
37
|
-
|
29
|
+
class Average < Base
|
38
30
|
def sample(value)
|
39
|
-
@
|
40
|
-
|
41
|
-
@min = value if value < @min
|
42
|
-
@max = value if value > @max
|
31
|
+
@sum ||= 0
|
32
|
+
@count ||= 0
|
43
33
|
@sum += value
|
44
34
|
@count += 1
|
45
|
-
|
46
|
-
to_hash
|
47
35
|
end
|
48
36
|
|
49
|
-
def
|
50
|
-
sum / count if count > 0
|
37
|
+
def value
|
38
|
+
@sum.to_f / @count.to_f if @sum and @count > 0
|
51
39
|
end
|
40
|
+
end
|
52
41
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
'sum' => sum,
|
58
|
-
'avg' => avg,
|
59
|
-
'count' => count
|
60
|
-
}
|
42
|
+
class Minimum < Base
|
43
|
+
def sample(value)
|
44
|
+
@value ||= value
|
45
|
+
@value = value if value < @value
|
61
46
|
end
|
47
|
+
end
|
62
48
|
|
63
|
-
|
64
|
-
|
49
|
+
class Maximum < Base
|
50
|
+
def sample(value)
|
51
|
+
@value ||= value
|
52
|
+
@value = value if value > @value
|
65
53
|
end
|
54
|
+
end
|
66
55
|
|
67
|
-
|
68
|
-
|
69
|
-
@
|
56
|
+
class Sum < Base
|
57
|
+
def sample(value)
|
58
|
+
@value ||= 0
|
59
|
+
@value += value
|
70
60
|
end
|
71
61
|
end
|
72
62
|
|
73
63
|
# Count up/down values.
|
74
|
-
class
|
64
|
+
class Count < Base
|
75
65
|
def increment(by=1)
|
76
66
|
change by
|
77
67
|
end
|
@@ -96,7 +86,7 @@ module Nosey
|
|
96
86
|
|
97
87
|
# Contains a collection of probes that calculate velocities, counts, etc.
|
98
88
|
class Probe::Set
|
99
|
-
|
89
|
+
attr_accessor :name
|
100
90
|
|
101
91
|
def initialize(name)
|
102
92
|
@name = name
|
@@ -106,17 +96,17 @@ module Nosey
|
|
106
96
|
|
107
97
|
# Increment a counter probe
|
108
98
|
def increment(key,by=1)
|
109
|
-
ensure_probe(Probe::
|
99
|
+
ensure_probe(Probe::Count, key).increment(by)
|
110
100
|
end
|
111
101
|
|
112
102
|
# Decrement a counter probe
|
113
103
|
def decrement(key,by=1)
|
114
|
-
ensure_probe(Probe::
|
104
|
+
ensure_probe(Probe::Count, key).decrement(by)
|
115
105
|
end
|
116
106
|
|
117
107
|
# Sample a number and get a sum/avg/count/min/max
|
118
|
-
def
|
119
|
-
ensure_probe(Probe::
|
108
|
+
def avg(key,val)
|
109
|
+
ensure_probe(Probe::Average, key).sample(val)
|
120
110
|
end
|
121
111
|
|
122
112
|
# Touch a timestamp probe
|
@@ -124,6 +114,22 @@ module Nosey
|
|
124
114
|
ensure_probe(Probe::Touch, key).touch
|
125
115
|
end
|
126
116
|
|
117
|
+
def min(key,value)
|
118
|
+
ensure_probe(Probe::Minimum, key).sample(value)
|
119
|
+
end
|
120
|
+
|
121
|
+
def max(key,value)
|
122
|
+
ensure_probe(Probe::Maximum, key).sample(value)
|
123
|
+
end
|
124
|
+
|
125
|
+
def avg(key,value)
|
126
|
+
ensure_probe(Probe::Average, key).sample(value)
|
127
|
+
end
|
128
|
+
|
129
|
+
def sum(key,value)
|
130
|
+
ensure_probe(Probe::Sum, key).sample(value)
|
131
|
+
end
|
132
|
+
|
127
133
|
# List of all the probes that are active
|
128
134
|
def probes
|
129
135
|
@probes ||= Hash.new
|
data/lib/nosey/version.rb
CHANGED
@@ -7,7 +7,10 @@ describe Nosey::Munin::Graph do
|
|
7
7
|
r.probe_sets << Nosey::Probe::Set.new("Group #{n}") do |s|
|
8
8
|
s.touch 'generated-at'
|
9
9
|
s.increment 'hit'
|
10
|
-
s.
|
10
|
+
s.avg 'chopper-avg', 2
|
11
|
+
s.min 'chopper-min', 2
|
12
|
+
s.max 'chopper-max', 2
|
13
|
+
s.sum 'chopper-sum', 2
|
11
14
|
end
|
12
15
|
end
|
13
16
|
end
|
@@ -36,7 +39,7 @@ describe Nosey::Munin::Graph do
|
|
36
39
|
end
|
37
40
|
|
38
41
|
it "should have labels" do
|
39
|
-
@text.scan(/[A-Za-z0-9_]+\.label .+\n/).should have(
|
42
|
+
@text.scan(/[A-Za-z0-9_]+\.label .+\n/).should have(6).items
|
40
43
|
end
|
41
44
|
end
|
42
45
|
|
@@ -46,7 +49,7 @@ describe Nosey::Munin::Graph do
|
|
46
49
|
end
|
47
50
|
|
48
51
|
it "should have values" do
|
49
|
-
@text.scan(/[A-Za-z0-9_]+\.value .+\n/).should have(
|
52
|
+
@text.scan(/[A-Za-z0-9_]+\.value .+\n/).should have(6).items
|
50
53
|
end
|
51
54
|
end
|
52
55
|
end
|
@@ -21,8 +21,20 @@ describe Nosey::Probe::Set do
|
|
21
21
|
@probes.touch('touched-at').should be_instance_of(Time)
|
22
22
|
end
|
23
23
|
|
24
|
-
it "should
|
25
|
-
@probes.
|
24
|
+
it "should avg" do
|
25
|
+
@probes.avg('foobers', 1)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should sum" do
|
29
|
+
@probes.sum('foobers', 1)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should max" do
|
33
|
+
@probes.max('foobers', 1)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should min" do
|
37
|
+
@probes.max('foobers', 1)
|
26
38
|
end
|
27
39
|
|
28
40
|
it "should get probe" do
|
@@ -35,9 +47,39 @@ describe Nosey::Probe::Set do
|
|
35
47
|
end
|
36
48
|
end
|
37
49
|
|
38
|
-
describe Nosey::Probe
|
50
|
+
describe Nosey::Probe do
|
51
|
+
it "should calculate sum" do
|
52
|
+
sum = Nosey::Probe::Sum.new
|
53
|
+
sum.sample(1)
|
54
|
+
sum.sample(2)
|
55
|
+
sum.value.should eql(3)
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should calculate max" do
|
59
|
+
max = Nosey::Probe::Maximum.new
|
60
|
+
max.sample(1)
|
61
|
+
max.sample(3)
|
62
|
+
max.value.should eql(3)
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should calculate minimum" do
|
66
|
+
min = Nosey::Probe::Minimum.new
|
67
|
+
min.sample(1)
|
68
|
+
min.sample(2)
|
69
|
+
min.value.should eql(1)
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should calculate average" do
|
73
|
+
avg = Nosey::Probe::Average.new
|
74
|
+
avg.sample(1)
|
75
|
+
avg.sample(2)
|
76
|
+
avg.value.should eql(1.5)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe Nosey::Probe::Count do
|
39
81
|
before(:all) do
|
40
|
-
@counter = Nosey::Probe::
|
82
|
+
@counter = Nosey::Probe::Count.new
|
41
83
|
end
|
42
84
|
|
43
85
|
it "should init null" do
|
@@ -69,37 +111,4 @@ describe Nosey::Probe::Touch do
|
|
69
111
|
@touch.touch
|
70
112
|
@touch.value.should_not be_nil
|
71
113
|
end
|
72
|
-
end
|
73
|
-
|
74
|
-
describe Nosey::Probe::Sampler do
|
75
|
-
before(:each) do
|
76
|
-
@counter = Nosey::Probe::Sampler.new
|
77
|
-
@counter.sample 1
|
78
|
-
@counter.sample 2
|
79
|
-
@counter.sample 3
|
80
|
-
end
|
81
|
-
|
82
|
-
it "should init hash" do
|
83
|
-
@counter.value.should be_instance_of(Hash)
|
84
|
-
end
|
85
|
-
|
86
|
-
it "should have avg" do
|
87
|
-
@counter.value['avg'].should eql(2)
|
88
|
-
end
|
89
|
-
|
90
|
-
it "should have sum" do
|
91
|
-
@counter.value['sum'].should eql(6)
|
92
|
-
end
|
93
|
-
|
94
|
-
it "should have min" do
|
95
|
-
@counter.value['min'].should eql(1)
|
96
|
-
end
|
97
|
-
|
98
|
-
it "should have max" do
|
99
|
-
@counter.value['max'].should eql(3)
|
100
|
-
end
|
101
|
-
|
102
|
-
it "should have count" do
|
103
|
-
@counter.value['count'].should eql(3)
|
104
|
-
end
|
105
114
|
end
|
data/spec/lib/nosey_spec.rb
CHANGED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 4
|
9
|
+
version: 0.0.4
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Brad Gessler
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-09-
|
17
|
+
date: 2011-09-15 00:00:00 -07:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|