fozzie 0.0.27 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. data/.gitignore +2 -1
  2. data/Guardfile +2 -2
  3. data/README.md +22 -11
  4. data/Rakefile +1 -1
  5. data/fozzie.gemspec +8 -14
  6. data/lib/core_ext/module/monitor.rb +4 -3
  7. data/lib/fozzie.rb +6 -7
  8. data/lib/fozzie/adapter.rb +1 -0
  9. data/lib/fozzie/adapter/statsd.rb +86 -0
  10. data/lib/fozzie/bulk_dsl.rb +28 -0
  11. data/lib/fozzie/configuration.rb +32 -13
  12. data/lib/fozzie/dsl.rb +19 -0
  13. data/lib/fozzie/exception.rb +5 -0
  14. data/lib/fozzie/interface.rb +30 -15
  15. data/lib/fozzie/rack/middleware.rb +3 -1
  16. data/lib/fozzie/sniff.rb +28 -33
  17. data/lib/fozzie/version.rb +1 -1
  18. data/spec/config/fozzie.yml +2 -1
  19. data/spec/lib/core_ext/module/monitor_spec.rb +9 -0
  20. data/spec/lib/fozzie/adapter/statsd_spec.rb +82 -0
  21. data/spec/lib/fozzie/bulk_dsl_spec.rb +47 -0
  22. data/spec/lib/fozzie/configuration_spec.rb +34 -20
  23. data/spec/lib/fozzie/dsl_spec.rb +16 -0
  24. data/spec/lib/fozzie/rack/middleware_spec.rb +6 -36
  25. data/spec/lib/fozzie/rack/sinatra_spec.rb +31 -0
  26. data/spec/lib/fozzie/sniff_spec.rb +37 -37
  27. data/spec/lib/fozzie/version_spec.rb +1 -1
  28. data/spec/lib/fozzie_spec.rb +19 -3
  29. data/spec/shared_examples/fozzie_adapter.rb +7 -0
  30. data/spec/shared_examples/interface.rb +160 -0
  31. data/spec/spec_helper.rb +20 -10
  32. metadata +31 -74
  33. data/lib/core_ext/hash.rb +0 -16
  34. data/lib/fozzie/mill.rb +0 -50
  35. data/lib/fozzie/rails/engine.rb +0 -15
  36. data/lib/fozzie/rails/middleware.rb +0 -39
  37. data/lib/fozzie/railtie.rb +0 -15
  38. data/lib/fozzie/socket.rb +0 -53
  39. data/spec/lib/core_ext/hash_spec.rb +0 -33
  40. data/spec/lib/fozzie/interface_spec.rb +0 -180
  41. data/spec/lib/fozzie/mill_spec.rb +0 -43
  42. data/spec/lib/fozzie/rails/middleware_spec.rb +0 -125
@@ -0,0 +1,31 @@
1
+ require 'fozzie/rack/middleware'
2
+ require 'sinatra/base'
3
+ require 'rack/test'
4
+
5
+ describe "Sinatra Server with Middleware" do
6
+ include Rack::Test::Methods
7
+
8
+ def app
9
+ Sinatra.new do
10
+ set :environment, :test
11
+ use Fozzie::Rack::Middleware
12
+ get('/') { "echo" }
13
+ get('/somewhere/nice') { "echo" }
14
+ end
15
+ end
16
+
17
+ it "sends stats request on root" do
18
+ S.should_receive(:timing).with('index.render', anything, anything)
19
+ get '/'
20
+ last_response.should be_ok
21
+ last_response.body.should == 'echo'
22
+ end
23
+
24
+ it "sends stats request on nested path" do
25
+ S.should_receive(:timing).with('somewhere.nice.render', anything, anything)
26
+
27
+ get '/somewhere/nice'
28
+ last_response.should be_ok
29
+ last_response.body.should == 'echo'
30
+ end
31
+ end
@@ -13,9 +13,15 @@ describe Fozzie::Sniff do
13
13
 
14
14
  def self.badger; :cares end
15
15
 
16
+ _monitor("my.awesome.class.bucket.name")
17
+ def self.class_method_with_non_default_bucket_name; true; end
18
+
16
19
  _monitor
17
- def foo; :foo end
20
+ def foo; :foo; end
18
21
 
22
+ _monitor("my.awesome.bucket.name")
23
+ def method_with_non_default_bucket_name; true; end
24
+
19
25
  _monitor
20
26
  def sloth(a, b, c); [a,b,c] end
21
27
 
@@ -30,34 +36,23 @@ describe Fozzie::Sniff do
30
36
  def self.class_method_yielding_to_block
31
37
  yield(:retval_from_block) if block_given?
32
38
  end
33
-
34
- self
35
- end
36
- end
37
-
38
-
39
- context "environments" do
40
- subject { klass }
41
-
42
- it "is disabled in test" do
43
- Fozzie.c.stubs(:env).returns('test')
44
- S.expects(:time_for).with(['foo_bar', 'bar!']).never
45
-
46
- subject.bar!
47
39
  end
48
40
 
49
- it "is enabled in development" do
50
- Fozzie.c.stubs(:env).returns('development')
51
- S.expects(:time_for).with(['foo_bar', 'bar!'])
41
+ FooBar
42
+ end
52
43
 
53
- subject.bar!
54
- end
44
+ # Turn on sniffing for the duration of this spec
45
+ before(:all) do
46
+ Fozzie.c.sniff_envs << :test
47
+ end
55
48
 
49
+ after(:all) do
50
+ Fozzie.c.sniff_envs.delete(:test)
56
51
  end
57
52
 
58
53
  context 'class methods' do
59
54
  subject { klass }
60
-
55
+
61
56
  it "aliases methods for monitoring" do
62
57
  subject.methods.grep(/bar/).should =~ [:bar!, :"bar_with_monitor!", :"bar_without_monitor!"]
63
58
  end
@@ -67,7 +62,7 @@ describe Fozzie::Sniff do
67
62
  end
68
63
 
69
64
  it "utilises Fozzie" do
70
- S.expects(:time_for).with(['foo_bar', 'bar!'])
65
+ S.should_receive(:time_for).with(['foo_bar', 'bar!'])
71
66
 
72
67
  subject.bar!
73
68
  end
@@ -78,23 +73,26 @@ describe Fozzie::Sniff do
78
73
  end
79
74
 
80
75
  it "does not monitor when mapped" do
81
- S.expects(:time_for).with(['foo_bar', 'badger']).never
76
+ S.should_receive(:time_for).with(['foo_bar', 'badger']).never
82
77
 
83
78
  subject.badger.should eq :cares
84
79
  end
85
80
 
86
-
87
- it "yields to a block when given" do
88
- subject.class_method_yielding_to_block do |value_from_block|
89
- value_from_block
90
- end.should eq :retval_from_block
81
+ it "optionally sets the bucket name" do
82
+ S.should_receive(:time_for).with("my.awesome.class.bucket.name")
83
+
84
+ subject.class_method_with_non_default_bucket_name
91
85
  end
92
86
 
87
+
88
+ it "yields to a block when given" do
89
+ subject.class_method_yielding_to_block {|val| val }.should eq :retval_from_block
90
+ end
93
91
  end
94
92
 
95
93
  context 'instance methods' do
96
- subject { FooBar.new }
97
-
94
+ subject { klass.new }
95
+
98
96
  it "aliases methods for monitoring" do
99
97
  subject.methods.grep(/foo/).should =~ [:foo, :foo_with_monitor, :foo_without_monitor]
100
98
  end
@@ -104,28 +102,30 @@ describe Fozzie::Sniff do
104
102
  end
105
103
 
106
104
  it "utilises Fozzie" do
107
- S.expects(:time_for).with(['foo_bar', 'foo'])
105
+ S.should_receive(:time_for).with(['foo_bar', 'foo'])
108
106
 
109
107
  subject.foo
110
108
  end
111
109
 
110
+ it "optionally sets the bucket name" do
111
+ S.should_receive(:time_for).with("my.awesome.bucket.name")
112
+
113
+ subject.method_with_non_default_bucket_name
114
+ end
115
+
112
116
  it "handles arguments" do
113
117
  a = [:slow, :slower, :slowest]
114
118
  subject.sloth(*a).should eq a
115
119
  end
116
120
 
117
121
  it "does not monitor when mapped" do
118
- S.expects(:time_for).with(['foo_bar', 'honeybadger']).never
122
+ S.should_receive(:time_for).with(['foo_bar', 'honeybadger']).never
119
123
 
120
124
  subject.honeybadger.should eq :dontcare
121
125
  end
122
126
 
123
127
  it "yields to a block when given" do
124
- subject.method_yielding_to_block do |value_from_block|
125
- value_from_block
126
- end.should eq :retval_from_block
128
+ subject.method_yielding_to_block {|val| val }.should eq :retval_from_block
127
129
  end
128
-
129
130
  end
130
-
131
131
  end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe "Fozzie Version" do
4
4
 
5
- it "exists" do
5
+ it "is correct formatted" do
6
6
  Fozzie::VERSION.should be_kind_of(String)
7
7
  Fozzie::VERSION.should match(/\d{1,3}?\.?/)
8
8
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
+ require 'logger'
2
3
 
3
4
  describe Fozzie do
4
-
5
5
  it "allows dynamic assignment" do
6
6
  { :host => 'somewhere.local', :port => 99 }.each do |field, val|
7
7
  Fozzie.configure {|c| c.send("#{field}=", val) }
@@ -9,6 +9,23 @@ describe Fozzie do
9
9
  end
10
10
  end
11
11
 
12
+ describe ".logger" do
13
+ let(:logger) { double "logger" }
14
+
15
+ before do
16
+ @old_logger = Fozzie.logger
17
+ end
18
+
19
+ it "assigns a logger" do
20
+ Fozzie.logger = logger
21
+ Fozzie.logger.should eq logger
22
+ end
23
+
24
+ after do
25
+ Fozzie.logger = @old_logger
26
+ end
27
+ end
28
+
12
29
  it "has configuration" do
13
30
  Fozzie.config.should be_kind_of(Fozzie::Configuration)
14
31
  Fozzie.c.should be_kind_of(Fozzie::Configuration)
@@ -19,5 +36,4 @@ describe Fozzie do
19
36
  Kernel.const_defined?(k).should == true
20
37
  end
21
38
  end
22
-
23
- end
39
+ end
@@ -0,0 +1,7 @@
1
+ shared_examples_for "fozzie adapter" do
2
+
3
+ it { should respond_to(:register) }
4
+
5
+ it { should respond_to(:delimeter) }
6
+
7
+ end
@@ -0,0 +1,160 @@
1
+ shared_examples "interface" do
2
+
3
+ it "#increment" do
4
+ subject.should_receive(:send).with('wat', 1, :count, 1)
5
+ subject.increment 'wat'
6
+ end
7
+
8
+ it "#decrement" do
9
+ subject.should_receive(:send).with('wat', -1, :count, 1)
10
+ subject.decrement 'wat'
11
+ end
12
+
13
+ it "#count" do
14
+ subject.should_receive(:send).with('wat', 5, :count, 1)
15
+ subject.count 'wat', 5
16
+ end
17
+
18
+ it "#timing" do
19
+ subject.should_receive(:send).with('wat', 500, :timing, 1)
20
+ subject.timing 'wat', 500
21
+ end
22
+
23
+ it "times a given block" do
24
+ subject.should_receive(:timing).with do |b, val, timing|
25
+ b == 'data.bin' && (1..11).include?(val)
26
+ end.exactly(3).times
27
+
28
+ subject.time_for('data.bin') { sleep 0.01 }
29
+ subject.time_to_do('data.bin') { sleep 0.01 }
30
+ subject.time('data.bin') { sleep 0.01 }
31
+ end
32
+
33
+ describe "event" do
34
+ it "for a commit" do
35
+ subject.should_receive(:gauge).with(['event', 'commit', nil], anything).twice
36
+ subject.commit
37
+ subject.committed
38
+ end
39
+
40
+ it "for a build" do
41
+ subject.should_receive(:gauge).with(['event', 'build', nil], anything).twice
42
+ subject.build
43
+ subject.built
44
+ end
45
+
46
+ it "for a deploy" do
47
+ subject.should_receive(:gauge).with(['event', 'deploy', nil], anything).twice
48
+ subject.deploy
49
+ subject.deployed
50
+ end
51
+
52
+ it "for anything" do
53
+ subject.should_receive(:send).with(['event', 'foo', nil], anything, :gauge, 1)
54
+ subject.event 'foo'
55
+ end
56
+
57
+ it "accepts an app name" do
58
+ subject.should_receive(:send).with(['event', 'foo', 'fozzie'], anything, :gauge, 1)
59
+ subject.event 'foo', 'fozzie'
60
+ end
61
+ end
62
+
63
+ describe "#increment_on" do
64
+ it "registers success" do
65
+ subject.should_receive(:increment).with(["event.increment", "success"], 1)
66
+ subject.increment_on('event.increment', true).should == true
67
+ end
68
+
69
+ it "registers failure" do
70
+ subject.should_receive(:increment).with(["event.increment", "fail"], 1)
71
+ subject.increment_on('event.increment', false).should == false
72
+ end
73
+
74
+ it "simply questions the passed val with if" do
75
+ a = mock
76
+ a.should_receive(:save).and_return({})
77
+ subject.should_receive(:increment).with(["event.increment", "success"], 1)
78
+ subject.increment_on('event.increment', a.save).should == {}
79
+ end
80
+
81
+ it "registers fail on nil return" do
82
+ a = mock
83
+ a.should_receive(:save).and_return(nil)
84
+ subject.should_receive(:increment).with(["event.increment", "fail"], 1)
85
+ subject.increment_on('event.increment', a.save).should == nil
86
+ end
87
+
88
+ describe "performing actions" do
89
+ it "registers success" do
90
+ a = mock
91
+ a.should_receive(:save).and_return(true)
92
+ subject.should_receive(:increment).with(["event.increment", "success"], 1)
93
+ subject.increment_on('event.increment', a.save).should == true
94
+ end
95
+
96
+ it "registers failure" do
97
+ a = mock
98
+ a.should_receive(:save).and_return(false)
99
+ subject.should_receive(:increment).with(["event.increment", "fail"], 1)
100
+ subject.increment_on('event.increment', a.save).should == false
101
+ end
102
+
103
+ it "registers positive even when nested" do
104
+ a = mock
105
+ a.should_receive(:save).and_return(true)
106
+ subject.should_receive(:timing).with('event.run', anything, anything)
107
+ subject.should_receive(:increment).with(["event.increment", "success"], 1)
108
+
109
+ res = subject.time_to_do "event.run" do
110
+ subject.increment_on('event.increment', a.save)
111
+ end
112
+ res.should == true
113
+ end
114
+
115
+ it "registers negative even when nested" do
116
+ a = mock
117
+ a.should_receive(:save).and_return(false)
118
+ subject.should_receive(:timing).with('event.run', anything, anything)
119
+ subject.should_receive(:increment).with(["event.increment", "fail"], 1)
120
+
121
+ res = subject.time_to_do "event.run" do
122
+ subject.increment_on('event.increment', a.save)
123
+ end
124
+ res.should == false
125
+ end
126
+ end
127
+ end
128
+
129
+ describe "#bulk" do
130
+
131
+ it "registers statistics in a single call" do
132
+ Fozzie.c.adapter.should_receive(:register).once
133
+
134
+ subject.bulk do
135
+ increment :foo
136
+ decrement :bar
137
+ end
138
+ end
139
+
140
+ end
141
+
142
+ it "registers a gauge measurement" do
143
+ subject.should_receive(:send).with("mystat", 99, :gauge, 1)
144
+ subject.gauge("mystat", 99)
145
+ end
146
+
147
+ it "raises exception if natural exception from block" do
148
+ proc { subject.time_to_do('data.bin', 1, :gauge, 1) { raise ArgumentError, "testing" } }.should raise_error(ArgumentError)
149
+ end
150
+
151
+ it "only calls the block once on error" do
152
+ Fozzie.c.adapter.stub(:send) { raise SocketError }
153
+ i = 0
154
+ p = proc {|n| (n + 1) }
155
+ val = subject.time_to_do('data.bin') { i+= p.call(i) }
156
+
157
+ val.should == 1
158
+ end
159
+
160
+ end
@@ -1,19 +1,29 @@
1
1
  ENV['RACK_ENV'] ||= 'test'
2
2
 
3
- root = File.expand_path('../', File.dirname(__FILE__))
4
- lib = File.expand_path('lib', root)
3
+ # Basic path registers
4
+ root = File.expand_path('../', File.dirname(__FILE__))
5
+ lib = File.expand_path('lib', root)
5
6
  $:.unshift(root, lib)
6
7
 
7
- require 'simplecov'
8
- SimpleCov.start
9
-
10
- RSpec.configure do |config|
11
- config.mock_with :mocha
12
- end
8
+ # Shared Examples
9
+ Dir[File.expand_path('spec/shared_examples/*.rb')].each {|r| require r }
13
10
 
14
11
  require 'fozzie'
15
12
 
13
+ module Fozzie
14
+ class Adapter::TestAdapter
15
+ def register(*params); end
16
+ def delimeter; ""; end
17
+ def safe_separator; ""; end
18
+ end
19
+ end
20
+
16
21
  Fozzie.configure do |config|
17
- config.host = '127.0.0.1'
18
- config.port = 8809
22
+ config.host = '127.0.0.1'
23
+ config.port = 8809
24
+ config.adapter = "TestAdapter"
25
+ end
26
+
27
+ RSpec.configure do |config|
28
+ config.order = :random
19
29
  end
metadata CHANGED
@@ -1,16 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fozzie
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.27
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Marc Watts
9
- - Dave Nolan
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2012-08-22 00:00:00.000000000 Z
12
+ date: 2012-10-07 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: sys-uname
@@ -77,7 +76,7 @@ dependencies:
77
76
  - !ruby/object:Gem::Version
78
77
  version: '0'
79
78
  - !ruby/object:Gem::Dependency
80
- name: mocha
79
+ name: guard
81
80
  requirement: !ruby/object:Gem::Requirement
82
81
  none: false
83
82
  requirements:
@@ -93,7 +92,7 @@ dependencies:
93
92
  - !ruby/object:Gem::Version
94
93
  version: '0'
95
94
  - !ruby/object:Gem::Dependency
96
- name: syntax
95
+ name: guard-rspec
97
96
  requirement: !ruby/object:Gem::Requirement
98
97
  none: false
99
98
  requirements:
@@ -109,7 +108,7 @@ dependencies:
109
108
  - !ruby/object:Gem::Version
110
109
  version: '0'
111
110
  - !ruby/object:Gem::Dependency
112
- name: simplecov
111
+ name: rb-fsevent
113
112
  requirement: !ruby/object:Gem::Requirement
114
113
  none: false
115
114
  requirements:
@@ -156,57 +155,9 @@ dependencies:
156
155
  - - ! '>='
157
156
  - !ruby/object:Gem::Version
158
157
  version: '0'
159
- - !ruby/object:Gem::Dependency
160
- name: actionpack
161
- requirement: !ruby/object:Gem::Requirement
162
- none: false
163
- requirements:
164
- - - '='
165
- - !ruby/object:Gem::Version
166
- version: 2.3.14
167
- type: :development
168
- prerelease: false
169
- version_requirements: !ruby/object:Gem::Requirement
170
- none: false
171
- requirements:
172
- - - '='
173
- - !ruby/object:Gem::Version
174
- version: 2.3.14
175
- - !ruby/object:Gem::Dependency
176
- name: guard
177
- requirement: !ruby/object:Gem::Requirement
178
- none: false
179
- requirements:
180
- - - ! '>='
181
- - !ruby/object:Gem::Version
182
- version: '0'
183
- type: :development
184
- prerelease: false
185
- version_requirements: !ruby/object:Gem::Requirement
186
- none: false
187
- requirements:
188
- - - ! '>='
189
- - !ruby/object:Gem::Version
190
- version: '0'
191
- - !ruby/object:Gem::Dependency
192
- name: guard-rspec
193
- requirement: !ruby/object:Gem::Requirement
194
- none: false
195
- requirements:
196
- - - ! '>='
197
- - !ruby/object:Gem::Version
198
- version: '0'
199
- type: :development
200
- prerelease: false
201
- version_requirements: !ruby/object:Gem::Requirement
202
- none: false
203
- requirements:
204
- - - ! '>='
205
- - !ruby/object:Gem::Version
206
- version: '0'
207
- description: ! "\n Gem to make statistics sending to Statsd from Ruby applications
208
- simple and efficient as possible.\n Inspired by the original ruby-statsd gem
209
- by Etsy, currently used by Lonely Planet Online.\n "
158
+ description: ! "\n Gem to make statistics sending from Ruby applications simple
159
+ and efficient as possible.\n Currently supports Statsd, and is inspired by the
160
+ original ruby-statsd gem by Etsy.\n "
210
161
  email:
211
162
  - marc.watts@lonelyplanet.co.uk
212
163
  executables: []
@@ -222,31 +173,33 @@ files:
222
173
  - Rakefile
223
174
  - fozzie.gemspec
224
175
  - fozzie.yml.example
225
- - lib/core_ext/hash.rb
226
176
  - lib/core_ext/module/monitor.rb
227
177
  - lib/fozzie.rb
178
+ - lib/fozzie/adapter.rb
179
+ - lib/fozzie/adapter/statsd.rb
180
+ - lib/fozzie/bulk_dsl.rb
228
181
  - lib/fozzie/configuration.rb
182
+ - lib/fozzie/dsl.rb
183
+ - lib/fozzie/exception.rb
229
184
  - lib/fozzie/interface.rb
230
- - lib/fozzie/mill.rb
231
185
  - lib/fozzie/rack/middleware.rb
232
- - lib/fozzie/rails/engine.rb
233
- - lib/fozzie/rails/middleware.rb
234
- - lib/fozzie/railtie.rb
235
186
  - lib/fozzie/sniff.rb
236
- - lib/fozzie/socket.rb
237
187
  - lib/fozzie/version.rb
238
188
  - resources/mill.js.example
239
189
  - resources/mill.min.js.example
240
190
  - spec/config/fozzie.yml
241
- - spec/lib/core_ext/hash_spec.rb
191
+ - spec/lib/core_ext/module/monitor_spec.rb
192
+ - spec/lib/fozzie/adapter/statsd_spec.rb
193
+ - spec/lib/fozzie/bulk_dsl_spec.rb
242
194
  - spec/lib/fozzie/configuration_spec.rb
243
- - spec/lib/fozzie/interface_spec.rb
244
- - spec/lib/fozzie/mill_spec.rb
195
+ - spec/lib/fozzie/dsl_spec.rb
245
196
  - spec/lib/fozzie/rack/middleware_spec.rb
246
- - spec/lib/fozzie/rails/middleware_spec.rb
197
+ - spec/lib/fozzie/rack/sinatra_spec.rb
247
198
  - spec/lib/fozzie/sniff_spec.rb
248
199
  - spec/lib/fozzie/version_spec.rb
249
200
  - spec/lib/fozzie_spec.rb
201
+ - spec/shared_examples/fozzie_adapter.rb
202
+ - spec/shared_examples/interface.rb
250
203
  - spec/spec_helper.rb
251
204
  homepage:
252
205
  licenses: []
@@ -262,7 +215,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
262
215
  version: '0'
263
216
  segments:
264
217
  - 0
265
- hash: 1975054614990968952
218
+ hash: 254608194485651365
266
219
  required_rubygems_version: !ruby/object:Gem::Requirement
267
220
  none: false
268
221
  requirements:
@@ -271,22 +224,26 @@ required_rubygems_version: !ruby/object:Gem::Requirement
271
224
  version: '0'
272
225
  segments:
273
226
  - 0
274
- hash: 1975054614990968952
227
+ hash: 254608194485651365
275
228
  requirements: []
276
229
  rubyforge_project: fozzie
277
230
  rubygems_version: 1.8.24
278
231
  signing_key:
279
232
  specification_version: 3
280
- summary: Statsd Ruby gem from Lonely Planet Online
233
+ summary: Ruby gem from Lonely Planet Online to register statistics. Currently supports
234
+ Statsd.
281
235
  test_files:
282
236
  - spec/config/fozzie.yml
283
- - spec/lib/core_ext/hash_spec.rb
237
+ - spec/lib/core_ext/module/monitor_spec.rb
238
+ - spec/lib/fozzie/adapter/statsd_spec.rb
239
+ - spec/lib/fozzie/bulk_dsl_spec.rb
284
240
  - spec/lib/fozzie/configuration_spec.rb
285
- - spec/lib/fozzie/interface_spec.rb
286
- - spec/lib/fozzie/mill_spec.rb
241
+ - spec/lib/fozzie/dsl_spec.rb
287
242
  - spec/lib/fozzie/rack/middleware_spec.rb
288
- - spec/lib/fozzie/rails/middleware_spec.rb
243
+ - spec/lib/fozzie/rack/sinatra_spec.rb
289
244
  - spec/lib/fozzie/sniff_spec.rb
290
245
  - spec/lib/fozzie/version_spec.rb
291
246
  - spec/lib/fozzie_spec.rb
247
+ - spec/shared_examples/fozzie_adapter.rb
248
+ - spec/shared_examples/interface.rb
292
249
  - spec/spec_helper.rb