summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/prometheus
diff options
context:
space:
mode:
authorPawel Chojnacki <pawel@chojnacki.ws>2017-06-05 13:33:11 +0200
committerPawel Chojnacki <pawel@chojnacki.ws>2017-06-05 13:33:11 +0200
commiteaaad702deab2ff73cc204d55056745bf34c703e (patch)
tree2d4f271c796f36c779b83df173daba153e3a915c /spec/lib/gitlab/prometheus
parentae5268ce8cc533be4086a11d9d89fa726136d59d (diff)
downloadgitlab-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.rb96
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