Commit a3eb8264 authored by Pawel Chojnacki's avatar Pawel Chojnacki

Refactor Metric tests to use more common code

parent eccc187a
...@@ -2,6 +2,7 @@ require 'spec_helper' ...@@ -2,6 +2,7 @@ require 'spec_helper'
describe Gitlab::Prometheus::Queries::MatchedMetricsQuery, lib: true do describe Gitlab::Prometheus::Queries::MatchedMetricsQuery, lib: true do
include Prometheus::MatchedMetricsQueryHelper include Prometheus::MatchedMetricsQueryHelper
include Prometheus::MetricBuilders
let(:metric_group_class) { Gitlab::Prometheus::MetricGroup } let(:metric_group_class) { Gitlab::Prometheus::MetricGroup }
let(:metric_class) { Gitlab::Prometheus::Metric } let(:metric_class) { Gitlab::Prometheus::Metric }
...@@ -83,30 +84,35 @@ describe Gitlab::Prometheus::Queries::MatchedMetricsQuery, lib: true do ...@@ -83,30 +84,35 @@ describe Gitlab::Prometheus::Queries::MatchedMetricsQuery, lib: true do
end end
end end
context 'with two groups where only one metric is found' do context 'with two groups where metrics are found in each group' do
let(:second_metric_group) { simple_metric_group(name: 'nameb', metrics: simple_metrics(added_metric_name: 'metric_c')) }
before do before do
allow(metric_group_class).to receive(:all).and_return([simple_metric_group, allow(metric_group_class).to receive(:all).and_return([simple_metric_group, second_metric_group])
simple_metric_group('nameb', simple_metrics('metric_c'))])
allow(client).to receive(:label_values).and_return('metric_c') allow(client).to receive(:label_values).and_return('metric_c')
end end
context 'both metrics in the group pass requirements' do context 'all metrics in both groups pass requirements' do
before do before do
allow(client).to receive(:series).and_return(series_info_with_environment('metric_c')) allow(client).to receive(:series).and_return(series_info_with_environment('metric_c'))
end end
it 'responds with one metrics as active and no missing requiremens' do it 'responds with one metrics as active and no missing requiremens' do
expect(subject.query).to eq([{ group: 'nameb', priority: 1, active_metrics: 1, metrics_missing_requirements: 0 }]) expect(subject.query).to eq([
{ group: 'name', priority: 1, active_metrics: 1, metrics_missing_requirements: 0 },
{ group: 'nameb', priority: 1, active_metrics: 2, metrics_missing_requirements: 0 }])
end end
end end
context 'no metris in group pass requirements' do context 'no metrics in groups pass requirements' do
before do before do
allow(client).to receive(:series).and_return(series_info_without_environment) allow(client).to receive(:series).and_return(series_info_without_environment)
end end
it 'responds with one metrics as active and no missing requiremens' do it 'responds with one metrics as active and no missing requiremens' do
expect(subject.query).to eq([{ group: 'nameb', priority: 1, active_metrics: 0, metrics_missing_requirements: 1 }]) expect(subject.query).to eq([
{ group: 'name', priority: 1, active_metrics: 0, metrics_missing_requirements: 1 },
{ group: 'nameb', priority: 1, active_metrics: 0, metrics_missing_requirements: 2 }])
end end
end end
end end
......
...@@ -4,15 +4,6 @@ module Prometheus ...@@ -4,15 +4,6 @@ module Prometheus
%w{metric_a metric_b} %w{metric_a metric_b}
end end
def simple_metrics(metric_name = 'metric_a')
[Gitlab::Prometheus::Metric.new('title', %W(#{metric_name} metric_b), nil, nil),
Gitlab::Prometheus::Metric.new('title', [metric_name], nil, nil)]
end
def simple_metric_group(name = 'name', metrics = simple_metrics)
Gitlab::Prometheus::MetricGroup.new(name, 1, metrics)
end
def series_info_with_environment(*more_metrics) def series_info_with_environment(*more_metrics)
%w{metric_a metric_b}.concat(more_metrics).map { |metric_name| { '__name__' => metric_name, 'environment' => '' } } %w{metric_a metric_b}.concat(more_metrics).map { |metric_name| { '__name__' => metric_name, 'environment' => '' } }
end end
......
...@@ -12,10 +12,10 @@ module Prometheus ...@@ -12,10 +12,10 @@ module Prometheus
Gitlab::Prometheus::Metric.new(title, required_metrics, nil, nil, queries) Gitlab::Prometheus::Metric.new(title, required_metrics, nil, nil, queries)
end end
def simple_metrics def simple_metrics(added_metric_name: 'metric_a')
[ [
simple_metric(required_metrics: %w(metric_a metric_b), queries: simple_queries), simple_metric(required_metrics: %W(#{added_metric_name} metric_b), queries: simple_queries),
simple_metric(required_metrics: %w{metric_a}, queries: [simple_query('empty')]), simple_metric(required_metrics: [added_metric_name], queries: [simple_query('empty')]),
simple_metric(required_metrics: %w{metric_c}) simple_metric(required_metrics: %w{metric_c})
] ]
end end
......
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