mirror of
https://github.com/neocities/neocities.git
synced 2025-08-05 09:11:28 +02:00
stat referrers, locations, and paths
This commit is contained in:
parent
d9babf5cd6
commit
227b123fc9
10 changed files with 195 additions and 47 deletions
|
@ -9,11 +9,24 @@ describe 'stats' do
|
|||
@site_one = Fabricate :site
|
||||
@site_two = Fabricate :site
|
||||
|
||||
@t = Time.now.iso8601
|
||||
@s1u = @site_one.username
|
||||
@s2u = @site_two.username
|
||||
end
|
||||
@time = Time.now
|
||||
@time_iso8601 = @time.iso8601
|
||||
|
||||
log = [
|
||||
"#{@time_iso8601} #{@site_one.username} 5000 / 67.180.75.140 http://example.com",
|
||||
"#{@time_iso8601} #{@site_one.username} 5000 / 67.180.75.140 http://example.com",
|
||||
"#{@time_iso8601} #{@site_one.username} 5000 / 172.56.16.152 http://example.com",
|
||||
"#{@time_iso8601} #{@site_one.username} 5000 / 172.56.16.152 -",
|
||||
"#{@time_iso8601} #{@site_two.username} 5000 / 67.180.75.140 http://example.com",
|
||||
"#{@time_iso8601} #{@site_two.username} 5000 / 127.0.0.1 -",
|
||||
"#{@time_iso8601} #{@site_two.username} 5000 /derp.html 127.0.0.2 https://example.com"
|
||||
]
|
||||
|
||||
File.open("tests/stat_logs/#{SecureRandom.uuid}.log", 'w') do |file|
|
||||
file.write log.join("\n")
|
||||
end
|
||||
end
|
||||
=begin
|
||||
it 'prunes logs for free sites' do
|
||||
@free_site = Fabricate :site
|
||||
@supporter_site = Fabricate :site, plan_type: 'supporter'
|
||||
|
@ -29,28 +42,20 @@ describe 'stats' do
|
|||
count_site_ids = [@free_site.id, @supporter_site.id]
|
||||
expected_stat_count = (Stat::FREE_RETAINMENT_DAYS+1)*2
|
||||
|
||||
[@free_site, @supporter_site].each do |site|
|
||||
site.stats.last.add_stat_referrer url: 'https://example.com'
|
||||
end
|
||||
|
||||
Stat.where(site_id: count_site_ids).count.must_equal expected_stat_count
|
||||
Stat.prune!
|
||||
Stat.where(site_id: count_site_ids).count.must_equal expected_stat_count-1
|
||||
Stat.where(site_id: @supporter_site.id).count.must_equal expected_stat_count/2
|
||||
|
||||
@free_site.stats.last.stat_referrers.length.must_equal 0
|
||||
@supporter_site.stats.last.stat_referrers.length.must_equal 1
|
||||
end
|
||||
|
||||
=end
|
||||
it 'parses logfile' do
|
||||
time = Time.now.iso8601
|
||||
log = [
|
||||
"#{time} #{@site_one.username} 5000 / 67.180.75.140 http://example.com",
|
||||
"#{time} #{@site_one.username} 5000 / 67.180.75.140 http://example.com",
|
||||
"#{time} #{@site_one.username} 5000 / 172.56.16.152 http://example.com",
|
||||
"#{time} #{@site_one.username} 5000 / 172.56.16.152 -",
|
||||
"#{time} #{@site_two.username} 5000 / 67.180.75.140 http://example.com",
|
||||
"#{time} #{@site_two.username} 5000 / 127.0.0.1 -",
|
||||
"#{time} #{@site_two.username} 5000 / 127.0.0.2 https://example.com"
|
||||
]
|
||||
|
||||
File.open("tests/stat_logs/#{SecureRandom.uuid}.log", 'w') do |file|
|
||||
file.write log.join("\n")
|
||||
end
|
||||
|
||||
Stat.parse_logfiles STAT_LOGS_PATH
|
||||
|
||||
@site_one.reload
|
||||
|
@ -59,9 +64,24 @@ describe 'stats' do
|
|||
stat = @site_one.stats.first
|
||||
stat.hits.must_equal 4
|
||||
stat.views.must_equal 2
|
||||
referrer = stat.stat_referrers.first
|
||||
referrer.url.must_equal 'http://example.com'
|
||||
referrer.views.must_equal 2
|
||||
stat.bandwidth.must_equal 20_000
|
||||
@site_one.stat_referrers.count.must_equal 1
|
||||
stat_referrer = @site_one.stat_referrers.first
|
||||
stat_referrer.url.must_equal 'http://example.com'
|
||||
stat_referrer.created_at.must_equal @time.to_date
|
||||
stat_referrer.views.must_equal 2
|
||||
|
||||
@site_one.stat_paths.length.must_equal 1
|
||||
stat_path = @site_one.stat_paths.first
|
||||
stat_path.name.must_equal '/'
|
||||
stat_path.views.must_equal 4
|
||||
|
||||
@site_one.stat_locations.length.must_equal 2
|
||||
stat_location = @site_one.stat_locations.first
|
||||
stat_location.country_code2.must_equal 'US'
|
||||
stat_location.region_name.must_equal 'CA'
|
||||
stat_location.city_name.must_equal 'Menlo Park'
|
||||
stat_location.views.must_equal 1
|
||||
|
||||
@site_two.reload
|
||||
@site_two.hits.must_equal 3
|
||||
|
@ -69,13 +89,16 @@ describe 'stats' do
|
|||
stat = @site_two.stats.first
|
||||
stat.hits.must_equal 3
|
||||
stat.views.must_equal 3
|
||||
stat.stat_referrers.length.must_equal 2
|
||||
referrer = stat.stat_referrers.first
|
||||
referrer.url.must_equal 'http://example.com'
|
||||
referrer.views.must_equal 2
|
||||
referrer = stat.stat_referrers.last
|
||||
referrer.url.must_equal 'https://example.com'
|
||||
referrer.views.must_equal 1
|
||||
stat.bandwidth.must_equal 15_000
|
||||
@site_two.stat_referrers.count.must_equal 2
|
||||
stat_referrer = @site_two.stat_referrers.first
|
||||
stat_referrer.url.must_equal 'http://example.com'
|
||||
stat_referrer.views.must_equal 2
|
||||
|
||||
stat_paths = @site_two.stat_paths
|
||||
stat_paths.length.must_equal 2
|
||||
stat_paths.first.name.must_equal '/'
|
||||
stat_paths.last.name.must_equal '/derp.html'
|
||||
|
||||
# [geoip.city('67.180.75.140'), geoip.city('172.56.16.152')]
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue