diff options
author | Pawel Chojnacki <pawel@chojnacki.ws> | 2018-03-05 21:02:26 +0100 |
---|---|---|
committer | Pawel Chojnacki <pawel@chojnacki.ws> | 2018-03-05 21:02:26 +0100 |
commit | b53356546dc54a6674eda8fa2d4f730a70f77206 (patch) | |
tree | 35e655f82b3f80039cded957b866ba16629eb2b5 | |
parent | 5ceec83a0154e513480a9bb08e252371bf7886c6 (diff) | |
download | gitlab-ce-b53356546dc54a6674eda8fa2d4f730a70f77206.tar.gz |
Check if prometheus_adapter is properly called
-rw-r--r-- | app/controllers/projects/prometheus/metrics_controller.rb | 3 | ||||
-rw-r--r-- | spec/controllers/projects/prometheus/metrics_controller_spec.rb | 18 | ||||
-rw-r--r-- | spec/models/environment_spec.rb | 32 |
3 files changed, 21 insertions, 32 deletions
diff --git a/app/controllers/projects/prometheus/metrics_controller.rb b/app/controllers/projects/prometheus/metrics_controller.rb index 523abce35fb..51b29855bcf 100644 --- a/app/controllers/projects/prometheus/metrics_controller.rb +++ b/app/controllers/projects/prometheus/metrics_controller.rb @@ -21,9 +21,10 @@ module Projects private def prometheus_adapter - @prometheus_adapter ||= Prometheus::AdapterService.new(project).prometheus_adapter + @prometheus_adapter ||= ::Prometheus::AdapterService.new(project).prometheus_adapter end + def require_prometheus_metrics! render_404 unless prometheus_adapter.can_query? end diff --git a/spec/controllers/projects/prometheus/metrics_controller_spec.rb b/spec/controllers/projects/prometheus/metrics_controller_spec.rb index 9d2ac42e99f..b2b245dba90 100644 --- a/spec/controllers/projects/prometheus/metrics_controller_spec.rb +++ b/spec/controllers/projects/prometheus/metrics_controller_spec.rb @@ -7,13 +7,15 @@ describe Projects::Prometheus::MetricsController do let(:prometheus_adapter) { double('prometheus_adapter', can_query?: true) } before do - allow(controller).to receive(:prometheus_adapter).and_return(prometheus_adapter) - project.add_master(user) sign_in(user) end describe 'GET #active_common' do + before do + allow(controller).to receive(:prometheus_adapter).and_return(prometheus_adapter) + end + context 'when prometheus metrics are enabled' do context 'when data is not present' do before do @@ -52,6 +54,18 @@ describe Projects::Prometheus::MetricsController do end end + describe '#prometheus_adapter' do + before do + allow(controller).to receive(:project).and_return(project) + end + + it 'calls prometheus adapter service' do + expect_any_instance_of(::Prometheus::AdapterService).to receive(:prometheus_adapter) + + subject.__send__(:prometheus_adapter) + end + end + def project_params(opts = {}) opts.reverse_merge(namespace_id: project.namespace, project_id: project) end diff --git a/spec/models/environment_spec.rb b/spec/models/environment_spec.rb index 8c052888b04..ceb570ac777 100644 --- a/spec/models/environment_spec.rb +++ b/spec/models/environment_spec.rb @@ -623,36 +623,10 @@ describe Environment do end describe '#prometheus_adapter' do - let(:cluster) { create(:cluster, :provided_by_user, environment_scope: '*', projects: [project]) } + it 'calls prometheus adapter service' do + expect_any_instance_of(Prometheus::AdapterService).to receive(:prometheus_adapter) - context 'prometheus service can execute queries' do - let(:prometheus_service) { double(:prometheus_service, can_query?: true) } - - before do - allow(environment.project).to receive(:find_or_initialize_service).with('prometheus').and_return prometheus_service - end - - it 'return prometheus service as prometheus adapter' do - expect(environment.prometheus_adapter).to eq(prometheus_service) - end - end - - context "prometheus service can't execute queries" do - let(:prometheus_service) { double(:prometheus_service, can_query?: false) } - - context 'with cluster with prometheus installed' do - let!(:prometheus) { create(:clusters_applications_prometheus, :installed, cluster: cluster) } - - it 'returns application handling all environments' do - expect(environment.prometheus_adapter).to eq(prometheus) - end - end - - context 'with cluster without prometheus installed' do - it 'returns nil' do - expect(environment.prometheus_adapter).to be_nil - end - end + subject.prometheus_adapter end end end |