gricer 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +84 -0
  3. data/Rakefile +49 -0
  4. data/app/assets/images/gricer/fluid/breadcrumb.png +0 -0
  5. data/app/assets/javascripts/gricer.js.coffee +85 -0
  6. data/app/assets/javascripts/gricer_backend_jquery.js.coffee +352 -0
  7. data/app/assets/javascripts/jquery.flot.js +2599 -0
  8. data/app/assets/javascripts/jquery.flot.pie.js +750 -0
  9. data/app/assets/javascripts/jquery.flot.resize.js +60 -0
  10. data/app/assets/javascripts/jquery.flot.symbol.js +70 -0
  11. data/app/assets/javascripts/worldmap.js +146 -0
  12. data/app/assets/stylesheets/gricer/fluid-jquery-ui.css.scss +1298 -0
  13. data/app/assets/stylesheets/gricer/fluid.css.scss +240 -0
  14. data/app/assets/stylesheets/gricer/helpers/css3.css.scss +21 -0
  15. data/app/controllers/gricer/base_controller.rb +141 -0
  16. data/app/controllers/gricer/capture_controller.rb +42 -0
  17. data/app/controllers/gricer/dashboard_controller.rb +18 -0
  18. data/app/controllers/gricer/requests_controller.rb +42 -0
  19. data/app/controllers/gricer/sessions_controller.rb +24 -0
  20. data/app/helpers/gricer/base_helper.rb +22 -0
  21. data/app/models/gricer/agent.rb +789 -0
  22. data/app/models/gricer/request.rb +239 -0
  23. data/app/models/gricer/session.rb +433 -0
  24. data/app/views/gricer/capture/index.html.erb +1 -0
  25. data/app/views/gricer/dashboard/_menu.html.erb +10 -0
  26. data/app/views/gricer/dashboard/_overview.html.erb +33 -0
  27. data/app/views/gricer/dashboard/index.html.erb +19 -0
  28. data/config/routes.rb +51 -0
  29. data/lib/gricer.rb +36 -0
  30. data/lib/gricer/action_controller/base.rb +28 -0
  31. data/lib/gricer/action_controller/track.rb +132 -0
  32. data/lib/gricer/active_model/statistics.rb +167 -0
  33. data/lib/gricer/config.rb +125 -0
  34. data/lib/gricer/engine.rb +9 -0
  35. data/lib/gricer/localization.rb +3 -0
  36. data/lib/tasks/gricer_tasks.rake +92 -0
  37. data/spec/controllers/gricer/base_controller_spec.rb +207 -0
  38. data/spec/controllers/gricer/capture_controller_spec.rb +44 -0
  39. data/spec/controllers/gricer/dashboard_controller_spec.rb +44 -0
  40. data/spec/controllers/gricer/requests_controller_spec.rb +36 -0
  41. data/spec/controllers/gricer/sessions_controller_spec.rb +37 -0
  42. data/spec/dummy/Rakefile +7 -0
  43. data/spec/dummy/app/assets/javascripts/application.js +9 -0
  44. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  45. data/spec/dummy/app/assets/stylesheets/dashboard.css +4 -0
  46. data/spec/dummy/app/assets/stylesheets/scaffold.css +56 -0
  47. data/spec/dummy/app/assets/stylesheets/sessions.css +4 -0
  48. data/spec/dummy/app/controllers/application_controller.rb +23 -0
  49. data/spec/dummy/app/controllers/dashboard_controller.rb +19 -0
  50. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  51. data/spec/dummy/app/helpers/dashboard_helper.rb +2 -0
  52. data/spec/dummy/app/views/dashboard/index.html.erb +236 -0
  53. data/spec/dummy/app/views/layouts/application.html.erb +16 -0
  54. data/spec/dummy/config.ru +4 -0
  55. data/spec/dummy/config/application.rb +48 -0
  56. data/spec/dummy/config/boot.rb +10 -0
  57. data/spec/dummy/config/cucumber.yml +9 -0
  58. data/spec/dummy/config/database.yml +25 -0
  59. data/spec/dummy/config/environment.rb +5 -0
  60. data/spec/dummy/config/environments/development.rb +27 -0
  61. data/spec/dummy/config/environments/production.rb +51 -0
  62. data/spec/dummy/config/environments/test.rb +39 -0
  63. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  64. data/spec/dummy/config/initializers/inflections.rb +10 -0
  65. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  66. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  67. data/spec/dummy/config/initializers/session_store.rb +8 -0
  68. data/spec/dummy/config/initializers/wrap_parameters.rb +12 -0
  69. data/spec/dummy/config/locales/en.yml +5 -0
  70. data/spec/dummy/config/routes.rb +11 -0
  71. data/spec/dummy/db/schema.rb +241 -0
  72. data/spec/dummy/log/development.log +0 -0
  73. data/spec/dummy/public/404.html +26 -0
  74. data/spec/dummy/public/422.html +26 -0
  75. data/spec/dummy/public/500.html +26 -0
  76. data/spec/dummy/public/favicon.ico +0 -0
  77. data/spec/dummy/script/rails +6 -0
  78. data/spec/helpers/gricer/base_helper_spec.rb +28 -0
  79. data/spec/lib/gricer/action_controller/track_spec.rb +63 -0
  80. data/spec/models/gricer/agent_spec.rb +829 -0
  81. data/spec/models/gricer/request_spec.rb +145 -0
  82. data/spec/models/gricer/session_spec.rb +209 -0
  83. data/spec/routing/capture_routes_spec.rb +6 -0
  84. data/spec/routing/dashboard_routes_spec.rb +9 -0
  85. data/spec/routing/requests_routes_spec.rb +90 -0
  86. data/spec/routing/sessions_routes_spec.rb +115 -0
  87. data/spec/spec_helper.rb +23 -0
  88. metadata +185 -0
@@ -0,0 +1,145 @@
1
+ require 'spec_helper'
2
+
3
+ describe Gricer::Request do
4
+ context 'set ip_address' do
5
+ it 'should set an ip address' do
6
+ subject.ip_address = '127.0.0.1'
7
+ end
8
+ end
9
+
10
+ context 'Locale' do
11
+ it 'should parse simple locale' do
12
+ subject.locale = 'de'
13
+ subject.locale_major.should == 'de'
14
+ subject.locale_minor.should == nil
15
+ subject.locale.should == 'de'
16
+ end
17
+
18
+ it 'should parse complex locale' do
19
+ subject.locale = 'de-at'
20
+ subject.locale_major.should == 'de'
21
+ subject.locale_minor.should == 'at'
22
+ subject.locale.should == 'de-at'
23
+ end
24
+
25
+ it 'should parse complex locale with upcase minor' do
26
+ subject.locale = 'de-AT'
27
+ subject.locale_major.should == 'de'
28
+ subject.locale_minor.should == 'at'
29
+ subject.locale.should == 'de-at'
30
+ end
31
+
32
+ it 'should parse not given locale' do
33
+ subject.locale = nil
34
+ subject.locale_major.should == nil
35
+ subject.locale_minor.should == nil
36
+ subject.locale.should == nil
37
+ end
38
+ end
39
+
40
+ context 'Referer' do
41
+ it 'should get protocol, host, path, and params' do
42
+ subject.referer = 'http://my.domain:1234/test/path?param=1&value=true'
43
+ subject.referer_protocol.should == 'HTTP'
44
+ subject.referer_host.should == 'my.domain:1234'
45
+ subject.referer_path.should == '/test/path'
46
+ subject.referer_params.should == 'param=1&value=true'
47
+ end
48
+
49
+ it 'should get protocol, host, and path if no params given' do
50
+ subject.referer = 'https://my.domain:1234/test/path'
51
+ subject.referer_protocol.should == 'HTTPS'
52
+ subject.referer_host.should == 'my.domain:1234'
53
+ subject.referer_path.should == '/test/path'
54
+ subject.referer_params.should be_nil
55
+ end
56
+
57
+ it 'should get protocol and host if no path and params given' do
58
+ subject.referer = 'http://my.domain:1234'
59
+ subject.referer_protocol.should == 'HTTP'
60
+ subject.referer_host.should == 'my.domain:1234'
61
+ subject.referer_path.should == '/'
62
+ subject.referer_params.should be_nil
63
+ end
64
+
65
+ it 'should normalise hosts' do
66
+ subject.referer = 'http://My.Domain/'
67
+ subject.referer_host.should == 'my.domain'
68
+ end
69
+
70
+ end
71
+
72
+ context 'Search Engines' do
73
+ it 'should detect Google as Search Engine' do
74
+ subject.referer = 'http://www.google.com/search?q=test%20this&ie=utf-8&oe=utf-8'
75
+ subject.search_engine.should == 'Google'
76
+ subject.search_query.should == 'test this'
77
+ end
78
+
79
+ it 'should detect Google (UK) as Search Engine' do
80
+ subject.referer = 'http://www.google.co.uk/search?q=test%20this&ie=utf-8&oe=utf-8'
81
+ subject.search_engine.should == 'Google'
82
+ subject.search_query.should == 'test this'
83
+ end
84
+
85
+ it 'should detect Google (FR) as Search Engine' do
86
+ subject.referer = 'http://www.google.fr/search?q=test%20this&ie=utf-8&oe=utf-8'
87
+ subject.search_engine.should == 'Google'
88
+ subject.search_query.should == 'test this'
89
+ end
90
+
91
+ it 'should not detect Google subdomain as Search Engine' do
92
+ subject.referer = 'http://www.google.gmah.net/search?q=test%20this&ie=utf-8&oe=utf-8'
93
+ subject.search_engine.should == nil
94
+ subject.search_query.should == nil
95
+ end
96
+
97
+ it 'should detect Bing as Search Engine' do
98
+ subject.referer = 'http://www.bing.com/search?q=test+this&go=&qs=n&sk=&form=QBLH&filt=all'
99
+ subject.search_engine.should == 'Bing'
100
+ subject.search_query.should == 'test this'
101
+ end
102
+
103
+ it 'should detect Yahoo as Search Engine' do
104
+ subject.referer = 'http://de.search.yahoo.com/search;_ylt=AqQWGFQKyJoto6Bia_HjzYsqrK5_;_ylc=X1MDMjE0MjE1Mzc3MARfcgMyBGZyA3lmcC10LTcwOARuX2dwcwMwBG9yaWdpbgNkZS55YWhvby5jb20EcXVlcnkDdGVzdCB0aGlzBHNhbwMx?vc=&vl=&fl=&p=test+this&toggle=1&cop=mss&ei=UTF-8&fr=yfp-t-708'
105
+ subject.search_engine.should == 'Yahoo'
106
+ subject.search_query.should == 'test this'
107
+ end
108
+
109
+ it 'should detect Altavista (Yahoo) as Search Engine' do
110
+ subject.referer = 'http://us.yhs4.search.yahoo.com/yhs/search;_ylt=A0oG7qWPGiROv2UA_w6l87UF;_ylc=X1MDMjE0MjQ3ODk0OARfcgMyBGZyA2FsdGF2aXN0YQRuX2dwcwMxMARvcmlnaW4Dc3ljBHF1ZXJ5A3Rlc3QgdGhpcwRzYW8DMw--?p=test+this&fr=altavista&fr2=sfp&iscqry='
111
+ subject.search_engine.should == 'Yahoo'
112
+ subject.search_query.should == 'test this'
113
+ end
114
+
115
+ it 'should detect Baidu as Search Engine' do
116
+ subject.referer = 'http://www.baidu.com/s?wd=test+this&rsv_bp=0&inputT=1928'
117
+ subject.search_engine.should == 'Baidu'
118
+ subject.search_query.should == 'test this'
119
+ end
120
+
121
+ it 'should detect Ask as Search Engine' do
122
+ subject.referer = 'http://de.ask.com/web?q=test+this&qsrc=0&o=312&l=dir'
123
+ subject.search_engine.should == 'Ask'
124
+ subject.search_query.should == 'test this'
125
+ end
126
+
127
+ it 'should detect AOL as Search Engine' do
128
+ subject.referer = 'http://search.aol.com/aol/search?enabled_terms=&s_it=comsearch50&q=test+this'
129
+ subject.search_engine.should == 'AOL'
130
+ subject.search_query.should == 'test this'
131
+ end
132
+
133
+ it 'should detect MetaCrawler as Search Engine' do
134
+ subject.referer = 'http://www.metacrawler.com/info.metac.test.c1/search/web?fcoid=417&fcop=topnav&fpid=27&q=test+this'
135
+ subject.search_engine.should == 'MetaCrawler'
136
+ subject.search_query.should == 'test this'
137
+ end
138
+
139
+ it 'should detect Dogpile as Search Engine' do
140
+ subject.referer = 'http://www.dogpile.com/dogpile/ws/results/Web/test%20this/1/417/TopNavigation/Relevance/iq=true/zoom=off/_iceUrlFlag=7?_IceUrl=true'
141
+ subject.search_engine.should == 'Dogpile'
142
+ subject.search_query.should == 'test this'
143
+ end
144
+ end
145
+ end
@@ -0,0 +1,209 @@
1
+ require 'spec_helper'
2
+
3
+ describe Gricer::Session do
4
+
5
+ context 'IP' do
6
+ it 'should fill ip address hash' do
7
+ subject.ip_address = '127.0.0.1'
8
+
9
+ subject.ip_address_hash.should == '4b84b15bff6ee5796152495a230e45e3d7e947d9'
10
+ end
11
+
12
+ it 'should fill anonyminized domain' do
13
+ Resolv.should_receive(:getname).with('127.0.0.1') { 'some.real.host.gmah.net' }
14
+
15
+ subject.ip_address = '127.0.0.1'
16
+
17
+ subject.domain.should == 'gmah.net'
18
+ end
19
+
20
+ it 'should fill anonyminized domain in uk' do
21
+ Resolv.should_receive(:getname).with('127.0.0.1') { 'some.real.host.the-queen.co.uk' }
22
+
23
+ subject.ip_address = '127.0.0.1'
24
+
25
+ subject.domain.should == 'the-queen.co.uk'
26
+ end
27
+
28
+ it 'should fill IP if resolve fails' do
29
+ Resolv.should_receive(:getname).with('127.0.0.1') { throw 'IP not found' }
30
+
31
+ subject.ip_address = '127.0.0.1'
32
+
33
+ subject.domain.should == '127.0.x.x'
34
+ end
35
+
36
+ context 'No GeoIP' do
37
+ it 'should not fill country' do
38
+ subject.ip_address = '127.0.0.1'
39
+ subject.country.should be_nil
40
+ end
41
+
42
+ it 'should not fill region' do
43
+ subject.ip_address = '127.0.0.1'
44
+ subject.region.should be_nil
45
+ end
46
+
47
+ it 'should not fill city' do
48
+ subject.ip_address = '127.0.0.1'
49
+ subject.city.should be_nil
50
+ end
51
+
52
+ it 'should not fill postal code' do
53
+ subject.ip_address = '127.0.0.1'
54
+ subject.postal_code.should be_nil
55
+ end
56
+
57
+ it 'should not fill longitude' do
58
+ subject.ip_address = '127.0.0.1'
59
+ subject.longitude.should be_nil
60
+ end
61
+
62
+ it 'should not fill latitude' do
63
+ subject.ip_address = '127.0.0.1'
64
+ subject.latitude.should be_nil
65
+ end
66
+ end
67
+
68
+ context 'GeoIP City' do
69
+ before do
70
+ Gricer.config.geoip_db = mock(:GeoIP)
71
+ Gricer.config.geoip_db.stub(:look_up).with('127.0.0.1') { {:country_code=>"DE", :country_code3=>"DEU", :country_name=>"Germany", :region=>"16", :city=>"Berlin", :postal_code=>"10115", :latitude=>52.516700744628906, :longitude=>13.399999618530273} }
72
+ end
73
+
74
+ it 'should fill country' do
75
+ subject.ip_address = '127.0.0.1'
76
+ subject.country.should == 'de'
77
+ end
78
+
79
+ it 'should fill region' do
80
+ subject.ip_address = '127.0.0.1'
81
+ subject.region.should == '16'
82
+ end
83
+
84
+ it 'should fill city' do
85
+ subject.ip_address = '127.0.0.1'
86
+ subject.city.should == 'Berlin'
87
+ end
88
+
89
+ it 'should fill postal code' do
90
+ subject.ip_address = '127.0.0.1'
91
+ subject.postal_code.should == '10115'
92
+ end
93
+
94
+ it 'should fill longitude' do
95
+ subject.ip_address = '127.0.0.1'
96
+ subject.longitude.should == 13.399999618530273
97
+ end
98
+
99
+ it 'should fill latitude' do
100
+ subject.ip_address = '127.0.0.1'
101
+ subject.latitude.should == 52.516700744628906
102
+ end
103
+ end
104
+
105
+ context 'GeoIP Country' do
106
+ before do
107
+ Gricer.config.geoip_db = mock(:GeoIP)
108
+ Gricer.config.geoip_db.stub(:look_up).with('127.0.0.1') { {:country_code=>"DE", :country_code3=>"DEU", :country_name=>"Germany", :latitude=>51.0, :longitude=>9.0} }
109
+ end
110
+
111
+ it 'should fill country' do
112
+ subject.ip_address = '127.0.0.1'
113
+ subject.country.should == 'de'
114
+ end
115
+
116
+ it 'should not fill region' do
117
+ subject.ip_address = '127.0.0.1'
118
+ subject.region.should be_nil
119
+ end
120
+
121
+ it 'should not fill city' do
122
+ subject.ip_address = '127.0.0.1'
123
+ subject.city.should be_nil
124
+ end
125
+
126
+ it 'should not fill postal code' do
127
+ subject.ip_address = '127.0.0.1'
128
+ subject.postal_code.should be_nil
129
+ end
130
+
131
+ it 'should fill longitude' do
132
+ subject.ip_address = '127.0.0.1'
133
+ subject.longitude.should == 9.0
134
+ end
135
+
136
+ it 'should fill latitude' do
137
+ subject.ip_address = '127.0.0.1'
138
+ subject.latitude.should == 51.0
139
+ end
140
+ end
141
+
142
+ context 'GeoIP unknown address' do
143
+ before do
144
+ Gricer.config.geoip_db = mock(:GeoIP)
145
+ Gricer.config.geoip_db.stub(:look_up).with('127.0.0.1') { nil }
146
+ end
147
+
148
+ it 'should not fill country' do
149
+ subject.ip_address = '127.0.0.1'
150
+ subject.country.should be_nil
151
+ end
152
+
153
+ it 'should not fill region' do
154
+ subject.ip_address = '127.0.0.1'
155
+ subject.region.should be_nil
156
+ end
157
+
158
+ it 'should not fill city' do
159
+ subject.ip_address = '127.0.0.1'
160
+ subject.city.should be_nil
161
+ end
162
+
163
+ it 'should not fill postal code' do
164
+ subject.ip_address = '127.0.0.1'
165
+ subject.postal_code.should be_nil
166
+ end
167
+
168
+ it 'should not fill longitude' do
169
+ subject.ip_address = '127.0.0.1'
170
+ subject.longitude.should be_nil
171
+ end
172
+
173
+ it 'should not fill latitude' do
174
+ subject.ip_address = '127.0.0.1'
175
+ subject.latitude.should be_nil
176
+ end
177
+ end
178
+
179
+ context 'Requested Locale' do
180
+ it 'should parse simple locale' do
181
+ subject.requested_locale = 'de'
182
+ subject.requested_locale_major.should == 'de'
183
+ subject.requested_locale_minor.should == nil
184
+ subject.requested_locale.should == 'de'
185
+ end
186
+
187
+ it 'should parse complex locale' do
188
+ subject.requested_locale = 'de-at'
189
+ subject.requested_locale_major.should == 'de'
190
+ subject.requested_locale_minor.should == 'at'
191
+ subject.requested_locale.should == 'de-at'
192
+ end
193
+
194
+ it 'should parse complex locale with upcase minor' do
195
+ subject.requested_locale = 'de-AT'
196
+ subject.requested_locale_major.should == 'de'
197
+ subject.requested_locale_minor.should == 'at'
198
+ subject.requested_locale.should == 'de-at'
199
+ end
200
+
201
+ it 'should parse not given locale' do
202
+ subject.requested_locale = nil
203
+ subject.requested_locale_major.should == nil
204
+ subject.requested_locale_minor.should == nil
205
+ subject.requested_locale.should == nil
206
+ end
207
+ end
208
+ end
209
+ end
@@ -0,0 +1,6 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'routes for javascript value capture' do
4
+ it { gricer_capture_path(42).should == '/gricer_capture/42' }
5
+ it { { post: '/gricer_capture/42'}.should route_to(controller: 'gricer/capture', action: 'index', id: '42') }
6
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'routes for admin dashboard' do
4
+ it { gricer_root_path.should == '/gricer' }
5
+ it { { get: '/gricer'}.should route_to(controller: 'gricer/dashboard', action: 'index') }
6
+
7
+ it { gricer_overview_path.should == '/gricer/overview' }
8
+ it { { post: '/gricer/overview'}.should route_to(controller: 'gricer/dashboard', action: 'overview') }
9
+ end
@@ -0,0 +1,90 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'routes for request stats' do
4
+ it { gricer_requests_agent_name_process_path.should == '/gricer/requests/agent_name_process' }
5
+ it { { get: '/gricer/requests/agent_name_process'}.should route_to(controller: 'gricer/requests', action: 'process_stats', field: 'agent.name') }
6
+ it { gricer_requests_agent_name_spread_path.should == '/gricer/requests/agent_name_spread' }
7
+ it { { get: '/gricer/requests/agent_name_spread'}.should route_to(controller: 'gricer/requests', action: 'spread_stats', field: 'agent.name') }
8
+
9
+ it { gricer_requests_agent_os_process_path.should == '/gricer/requests/agent_os_process' }
10
+ it { { get: '/gricer/requests/agent_os_process'}.should route_to(controller: 'gricer/requests', action: 'process_stats', field: 'agent.os') }
11
+ it { gricer_requests_agent_os_spread_path.should == '/gricer/requests/agent_os_spread' }
12
+ it { { get: '/gricer/requests/agent_os_spread'}.should route_to(controller: 'gricer/requests', action: 'spread_stats', field: 'agent.os') }
13
+
14
+ it { gricer_requests_agent_full_version_process_path.should == '/gricer/requests/agent_full_version_process' }
15
+ it { { get: '/gricer/requests/agent_full_version_process'}.should route_to(controller: 'gricer/requests', action: 'process_stats', field: 'agent.full_version') }
16
+ it { gricer_requests_agent_full_version_spread_path.should == '/gricer/requests/agent_full_version_spread' }
17
+ it { { get: '/gricer/requests/agent_full_version_spread'}.should route_to(controller: 'gricer/requests', action: 'spread_stats', field: 'agent.full_version') }
18
+
19
+ it { gricer_requests_agent_major_version_process_path.should == '/gricer/requests/agent_major_version_process' }
20
+ it { { get: '/gricer/requests/agent_major_version_process'}.should route_to(controller: 'gricer/requests', action: 'process_stats', field: 'agent.major_version') }
21
+ it { gricer_requests_agent_major_version_spread_path.should == '/gricer/requests/agent_major_version_spread' }
22
+ it { { get: '/gricer/requests/agent_major_version_spread'}.should route_to(controller: 'gricer/requests', action: 'spread_stats', field: 'agent.major_version') }
23
+
24
+ it { gricer_requests_agent_engine_name_process_path.should == '/gricer/requests/agent_engine_name_process' }
25
+ it { { get: '/gricer/requests/agent_engine_name_process'}.should route_to(controller: 'gricer/requests', action: 'process_stats', field: 'agent.engine_name') }
26
+ it { gricer_requests_agent_engine_name_spread_path.should == '/gricer/requests/agent_engine_name_spread' }
27
+ it { { get: '/gricer/requests/agent_engine_name_spread'}.should route_to(controller: 'gricer/requests', action: 'spread_stats', field: 'agent.engine_name') }
28
+
29
+ it { gricer_requests_agent_engine_version_process_path.should == '/gricer/requests/agent_engine_version_process' }
30
+ it { { get: '/gricer/requests/agent_engine_version_process'}.should route_to(controller: 'gricer/requests', action: 'process_stats', field: 'agent.engine_version') }
31
+ it { gricer_requests_agent_engine_version_spread_path.should == '/gricer/requests/agent_engine_version_spread' }
32
+ it { { get: '/gricer/requests/agent_engine_version_spread'}.should route_to(controller: 'gricer/requests', action: 'spread_stats', field: 'agent.engine_version') }
33
+
34
+ it { gricer_requests_host_process_path.should == '/gricer/requests/host_process' }
35
+ it { { get: '/gricer/requests/host_process'}.should route_to(controller: 'gricer/requests', action: 'process_stats', field: 'host') }
36
+ it { gricer_requests_host_spread_path.should == '/gricer/requests/host_spread' }
37
+ it { { get: '/gricer/requests/host_spread'}.should route_to(controller: 'gricer/requests', action: 'spread_stats', field: 'host') }
38
+
39
+ it { gricer_requests_path_process_path.should == '/gricer/requests/path_process' }
40
+ it { { get: '/gricer/requests/path_process'}.should route_to(controller: 'gricer/requests', action: 'process_stats', field: 'path') }
41
+ it { gricer_requests_path_spread_path.should == '/gricer/requests/path_spread' }
42
+ it { { get: '/gricer/requests/path_spread'}.should route_to(controller: 'gricer/requests', action: 'spread_stats', field: 'path') }
43
+
44
+ it { gricer_requests_method_process_path.should == '/gricer/requests/method_process' }
45
+ it { { get: '/gricer/requests/method_process'}.should route_to(controller: 'gricer/requests', action: 'process_stats', field: 'method') }
46
+ it { gricer_requests_method_spread_path.should == '/gricer/requests/method_spread' }
47
+ it { { get: '/gricer/requests/method_spread'}.should route_to(controller: 'gricer/requests', action: 'spread_stats', field: 'method') }
48
+
49
+ it { gricer_requests_protocol_process_path.should == '/gricer/requests/protocol_process' }
50
+ it { { get: '/gricer/requests/protocol_process'}.should route_to(controller: 'gricer/requests', action: 'process_stats', field: 'protocol') }
51
+ it { gricer_requests_protocol_spread_path.should == '/gricer/requests/protocol_spread' }
52
+ it { { get: '/gricer/requests/protocol_spread'}.should route_to(controller: 'gricer/requests', action: 'spread_stats', field: 'protocol') }
53
+
54
+ it { gricer_requests_entry_path_process_path.should == '/gricer/requests/entry_path_process' }
55
+ it { { get: '/gricer/requests/entry_path_process'}.should route_to(controller: 'gricer/requests', action: 'process_stats', field: 'entry_path') }
56
+ it { gricer_requests_entry_path_spread_path.should == '/gricer/requests/entry_path_spread' }
57
+ it { { get: '/gricer/requests/entry_path_spread'}.should route_to(controller: 'gricer/requests', action: 'spread_stats', field: 'entry_path') }
58
+
59
+ it { gricer_requests_referer_protocol_process_path.should == '/gricer/requests/referer_protocol_process' }
60
+ it { { get: '/gricer/requests/referer_protocol_process'}.should route_to(controller: 'gricer/requests', action: 'process_stats', field: 'referer_protocol') }
61
+ it { gricer_requests_referer_protocol_spread_path.should == '/gricer/requests/referer_protocol_spread' }
62
+ it { { get: '/gricer/requests/referer_protocol_spread'}.should route_to(controller: 'gricer/requests', action: 'spread_stats', field: 'referer_protocol') }
63
+
64
+ it { gricer_requests_referer_host_process_path.should == '/gricer/requests/referer_host_process' }
65
+ it { { get: '/gricer/requests/referer_host_process'}.should route_to(controller: 'gricer/requests', action: 'process_stats', field: 'referer_host') }
66
+ it { gricer_requests_referer_host_spread_path.should == '/gricer/requests/referer_host_spread' }
67
+ it { { get: '/gricer/requests/referer_host_spread'}.should route_to(controller: 'gricer/requests', action: 'spread_stats', field: 'referer_host') }
68
+
69
+ it { gricer_requests_referer_path_process_path.should == '/gricer/requests/referer_path_process' }
70
+ it { { get: '/gricer/requests/referer_path_process'}.should route_to(controller: 'gricer/requests', action: 'process_stats', field: 'referer_path') }
71
+ it { gricer_requests_referer_path_spread_path.should == '/gricer/requests/referer_path_spread' }
72
+ it { { get: '/gricer/requests/referer_path_spread'}.should route_to(controller: 'gricer/requests', action: 'spread_stats', field: 'referer_path') }
73
+
74
+ it { gricer_requests_referer_params_process_path.should == '/gricer/requests/referer_params_process' }
75
+ it { { get: '/gricer/requests/referer_params_process'}.should route_to(controller: 'gricer/requests', action: 'process_stats', field: 'referer_params') }
76
+ it { gricer_requests_referer_params_spread_path.should == '/gricer/requests/referer_params_spread' }
77
+ it { { get: '/gricer/requests/referer_params_spread'}.should route_to(controller: 'gricer/requests', action: 'spread_stats', field: 'referer_params') }
78
+
79
+ it { gricer_requests_search_engine_process_path.should == '/gricer/requests/search_engine_process' }
80
+ it { { get: '/gricer/requests/search_engine_process'}.should route_to(controller: 'gricer/requests', action: 'process_stats', field: 'search_engine') }
81
+ it { gricer_requests_search_engine_spread_path.should == '/gricer/requests/search_engine_spread' }
82
+ it { { get: '/gricer/requests/search_engine_spread'}.should route_to(controller: 'gricer/requests', action: 'spread_stats', field: 'search_engine') }
83
+
84
+ it { gricer_requests_search_query_process_path.should == '/gricer/requests/search_query_process' }
85
+ it { { get: '/gricer/requests/search_query_process'}.should route_to(controller: 'gricer/requests', action: 'process_stats', field: 'search_query') }
86
+ it { gricer_requests_search_query_spread_path.should == '/gricer/requests/search_query_spread' }
87
+ it { { get: '/gricer/requests/search_query_spread'}.should route_to(controller: 'gricer/requests', action: 'spread_stats', field: 'search_query') }
88
+
89
+
90
+ end