statsd-ruby 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -30,6 +30,7 @@ Rcov::RcovTask.new do |spec|
30
30
  spec.libs << 'lib' << 'spec'
31
31
  spec.pattern = 'spec/**/*_spec.rb'
32
32
  spec.verbose = true
33
+ spec.rcov_opts << "--exclude spec,gems"
33
34
  end
34
35
 
35
36
  task :default => :spec
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.3.0
@@ -16,6 +16,9 @@ class Statsd
16
16
  # A namespace to prepend to all statsd calls.
17
17
  attr_accessor :namespace
18
18
 
19
+ #characters that will be replaced with _ in stat names
20
+ RESERVED_CHARS_REGEX = /[\:\|\@]/
21
+
19
22
  class << self
20
23
  # Set to any standard logger instance (including stdlib's Logger) to enable
21
24
  # stat logging using logger.debug
@@ -82,6 +85,7 @@ class Statsd
82
85
 
83
86
  def send(stat, delta, type, sample_rate)
84
87
  prefix = "#{@namespace}." unless @namespace.nil?
88
+ stat = stat.to_s.gsub('::', '.').gsub(RESERVED_CHARS_REGEX, '_')
85
89
  sampled(sample_rate) { send_to_socket("#{prefix}#{stat}:#{delta}|#{type}#{'|@' << sample_rate.to_s if sample_rate < 1}") }
86
90
  end
87
91
 
@@ -4,6 +4,7 @@ require 'minitest/autorun'
4
4
  $LOAD_PATH.unshift(File.dirname(__FILE__))
5
5
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
6
  require 'statsd'
7
+ require 'logger'
7
8
 
8
9
  class FakeUDPSocket
9
10
  def initialize
@@ -136,6 +136,49 @@ describe Statsd do
136
136
  @statsd.socket.recv.must_equal ['service.foobar:500|ms']
137
137
  end
138
138
  end
139
+
140
+ describe "with logging" do
141
+ require 'stringio'
142
+ before { Statsd.logger = Logger.new(@log = StringIO.new)}
143
+
144
+ it "should write to the log in debug" do
145
+ Statsd.logger.level = Logger::DEBUG
146
+
147
+ @statsd.increment('foobar')
148
+
149
+ @log.string.must_match "Statsd: foobar:1|c"
150
+ end
151
+
152
+ it "should not write to the log unless debug" do
153
+ Statsd.logger.level = Logger::INFO
154
+
155
+ @statsd.increment('foobar')
156
+
157
+ @log.string.must_be_empty
158
+ end
159
+
160
+ end
161
+
162
+ describe "stat names" do
163
+
164
+ it "should accept anything as stat" do
165
+ @statsd.increment(Object, 1)
166
+ end
167
+
168
+ it "should replace ruby constant delimeter with graphite package name" do
169
+ class Statsd::SomeClass; end
170
+ @statsd.increment(Statsd::SomeClass, 1)
171
+
172
+ @statsd.socket.recv.must_equal ['Statsd.SomeClass:1|c']
173
+ end
174
+
175
+ it "should replace statsd reserved chars in the stat name" do
176
+ @statsd.increment('ray@hostname.blah|blah.blah:blah', 1)
177
+ @statsd.socket.recv.must_equal ['ray_hostname.blah_blah.blah_blah:1|c']
178
+ end
179
+
180
+ end
181
+
139
182
  end
140
183
 
141
184
  describe Statsd do
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{statsd-ruby}
8
- s.version = "0.2.1"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Rein Henrichs"]
12
- s.date = %q{2011-06-23}
12
+ s.date = %q{2011-06-24}
13
13
  s.description = %q{A Statsd client in Ruby}
14
14
  s.email = %q{rein@phpfog.com}
15
15
  s.extra_rdoc_files = [
@@ -30,7 +30,7 @@ Gem::Specification.new do |s|
30
30
  s.homepage = %q{http://github.com/reinh/statsd}
31
31
  s.licenses = ["MIT"]
32
32
  s.require_paths = ["lib"]
33
- s.rubygems_version = %q{1.5.2}
33
+ s.rubygems_version = %q{1.3.9.1}
34
34
  s.summary = %q{A Statsd client in Ruby}
35
35
 
36
36
  if s.respond_to? :specification_version then
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: statsd-ruby
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 2
9
- - 1
10
- version: 0.2.1
8
+ - 3
9
+ - 0
10
+ version: 0.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Rein Henrichs
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-06-23 00:00:00 -07:00
18
+ date: 2011-06-24 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -127,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
127
  requirements: []
128
128
 
129
129
  rubyforge_project:
130
- rubygems_version: 1.5.2
130
+ rubygems_version: 1.3.9.1
131
131
  signing_key:
132
132
  specification_version: 3
133
133
  summary: A Statsd client in Ruby