fozzie 0.0.20 → 0.0.21

Sign up to get free protection for your applications and to get access to all the features.
@@ -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