From 22ca51168181bea492d85fa4f922c960c8d97078 Mon Sep 17 00:00:00 2001 From: Seth Call Date: Mon, 14 Mar 2016 13:42:14 -0500 Subject: [PATCH] * add a bunch of traces for debugging VRFS-3986 --- admin/app/admin/jamblaster.rb | 1 - .../jam_ruby/models/active_music_session.rb | 12 +++++ ruby/spec/jam_ruby/connection_manager_spec.rb | 2 + .../models/active_music_session_spec.rb | 48 +++++++++++++++++++ 4 files changed, 62 insertions(+), 1 deletion(-) diff --git a/admin/app/admin/jamblaster.rb b/admin/app/admin/jamblaster.rb index 33f48100d..d64666711 100644 --- a/admin/app/admin/jamblaster.rb +++ b/admin/app/admin/jamblaster.rb @@ -8,7 +8,6 @@ ActiveAdmin.register JamRuby::Jamblaster, :as => 'Jamblaster' do f.input :user, required: true, collection: User.all, include_blank: false f.input :serial_no, required: true f.input :client_id, required: false - f.input :vtoken, required: false f.input :users, required: true, collection: User.all, include_blank: false end f.actions diff --git a/ruby/lib/jam_ruby/models/active_music_session.rb b/ruby/lib/jam_ruby/models/active_music_session.rb index 532365e26..89e7d9148 100644 --- a/ruby/lib/jam_ruby/models/active_music_session.rb +++ b/ruby/lib/jam_ruby/models/active_music_session.rb @@ -515,14 +515,19 @@ module JamRuby active_music_session.tick_track_changes connection = ConnectionManager.new.join_music_session(user, client_id, active_music_session, as_musician, tracks, audio_latency, video_sources) + @@log.warn("ERRORS_NIL_DEBUG _A_") if connection.errors.any? + @@log.warn("ERRORS_NIL_DEBUG _B_") # rollback the transaction to make sure nothing is disturbed in the database raise ActiveRecord::Rollback end + @@log.warn("ERRORS_NIL_DEBUG _C_") end end + @@log.warn("ERRORS_NIL_DEBUG _D_") unless connection.errors.any? + @@log.warn("ERRORS_NIL_DEBUG _E_") user.update_progression_field(:first_music_session_at) MusicSessionUserHistory.save(music_session_id, user.id, client_id, tracks) @@ -536,6 +541,7 @@ module JamRuby end end end + @@log.warn("ERRORS_NIL_DEBUG _F_") connection @@ -563,7 +569,9 @@ module JamRuby active_music_session.save + @@log.warn("ERRORS_NIL_DEBUG _G_") unless active_music_session.errors.any? + @@log.warn("ERRORS_NIL_DEBUG _H_") music_session.started_at = active_music_session.created_at music_session.save(:validate => false) @@ -574,7 +582,9 @@ module JamRuby as_musician = true connection = ConnectionManager.new.join_music_session(user, client_id, active_music_session, as_musician, tracks, audio_latency, video_sources) + @@log.warn("ERRORS_NIL_DEBUG _I_") unless connection.errors.any? + @@log.warn("ERRORS_NIL_DEBUG _J_") user.update_progression_field(:first_music_session_at) MusicSessionUserHistory.save(active_music_session.id, user.id, client_id, tracks) @@ -589,6 +599,7 @@ module JamRuby return_value = connection else + @@log.warn("ERRORS_NIL_DEBUG _K_") return_value = connection # rollback the transaction to make sure nothing is disturbed in the database raise ActiveRecord::Rollback @@ -598,6 +609,7 @@ module JamRuby # rollback the transaction to make sure nothing is disturbed in the database raise ActiveRecord::Rollback end + @@log.warn("ERRORS_NIL_DEBUG _L_") end end diff --git a/ruby/spec/jam_ruby/connection_manager_spec.rb b/ruby/spec/jam_ruby/connection_manager_spec.rb index d18bc9ce9..33bb6d517 100644 --- a/ruby/spec/jam_ruby/connection_manager_spec.rb +++ b/ruby/spec/jam_ruby/connection_manager_spec.rb @@ -345,6 +345,8 @@ describe ConnectionManager, no_transaction: true do assert_session_exists(music_session_id, false) end + + it "join_music_session fails if no connection" do client_id = "client_id10" diff --git a/ruby/spec/jam_ruby/models/active_music_session_spec.rb b/ruby/spec/jam_ruby/models/active_music_session_spec.rb index 79059d6c4..827dcaaf7 100644 --- a/ruby/spec/jam_ruby/models/active_music_session_spec.rb +++ b/ruby/spec/jam_ruby/models/active_music_session_spec.rb @@ -2,12 +2,60 @@ require 'spec_helper' describe ActiveMusicSession do + TRACKS = [{"instrument_id" => "electric guitar", "sound" => "mono", "client_track_id" => "some_client_track_id"}] + before(:each) do ActiveMusicSession.delete_all IcecastServer.delete_all IcecastMount.delete_all end + describe "participant_create" do + + let(:user) {FactoryGirl.create(:user)} + + it "fails gracefully when no connection" do + music_session = FactoryGirl.create(:active_music_session, :creator => user, :musician_access => false) + + expect { ActiveMusicSession.participant_create(user, music_session.id, "junk", true, nil, 5) }.to raise_error(ActiveRecord::RecordNotFound) + end + + it "succeeds no active music session" do + music_session = FactoryGirl.create(:music_session, :creator => user, :musician_access => false) + conn = FactoryGirl.create(:connection, :user => user) + connection = ActiveMusicSession.participant_create(user, music_session.id, conn.client_id, true, nil, 5) + connection.errors.any?.should be false + ActiveMusicSession.find(music_session.id) + end + + it "fails gracefully when invalid music session Id" do + music_session = FactoryGirl.create(:active_music_session, :creator => user, :musician_access => false) + conn = FactoryGirl.create(:connection, :user => user) + expect { ActiveMusicSession.participant_create(user, 'bad music session ID', conn.client_id, true, nil, 5) }.to raise_error(ActiveRecord::RecordNotFound) + end + + it "fails gracefully when invalid music session Id" do + music_session = FactoryGirl.create(:active_music_session, :creator => user, :musician_access => false) + conn = FactoryGirl.create(:connection, :user => user) + ActiveMusicSession.participant_create(user, 'bad music session ID', conn.client_id, true, nil, 5) + end + + it "pulls out of other session" do + music_session1 = FactoryGirl.create(:active_music_session, :creator => user, :musician_access => false) + music_session2 = FactoryGirl.create(:active_music_session, :creator => user, :musician_access => false) + conn = FactoryGirl.create(:connection, :user => user, music_session: music_session2) + connection = ActiveMusicSession.participant_create(user, music_session1.id, conn.client_id, true, nil, 5) + connection.should eql conn + connection.errors.any?.should be true + end + + it "user-less connection bails appropriately" do + music_session1 = FactoryGirl.create(:active_music_session, :creator => user, :musician_access => false) + conn = FactoryGirl.create(:connection) + expect { ActiveMusicSession.participant_create(user, music_session1.id, conn.client_id, true, nil, 5) }.to raise_error(ActiveRecord::RecordNotFound) + end + end + it 'can grant access to valid user' do user1 = FactoryGirl.create(:user) # in the jam session