Skip to content
Extraits de code Groupes Projets
Valider 4c9b45b9 rédigé par Ilya Zhitomirskiy's avatar Ilya Zhitomirskiy
Parcourir les fichiers

WIP

parent 818167c5
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -66,18 +66,7 @@ class AdminsController < ApplicationController
end
def correlations
@correlations = Statistics.generate_correlations(params[:number_of_weeks])
5.times.inject({}) do |stats, n|
week_start = (Time.now - n.weeks).beginning_of_week
week_end = week_start - 1.week
stats[week_start] = Statistics.new(week_start, week_end).generate_correlations
end
@post_count_correlation = Statistics.new.post_count_correlation
end
private
......
......@@ -5,6 +5,7 @@
%li= link_to 'User Search', user_search_path
%li= link_to 'Weekly User Stats', weekly_user_stats_path
%li= link_to 'Pod Stats', pod_stats_path
%li= link_to 'Correlations', correlations_path
- if AppConfig[:mount_resque_web]
%li= link_to 'Resque Overview', resque_web_path
......
.span-24
= render :partial => 'admins/admin_bar.haml'
%br
%br
.span-24.last
%h1
= "Correlation between Post Count and Sign In Count"
%ul
= @post_count_correlation
......@@ -97,6 +97,7 @@ Diaspora::Application.routes.draw do
match :user_search
get :admin_inviter
get :weekly_user_stats
get :correlations
get :stats, :as => 'pod_stats'
end
......
......@@ -55,15 +55,21 @@ SQL
SQL
end
def posts_count_correlation
def post_count_correlation
# [{"id" => 1 , "count" => 123}]
post_count_array = User.connection.select_all(self.posts_count_sql)
post_count_hash = {}
post_count_array.each{ |h| post_count_hash[h[id]] = h["count"]}
x_array = []
y_array = []
post_count_hash.keys.each do |k|
if val = sign_in_count_hash[k]
x_array << post_count_hash[k]
y_array << val
end
end
correlation(x_array, y_array)
end
......@@ -93,4 +99,23 @@ SQL
User.where("username IS NOT NULL").where("created_at > ? and created_at < ?", Time.now - (n+1).weeks, Time.now - n.weeks)
end
def post_count_hash
unless @post_count_hash
post_count_array = User.connection.select_all(self.posts_count_sql)
@post_count_hash = {}
post_count_array.each{ |h| @post_count_hash[h['id']] = h["count"]}
end
@post_count_hash
end
def sign_in_count_hash
unless @sign_in_count_hash
sign_in_count_array = User.connection.select_all(self.sign_in_count_sql)
@sign_in_count_hash = {}
sign_in_count_array.each{ |h| @sign_in_count_hash[h['id']] = h["count"]}
end
@sign_in_count_hash
end
end
......@@ -4,7 +4,8 @@ require 'lib/statistics'
describe Statistics do
before do
@stats = Statistics.new(time, time - 1.week)
@time = Time.now
@stats = Statistics.new#(@time, @time - 1.week)
@result = [{"id" => alice.id , "count" => 0 },
{"id" => bob.id , "count" => 1 },
{"id" => eve.id , "count" => 0 },
......@@ -59,11 +60,9 @@ describe Statistics do
describe "#correlation_hash" do
it 'it returns a hash of including start and end time' do
time = Time.now
hash = @stats.correlation_hash
hash[:starrt_time].should == time
hash[:end_time].should == time - 1.week
hash[:starrt_time].should == @time
hash[:end_time].should == @time - 1.week
end
it 'returns the post count (and sign_in_count) correlation' do
......@@ -72,6 +71,26 @@ describe Statistics do
@stats.generate_correlations[:posts_count].should == 0.5
end
end
describe "#post_count_correlation" do
it 'calls correlation with post' do
User.connection.should_receive(:select_all).and_return([{"id"=> 1, "count" => 7},
{"id" => 2, "count" => 8},
{"id" => 3, "count" => 9}],
[{"id"=> 1, "count" => 17},
{"id" => 3, "count" => 19}]
)
@stats.should_receive(:correlation).with([7,9],[17,19]).and_return(0.5)
@stats.posts_count_correlation.should == 0.5
end
end
context 'todos' do
before do
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter