Refactor Metric tests to use more common code

This commit is contained in:
Pawel Chojnacki 2017-06-05 19:43:30 +02:00
parent eccc187a70
commit a3eb8264f3
3 changed files with 16 additions and 19 deletions

View File

@ -2,6 +2,7 @@ require 'spec_helper'
describe Gitlab::Prometheus::Queries::MatchedMetricsQuery, lib: true do
include Prometheus::MatchedMetricsQueryHelper
include Prometheus::MetricBuilders
let(:metric_group_class) { Gitlab::Prometheus::MetricGroup }
let(:metric_class) { Gitlab::Prometheus::Metric }
@ -83,30 +84,35 @@ describe Gitlab::Prometheus::Queries::MatchedMetricsQuery, lib: true do
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
allow(metric_group_class).to receive(:all).and_return([simple_metric_group,
simple_metric_group('nameb', simple_metrics('metric_c'))])
allow(metric_group_class).to receive(:all).and_return([simple_metric_group, second_metric_group])
allow(client).to receive(:label_values).and_return('metric_c')
end
context 'both metrics in the group pass requirements' do
context 'all metrics in both groups pass requirements' do
before do
allow(client).to receive(:series).and_return(series_info_with_environment('metric_c'))
end
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
context 'no metris in group pass requirements' do
context 'no metrics in groups pass requirements' do
before do
allow(client).to receive(:series).and_return(series_info_without_environment)
end
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

View File

@ -4,15 +4,6 @@ module Prometheus
%w{metric_a metric_b}
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)
%w{metric_a metric_b}.concat(more_metrics).map { |metric_name| { '__name__' => metric_name, 'environment' => '' } }
end

View File

@ -12,10 +12,10 @@ module Prometheus
Gitlab::Prometheus::Metric.new(title, required_metrics, nil, nil, queries)
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{metric_a}, queries: [simple_query('empty')]),
simple_metric(required_metrics: %W(#{added_metric_name} metric_b), queries: simple_queries),
simple_metric(required_metrics: [added_metric_name], queries: [simple_query('empty')]),
simple_metric(required_metrics: %w{metric_c})
]
end