gricer 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/MIT-LICENSE +20 -0
- data/README.rdoc +84 -0
- data/Rakefile +49 -0
- data/app/assets/images/gricer/fluid/breadcrumb.png +0 -0
- data/app/assets/javascripts/gricer.js.coffee +85 -0
- data/app/assets/javascripts/gricer_backend_jquery.js.coffee +352 -0
- data/app/assets/javascripts/jquery.flot.js +2599 -0
- data/app/assets/javascripts/jquery.flot.pie.js +750 -0
- data/app/assets/javascripts/jquery.flot.resize.js +60 -0
- data/app/assets/javascripts/jquery.flot.symbol.js +70 -0
- data/app/assets/javascripts/worldmap.js +146 -0
- data/app/assets/stylesheets/gricer/fluid-jquery-ui.css.scss +1298 -0
- data/app/assets/stylesheets/gricer/fluid.css.scss +240 -0
- data/app/assets/stylesheets/gricer/helpers/css3.css.scss +21 -0
- data/app/controllers/gricer/base_controller.rb +141 -0
- data/app/controllers/gricer/capture_controller.rb +42 -0
- data/app/controllers/gricer/dashboard_controller.rb +18 -0
- data/app/controllers/gricer/requests_controller.rb +42 -0
- data/app/controllers/gricer/sessions_controller.rb +24 -0
- data/app/helpers/gricer/base_helper.rb +22 -0
- data/app/models/gricer/agent.rb +789 -0
- data/app/models/gricer/request.rb +239 -0
- data/app/models/gricer/session.rb +433 -0
- data/app/views/gricer/capture/index.html.erb +1 -0
- data/app/views/gricer/dashboard/_menu.html.erb +10 -0
- data/app/views/gricer/dashboard/_overview.html.erb +33 -0
- data/app/views/gricer/dashboard/index.html.erb +19 -0
- data/config/routes.rb +51 -0
- data/lib/gricer.rb +36 -0
- data/lib/gricer/action_controller/base.rb +28 -0
- data/lib/gricer/action_controller/track.rb +132 -0
- data/lib/gricer/active_model/statistics.rb +167 -0
- data/lib/gricer/config.rb +125 -0
- data/lib/gricer/engine.rb +9 -0
- data/lib/gricer/localization.rb +3 -0
- data/lib/tasks/gricer_tasks.rake +92 -0
- data/spec/controllers/gricer/base_controller_spec.rb +207 -0
- data/spec/controllers/gricer/capture_controller_spec.rb +44 -0
- data/spec/controllers/gricer/dashboard_controller_spec.rb +44 -0
- data/spec/controllers/gricer/requests_controller_spec.rb +36 -0
- data/spec/controllers/gricer/sessions_controller_spec.rb +37 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/javascripts/application.js +9 -0
- data/spec/dummy/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy/app/assets/stylesheets/dashboard.css +4 -0
- data/spec/dummy/app/assets/stylesheets/scaffold.css +56 -0
- data/spec/dummy/app/assets/stylesheets/sessions.css +4 -0
- data/spec/dummy/app/controllers/application_controller.rb +23 -0
- data/spec/dummy/app/controllers/dashboard_controller.rb +19 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/helpers/dashboard_helper.rb +2 -0
- data/spec/dummy/app/views/dashboard/index.html.erb +236 -0
- data/spec/dummy/app/views/layouts/application.html.erb +16 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +48 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/cucumber.yml +9 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +27 -0
- data/spec/dummy/config/environments/production.rb +51 -0
- data/spec/dummy/config/environments/test.rb +39 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/inflections.rb +10 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +12 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/routes.rb +11 -0
- data/spec/dummy/db/schema.rb +241 -0
- data/spec/dummy/log/development.log +0 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +26 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/helpers/gricer/base_helper_spec.rb +28 -0
- data/spec/lib/gricer/action_controller/track_spec.rb +63 -0
- data/spec/models/gricer/agent_spec.rb +829 -0
- data/spec/models/gricer/request_spec.rb +145 -0
- data/spec/models/gricer/session_spec.rb +209 -0
- data/spec/routing/capture_routes_spec.rb +6 -0
- data/spec/routing/dashboard_routes_spec.rb +9 -0
- data/spec/routing/requests_routes_spec.rb +90 -0
- data/spec/routing/sessions_routes_spec.rb +115 -0
- data/spec/spec_helper.rb +23 -0
- 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,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
|