diff options
author | Pawel Chojnacki <pawel@chojnacki.ws> | 2017-06-05 13:33:11 +0200 |
---|---|---|
committer | Pawel Chojnacki <pawel@chojnacki.ws> | 2017-06-05 13:33:11 +0200 |
commit | eaaad702deab2ff73cc204d55056745bf34c703e (patch) | |
tree | 2d4f271c796f36c779b83df173daba153e3a915c /spec/lib/gitlab/prometheus | |
parent | ae5268ce8cc533be4086a11d9d89fa726136d59d (diff) | |
download | gitlab-ce-eaaad702deab2ff73cc204d55056745bf34c703e.tar.gz |
Additional metrics test using multiple groups
Diffstat (limited to 'spec/lib/gitlab/prometheus')
-rw-r--r-- | spec/lib/gitlab/prometheus/queries/additional_metrics_query_spec.rb | 96 |
1 files changed, 84 insertions, 12 deletions
diff --git a/spec/lib/gitlab/prometheus/queries/additional_metrics_query_spec.rb b/spec/lib/gitlab/prometheus/queries/additional_metrics_query_spec.rb index c7e2dbc12ec..617028cde37 100644 --- a/spec/lib/gitlab/prometheus/queries/additional_metrics_query_spec.rb +++ b/spec/lib/gitlab/prometheus/queries/additional_metrics_query_spec.rb @@ -2,6 +2,7 @@ require 'spec_helper' describe Gitlab::Prometheus::Queries::AdditionalMetricsQuery, lib: true do include Prometheus::AdditionalMetricsQueryHelper + include Prometheus::MetricBuilders let(:metric_group_class) { Gitlab::Prometheus::MetricGroup } let(:metric_class) { Gitlab::Prometheus::Metric } @@ -11,6 +12,9 @@ describe Gitlab::Prometheus::Queries::AdditionalMetricsQuery, lib: true do subject(:query_result) { described_class.new(client).query(environment.id) } + around do |example| + Timecop.freeze { example.run } + end context 'with one group where two metrics is found' do before do @@ -18,7 +22,7 @@ describe Gitlab::Prometheus::Queries::AdditionalMetricsQuery, lib: true do allow(client).to receive(:label_values).and_return(metric_names) end - context 'some querie return results' do + context 'some queries return results' do before do expect(client).to receive(:query_range).with('query_range_a', any_args).and_return(query_range_result) expect(client).to receive(:query_range).with('query_range_b', any_args).and_return(query_range_result) @@ -26,23 +30,91 @@ describe Gitlab::Prometheus::Queries::AdditionalMetricsQuery, lib: true do end it 'return results only for queries with results' do + expected = [ + { + group: 'name', + priority: 1, + metrics: [ + { + title: 'title', weight: nil, y_label: 'Values', queries: [ + { query_range: 'query_range_a', result: query_range_result }, + { query_range: 'query_range_b', label: 'label', unit: 'unit', result: query_range_result } + ] + } + ] + } + ] + + expect(query_result).to eq(expected) + end + end + end + + context 'with two groups with one metric each' do + let(:metrics) { [simple_metric(queries: [simple_query])] } + before do + allow(metric_group_class).to receive(:all).and_return( + [ + simple_metric_group('group_a', [simple_metric(queries: [simple_query])]), + simple_metric_group('group_b', [simple_metric(title: 'title_b', queries: [simple_query('b')])]) + ]) + allow(client).to receive(:label_values).and_return(metric_names) + end + + context 'some queries return results' do + before do + expect(client).to receive(:query_range).with('query_range_a', any_args).and_return(query_range_result) + expect(client).to receive(:query_range).with('query_range_b', any_args).and_return(query_range_result) + end + + it 'return results only for queries with results' do puts query_result - expected = { - group: 'name', - priority: 1, - metrics: - [ + expected = [ + { + group: 'group_a', + priority: 1, + metrics: [ + { + title: 'title', + weight: nil, + y_label: 'Values', + queries: [ + { + query_range: 'query_range_a', + result: [ + { + metric: {}, + values: [[1488758662.506, '0.00002996364761904785'], [1488758722.506, '0.00003090239047619091']] } + ] + } + ] + } + ] + }, + { + group: 'group_b', + priority: 1, + metrics: [ { - title: 'title', weight: nil, y_label: 'Values', queries: - [ - { query_range: 'query_range_a', result: query_range_result }, - { query_range: 'query_range_b', label: 'label', unit: 'unit', result: query_range_result } + title: 'title_b', + weight: nil, + y_label: 'Values', + queries: [ + { + query_range: 'query_range_b', result: [ + { + metric: {}, + values: [[1488758662.506, '0.00002996364761904785'], [1488758722.506, '0.00003090239047619091']] + } + ] + } ] } ] - } + } + ] - expect(query_result).to eq([expected]) + expect(query_result).to eq(expected) end end end |