summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPawel Chojnacki <pawel@chojnacki.ws>2017-04-06 14:04:40 +0200
committerPawel Chojnacki <pawel@chojnacki.ws>2017-04-06 14:19:21 +0200
commit15c3a931ac7799509eb433a95d4a2dbb078517c7 (patch)
treeda3590152b8f86fc77aa45be55ca570261d2c46d
parentdc25aeae0bf816d7ece7d20c19bf6cf8685501d2 (diff)
downloadgitlab-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.rb1
-rw-r--r--app/models/deployment.rb5
-rw-r--r--spec/controllers/projects/deployments_controller_spec.rb4
-rw-r--r--spec/models/deployment_spec.rb27
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) }