fozzie 0.0.20 → 0.0.21

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.
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+ require 'fozzie/mill'
3
+
4
+ module Fozzie
5
+ describe Mill do
6
+ let(:str) { "userAgent;Mozilla/5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_7_3%29%20AppleWebKit/535.19%20%28KHTML%2C%20like%20Gecko%29%20Chrome/18.0.1025.165%20Safari/535.19;vendorSub;;vendor;Google%20Inc.;onLine;true;appCodeName;Mozilla;cookieEnabled;true;product;Gecko;language;en-US;appVersion;5.0%20%28Macintosh%3B%20Intel%20Mac%20OS%20X%2010_7_3%29%20AppleWebKit/535.19%20%28KHTML%2C%20like%20Gecko%29%20Chrome/18.0.1025.165%20Safari/535.19;appName;Netscape;productSub;20030107;platform;MacIntel;domainLookupStart;1335538507546;domInteractive;1335538508237;domComplete;1335538508323;loadEventEnd;0;requestStart;1335538507546;connectEnd;1335538507546;domContentLoadedEventEnd;1335538508237;unloadEventStart;1335538508050;domainLookupEnd;1335538507546;fetchStart;1335538507545;unloadEventEnd;1335538508050;connectStart;1335538507546;secureConnectionStart;0;redirectEnd;0;domContentLoadedEventStart;1335538508237;loadEventStart;1335538508323;responseStart;1335538508049;redirectStart;0;domLoading;1335538508182;responseEnd;1335538508050;navigationStart;1335538507545;href;http://localhost:8080/" }
7
+ subject { Mill }
8
+
9
+ describe "with environment arguments" do
10
+
11
+ it "creates args hash from string" do
12
+ inst = subject.register(str)
13
+ inst.args['appCodeName'].should eq 'Mozilla'
14
+ inst.args['cookieEnabled'].should eq 'true'
15
+ end
16
+
17
+ it "handles escaped values" do
18
+ inst = subject.register(str)
19
+ inst.args['userAgent'].should eq 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.165 Safari/535.19'
20
+ inst.args['appVersion'].should eq '5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.165 Safari/535.19'
21
+ end
22
+
23
+ it "skips if not passed" do
24
+ S.expects(:timing).never
25
+ subject.register("")
26
+ end
27
+
28
+ describe "registers all mapped metrics" do
29
+ let!(:expects) {
30
+ S.expects(:timing).with(["page", "ttfb"], 504)
31
+ S.expects(:timing).with(["page", "load"], 778)
32
+ }
33
+
34
+ it "dom complete" do
35
+ subject.register(str)
36
+ end
37
+
38
+ end
39
+
40
+ end
41
+
42
+ end
43
+ end
@@ -4,18 +4,11 @@ require 'action_controller'
4
4
  describe Fozzie::Rails::Middleware do
5
5
  let(:path_info) { '/somewhere/railsy' }
6
6
  let(:fake_env) { ({ 'PATH_INFO' => path_info }) }
7
-
8
- before :each do
9
- unless defined?(ActionController::RoutingError)
10
- ActionController::RoutingError = Class.new(StandardError)
11
- end
12
- end
7
+ let(:routing) { mock 'routing' }
13
8
 
14
9
  subject do
15
10
  RailsApp = Class.new do
16
- def call(env)
17
- env
18
- end
11
+ def call(env); env end
19
12
  end unless defined?(RailsApp)
20
13
  Rails = RailsApp unless defined?(Rails)
21
14
  Fozzie::Rails::Middleware.new RailsApp.new
@@ -31,7 +24,8 @@ describe Fozzie::Rails::Middleware do
31
24
  let!(:version) { RailsApp.stubs(:version).returns("2.3.1") }
32
25
 
33
26
  it "#generate_key" do
34
- ActionController::Routing::Routes.expects(:recognize_path)
27
+ subject.stubs(:routing_lookup).returns(routing)
28
+ routing.expects(:recognize_path)
35
29
  .with(path_info)
36
30
  .returns({:controller => 'somewhere', :action => 'railsy'})
37
31
 
@@ -39,9 +33,10 @@ describe Fozzie::Rails::Middleware do
39
33
  end
40
34
 
41
35
  it "returns nil on routing error" do
42
- ActionController::Routing::Routes.expects(:recognize_path)
36
+ subject.stubs(:routing_lookup).returns(routing)
37
+ routing.expects(:recognize_path)
43
38
  .with(path_info)
44
- .raises(ArgumentError)
39
+ .raises(RuntimeError)
45
40
 
46
41
  subject.generate_key(fake_env).should == nil
47
42
  end
@@ -49,13 +44,11 @@ describe Fozzie::Rails::Middleware do
49
44
  end
50
45
 
51
46
  describe "rails 3" do
52
- let(:app) { Class.new }
53
- let(:routing) { Class.new }
54
- let!(:rails) { RailsApp.stubs(:application).returns(app) }
47
+ let!(:rails) { RailsApp.stubs(:application).returns(Class.new) }
55
48
  let!(:version) { RailsApp.stubs(:version).returns("3.1.1") }
56
- let!(:routes) { app.stubs(:routes).returns(routing)}
57
49
 
58
50
  it "#generate_key" do
51
+ subject.stubs(:routing_lookup).returns(routing)
59
52
  routing.expects(:recognize_path)
60
53
  .with(path_info)
61
54
  .returns({:controller => 'somewhere', :action => 'railsy'})
@@ -64,20 +57,21 @@ describe Fozzie::Rails::Middleware do
64
57
  end
65
58
 
66
59
  it "returns nil on error" do
60
+ subject.stubs(:routing_lookup).returns(routing)
67
61
  routing.expects(:recognize_path)
68
62
  .with(path_info)
69
- .raises(ArgumentError)
63
+ .raises(RuntimeError)
70
64
 
71
65
  subject.generate_key(fake_env).should == nil
72
66
  end
73
67
 
74
68
  it "returns nil on routing error" do
69
+ subject.stubs(:routing_lookup).returns(routing)
75
70
  routing.expects(:recognize_path)
76
71
  .with(path_info)
77
- .raises(ActionController::RoutingError)
72
+ .raises(RuntimeError)
78
73
 
79
- S.expects(:increment)
80
- .with('routing.error')
74
+ S.expects(:increment).with('routing.error')
81
75
 
82
76
  subject.generate_key(fake_env).should == nil
83
77
  end
@@ -0,0 +1,107 @@
1
+ require 'spec_helper'
2
+ require 'fozzie/sniff'
3
+
4
+ describe Fozzie::Sniff do
5
+
6
+ subject do
7
+ class FooBar
8
+
9
+ _monitor
10
+ def self.bar!; :bar end
11
+
12
+ _monitor
13
+ def self.koala(hsh = {}); hsh end
14
+
15
+ def self.badger; :cares end
16
+
17
+ _monitor
18
+ def foo; :foo end
19
+
20
+ _monitor
21
+ def sloth(a, b, c); [a,b,c] end
22
+
23
+ def honeybadger; :dontcare end
24
+
25
+ end
26
+
27
+ FooBar
28
+ end
29
+
30
+ context "environments" do
31
+
32
+ it "is disabled in test" do
33
+ Fozzie.c.stubs(:env).returns('test')
34
+ S.expects(:time_for).with(['foo_bar', 'bar!']).never
35
+
36
+ subject.bar!
37
+ end
38
+
39
+ it "is enabled in development" do
40
+ Fozzie.c.stubs(:env).returns('development')
41
+ S.expects(:time_for).with(['foo_bar', 'bar!'])
42
+
43
+ subject.bar!
44
+ end
45
+
46
+ end
47
+
48
+ context 'class methods' do
49
+ let!(:env) { Fozzie.c.stubs(:env).returns('development') }
50
+
51
+ it "aliases methods for monitoring" do
52
+ subject.methods.grep(/bar/).should eq [:bar!, :"bar_with_monitor!", :"bar_without_monitor!"]
53
+ end
54
+
55
+ it "behaves like original" do
56
+ subject.bar!.should eq :bar
57
+ end
58
+
59
+ it "utilises Fozzie" do
60
+ S.expects(:time_for).with(['foo_bar', 'bar!'])
61
+
62
+ subject.bar!
63
+ end
64
+
65
+ it "handles arguments" do
66
+ h = { drop: 'bear' }
67
+ subject.koala(h).should eq h
68
+ end
69
+
70
+ it "does not monitor when mapped" do
71
+ S.expects(:time_for).with(['foo_bar', 'badger']).never
72
+
73
+ subject.badger.should eq :cares
74
+ end
75
+
76
+ end
77
+
78
+ context 'instance methods' do
79
+
80
+ it "aliases methods for monitoring" do
81
+ subject.new.methods.grep(/foo/).should eq [:foo, :foo_with_monitor, :foo_without_monitor]
82
+ end
83
+
84
+ it "behaves like original" do
85
+ subject.new.foo.should eq :foo
86
+ end
87
+
88
+ it "utilises Fozzie" do
89
+ S.expects(:time_for).with(['foo_bar', 'foo'])
90
+
91
+ subject.new.foo
92
+ end
93
+
94
+ it "handles arguments" do
95
+ a = [:slow, :slower, :slowest]
96
+ subject.new.sloth(*a).should eq a
97
+ end
98
+
99
+ it "does not monitor when mapped" do
100
+ S.expects(:time_for).with(['foo_bar', 'honeybadger']).never
101
+
102
+ subject.new.honeybadger.should eq :dontcare
103
+ end
104
+
105
+ end
106
+
107
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fozzie
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.20
4
+ version: 0.0.21
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-04-11 00:00:00.000000000 Z
13
+ date: 2012-05-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: sys-uname
17
- requirement: &70147172035300 !ruby/object:Gem::Requirement
17
+ requirement: !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,31 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70147172035300
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: facets
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
26
47
  - !ruby/object:Gem::Dependency
27
48
  name: rake
28
- requirement: &70147172034640 !ruby/object:Gem::Requirement
49
+ requirement: !ruby/object:Gem::Requirement
29
50
  none: false
30
51
  requirements:
31
52
  - - ! '>='
@@ -33,10 +54,15 @@ dependencies:
33
54
  version: '0'
34
55
  type: :development
35
56
  prerelease: false
36
- version_requirements: *70147172034640
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
37
63
  - !ruby/object:Gem::Dependency
38
64
  name: rspec
39
- requirement: &70147172034180 !ruby/object:Gem::Requirement
65
+ requirement: !ruby/object:Gem::Requirement
40
66
  none: false
41
67
  requirements:
42
68
  - - ! '>='
@@ -44,10 +70,15 @@ dependencies:
44
70
  version: '0'
45
71
  type: :development
46
72
  prerelease: false
47
- version_requirements: *70147172034180
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
48
79
  - !ruby/object:Gem::Dependency
49
80
  name: mocha
50
- requirement: &70147172033280 !ruby/object:Gem::Requirement
81
+ requirement: !ruby/object:Gem::Requirement
51
82
  none: false
52
83
  requirements:
53
84
  - - ! '>='
@@ -55,10 +86,15 @@ dependencies:
55
86
  version: '0'
56
87
  type: :development
57
88
  prerelease: false
58
- version_requirements: *70147172033280
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
59
95
  - !ruby/object:Gem::Dependency
60
96
  name: syntax
61
- requirement: &70147172032520 !ruby/object:Gem::Requirement
97
+ requirement: !ruby/object:Gem::Requirement
62
98
  none: false
63
99
  requirements:
64
100
  - - ! '>='
@@ -66,21 +102,15 @@ dependencies:
66
102
  version: '0'
67
103
  type: :development
68
104
  prerelease: false
69
- version_requirements: *70147172032520
70
- - !ruby/object:Gem::Dependency
71
- name: rack-test
72
- requirement: &70147172031800 !ruby/object:Gem::Requirement
105
+ version_requirements: !ruby/object:Gem::Requirement
73
106
  none: false
74
107
  requirements:
75
108
  - - ! '>='
76
109
  - !ruby/object:Gem::Version
77
110
  version: '0'
78
- type: :development
79
- prerelease: false
80
- version_requirements: *70147172031800
81
111
  - !ruby/object:Gem::Dependency
82
112
  name: simplecov
83
- requirement: &70147172031200 !ruby/object:Gem::Requirement
113
+ requirement: !ruby/object:Gem::Requirement
84
114
  none: false
85
115
  requirements:
86
116
  - - ! '>='
@@ -88,10 +118,15 @@ dependencies:
88
118
  version: '0'
89
119
  type: :development
90
120
  prerelease: false
91
- version_requirements: *70147172031200
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
92
127
  - !ruby/object:Gem::Dependency
93
128
  name: sinatra
94
- requirement: &70147172030680 !ruby/object:Gem::Requirement
129
+ requirement: !ruby/object:Gem::Requirement
95
130
  none: false
96
131
  requirements:
97
132
  - - ! '>='
@@ -99,10 +134,15 @@ dependencies:
99
134
  version: '0'
100
135
  type: :development
101
136
  prerelease: false
102
- version_requirements: *70147172030680
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
103
143
  - !ruby/object:Gem::Dependency
104
- name: actionpack
105
- requirement: &70147172030060 !ruby/object:Gem::Requirement
144
+ name: rack-test
145
+ requirement: !ruby/object:Gem::Requirement
106
146
  none: false
107
147
  requirements:
108
148
  - - ! '>='
@@ -110,10 +150,31 @@ dependencies:
110
150
  version: '0'
111
151
  type: :development
112
152
  prerelease: false
113
- version_requirements: *70147172030060
153
+ version_requirements: !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ! '>='
157
+ - !ruby/object:Gem::Version
158
+ 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
114
175
  - !ruby/object:Gem::Dependency
115
176
  name: guard
116
- requirement: &70147172041360 !ruby/object:Gem::Requirement
177
+ requirement: !ruby/object:Gem::Requirement
117
178
  none: false
118
179
  requirements:
119
180
  - - ! '>='
@@ -121,10 +182,15 @@ dependencies:
121
182
  version: '0'
122
183
  type: :development
123
184
  prerelease: false
124
- version_requirements: *70147172041360
185
+ version_requirements: !ruby/object:Gem::Requirement
186
+ none: false
187
+ requirements:
188
+ - - ! '>='
189
+ - !ruby/object:Gem::Version
190
+ version: '0'
125
191
  - !ruby/object:Gem::Dependency
126
192
  name: guard-rspec
127
- requirement: &70147172038040 !ruby/object:Gem::Requirement
193
+ requirement: !ruby/object:Gem::Requirement
128
194
  none: false
129
195
  requirements:
130
196
  - - ! '>='
@@ -132,10 +198,15 @@ dependencies:
132
198
  version: '0'
133
199
  type: :development
134
200
  prerelease: false
135
- version_requirements: *70147172038040
201
+ version_requirements: !ruby/object:Gem::Requirement
202
+ none: false
203
+ requirements:
204
+ - - ! '>='
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
136
207
  - !ruby/object:Gem::Dependency
137
208
  name: guard-rocco
138
- requirement: &70147172073860 !ruby/object:Gem::Requirement
209
+ requirement: !ruby/object:Gem::Requirement
139
210
  none: false
140
211
  requirements:
141
212
  - - ! '>='
@@ -143,10 +214,31 @@ dependencies:
143
214
  version: '0'
144
215
  type: :development
145
216
  prerelease: false
146
- version_requirements: *70147172073860
217
+ version_requirements: !ruby/object:Gem::Requirement
218
+ none: false
219
+ requirements:
220
+ - - ! '>='
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
147
223
  - !ruby/object:Gem::Dependency
148
224
  name: fl-rocco
149
- requirement: &70147172072880 !ruby/object:Gem::Requirement
225
+ requirement: !ruby/object:Gem::Requirement
226
+ none: false
227
+ requirements:
228
+ - - ! '>='
229
+ - !ruby/object:Gem::Version
230
+ version: '0'
231
+ type: :development
232
+ prerelease: false
233
+ version_requirements: !ruby/object:Gem::Requirement
234
+ none: false
235
+ requirements:
236
+ - - ! '>='
237
+ - !ruby/object:Gem::Version
238
+ version: '0'
239
+ - !ruby/object:Gem::Dependency
240
+ name: ruby_gntp
241
+ requirement: !ruby/object:Gem::Requirement
150
242
  none: false
151
243
  requirements:
152
244
  - - ! '>='
@@ -154,7 +246,12 @@ dependencies:
154
246
  version: '0'
155
247
  type: :development
156
248
  prerelease: false
157
- version_requirements: *70147172072880
249
+ version_requirements: !ruby/object:Gem::Requirement
250
+ none: false
251
+ requirements:
252
+ - - ! '>='
253
+ - !ruby/object:Gem::Version
254
+ version: '0'
158
255
  description: ! "\n Gem to make statistics sending to Statsd from Ruby applications
159
256
  simple and efficient as possible.\n Inspired by the original ruby-statsd gem
160
257
  by Etsy, currently used by Lonely Planet Online.\n "
@@ -170,30 +267,31 @@ files:
170
267
  - Guardfile
171
268
  - README.md
172
269
  - Rakefile
173
- - doc/lib/core_ext/hash.html
174
- - doc/lib/fozzie.html
175
- - doc/lib/fozzie/configuration.html
176
- - doc/lib/fozzie/interface.html
177
- - doc/lib/fozzie/rack/middleware.html
178
- - doc/lib/fozzie/rails/middleware.html
179
- - doc/lib/fozzie/socket.html
180
- - doc/lib/fozzie/version.html
181
270
  - fozzie.gemspec
182
271
  - fozzie.yml.example
183
272
  - lib/core_ext/hash.rb
273
+ - lib/core_ext/module/monitor.rb
184
274
  - lib/fozzie.rb
185
275
  - lib/fozzie/configuration.rb
186
276
  - lib/fozzie/interface.rb
277
+ - lib/fozzie/mill.rb
187
278
  - lib/fozzie/rack/middleware.rb
279
+ - lib/fozzie/rails/engine.rb
188
280
  - lib/fozzie/rails/middleware.rb
281
+ - lib/fozzie/railtie.rb
282
+ - lib/fozzie/sniff.rb
189
283
  - lib/fozzie/socket.rb
190
284
  - lib/fozzie/version.rb
285
+ - resources/mill.js.example
286
+ - resources/mill.min.js.example
191
287
  - spec/config/fozzie.yml
192
288
  - spec/lib/core_ext/hash_spec.rb
193
289
  - spec/lib/fozzie/configuration_spec.rb
194
290
  - spec/lib/fozzie/interface_spec.rb
291
+ - spec/lib/fozzie/mill_spec.rb
195
292
  - spec/lib/fozzie/rack/middleware_spec.rb
196
293
  - spec/lib/fozzie/rails/middleware_spec.rb
294
+ - spec/lib/fozzie/sniff_spec.rb
197
295
  - spec/lib/fozzie/version_spec.rb
198
296
  - spec/lib/fozzie_spec.rb
199
297
  - spec/spec_helper.rb
@@ -211,7 +309,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
211
309
  version: '0'
212
310
  segments:
213
311
  - 0
214
- hash: -4445599887348080451
312
+ hash: 2575257041287680433
215
313
  required_rubygems_version: !ruby/object:Gem::Requirement
216
314
  none: false
217
315
  requirements:
@@ -220,10 +318,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
220
318
  version: '0'
221
319
  segments:
222
320
  - 0
223
- hash: -4445599887348080451
321
+ hash: 2575257041287680433
224
322
  requirements: []
225
323
  rubyforge_project: fozzie
226
- rubygems_version: 1.8.10
324
+ rubygems_version: 1.8.24
227
325
  signing_key:
228
326
  specification_version: 3
229
327
  summary: Statsd Ruby gem from Lonely Planet Online
@@ -232,8 +330,10 @@ test_files:
232
330
  - spec/lib/core_ext/hash_spec.rb
233
331
  - spec/lib/fozzie/configuration_spec.rb
234
332
  - spec/lib/fozzie/interface_spec.rb
333
+ - spec/lib/fozzie/mill_spec.rb
235
334
  - spec/lib/fozzie/rack/middleware_spec.rb
236
335
  - spec/lib/fozzie/rails/middleware_spec.rb
336
+ - spec/lib/fozzie/sniff_spec.rb
237
337
  - spec/lib/fozzie/version_spec.rb
238
338
  - spec/lib/fozzie_spec.rb
239
339
  - spec/spec_helper.rb