gricer 0.0.1

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.
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