Skip to content
Snippets Groups Projects
Commit c3389c80 authored by Stan Hu's avatar Stan Hu
Browse files

Merge branch 'bw-fix-checking-disabled-services' into 'master'

Check disabled_services when finding a service

See merge request gitlab-org/gitlab-ce!22172
parents 2fce6d6f f934b216
No related branches found
No related tags found
1 merge request!10495Merge Requests - Assignee
Loading
Loading
@@ -1088,9 +1088,7 @@ class Project < ActiveRecord::Base
find_or_initialize_service(service_name)
end
 
available_services.reject do |service|
disabled_services.include?(service.to_param)
end
available_services.compact
end
 
def disabled_services
Loading
Loading
@@ -1098,6 +1096,8 @@ class Project < ActiveRecord::Base
end
 
def find_or_initialize_service(name)
return if disabled_services.include?(name)
service = find_service(services, name)
return service if service
 
Loading
Loading
Loading
Loading
@@ -4037,19 +4037,39 @@ describe Project do
expect(result).to be_empty
end
end
end
 
describe "#find_or_initialize_service" do
subject { build(:project) }
describe "#find_or_initialize_services" do
subject { build(:project) }
 
it 'avoids N+1 database queries' do
allow(Service).to receive(:available_services_names).and_return(%w(prometheus pushover))
it 'returns only enabled services' do
allow(Service).to receive(:available_services_names).and_return(%w(prometheus pushover))
allow(subject).to receive(:disabled_services).and_return(%w(prometheus))
 
control_count = ActiveRecord::QueryRecorder.new { project.find_or_initialize_service('prometheus') }.count
services = subject.find_or_initialize_services
 
allow(Service).to receive(:available_services_names).and_call_original
expect(services.count).to eq 1
expect(services).to include(PushoverService)
end
end
 
expect { project.find_or_initialize_service('prometheus') }.not_to exceed_query_limit(control_count)
end
describe "#find_or_initialize_service" do
subject { build(:project) }
it 'avoids N+1 database queries' do
allow(Service).to receive(:available_services_names).and_return(%w(prometheus pushover))
control_count = ActiveRecord::QueryRecorder.new { subject.find_or_initialize_service('prometheus') }.count
allow(Service).to receive(:available_services_names).and_call_original
expect { subject.find_or_initialize_service('prometheus') }.not_to exceed_query_limit(control_count)
end
it 'returns nil if service is disabled' do
allow(subject).to receive(:disabled_services).and_return(%w(prometheus))
expect(subject.find_or_initialize_service('prometheus')).to be_nil
end
end
 
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment