From a3eb8264f31a79fc05113df4276d7dcf4e0bad75 Mon Sep 17 00:00:00 2001 From: Pawel Chojnacki Date: Mon, 5 Jun 2017 19:43:30 +0200 Subject: [PATCH] Refactor Metric tests to use more common code --- .../queries/matched_metrics_query_spec.rb | 20 ++++++++++++------- .../matched_metrics_query_helper.rb | 9 --------- spec/support/prometheus/metric_builders.rb | 6 +++--- 3 files changed, 16 insertions(+), 19 deletions(-) diff --git a/spec/lib/gitlab/prometheus/queries/matched_metrics_query_spec.rb b/spec/lib/gitlab/prometheus/queries/matched_metrics_query_spec.rb index 390fff568cc..34f11205878 100644 --- a/spec/lib/gitlab/prometheus/queries/matched_metrics_query_spec.rb +++ b/spec/lib/gitlab/prometheus/queries/matched_metrics_query_spec.rb @@ -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 diff --git a/spec/support/prometheus/matched_metrics_query_helper.rb b/spec/support/prometheus/matched_metrics_query_helper.rb index 86e874fb295..0471a78e426 100644 --- a/spec/support/prometheus/matched_metrics_query_helper.rb +++ b/spec/support/prometheus/matched_metrics_query_helper.rb @@ -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 diff --git a/spec/support/prometheus/metric_builders.rb b/spec/support/prometheus/metric_builders.rb index c57694bf7fd..4c0e01bd5f6 100644 --- a/spec/support/prometheus/metric_builders.rb +++ b/spec/support/prometheus/metric_builders.rb @@ -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