statsd-ruby 1.3.0 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -2
- data/README.rdoc +13 -7
- data/lib/statsd.rb +21 -3
- data/spec/helper.rb +1 -0
- data/spec/statsd_spec.rb +43 -3
- data/statsd-ruby.gemspec +2 -2
- metadata +30 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 91ca6f8d710ca7a0a0fadccd48293a804e652c0d
|
4
|
+
data.tar.gz: 24f9b37eb4a6fa239d1e80073ef3879f09f85909
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 505b5f1250aeb05e0c23a8b6d9822d4ca331db53504f906ce19c9d2802bb8d5d48f8bdc1fc0aa1170ef9b9b6f31d9eb838161db17271a84325a503adbaa03bda
|
7
|
+
data.tar.gz: ac00437d8f1e752db7989e7adecf174db970f27181312a19ad47216504f38a2cb0af4f51830a130454fa6bc3ad82e052ba7c495a9dc709b1878a82b762bd0ff0
|
data/.travis.yml
CHANGED
@@ -2,14 +2,13 @@
|
|
2
2
|
language: ruby
|
3
3
|
|
4
4
|
rvm:
|
5
|
-
- 1.9.3
|
6
5
|
- 2.0.0
|
7
6
|
- 2.1
|
8
7
|
- 2.2
|
9
8
|
- 2.3.0
|
9
|
+
- 2.4.0
|
10
10
|
- rbx-2
|
11
11
|
- jruby
|
12
|
-
- jruby-head
|
13
12
|
- ruby-head
|
14
13
|
|
15
14
|
sudo: false
|
@@ -19,3 +18,4 @@ matrix:
|
|
19
18
|
- rvm: rbx-2
|
20
19
|
- rvm: ruby-head
|
21
20
|
- rvm: jruby
|
21
|
+
- rvm: jruby-head
|
data/README.rdoc
CHANGED
@@ -52,18 +52,20 @@ Run the specs with <tt>rake spec</tt>
|
|
52
52
|
== Contributors
|
53
53
|
|
54
54
|
* Rein Henrichs
|
55
|
-
*
|
56
|
-
*
|
57
|
-
*
|
58
|
-
*
|
59
|
-
* Rick Olson
|
60
|
-
* Trae Robrock
|
55
|
+
* Alex Williams
|
56
|
+
* Andrew Meyer
|
57
|
+
* Chris Gaffney
|
58
|
+
* Cody Cutrer
|
61
59
|
* Corey Donohoe
|
62
|
-
* James Tucker
|
63
60
|
* Dotan Nahum
|
61
|
+
* Erez Rabih
|
64
62
|
* Eric Chapweske
|
63
|
+
* Gabriel Burt
|
65
64
|
* Hannes Georg
|
65
|
+
* James Tucker
|
66
|
+
* Jeremy Kemper
|
66
67
|
* John Nunemaker
|
68
|
+
* Lann Martin
|
67
69
|
* Mahesh Murthy
|
68
70
|
* Manu J
|
69
71
|
* Matt Sanford
|
@@ -73,7 +75,11 @@ Run the specs with <tt>rake spec</tt>
|
|
73
75
|
* Peter Mounce
|
74
76
|
* Ray Krueger
|
75
77
|
* Reed Lipman
|
78
|
+
* rick
|
79
|
+
* Ryan Tomayko
|
80
|
+
* Schuyler Erle
|
76
81
|
* Thomas Whaples
|
82
|
+
* Trae Robrock
|
77
83
|
|
78
84
|
== Copyright
|
79
85
|
|
data/lib/statsd.rb
CHANGED
@@ -53,13 +53,15 @@ class Statsd
|
|
53
53
|
:postfix,
|
54
54
|
:delimiter, :delimiter=
|
55
55
|
|
56
|
-
attr_accessor :batch_size
|
56
|
+
attr_accessor :batch_size, :batch_byte_size
|
57
57
|
|
58
58
|
# @param [Statsd] requires a configured Statsd instance
|
59
59
|
def initialize(statsd)
|
60
60
|
@statsd = statsd
|
61
61
|
@batch_size = statsd.batch_size
|
62
|
+
@batch_byte_size = statsd.batch_byte_size
|
62
63
|
@backlog = []
|
64
|
+
@backlog_bytesize = 0
|
63
65
|
end
|
64
66
|
|
65
67
|
# @yields [Batch] yields itself
|
@@ -77,14 +79,26 @@ class Statsd
|
|
77
79
|
unless @backlog.empty?
|
78
80
|
@statsd.send_to_socket @backlog.join("\n")
|
79
81
|
@backlog.clear
|
82
|
+
@backlog_bytesize = 0
|
80
83
|
end
|
81
84
|
end
|
82
85
|
|
83
86
|
protected
|
84
87
|
|
85
88
|
def send_to_socket(message)
|
89
|
+
# this message wouldn't fit; flush the queue. note that we don't have
|
90
|
+
# to do this for message based flushing, because we're incrementing by
|
91
|
+
# one, so the post-queue check will always catch it
|
92
|
+
if (@batch_byte_size && @backlog_bytesize + message.bytesize + 1 > @batch_byte_size)
|
93
|
+
flush
|
94
|
+
end
|
86
95
|
@backlog << message
|
87
|
-
|
96
|
+
@backlog_bytesize += message.bytesize
|
97
|
+
# skip the interleaved newline for the first item
|
98
|
+
@backlog_bytesize += 1 if @backlog.length != 1
|
99
|
+
# if we're precisely full now, flush
|
100
|
+
if (@batch_size && @backlog.size == @batch_size) ||
|
101
|
+
(@batch_byte_size && @backlog_bytesize == @batch_byte_size)
|
88
102
|
flush
|
89
103
|
end
|
90
104
|
end
|
@@ -244,9 +258,12 @@ class Statsd
|
|
244
258
|
# StatsD namespace prefix, generated from #namespace
|
245
259
|
attr_reader :prefix
|
246
260
|
|
247
|
-
# The default batch size for new batches (default: 10)
|
261
|
+
# The default batch size for new batches. Set to nil to use batch_byte_size (default: 10)
|
248
262
|
attr_accessor :batch_size
|
249
263
|
|
264
|
+
# The default batch size, in bytes, for new batches (default: default nil; use batch_size)
|
265
|
+
attr_accessor :batch_byte_size
|
266
|
+
|
250
267
|
# a postfix to append to all metrics
|
251
268
|
attr_reader :postfix
|
252
269
|
|
@@ -267,6 +284,7 @@ class Statsd
|
|
267
284
|
self.delimiter = "."
|
268
285
|
@prefix = nil
|
269
286
|
@batch_size = 10
|
287
|
+
@batch_byte_size = nil
|
270
288
|
@postfix = nil
|
271
289
|
@socket = nil
|
272
290
|
@protocol = protocol || :udp
|
data/spec/helper.rb
CHANGED
data/spec/statsd_spec.rb
CHANGED
@@ -212,7 +212,7 @@ describe Statsd do
|
|
212
212
|
describe "when the sample rate is less than a random value [0,1]" do
|
213
213
|
before { class << @statsd; def rand; 1; end; end } # ensure no delivery
|
214
214
|
it "should not send" do
|
215
|
-
@statsd.timing('foobar', 500, 0.5)
|
215
|
+
assert_nil @statsd.timing('foobar', 500, 0.5)
|
216
216
|
end
|
217
217
|
end
|
218
218
|
|
@@ -279,7 +279,7 @@ describe Statsd do
|
|
279
279
|
[nil, false, ''].each do |value|
|
280
280
|
@statsd.postfix = 'a postfix'
|
281
281
|
@statsd.postfix = value
|
282
|
-
@statsd.postfix
|
282
|
+
assert_nil @statsd.postfix
|
283
283
|
end
|
284
284
|
end
|
285
285
|
end
|
@@ -345,7 +345,7 @@ describe Statsd do
|
|
345
345
|
end
|
346
346
|
|
347
347
|
it "should ignore socket errors" do
|
348
|
-
@statsd.increment('foobar')
|
348
|
+
assert_nil @statsd.increment('foobar')
|
349
349
|
end
|
350
350
|
|
351
351
|
it "should log socket errors" do
|
@@ -359,12 +359,24 @@ describe Statsd do
|
|
359
359
|
@statsd.batch_size.must_equal 10
|
360
360
|
end
|
361
361
|
|
362
|
+
it "should have a default batch byte size of nil" do
|
363
|
+
assert_nil @statsd.batch_byte_size
|
364
|
+
end
|
365
|
+
|
362
366
|
it "should have a modifiable batch size" do
|
363
367
|
@statsd.batch_size = 7
|
364
368
|
@statsd.batch_size.must_equal 7
|
365
369
|
@statsd.batch do |b|
|
366
370
|
b.batch_size.must_equal 7
|
367
371
|
end
|
372
|
+
|
373
|
+
@statsd.batch_size = nil
|
374
|
+
@statsd.batch_byte_size = 1472
|
375
|
+
@statsd.batch do |b|
|
376
|
+
assert_nil b.batch_size
|
377
|
+
b.batch_byte_size.must_equal 1472
|
378
|
+
end
|
379
|
+
|
368
380
|
end
|
369
381
|
|
370
382
|
it "should flush the batch at the batch size or at the end of the block" do
|
@@ -381,6 +393,34 @@ describe Statsd do
|
|
381
393
|
@socket.recv.must_equal [(["foobar:1|c"] * 2).join("\n")]
|
382
394
|
end
|
383
395
|
|
396
|
+
it "should flush based on batch byte size" do
|
397
|
+
@statsd.batch do |b|
|
398
|
+
b.batch_size = nil
|
399
|
+
b.batch_byte_size = 22
|
400
|
+
|
401
|
+
# The first two should flush, the last will be flushed when the
|
402
|
+
# block is done.
|
403
|
+
3.times { b.increment('foobar') }
|
404
|
+
|
405
|
+
@socket.recv.must_equal [(["foobar:1|c"] * 2).join("\n")]
|
406
|
+
end
|
407
|
+
|
408
|
+
@socket.recv.must_equal ["foobar:1|c"]
|
409
|
+
end
|
410
|
+
|
411
|
+
it "should flush immediately when the queue is exactly a batch size" do
|
412
|
+
@statsd.batch do |b|
|
413
|
+
b.batch_size = nil
|
414
|
+
b.batch_byte_size = 21
|
415
|
+
|
416
|
+
# The first two should flush, the last will be flushed when the
|
417
|
+
# block is done.
|
418
|
+
2.times { b.increment('foobar') }
|
419
|
+
|
420
|
+
@socket.recv.must_equal [(["foobar:1|c"] * 2).join("\n")]
|
421
|
+
end
|
422
|
+
end
|
423
|
+
|
384
424
|
it "should not flush to the socket if the backlog is empty" do
|
385
425
|
batch = Statsd::Batch.new(@statsd)
|
386
426
|
batch.flush
|
data/statsd-ruby.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
|
-
Gem::Specification.new("statsd-ruby", "1.
|
4
|
-
s.authors =
|
3
|
+
Gem::Specification.new("statsd-ruby", "1.4.0") do |s|
|
4
|
+
s.authors = `git log --format='%aN' | sort -u`.split("\n")
|
5
5
|
s.email = "reinh@reinh.com"
|
6
6
|
|
7
7
|
s.summary = "A Ruby StatsD client"
|
metadata
CHANGED
@@ -1,14 +1,42 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: statsd-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
+
- Alex Williams
|
8
|
+
- Andrew Meyer
|
9
|
+
- Chris Gaffney
|
10
|
+
- Cody Cutrer
|
11
|
+
- Corey Donohoe
|
12
|
+
- Dotan Nahum
|
13
|
+
- Erez Rabih
|
14
|
+
- Eric Chapweske
|
15
|
+
- Gabriel Burt
|
16
|
+
- Hannes Georg
|
17
|
+
- James Tucker
|
18
|
+
- Jeremy Kemper
|
19
|
+
- John Nunemaker
|
20
|
+
- Lann Martin
|
21
|
+
- Mahesh Murthy
|
22
|
+
- Manu J
|
23
|
+
- Matt Sanford
|
24
|
+
- Nate Bird
|
25
|
+
- Noah Lorang
|
26
|
+
- Oscar Del Ben
|
27
|
+
- Peter Mounce
|
28
|
+
- Ray Krueger
|
29
|
+
- Reed Lipman
|
7
30
|
- Rein Henrichs
|
31
|
+
- rick
|
32
|
+
- Ryan Tomayko
|
33
|
+
- Schuyler Erle
|
34
|
+
- Thomas Whaples
|
35
|
+
- Trae Robrock
|
8
36
|
autorequire:
|
9
37
|
bindir: bin
|
10
38
|
cert_chain: []
|
11
|
-
date:
|
39
|
+
date: 2017-03-29 00:00:00.000000000 Z
|
12
40
|
dependencies:
|
13
41
|
- !ruby/object:Gem::Dependency
|
14
42
|
name: minitest
|
@@ -115,4 +143,3 @@ test_files:
|
|
115
143
|
- spec/helper.rb
|
116
144
|
- spec/statsd_admin_spec.rb
|
117
145
|
- spec/statsd_spec.rb
|
118
|
-
has_rdoc:
|