instrumental_agent 0.10.1 → 0.11.0
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/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
|