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 CHANGED
@@ -1,4 +1,7 @@
1
- ### 0.10.14 [July 16th, 2012]
1
+ ### 0.11.0 [July 18th, 2012]
2
+ * Allow passing count to increment and gauge calls for pre-aggregated values
3
+
4
+ ### 0.10.1 [July 16th, 2012]
2
5
  * Fix issue with Etc not being required
3
6
 
4
7
  ### 0.10.0 [July 6th, 2012]
@@ -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
 
@@ -1,3 +1,3 @@
1
1
  module Instrumental
2
- VERSION = '0.10.1'
2
+ VERSION = '0.11.0'
3
3
  end
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 Exception => err
70
- # FIXME: doesn't seem to be detecting failures of listen
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.10.1
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-17 00:00:00.000000000 Z
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: 726264151342751861
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: 726264151342751861
175
+ hash: 3962445829990245099
176
176
  requirements: []
177
177
  rubyforge_project:
178
178
  rubygems_version: 1.8.24