From 5758096f335d0a97f93e9d643bee494e38346772 Mon Sep 17 00:00:00 2001 From: Seth Call Date: Thu, 1 Jan 2015 21:45:07 -0600 Subject: [PATCH] * fix bug in connection stats --- ruby/lib/jam_ruby/models/connection.rb | 7 ++++--- ruby/spec/jam_ruby/models/connection_spec.rb | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/ruby/lib/jam_ruby/models/connection.rb b/ruby/lib/jam_ruby/models/connection.rb index 53714d6b8..8a813f9ce 100644 --- a/ruby/lib/jam_ruby/models/connection.rb +++ b/ruby/lib/jam_ruby/models/connection.rb @@ -229,11 +229,12 @@ module JamRuby CLIENT_TYPES.each do |type| stats[type] = 0 end - Connection.select('count(client_type) AS client_type_count, client_type') do |result| - stats[result['client_type']] = result['client_type_count'] + + Connection.select('count(client_type) AS client_type_count, client_type').group('client_type').all.each do |result| + stats[result['client_type']] = result['client_type_count'].to_i end - result = Connection.select('count(id) AS total, count(scoring_timeout) AS scoring_timeout_count, count(music_session_id) AS in_session, count(as_musician) AS musicians, count(udp_reachable) AS udp_reachable_count, count(is_network_testing) AS is_network_testing_count').first + result = Connection.select('count(id) AS total, count(CASE WHEN scoring_timeout > NOW() THEN 1 ELSE null END) AS scoring_timeout_count, count(music_session_id) AS in_session, count(as_musician) AS musicians, count(CASE WHEN udp_reachable THEN 1 ELSE null END) AS udp_reachable_count, count(CASE WHEN is_network_testing THEN 1 ELSE null END) AS is_network_testing_count').first stats['count'] = result['total'].to_i stats['scoring_timeout'] = result['scoring_timeout_count'].to_i diff --git a/ruby/spec/jam_ruby/models/connection_spec.rb b/ruby/spec/jam_ruby/models/connection_spec.rb index 97784b838..f93e46bf7 100644 --- a/ruby/spec/jam_ruby/models/connection_spec.rb +++ b/ruby/spec/jam_ruby/models/connection_spec.rb @@ -193,5 +193,20 @@ describe JamRuby::Connection do stats['udp_reachable'].should eq(0) stats['networking_testing'].should eq(0) end + + it "1 connection" do + conn.touch + + stats = Connection.stats + stats[Connection::TYPE_CLIENT].should eq(1) + stats[Connection::TYPE_BROWSER].should eq(0) + stats[Connection::TYPE_LATENCY_TESTER].should eq(0) + stats['count'].should eq(1) + stats['scoring_timeout'].should eq(0) + stats['in_session'].should eq(1) + stats['musicians'].should eq(1) + stats['udp_reachable'].should eq(1) + stats['networking_testing'].should eq(0) + end end end