diff options
author | Pawel Chojnacki <pawel@chojnacki.ws> | 2017-04-06 14:04:40 +0200 |
---|---|---|
committer | Pawel Chojnacki <pawel@chojnacki.ws> | 2017-04-06 14:19:21 +0200 |
commit | 15c3a931ac7799509eb433a95d4a2dbb078517c7 (patch) | |
tree | da3590152b8f86fc77aa45be55ca570261d2c46d | |
parent | dc25aeae0bf816d7ece7d20c19bf6cf8685501d2 (diff) | |
download | gitlab-ce-26944-add_per_deployment_metrics_widget_design_review.tar.gz |
Move deployment_time field setting to model. Fix whitespaces and wrong test description26944-add_per_deployment_metrics_widget_design_review
-rw-r--r-- | app/controllers/projects/deployments_controller.rb | 1 | ||||
-rw-r--r-- | app/models/deployment.rb | 5 | ||||
-rw-r--r-- | spec/controllers/projects/deployments_controller_spec.rb | 4 | ||||
-rw-r--r-- | spec/models/deployment_spec.rb | 27 |
4 files changed, 33 insertions, 4 deletions
diff --git a/app/controllers/projects/deployments_controller.rb b/app/controllers/projects/deployments_controller.rb index 581639e5f48..d3363deb354 100644 --- a/app/controllers/projects/deployments_controller.rb +++ b/app/controllers/projects/deployments_controller.rb @@ -5,7 +5,6 @@ class Projects::DeploymentsController < Projects::ApplicationController @metrics = deployment.metrics(1.hour) if @metrics&.any? - @metrics[:deployment_time] = deployment.created_at.utc.to_i render json: @metrics, status: :ok else head :no_content diff --git a/app/models/deployment.rb b/app/models/deployment.rb index aeef71742af..bed5e271cd9 100644 --- a/app/models/deployment.rb +++ b/app/models/deployment.rb @@ -105,10 +105,13 @@ class Deployment < ActiveRecord::Base def metrics(timeframe) return {} unless has_metrics? + half_timeframe = timeframe / 2 timeframe_start = created_at - half_timeframe timeframe_end = created_at + half_timeframe - project.monitoring_service.metrics(environment, timeframe_start: timeframe_start, timeframe_end: timeframe_end) + + metrics = project.monitoring_service.metrics(environment, timeframe_start: timeframe_start, timeframe_end: timeframe_end) + metrics&.merge(deployment_time: created_at.to_i) || {} end private diff --git a/spec/controllers/projects/deployments_controller_spec.rb b/spec/controllers/projects/deployments_controller_spec.rb index e36a9b77824..76fe80bcf53 100644 --- a/spec/controllers/projects/deployments_controller_spec.rb +++ b/spec/controllers/projects/deployments_controller_spec.rb @@ -23,7 +23,8 @@ describe Projects::DeploymentsController do before do expect(deployment).to receive(:metrics).and_return(nil) end - it 'returns a metrics JSON document' do + + it 'returns a empty response 204 resposne' do get :metrics, deployment_params expect(response).to have_http_status(204) expect(response.body).to eq('') @@ -49,7 +50,6 @@ describe Projects::DeploymentsController do expect(response).to be_ok expect(json_response['success']).to be(true) expect(json_response['metrics']).to eq({}) - expect(json_response['deployment_time']).to eq(deployment.created_at.utc.to_i) expect(json_response['last_update']).to eq(42) end end diff --git a/spec/models/deployment_spec.rb b/spec/models/deployment_spec.rb index 080ff2f3f43..212fcd884a8 100644 --- a/spec/models/deployment_spec.rb +++ b/spec/models/deployment_spec.rb @@ -49,6 +49,33 @@ describe Deployment, models: true do end end + describe '#metrics' do + let(:deployment) { create(:deployment) } + + subject { deployment.metrics(1.hour) } + + context 'metrics are disabled' do + it { is_expected.to eq({}) } + end + + context 'metrics are enabled' do + let(:simple_metrics) do + { + success: true, + metrics: {}, + last_update: 42 + } + end + + before do + allow(deployment.project).to receive_message_chain(:monitoring_service, :metrics) + .with(any_args).and_return(simple_metrics) + end + + it { is_expected.to eq(simple_metrics.merge(deployment_time: deployment.created_at.utc.to_i)) } + end + end + describe '#stop_action' do let(:build) { create(:ci_build) } |