Commit 96bc0929 authored by Pawel Chojnacki's avatar Pawel Chojnacki

address code review remarks, cleanup testacases

parent c952aa52
......@@ -2,11 +2,8 @@ module Projects
module Prometheus
class MetricsController < Projects::ApplicationController
before_action :authorize_admin_project!
before_action :require_prometheus_metrics!
def active_common
render_404 unless prometheus_service.present?
respond_to do |format|
format.json do
matched_metrics = prometheus_service.matched_metrics || {}
......@@ -21,8 +18,6 @@ module Projects
end
def validate_query
render_404 unless prometheus_service.present?
respond_to do |format|
format.json do
result = prometheus_service.validate_query(params[:query])
......@@ -87,7 +82,7 @@ module Projects
respond_to do |format|
format.html do
redirect_to edit_project_service_path(project, prometheus_service), status: 303
redirect_to edit_project_service_path(project, PrometheusService), status: 303
end
format.json do
head :ok
......@@ -104,10 +99,6 @@ module Projects
def prometheus_service
@prometheus_service ||= project.find_or_initialize_service('prometheus')
end
def require_prometheus_metrics!
render_404 unless prometheus_service.present?
end
end
end
end
......@@ -6,14 +6,14 @@ class PrometheusMetric < ActiveRecord::Base
validates :query, presence: true
validates :group, presence: true
GROUP_NAMES = {
GROUP_TITLES = {
business: 'Business metrics',
response: 'Response metrics',
system: 'System metrics'
}.freeze
def group_text
GROUP_NAMES[group.to_sym]
def group_title
GROUP_TITLES[group.to_sym]
end
def to_query_metric
......
......@@ -4,6 +4,9 @@ class PrometheusMetricEntity < Grape::Entity
expose :id
expose :title
expose :group
expose :group_title
expose :edit_path do |prometheus_metric|
edit_project_prometheus_metric_path(prometheus_metric.project, prometheus_metric)
end
......
......@@ -15,7 +15,7 @@ module Gitlab
end
def self.custom_metrics(project)
project.prometheus_metrics.all.group_by(&:group_text).map do |name, metrics|
project.prometheus_metrics.all.group_by(&:group_title).map do |name, metrics|
MetricGroup.new(name: name, priority: 0, metrics: metrics.map(&:to_query_metric))
end
end
......
......@@ -12,6 +12,12 @@
"title": {
"type": "string"
},
"group": {
"type": "string"
},
"group_title": {
"type": "string"
},
"edit_path": {
"type": "string"
}
......
......@@ -45,7 +45,6 @@ describe Projects::Prometheus::MetricsController do
describe 'GET #index' do
context 'with custom metric present' do
let!(:prometheus_metric) { create(:prometheus_metric, project: project) }
let(:metrics_list_repsonse) { }
it 'returns a list of metrics' do
get :index, project_params(format: :json)
......
......@@ -324,4 +324,3 @@ issue_assignees:
epic_issues:
- issue
- epic
......@@ -25,6 +25,8 @@ describe Gitlab::Prometheus::Queries::ValidateQuery do
it 'passes query to prometheus' do
expect(subject.query(query)).to eq(valid: false, error: message)
expect(client).to have_received(:query).with(query)
end
end
end
......@@ -11,17 +11,17 @@ describe PrometheusMetric, type: :model do
describe '#group_text' do
let!(:metric) { create(:prometheus_metric) }
shared_examples 'group_text' do |group, text|
subject { build(:prometheus_metric, group: group) }
shared_examples 'group_title' do |group, text|
subject { build(:prometheus_metric, group: group).group_title }
it "returns text #{text} for group #{group}" do
expect(subject.group_text).to eq(text)
expect(subject).to eq(text)
end
end
it_behaves_like 'group_text', :business, 'Business metrics'
it_behaves_like 'group_text', :response, 'Response metrics'
it_behaves_like 'group_text', :system, 'System metrics'
it_behaves_like 'group_title', :business, 'Business metrics'
it_behaves_like 'group_title', :response, 'Response metrics'
it_behaves_like 'group_title', :system, 'System metrics'
end
describe '#to_query_metric' do
......@@ -45,10 +45,6 @@ describe PrometheusMetric, type: :model do
expect(subject.to_query_metric.weight).to eq(0)
end
it 'queryable metric has weight 0' do
expect(subject.to_query_metric.weight).to eq(0)
end
it 'queryable metrics has query description' do
queries = [
{
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment