diff options
author | Pawel Chojnacki <pawel@chojnacki.ws> | 2017-06-09 13:43:12 +0300 |
---|---|---|
committer | Pawel Chojnacki <pawel@chojnacki.ws> | 2017-06-09 23:47:01 +0300 |
commit | 0e7e7c2f2bd0e9c913cda438826a60e761130271 (patch) | |
tree | 0ba18ecb29cabc8cd80c9961daf20414fe368b71 /lib/gitlab/prometheus | |
parent | f78fd3de5d55830c84f25cfd50d399e7ddaddf30 (diff) |
Test Additional metrics parser and fix query checking tests
Diffstat (limited to 'lib/gitlab/prometheus')
-rw-r--r-- | lib/gitlab/prometheus/additional_metrics_parser.rb | 15 | ||||
-rw-r--r-- | lib/gitlab/prometheus/queries/query_additional_metrics.rb | 5 |
2 files changed, 14 insertions, 6 deletions
diff --git a/lib/gitlab/prometheus/additional_metrics_parser.rb b/lib/gitlab/prometheus/additional_metrics_parser.rb index 694001605ef..9bd41b99d81 100644 --- a/lib/gitlab/prometheus/additional_metrics_parser.rb +++ b/lib/gitlab/prometheus/additional_metrics_parser.rb @@ -14,22 +14,29 @@ module Gitlab end def metric_from_entry(entry) - missing_fields = [:title, :required_metrics, :weight, :queries].select { |key| !entry.key?(key) } + required_fields = [:title, :required_metrics, :weight, :queries] + missing_fields = required_fields.select { |key| entry[key].nil? } raise ParsingError.new("entry missing required fields #{missing_fields}") unless missing_fields.empty? Metric.new(entry[:title], entry[:required_metrics], entry[:weight], entry[:y_label], entry[:queries]) end def group_from_entry(entry) - missing_fields = [:group, :priority, :metrics].select { |key| !entry.key?(key) } - raise ParsingError.new("entry missing required fields #{missing_fields}") unless missing_fields.empty? + required_fields = [:group, :priority, :metrics] + missing_fields = required_fields.select { |key| entry[key].nil? } + + raise ParsingError.new("entry missing required fields #{missing_fields.map(&:to_s)}") unless missing_fields.empty? group = MetricGroup.new(entry[:group], entry[:priority]) group.tap { |g| g.metrics = metrics_from_list(entry[:metrics]) } end def additional_metrics_raw - @additional_metrics_raw ||= YAML.load_file(Rails.root.join('config/additional_metrics.yml'))&.map(&:deep_symbolize_keys).freeze + @additional_metrics_raw ||= load_yaml_file&.map(&:deep_symbolize_keys).freeze + end + + def load_yaml_file + YAML.load_file(Rails.root.join('config/additional_metrics.yml')) end end end diff --git a/lib/gitlab/prometheus/queries/query_additional_metrics.rb b/lib/gitlab/prometheus/queries/query_additional_metrics.rb index a5a401f84cd..e44be770544 100644 --- a/lib/gitlab/prometheus/queries/query_additional_metrics.rb +++ b/lib/gitlab/prometheus/queries/query_additional_metrics.rb @@ -37,18 +37,19 @@ module Gitlab def query_with_result(query) query[:result]&.any? do |item| - item&.[]('values')&.any? || item&.[]('value')&.any? + item&.[](:values)&.any? || item&.[](:value)&.any? end end def process_query(context, query) query_with_result = query.dup - query_with_result[:result] = + result = if query.key?(:query_range) client_query_range(query[:query_range] % context, start: context[:timeframe_start], stop: context[:timeframe_end]) else client_query(query[:query] % context, time: context[:timeframe_end]) end + query_with_result[:result] = result&.map(&:deep_symbolize_keys) query_with_result end |