instrumental_agent 0.10.1 → 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +4 -1
- data/lib/instrumental/agent.rb +7 -7
- data/lib/instrumental/version.rb +1 -1
- data/spec/agent_spec.rb +41 -29
- data/spec/test_server.rb +3 -4
- metadata +4 -4
data/CHANGELOG.md
CHANGED
data/lib/instrumental/agent.rb
CHANGED
@@ -104,9 +104,9 @@ module Instrumental
|
|
104
104
|
# Store a gauge for a metric, optionally at a specific time.
|
105
105
|
#
|
106
106
|
# agent.gauge('load', 1.23)
|
107
|
-
def gauge(metric, value, time = Time.now)
|
108
|
-
if valid?(metric, value, time) &&
|
109
|
-
send_command("gauge", metric, value, time.to_i)
|
107
|
+
def gauge(metric, value, time = Time.now, count = 1)
|
108
|
+
if valid?(metric, value, time, count) &&
|
109
|
+
send_command("gauge", metric, value, time.to_i, count.to_i)
|
110
110
|
value
|
111
111
|
else
|
112
112
|
nil
|
@@ -152,9 +152,9 @@ module Instrumental
|
|
152
152
|
# Increment a metric, optionally more than one or at a specific time.
|
153
153
|
#
|
154
154
|
# agent.increment('users')
|
155
|
-
def increment(metric, value = 1, time = Time.now)
|
156
|
-
if valid?(metric, value, time) &&
|
157
|
-
send_command("increment", metric, value, time.to_i)
|
155
|
+
def increment(metric, value = 1, time = Time.now, count = 1)
|
156
|
+
if valid?(metric, value, time, count) &&
|
157
|
+
send_command("increment", metric, value, time.to_i, count.to_i)
|
158
158
|
value
|
159
159
|
else
|
160
160
|
nil
|
@@ -258,7 +258,7 @@ module Instrumental
|
|
258
258
|
note !~ /[\n\r]/
|
259
259
|
end
|
260
260
|
|
261
|
-
def valid?(metric, value, time)
|
261
|
+
def valid?(metric, value, time, count)
|
262
262
|
valid_metric = metric =~ /^([\d\w\-_]+\.)*[\d\w\-_]+$/i
|
263
263
|
valid_value = value.to_s =~ /^-?\d+(\.\d+)?(e-\d+)?$/
|
264
264
|
|
data/lib/instrumental/version.rb
CHANGED
data/spec/agent_spec.rb
CHANGED
@@ -89,7 +89,7 @@ describe Instrumental::Agent, "enabled" do
|
|
89
89
|
now = Time.now
|
90
90
|
@agent.gauge('gauge_test', 123)
|
91
91
|
wait
|
92
|
-
@server.commands.last.should == "gauge gauge_test 123 #{now.to_i}"
|
92
|
+
@server.commands.last.should == "gauge gauge_test 123 #{now.to_i} 1"
|
93
93
|
end
|
94
94
|
|
95
95
|
it "should report a time as gauge and return the block result" do
|
@@ -111,14 +111,20 @@ describe Instrumental::Agent, "enabled" do
|
|
111
111
|
it "should report a gauge with a set time" do
|
112
112
|
@agent.gauge('gauge_test', 123, 555)
|
113
113
|
wait
|
114
|
-
@server.commands.last.should == "gauge gauge_test 123 555"
|
114
|
+
@server.commands.last.should == "gauge gauge_test 123 555 1"
|
115
|
+
end
|
116
|
+
|
117
|
+
it "should report a gauge with a set time and count" do
|
118
|
+
@agent.gauge('gauge_test', 123, 555, 111)
|
119
|
+
wait
|
120
|
+
@server.commands.last.should == "gauge gauge_test 123 555 111"
|
115
121
|
end
|
116
122
|
|
117
123
|
it "should report an increment" do
|
118
124
|
now = Time.now
|
119
125
|
@agent.increment("increment_test")
|
120
126
|
wait
|
121
|
-
@server.commands.last.should == "increment increment_test 1 #{now.to_i}"
|
127
|
+
@server.commands.last.should == "increment increment_test 1 #{now.to_i} 1"
|
122
128
|
end
|
123
129
|
|
124
130
|
it "should return the value incremented by" do
|
@@ -132,13 +138,19 @@ describe Instrumental::Agent, "enabled" do
|
|
132
138
|
now = Time.now
|
133
139
|
@agent.increment("increment_test", 2)
|
134
140
|
wait
|
135
|
-
@server.commands.last.should == "increment increment_test 2 #{now.to_i}"
|
141
|
+
@server.commands.last.should == "increment increment_test 2 #{now.to_i} 1"
|
136
142
|
end
|
137
143
|
|
138
144
|
it "should report an increment with a set time" do
|
139
145
|
@agent.increment('increment_test', 1, 555)
|
140
146
|
wait
|
141
|
-
@server.commands.last.should == "increment increment_test 1 555"
|
147
|
+
@server.commands.last.should == "increment increment_test 1 555 1"
|
148
|
+
end
|
149
|
+
|
150
|
+
it "should report an increment with a set time and count" do
|
151
|
+
@agent.increment('increment_test', 1, 555, 111)
|
152
|
+
wait
|
153
|
+
@server.commands.last.should == "increment increment_test 1 555 111"
|
142
154
|
end
|
143
155
|
|
144
156
|
it "should discard data that overflows the buffer" do
|
@@ -147,11 +159,11 @@ describe Instrumental::Agent, "enabled" do
|
|
147
159
|
@agent.increment('overflow_test', i + 1, 300)
|
148
160
|
end
|
149
161
|
wait
|
150
|
-
@server.commands.should include("increment overflow_test 1 300")
|
151
|
-
@server.commands.should include("increment overflow_test 2 300")
|
152
|
-
@server.commands.should include("increment overflow_test 3 300")
|
153
|
-
@server.commands.should_not include("increment overflow_test 4 300")
|
154
|
-
@server.commands.should_not include("increment overflow_test 5 300")
|
162
|
+
@server.commands.should include("increment overflow_test 1 300 1")
|
163
|
+
@server.commands.should include("increment overflow_test 2 300 1")
|
164
|
+
@server.commands.should include("increment overflow_test 3 300 1")
|
165
|
+
@server.commands.should_not include("increment overflow_test 4 300 1")
|
166
|
+
@server.commands.should_not include("increment overflow_test 5 300 1")
|
155
167
|
end
|
156
168
|
end
|
157
169
|
|
@@ -163,11 +175,11 @@ describe Instrumental::Agent, "enabled" do
|
|
163
175
|
end
|
164
176
|
@agent.instance_variable_get(:@queue).size.should == 0
|
165
177
|
wait # let the server receive the commands
|
166
|
-
@server.commands.should include("increment overflow_test 1 300")
|
167
|
-
@server.commands.should include("increment overflow_test 2 300")
|
168
|
-
@server.commands.should include("increment overflow_test 3 300")
|
169
|
-
@server.commands.should include("increment overflow_test 4 300")
|
170
|
-
@server.commands.should include("increment overflow_test 5 300")
|
178
|
+
@server.commands.should include("increment overflow_test 1 300 1")
|
179
|
+
@server.commands.should include("increment overflow_test 2 300 1")
|
180
|
+
@server.commands.should include("increment overflow_test 3 300 1")
|
181
|
+
@server.commands.should include("increment overflow_test 4 300 1")
|
182
|
+
@server.commands.should include("increment overflow_test 5 300 1")
|
171
183
|
end
|
172
184
|
end
|
173
185
|
|
@@ -181,9 +193,9 @@ describe Instrumental::Agent, "enabled" do
|
|
181
193
|
@agent.increment('fork_reconnect_test', 1, 4) # triggers reconnect
|
182
194
|
wait
|
183
195
|
@server.connect_count.should == 2
|
184
|
-
@server.commands.should include("increment fork_reconnect_test 1 2")
|
185
|
-
@server.commands.should include("increment fork_reconnect_test 1 3")
|
186
|
-
@server.commands.should include("increment fork_reconnect_test 1 4")
|
196
|
+
@server.commands.should include("increment fork_reconnect_test 1 2 1")
|
197
|
+
@server.commands.should include("increment fork_reconnect_test 1 3 1")
|
198
|
+
@server.commands.should include("increment fork_reconnect_test 1 4 1")
|
187
199
|
end
|
188
200
|
|
189
201
|
it "should never let an exception reach the user" do
|
@@ -298,7 +310,7 @@ describe Instrumental::Agent, "connection problems" do
|
|
298
310
|
@agent.increment('reconnect_test', 1, 5678) # triggers reconnect
|
299
311
|
wait
|
300
312
|
@server.connect_count.should == 2
|
301
|
-
@server.commands.last.should == "increment reconnect_test 1 5678"
|
313
|
+
@server.commands.last.should == "increment reconnect_test 1 5678 1"
|
302
314
|
end
|
303
315
|
|
304
316
|
it "should buffer commands when server is down" do
|
@@ -307,7 +319,7 @@ describe Instrumental::Agent, "connection problems" do
|
|
307
319
|
wait
|
308
320
|
@agent.increment('reconnect_test', 1, 1234)
|
309
321
|
wait
|
310
|
-
@agent.queue.pop(true).should include("increment reconnect_test 1 1234\n")
|
322
|
+
@agent.queue.pop(true).should include("increment reconnect_test 1 1234 1\n")
|
311
323
|
end
|
312
324
|
|
313
325
|
it "should buffer commands when server is not responsive" do
|
@@ -316,7 +328,7 @@ describe Instrumental::Agent, "connection problems" do
|
|
316
328
|
wait
|
317
329
|
@agent.increment('reconnect_test', 1, 1234)
|
318
330
|
wait
|
319
|
-
@agent.queue.pop(true).should include("increment reconnect_test 1 1234\n")
|
331
|
+
@agent.queue.pop(true).should include("increment reconnect_test 1 1234 1\n")
|
320
332
|
end
|
321
333
|
|
322
334
|
it "should buffer commands when authentication fails" do
|
@@ -325,7 +337,7 @@ describe Instrumental::Agent, "connection problems" do
|
|
325
337
|
wait
|
326
338
|
@agent.increment('reconnect_test', 1, 1234)
|
327
339
|
wait
|
328
|
-
@agent.queue.pop(true).should include("increment reconnect_test 1 1234\n")
|
340
|
+
@agent.queue.pop(true).should include("increment reconnect_test 1 1234 1\n")
|
329
341
|
end
|
330
342
|
|
331
343
|
it "should send commands in a short-lived process" do
|
@@ -333,7 +345,7 @@ describe Instrumental::Agent, "connection problems" do
|
|
333
345
|
@agent = Instrumental::Agent.new('test_token', :collector => @server.host_and_port, :synchronous => false)
|
334
346
|
if pid = fork { @agent.increment('foo', 1, 1234) }
|
335
347
|
Process.wait(pid)
|
336
|
-
@server.commands.last.should == "increment foo 1 1234"
|
348
|
+
@server.commands.last.should == "increment foo 1 1234 1"
|
337
349
|
end
|
338
350
|
end
|
339
351
|
|
@@ -342,7 +354,7 @@ describe Instrumental::Agent, "connection problems" do
|
|
342
354
|
@agent = Instrumental::Agent.new('test_token', :collector => @server.host_and_port, :synchronous => false)
|
343
355
|
if pid = fork { @agent.increment('foo', 1, 1234); @agent.cleanup; exit! }
|
344
356
|
Process.wait(pid)
|
345
|
-
@server.commands.last.should == "increment foo 1 1234"
|
357
|
+
@server.commands.last.should == "increment foo 1 1234 1"
|
346
358
|
end
|
347
359
|
end
|
348
360
|
|
@@ -393,11 +405,11 @@ describe Instrumental::Agent, "enabled with sync option" do
|
|
393
405
|
@agent.increment('overflow_test', i + 1, 300)
|
394
406
|
end
|
395
407
|
wait # let the server receive the commands
|
396
|
-
@server.commands.should include("increment overflow_test 1 300")
|
397
|
-
@server.commands.should include("increment overflow_test 2 300")
|
398
|
-
@server.commands.should include("increment overflow_test 3 300")
|
399
|
-
@server.commands.should include("increment overflow_test 4 300")
|
400
|
-
@server.commands.should include("increment overflow_test 5 300")
|
408
|
+
@server.commands.should include("increment overflow_test 1 300 1")
|
409
|
+
@server.commands.should include("increment overflow_test 2 300 1")
|
410
|
+
@server.commands.should include("increment overflow_test 3 300 1")
|
411
|
+
@server.commands.should include("increment overflow_test 4 300 1")
|
412
|
+
@server.commands.should include("increment overflow_test 5 300 1")
|
401
413
|
end
|
402
414
|
end
|
403
415
|
|
data/spec/test_server.rb
CHANGED
@@ -22,7 +22,7 @@ class TestServer
|
|
22
22
|
|
23
23
|
def listen
|
24
24
|
@port ||= 10001
|
25
|
-
@server = TCPServer.new(port)
|
25
|
+
@server = TCPServer.new(@port)
|
26
26
|
@main_thread = Thread.new do
|
27
27
|
begin
|
28
28
|
# puts "listening"
|
@@ -66,9 +66,8 @@ class TestServer
|
|
66
66
|
end
|
67
67
|
end
|
68
68
|
# puts "server up"
|
69
|
-
rescue
|
70
|
-
#
|
71
|
-
puts "failed to get port"
|
69
|
+
rescue Errno::EADDRINUSE => err
|
70
|
+
puts "#{err.inspect} failed to get port #{@port}"
|
72
71
|
puts err.message
|
73
72
|
@port += 1
|
74
73
|
retry
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: instrumental_agent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2012-07-
|
15
|
+
date: 2012-07-18 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rake
|
@@ -163,7 +163,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
163
163
|
version: '0'
|
164
164
|
segments:
|
165
165
|
- 0
|
166
|
-
hash:
|
166
|
+
hash: 3962445829990245099
|
167
167
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
168
168
|
none: false
|
169
169
|
requirements:
|
@@ -172,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
172
172
|
version: '0'
|
173
173
|
segments:
|
174
174
|
- 0
|
175
|
-
hash:
|
175
|
+
hash: 3962445829990245099
|
176
176
|
requirements: []
|
177
177
|
rubyforge_project:
|
178
178
|
rubygems_version: 1.8.24
|