From cafe40a4c3edfb0ccfb49ad6e07c1ee4274dcb76 Mon Sep 17 00:00:00 2001 From: carlad Date: Thu, 21 Jul 2016 17:07:25 +0200 Subject: [PATCH 01/16] add sentry capture to v3 router --- lib/travis/api/v3/router.rb | 57 +++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/lib/travis/api/v3/router.rb b/lib/travis/api/v3/router.rb index 2d29b9f1..e4541c11 100644 --- a/lib/travis/api/v3/router.rb +++ b/lib/travis/api/v3/router.rb @@ -3,6 +3,10 @@ module Travis::API::V3 include Travis::API::V3 attr_accessor :routes, :metrics_processor + Raven.configure do |config| + config.dsn = Travis.config.sentry.dsn + end + def initialize(routes = Routes) @routes = routes @metrics_processor = Metrics::Processor.new @@ -12,39 +16,44 @@ module Travis::API::V3 end def call(env) - return service_index(env) if env['PATH_INFO'.freeze] == ?/.freeze - metrics = @metrics_processor.create - access_control = AccessControl.new(env) - env_params = params(env) - factory, params = routes.factory_for(env['REQUEST_METHOD'.freeze], env['PATH_INFO'.freeze]) + Raven.capture do + # capture any exceptions which happen during execution of this block + 1 / 0 + + return service_index(env) if env['PATH_INFO'.freeze] == ?/.freeze + metrics = @metrics_processor.create + access_control = AccessControl.new(env) + env_params = params(env) + factory, params = routes.factory_for(env['REQUEST_METHOD'.freeze], env['PATH_INFO'.freeze]) - raise NotFound unless factory - metrics.name_after(factory) + raise NotFound unless factory + metrics.name_after(factory) - filtered = factory.filter_params(env_params) - service = factory.new(access_control, filtered.merge(params), env['rack.input'.freeze]) + filtered = factory.filter_params(env_params) + service = factory.new(access_control, filtered.merge(params), env['rack.input'.freeze]) - metrics.tick(:prepare) - result = service.run - metrics.tick(:service) + metrics.tick(:prepare) + result = service.run + metrics.tick(:service) - env_params.each_key { |key| result.ignored_param(key, reason: "not safelisted".freeze) unless filtered.include?(key) } - response = render(result, env_params, env) + env_params.each_key { |key| result.ignored_param(key, reason: "not safelisted".freeze) unless filtered.include?(key) } + response = render(result, env_params, env) - metrics.tick(:renderer) - metrics.success(status: response[0]) - response - rescue Error => error - metrics.tick(:service) + metrics.tick(:renderer) + metrics.success(status: response[0]) + response + rescue Error => error + metrics.tick(:service) - result = Result.new(access_control, :error, error) - response = V3.response(result.render(env_params, env), {}, status: error.status) + result = Result.new(access_control, :error, error) + response = V3.response(result.render(env_params, env), {}, status: error.status) - metrics.tick(:rendered) - metrics.failure(status: error.status) + metrics.tick(:rendered) + metrics.failure(status: error.status) - response + response + end end def render(result, env_params, env) From 27dbe9a75a95bd96fc96b8d7eab1809073daae52 Mon Sep 17 00:00:00 2001 From: carlad Date: Thu, 21 Jul 2016 17:24:36 +0200 Subject: [PATCH 02/16] require sentry, move raven capture --- lib/travis/api/v3/router.rb | 53 +++++++++++++++++++------------------ spec/spec_helper.rb | 1 + 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/lib/travis/api/v3/router.rb b/lib/travis/api/v3/router.rb index e4541c11..cff6d91e 100644 --- a/lib/travis/api/v3/router.rb +++ b/lib/travis/api/v3/router.rb @@ -1,3 +1,6 @@ + +require 'sentry-raven' + module Travis::API::V3 class Router include Travis::API::V3 @@ -16,34 +19,32 @@ module Travis::API::V3 end def call(env) + return service_index(env) if env['PATH_INFO'.freeze] == ?/.freeze + metrics = @metrics_processor.create + access_control = AccessControl.new(env) + env_params = params(env) + factory, params = routes.factory_for(env['REQUEST_METHOD'.freeze], env['PATH_INFO'.freeze]) + + + raise NotFound unless factory + metrics.name_after(factory) + + filtered = factory.filter_params(env_params) + service = factory.new(access_control, filtered.merge(params), env['rack.input'.freeze]) + + metrics.tick(:prepare) + result = service.run + metrics.tick(:service) + + env_params.each_key { |key| result.ignored_param(key, reason: "not safelisted".freeze) unless filtered.include?(key) } + response = render(result, env_params, env) + + metrics.tick(:renderer) + metrics.success(status: response[0]) + response + rescue Error => error Raven.capture do - # capture any exceptions which happen during execution of this block 1 / 0 - - return service_index(env) if env['PATH_INFO'.freeze] == ?/.freeze - metrics = @metrics_processor.create - access_control = AccessControl.new(env) - env_params = params(env) - factory, params = routes.factory_for(env['REQUEST_METHOD'.freeze], env['PATH_INFO'.freeze]) - - - raise NotFound unless factory - metrics.name_after(factory) - - filtered = factory.filter_params(env_params) - service = factory.new(access_control, filtered.merge(params), env['rack.input'.freeze]) - - metrics.tick(:prepare) - result = service.run - metrics.tick(:service) - - env_params.each_key { |key| result.ignored_param(key, reason: "not safelisted".freeze) unless filtered.include?(key) } - response = render(result, env_params, env) - - metrics.tick(:renderer) - metrics.success(status: response[0]) - response - rescue Error => error metrics.tick(:service) result = Result.new(access_control, :error, error) diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 74fcf50e..814e0130 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -10,6 +10,7 @@ require 'gh' require 'multi_json' require 'pry' require 'stackprof' +require 'sentry-raven' require 'travis/api/app' require 'travis/testing' From 185067265c327e3a2cbdf9316cc6ec08e39b14c6 Mon Sep 17 00:00:00 2001 From: carlad Date: Thu, 21 Jul 2016 17:56:41 +0200 Subject: [PATCH 03/16] remove unnecessary requires, inital work on spec --- lib/travis/api/v3/router.rb | 10 +++++----- spec/spec_helper.rb | 1 - spec/v3/error_handling_spec.rb | 23 +++++++++++++++++++++-- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/lib/travis/api/v3/router.rb b/lib/travis/api/v3/router.rb index cff6d91e..ad7b6f1d 100644 --- a/lib/travis/api/v3/router.rb +++ b/lib/travis/api/v3/router.rb @@ -1,14 +1,14 @@ -require 'sentry-raven' +# require 'sentry-raven' module Travis::API::V3 class Router include Travis::API::V3 attr_accessor :routes, :metrics_processor - Raven.configure do |config| - config.dsn = Travis.config.sentry.dsn - end + # Raven.configure do |config| + # config.dsn = Travis.config.sentry.dsn + # end def initialize(routes = Routes) @routes = routes @@ -44,7 +44,7 @@ module Travis::API::V3 response rescue Error => error Raven.capture do - 1 / 0 + # 1 / 0 metrics.tick(:service) result = Result.new(access_control, :error, error) diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 814e0130..74fcf50e 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -10,7 +10,6 @@ require 'gh' require 'multi_json' require 'pry' require 'stackprof' -require 'sentry-raven' require 'travis/api/app' require 'travis/testing' diff --git a/spec/v3/error_handling_spec.rb b/spec/v3/error_handling_spec.rb index bbca73f4..be2457eb 100644 --- a/spec/v3/error_handling_spec.rb +++ b/spec/v3/error_handling_spec.rb @@ -1,3 +1,5 @@ +require 'sentry-raven' + describe Travis::API::V3::ServiceIndex, set_app: true do let(:headers) {{ }} let(:path) { "/v3/repo/1/enable" } @@ -6,8 +8,25 @@ describe Travis::API::V3::ServiceIndex, set_app: true do let(:resources) { json.fetch('resources') } it "handles wrong HTTP method with 405 status" do - response.status.should == 405 end - +end + +describe Travis::API::V3::Router, set_app: true do + class TestError < StandardError + end + + before do + Travis.config.sentry.dsn = "test" + end + + it 'Sentry captures router errors' do + error = TestError.new('Konstantin broke all the thingz!') + Travis::API::V3::Models::Repository.any_instance.stubs(:service).raises(error) + Raven.expects(:capture).with do |event| + event.message == "#{error.class}: #{error.message}" + end + expect { get "/v3/repo/1" }.to raise_error(TestError) + sleep 0.1 + end end From 20be47698a03e82e599070505d02f5059046ebe3 Mon Sep 17 00:00:00 2001 From: carlad Date: Fri, 22 Jul 2016 15:19:14 +0200 Subject: [PATCH 04/16] try raven.new --- lib/travis/api/v3/router.rb | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/lib/travis/api/v3/router.rb b/lib/travis/api/v3/router.rb index ad7b6f1d..ca92e1af 100644 --- a/lib/travis/api/v3/router.rb +++ b/lib/travis/api/v3/router.rb @@ -43,18 +43,16 @@ module Travis::API::V3 metrics.success(status: response[0]) response rescue Error => error - Raven.capture do - # 1 / 0 - metrics.tick(:service) + Raven.new(error) + metrics.tick(:service) - result = Result.new(access_control, :error, error) - response = V3.response(result.render(env_params, env), {}, status: error.status) + result = Result.new(access_control, :error, error) + response = V3.response(result.render(env_params, env), {}, status: error.status) - metrics.tick(:rendered) - metrics.failure(status: error.status) + metrics.tick(:rendered) + metrics.failure(status: error.status) - response - end + response end def render(result, env_params, env) From 1e04b52f5fd8fa98442db7c04108e0d43790c16b Mon Sep 17 00:00:00 2001 From: carlad Date: Mon, 25 Jul 2016 12:42:16 +0200 Subject: [PATCH 05/16] change raven syntax --- lib/travis/api/v3/router.rb | 24 ++++++++---------------- spec/v3/error_handling_spec.rb | 15 ++++++++++++++- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/lib/travis/api/v3/router.rb b/lib/travis/api/v3/router.rb index ad7b6f1d..49617cc7 100644 --- a/lib/travis/api/v3/router.rb +++ b/lib/travis/api/v3/router.rb @@ -1,15 +1,10 @@ - -# require 'sentry-raven' +# require 'raven' module Travis::API::V3 class Router include Travis::API::V3 attr_accessor :routes, :metrics_processor - # Raven.configure do |config| - # config.dsn = Travis.config.sentry.dsn - # end - def initialize(routes = Routes) @routes = routes @metrics_processor = Metrics::Processor.new @@ -25,7 +20,6 @@ module Travis::API::V3 env_params = params(env) factory, params = routes.factory_for(env['REQUEST_METHOD'.freeze], env['PATH_INFO'.freeze]) - raise NotFound unless factory metrics.name_after(factory) @@ -43,18 +37,16 @@ module Travis::API::V3 metrics.success(status: response[0]) response rescue Error => error - Raven.capture do - # 1 / 0 - metrics.tick(:service) + Raven.capture_exception(error) + metrics.tick(:service) - result = Result.new(access_control, :error, error) - response = V3.response(result.render(env_params, env), {}, status: error.status) + result = Result.new(access_control, :error, error) + response = V3.response(result.render(env_params, env), {}, status: error.status) - metrics.tick(:rendered) - metrics.failure(status: error.status) + metrics.tick(:rendered) + metrics.failure(status: error.status) - response - end + response end def render(result, env_params, env) diff --git a/spec/v3/error_handling_spec.rb b/spec/v3/error_handling_spec.rb index be2457eb..8ab8c81f 100644 --- a/spec/v3/error_handling_spec.rb +++ b/spec/v3/error_handling_spec.rb @@ -13,17 +13,30 @@ describe Travis::API::V3::ServiceIndex, set_app: true do end describe Travis::API::V3::Router, set_app: true do + class FixRaven < Struct.new(:app) + def call(env) + requested_at = env['requested_at'] + env['requested_at'] = env['requested_at'].to_s if env.key?('requested_at') + app.call(env) + rescue Exception => e + env['requested_at'] = requested_at + raise e + end + end + class TestError < StandardError end before do + set_app Raven::Rack.new(FixRaven.new(app)) Travis.config.sentry.dsn = "test" + Travis::Api::App.setup_monitoring end it 'Sentry captures router errors' do error = TestError.new('Konstantin broke all the thingz!') Travis::API::V3::Models::Repository.any_instance.stubs(:service).raises(error) - Raven.expects(:capture).with do |event| + Raven.expects(:send_event).with do |event| event.message == "#{error.class}: #{error.message}" end expect { get "/v3/repo/1" }.to raise_error(TestError) From 5e798aca6f2368c322b11a9b2af8e02d46b261a6 Mon Sep 17 00:00:00 2001 From: carlad Date: Mon, 25 Jul 2016 15:54:26 +0200 Subject: [PATCH 06/16] try to fix spec --- spec/v3/error_handling_spec.rb | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/spec/v3/error_handling_spec.rb b/spec/v3/error_handling_spec.rb index 8ab8c81f..33b3b762 100644 --- a/spec/v3/error_handling_spec.rb +++ b/spec/v3/error_handling_spec.rb @@ -1,5 +1,3 @@ -require 'sentry-raven' - describe Travis::API::V3::ServiceIndex, set_app: true do let(:headers) {{ }} let(:path) { "/v3/repo/1/enable" } @@ -13,22 +11,12 @@ describe Travis::API::V3::ServiceIndex, set_app: true do end describe Travis::API::V3::Router, set_app: true do - class FixRaven < Struct.new(:app) - def call(env) - requested_at = env['requested_at'] - env['requested_at'] = env['requested_at'].to_s if env.key?('requested_at') - app.call(env) - rescue Exception => e - env['requested_at'] = requested_at - raise e - end - end + include Rack::Test::Methods - class TestError < StandardError - end + class TestError < StandardError; end before do - set_app Raven::Rack.new(FixRaven.new(app)) + set_app Raven::Rack.new(app) Travis.config.sentry.dsn = "test" Travis::Api::App.setup_monitoring end From c00cdbaff74676c481c6cb52a489da55cd00f295 Mon Sep 17 00:00:00 2001 From: carlad Date: Mon, 25 Jul 2016 19:30:45 +0200 Subject: [PATCH 07/16] crons only --- lib/travis/api/v3/queries/crons.rb | 2 +- lib/travis/api/v3/router.rb | 1 - spec/v3/error_handling_spec.rb | 22 ---------------------- spec/v3/queries/cron_spec.rb | 16 ++++++++++++++++ 4 files changed, 17 insertions(+), 24 deletions(-) diff --git a/lib/travis/api/v3/queries/crons.rb b/lib/travis/api/v3/queries/crons.rb index aca22d2a..0105442e 100644 --- a/lib/travis/api/v3/queries/crons.rb +++ b/lib/travis/api/v3/queries/crons.rb @@ -31,7 +31,7 @@ module Travis::API::V3 ::Sidekiq::Client.push('queue'.freeze => queue, 'class'.freeze => class_name, 'args'.freeze => [{type: 'cron'.freeze, payload: JSON.dump(payload), credentials: {}}]) true rescue => e - puts e.message, e.backtrace + Raven.capture_exception(e) end end end diff --git a/lib/travis/api/v3/router.rb b/lib/travis/api/v3/router.rb index 49617cc7..4b5d7d4a 100644 --- a/lib/travis/api/v3/router.rb +++ b/lib/travis/api/v3/router.rb @@ -37,7 +37,6 @@ module Travis::API::V3 metrics.success(status: response[0]) response rescue Error => error - Raven.capture_exception(error) metrics.tick(:service) result = Result.new(access_control, :error, error) diff --git a/spec/v3/error_handling_spec.rb b/spec/v3/error_handling_spec.rb index 33b3b762..62a3fbf7 100644 --- a/spec/v3/error_handling_spec.rb +++ b/spec/v3/error_handling_spec.rb @@ -9,25 +9,3 @@ describe Travis::API::V3::ServiceIndex, set_app: true do response.status.should == 405 end end - -describe Travis::API::V3::Router, set_app: true do - include Rack::Test::Methods - - class TestError < StandardError; end - - before do - set_app Raven::Rack.new(app) - Travis.config.sentry.dsn = "test" - Travis::Api::App.setup_monitoring - end - - it 'Sentry captures router errors' do - error = TestError.new('Konstantin broke all the thingz!') - Travis::API::V3::Models::Repository.any_instance.stubs(:service).raises(error) - Raven.expects(:send_event).with do |event| - event.message == "#{error.class}: #{error.message}" - end - expect { get "/v3/repo/1" }.to raise_error(TestError) - sleep 0.1 - end -end diff --git a/spec/v3/queries/cron_spec.rb b/spec/v3/queries/cron_spec.rb index 9a995d46..a96438d2 100644 --- a/spec/v3/queries/cron_spec.rb +++ b/spec/v3/queries/cron_spec.rb @@ -22,4 +22,20 @@ describe Travis::API::V3::Queries::Crons do end end + #TODO - mock any instance of cron branch (line 15) - cron branch re + # Travis::API::V3::Models::Cron.any_instance.stubs(:branch).raises(error) + + # describe Travis::API::V3::Router, set_app: true do + # + # it 'Sentry captures router errors' do + # error = StandardError.new('Konstantin broke all the thingz!') + # Travis::API::V3::Services::Repository::Find.any_instance.stubs(:run!).raises(error) + # Raven.expects(:capture_exception).with do |event| + # event.message == "#{error.class}: #{error.message}" + # end + # expect { get "/v3/repo/1" }.to raise_error(error) + # end + # end + + end From c90991e10ab4de85d2b8e27066d5c5cc59c64c10 Mon Sep 17 00:00:00 2001 From: carlad Date: Tue, 26 Jul 2016 13:38:53 +0200 Subject: [PATCH 08/16] update cron spec --- spec/v3/queries/cron_spec.rb | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/spec/v3/queries/cron_spec.rb b/spec/v3/queries/cron_spec.rb index a96438d2..acd0248a 100644 --- a/spec/v3/queries/cron_spec.rb +++ b/spec/v3/queries/cron_spec.rb @@ -1,3 +1,5 @@ +require 'sentry-raven' + describe Travis::API::V3::Queries::Crons do let(:user) { Travis::API::V3::Models::User.find_by_login('svenfuchs') } let(:repo) { Travis::API::V3::Models::Repository.where(owner_name: 'svenfuchs', name: 'minimal').first } @@ -22,20 +24,20 @@ describe Travis::API::V3::Queries::Crons do end end - #TODO - mock any instance of cron branch (line 15) - cron branch re - # Travis::API::V3::Models::Cron.any_instance.stubs(:branch).raises(error) - - # describe Travis::API::V3::Router, set_app: true do - # - # it 'Sentry captures router errors' do - # error = StandardError.new('Konstantin broke all the thingz!') - # Travis::API::V3::Services::Repository::Find.any_instance.stubs(:run!).raises(error) - # Raven.expects(:capture_exception).with do |event| - # event.message == "#{error.class}: #{error.message}" - # end - # expect { get "/v3/repo/1" }.to raise_error(error) - # end - # end - + describe 'Exception', set_app: true do + before do + set_app Raven::Rack.new(app) + Travis.config.sentry.dsn = "test" + Travis::Api::App.setup_monitoring + end + it 'enques error into a thread' do + error = StandardError.new('Konstantin broke all the thingz!') + Travis::API::V3::Models::Cron.any_instance.stubs(:branch).raises(error) + Raven.expects(:send_event).with do |event| + event.message == "#{error.class}: #{error.message}" + end + expect { get "/repo/#{repo.id}/crons" }.to raise_error(error) + end + end end From e31976974c026570f0e030d28393728fb62f7b12 Mon Sep 17 00:00:00 2001 From: carlad Date: Tue, 26 Jul 2016 15:35:41 +0200 Subject: [PATCH 09/16] try to get spec to pass --- spec/v3/queries/cron_spec.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spec/v3/queries/cron_spec.rb b/spec/v3/queries/cron_spec.rb index acd0248a..a4cc4e59 100644 --- a/spec/v3/queries/cron_spec.rb +++ b/spec/v3/queries/cron_spec.rb @@ -33,7 +33,8 @@ describe Travis::API::V3::Queries::Crons do it 'enques error into a thread' do error = StandardError.new('Konstantin broke all the thingz!') - Travis::API::V3::Models::Cron.any_instance.stubs(:branch).raises(error) + Travis::API::V3::Services::Crons::ForRepository.any_instance.stubs(:run!).raises(error) + Raven.expects(:send_event).with do |event| event.message == "#{error.class}: #{error.message}" end From 543998feeaa965cf28aaebc877050e0d42d1ce1d Mon Sep 17 00:00:00 2001 From: carlad Date: Tue, 26 Jul 2016 16:05:58 +0200 Subject: [PATCH 10/16] update spec --- spec/v3/queries/cron_spec.rb | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/spec/v3/queries/cron_spec.rb b/spec/v3/queries/cron_spec.rb index a4cc4e59..fefcc1ec 100644 --- a/spec/v3/queries/cron_spec.rb +++ b/spec/v3/queries/cron_spec.rb @@ -22,19 +22,10 @@ describe Travis::API::V3::Queries::Crons do expect(query.start_all).to_not include(cron) expect(Travis::API::V3::Models::Cron.where(id: cron.id).length).to equal(0) end - end - - describe 'Exception', set_app: true do - before do - set_app Raven::Rack.new(app) - Travis.config.sentry.dsn = "test" - Travis::Api::App.setup_monitoring - end - + it 'enques error into a thread' do error = StandardError.new('Konstantin broke all the thingz!') - Travis::API::V3::Services::Crons::ForRepository.any_instance.stubs(:run!).raises(error) - + Travis::API::V3::Models::Cron.any_instance.stubs(:branch).raises(error) Raven.expects(:send_event).with do |event| event.message == "#{error.class}: #{error.message}" end From 1733ea69d5c54032eb2f4cb348a2efeaafaacdc1 Mon Sep 17 00:00:00 2001 From: carlad Date: Tue, 26 Jul 2016 16:49:22 +0200 Subject: [PATCH 11/16] remove expectation --- spec/v3/queries/cron_spec.rb | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/spec/v3/queries/cron_spec.rb b/spec/v3/queries/cron_spec.rb index fefcc1ec..b56a5db7 100644 --- a/spec/v3/queries/cron_spec.rb +++ b/spec/v3/queries/cron_spec.rb @@ -14,7 +14,6 @@ describe Travis::API::V3::Queries::Crons do it "starts crons on existing branches" do cron = Travis::API::V3::Models::Cron.create(branch_id: existing_branch.id, interval: 'daily', disable_by_build: false) expect(query.start_all).to include(cron) - end it "delete crons on branches not existing on GitHub" do @@ -22,14 +21,14 @@ describe Travis::API::V3::Queries::Crons do expect(query.start_all).to_not include(cron) expect(Travis::API::V3::Models::Cron.where(id: cron.id).length).to equal(0) end - + it 'enques error into a thread' do error = StandardError.new('Konstantin broke all the thingz!') Travis::API::V3::Models::Cron.any_instance.stubs(:branch).raises(error) - Raven.expects(:send_event).with do |event| + Raven.expects(:capture_exception).with do |event| event.message == "#{error.class}: #{error.message}" end - expect { get "/repo/#{repo.id}/crons" }.to raise_error(error) + query.start_all end end end From 291fea3e07861df7692ed8cf959073274cd44743 Mon Sep 17 00:00:00 2001 From: carlad Date: Tue, 26 Jul 2016 17:03:32 +0200 Subject: [PATCH 12/16] add a cron to the test --- spec/v3/queries/cron_spec.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/v3/queries/cron_spec.rb b/spec/v3/queries/cron_spec.rb index b56a5db7..488f0c4f 100644 --- a/spec/v3/queries/cron_spec.rb +++ b/spec/v3/queries/cron_spec.rb @@ -23,6 +23,7 @@ describe Travis::API::V3::Queries::Crons do end it 'enques error into a thread' do + cron = Travis::API::V3::Models::Cron.create(branch_id: existing_branch.id, interval: 'daily', disable_by_build: false) error = StandardError.new('Konstantin broke all the thingz!') Travis::API::V3::Models::Cron.any_instance.stubs(:branch).raises(error) Raven.expects(:capture_exception).with do |event| From 72be42b88f570bf48940d275c9d3b3223e109d91 Mon Sep 17 00:00:00 2001 From: carlad Date: Tue, 26 Jul 2016 17:36:02 +0200 Subject: [PATCH 13/16] move capture_exception to correct method, update spec --- lib/travis/api/v3/queries/crons.rb | 4 ++-- spec/v3/queries/cron_spec.rb | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/travis/api/v3/queries/crons.rb b/lib/travis/api/v3/queries/crons.rb index 0105442e..d5799d58 100644 --- a/lib/travis/api/v3/queries/crons.rb +++ b/lib/travis/api/v3/queries/crons.rb @@ -9,6 +9,8 @@ module Travis::API::V3 Models::Cron.all.select do |cron| start(cron) if cron.next_enqueuing <= Time.now end + rescue => e + Raven.capture_exception(e) end def start(cron) @@ -30,8 +32,6 @@ module Travis::API::V3 class_name, queue = Query.sidekiq_queue(:build_request) ::Sidekiq::Client.push('queue'.freeze => queue, 'class'.freeze => class_name, 'args'.freeze => [{type: 'cron'.freeze, payload: JSON.dump(payload), credentials: {}}]) true - rescue => e - Raven.capture_exception(e) end end end diff --git a/spec/v3/queries/cron_spec.rb b/spec/v3/queries/cron_spec.rb index 488f0c4f..d6d16889 100644 --- a/spec/v3/queries/cron_spec.rb +++ b/spec/v3/queries/cron_spec.rb @@ -26,9 +26,7 @@ describe Travis::API::V3::Queries::Crons do cron = Travis::API::V3::Models::Cron.create(branch_id: existing_branch.id, interval: 'daily', disable_by_build: false) error = StandardError.new('Konstantin broke all the thingz!') Travis::API::V3::Models::Cron.any_instance.stubs(:branch).raises(error) - Raven.expects(:capture_exception).with do |event| - event.message == "#{error.class}: #{error.message}" - end + Raven.expects(:capture_exception).with(error) query.start_all end end From 3a1b1a591f8440996ac9f3739ff8683631e7e5b2 Mon Sep 17 00:00:00 2001 From: carlad Date: Tue, 26 Jul 2016 17:53:35 +0200 Subject: [PATCH 14/16] remove comment --- lib/travis/api/v3/router.rb | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/travis/api/v3/router.rb b/lib/travis/api/v3/router.rb index 4b5d7d4a..2fc730dc 100644 --- a/lib/travis/api/v3/router.rb +++ b/lib/travis/api/v3/router.rb @@ -1,5 +1,3 @@ -# require 'raven' - module Travis::API::V3 class Router include Travis::API::V3 From c112c56664dad89a1c7e57dc816ed044ad74f72b Mon Sep 17 00:00:00 2001 From: carlad Date: Wed, 27 Jul 2016 11:59:36 +0200 Subject: [PATCH 15/16] add typo to test sending of error to sentry on staging --- lib/travis/api/v3/models/cron.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/travis/api/v3/models/cron.rb b/lib/travis/api/v3/models/cron.rb index 68f664f2..bbb05e96 100644 --- a/lib/travis/api/v3/models/cron.rb +++ b/lib/travis/api/v3/models/cron.rb @@ -13,7 +13,7 @@ module Travis::API::V3 elsif last_cron_build_date >= planned_time(LastBuild) planned_time(ThisBuild) else - Time.now + Time.nowt end end From 9e61d5e636e7525ffb7826f69f9f3f145eda981d Mon Sep 17 00:00:00 2001 From: carlad Date: Wed, 27 Jul 2016 12:10:39 +0200 Subject: [PATCH 16/16] revert typo --- lib/travis/api/v3/models/cron.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/travis/api/v3/models/cron.rb b/lib/travis/api/v3/models/cron.rb index bbb05e96..68f664f2 100644 --- a/lib/travis/api/v3/models/cron.rb +++ b/lib/travis/api/v3/models/cron.rb @@ -13,7 +13,7 @@ module Travis::API::V3 elsif last_cron_build_date >= planned_time(LastBuild) planned_time(ThisBuild) else - Time.nowt + Time.now end end