diff options
Diffstat (limited to 'spec/lib/gitlab/prometheus/additional_metrics_parser_spec.rb')
-rw-r--r-- | spec/lib/gitlab/prometheus/additional_metrics_parser_spec.rb | 248 |
1 files changed, 0 insertions, 248 deletions
diff --git a/spec/lib/gitlab/prometheus/additional_metrics_parser_spec.rb b/spec/lib/gitlab/prometheus/additional_metrics_parser_spec.rb deleted file mode 100644 index 559557f9313..00000000000 --- a/spec/lib/gitlab/prometheus/additional_metrics_parser_spec.rb +++ /dev/null @@ -1,248 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe Gitlab::Prometheus::AdditionalMetricsParser do - include Prometheus::MetricBuilders - - let(:parser_error_class) { Gitlab::Prometheus::ParsingError } - - describe '#load_groups_from_yaml' do - subject { described_class.load_groups_from_yaml('dummy.yaml') } - - describe 'parsing sample yaml' do - let(:sample_yaml) do - <<-EOF.strip_heredoc - - group: group_a - priority: 1 - metrics: - - title: "title" - required_metrics: [ metric_a, metric_b ] - weight: 1 - queries: [{ query_range: 'query_range_a', label: label, unit: unit }] - - title: "title" - required_metrics: [metric_a] - weight: 1 - queries: [{ query_range: 'query_range_empty' }] - - group: group_b - priority: 1 - metrics: - - title: title - required_metrics: ['metric_a'] - weight: 1 - queries: [{query_range: query_range_a}] - EOF - end - - before do - allow(described_class).to receive(:load_yaml_file) { YAML.safe_load(sample_yaml) } - end - - it 'parses to two metric groups with 2 and 1 metric respectively' do - expect(subject.count).to eq(2) - expect(subject[0].metrics.count).to eq(2) - expect(subject[1].metrics.count).to eq(1) - end - - it 'provide group data' do - expect(subject[0]).to have_attributes(name: 'group_a', priority: 1) - expect(subject[1]).to have_attributes(name: 'group_b', priority: 1) - end - - it 'provides metrics data' do - metrics = subject.flat_map(&:metrics) - - expect(metrics.count).to eq(3) - expect(metrics[0]).to have_attributes(title: 'title', required_metrics: %w(metric_a metric_b), weight: 1) - expect(metrics[1]).to have_attributes(title: 'title', required_metrics: %w(metric_a), weight: 1) - expect(metrics[2]).to have_attributes(title: 'title', required_metrics: %w{metric_a}, weight: 1) - end - - it 'provides query data' do - queries = subject.flat_map(&:metrics).flat_map(&:queries) - - expect(queries.count).to eq(3) - expect(queries[0]).to eq(query_range: 'query_range_a', label: 'label', unit: 'unit') - expect(queries[1]).to eq(query_range: 'query_range_empty') - expect(queries[2]).to eq(query_range: 'query_range_a') - end - end - - shared_examples 'required field' do |field_name| - context "when #{field_name} is nil" do - before do - allow(described_class).to receive(:load_yaml_file) { YAML.safe_load(field_missing) } - end - - it 'throws parsing error' do - expect { subject }.to raise_error(parser_error_class, /#{field_name} can't be blank/i) - end - end - - context "when #{field_name} are not specified" do - before do - allow(described_class).to receive(:load_yaml_file) { YAML.safe_load(field_nil) } - end - - it 'throws parsing error' do - expect { subject }.to raise_error(parser_error_class, /#{field_name} can't be blank/i) - end - end - end - - describe 'group required fields' do - it_behaves_like 'required field', 'metrics' do - let(:field_nil) do - <<-EOF.strip_heredoc - - group: group_a - priority: 1 - metrics: - EOF - end - - let(:field_missing) do - <<-EOF.strip_heredoc - - group: group_a - priority: 1 - EOF - end - end - - it_behaves_like 'required field', 'name' do - let(:field_nil) do - <<-EOF.strip_heredoc - - group: - priority: 1 - metrics: [] - EOF - end - - let(:field_missing) do - <<-EOF.strip_heredoc - - priority: 1 - metrics: [] - EOF - end - end - - it_behaves_like 'required field', 'priority' do - let(:field_nil) do - <<-EOF.strip_heredoc - - group: group_a - priority: - metrics: [] - EOF - end - - let(:field_missing) do - <<-EOF.strip_heredoc - - group: group_a - metrics: [] - EOF - end - end - end - - describe 'metrics fields parsing' do - it_behaves_like 'required field', 'title' do - let(:field_nil) do - <<-EOF.strip_heredoc - - group: group_a - priority: 1 - metrics: - - title: - required_metrics: [] - weight: 1 - queries: [] - EOF - end - - let(:field_missing) do - <<-EOF.strip_heredoc - - group: group_a - priority: 1 - metrics: - - required_metrics: [] - weight: 1 - queries: [] - EOF - end - end - - it_behaves_like 'required field', 'required metrics' do - let(:field_nil) do - <<-EOF.strip_heredoc - - group: group_a - priority: 1 - metrics: - - title: title - required_metrics: - weight: 1 - queries: [] - EOF - end - - let(:field_missing) do - <<-EOF.strip_heredoc - - group: group_a - priority: 1 - metrics: - - title: title - weight: 1 - queries: [] - EOF - end - end - - it_behaves_like 'required field', 'weight' do - let(:field_nil) do - <<-EOF.strip_heredoc - - group: group_a - priority: 1 - metrics: - - title: title - required_metrics: [] - weight: - queries: [] - EOF - end - - let(:field_missing) do - <<-EOF.strip_heredoc - - group: group_a - priority: 1 - metrics: - - title: title - required_metrics: [] - queries: [] - EOF - end - end - - it_behaves_like 'required field', :queries do - let(:field_nil) do - <<-EOF.strip_heredoc - - group: group_a - priority: 1 - metrics: - - title: title - required_metrics: [] - weight: 1 - queries: - EOF - end - - let(:field_missing) do - <<-EOF.strip_heredoc - - group: group_a - priority: 1 - metrics: - - title: title - required_metrics: [] - weight: 1 - EOF - end - end - end - end -end |