gitlab-org--gitlab-foss/spec/lib/gitlab/prometheus/metric_group_spec.rb

49 lines
1.6 KiB
Ruby
Raw Normal View History

2018-09-04 05:42:58 -04:00
# frozen_string_literal: true
require 'spec_helper'
describe Gitlab::Prometheus::MetricGroup do
describe '.common_metrics' do
2018-09-05 10:52:32 -04:00
let!(:project_metric) { create(:prometheus_metric) }
let!(:common_metric_group_a) { create(:prometheus_metric, :common, group: :aws_elb) }
let!(:common_metric_group_b_q1) { create(:prometheus_metric, :common, group: :kubernetes) }
let!(:common_metric_group_b_q2) { create(:prometheus_metric, :common, group: :kubernetes) }
subject { described_class.common_metrics }
it 'returns exactly two groups' do
2018-09-05 11:02:23 -04:00
expect(subject.map(&:name)).to contain_exactly(
'Response metrics (AWS ELB)', 'System metrics (Kubernetes)')
end
it 'returns exactly three metric queries' do
expect(subject.flat_map(&:metrics).map(&:id)).to contain_exactly(
2018-09-05 10:52:32 -04:00
common_metric_group_a.id, common_metric_group_b_q1.id,
common_metric_group_b_q2.id)
end
it 'orders by priority' do
priorities = subject.map(&:priority)
names = subject.map(&:name)
expect(priorities).to eq([10, 5])
expect(names).to eq(['Response metrics (AWS ELB)', 'System metrics (Kubernetes)'])
end
2018-09-05 10:52:32 -04:00
end
describe '.for_project' do
let!(:other_project) { create(:project) }
let!(:project_metric) { create(:prometheus_metric) }
let!(:common_metric) { create(:prometheus_metric, :common, group: :aws_elb) }
2018-09-05 11:02:23 -04:00
subject do
described_class.for_project(other_project)
.flat_map(&:metrics)
2018-09-05 11:02:23 -04:00
.map(&:id)
end
2018-09-05 10:52:32 -04:00
it 'returns exactly one common metric' do
2018-09-05 11:02:23 -04:00
is_expected.to contain_exactly(common_metric.id)
end
end
end