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 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