Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-03-26 21:09:16 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-03-26 21:09:16 +0300
commit006a4f3c1c288c1ea59c3423225527897fa60d6e (patch)
treee4e0d2bb7de0b1ad82bd366088d007b9055d447a /spec/lib/generators
parent2446c39adaea91d1120c9eb0936e93e9314171c1 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/lib/generators')
-rw-r--r--spec/lib/generators/gitlab/usage_metric_definition_generator_spec.rb78
1 files changed, 67 insertions, 11 deletions
diff --git a/spec/lib/generators/gitlab/usage_metric_definition_generator_spec.rb b/spec/lib/generators/gitlab/usage_metric_definition_generator_spec.rb
index b62eac14e3e..52dc6c96ad1 100644
--- a/spec/lib/generators/gitlab/usage_metric_definition_generator_spec.rb
+++ b/spec/lib/generators/gitlab/usage_metric_definition_generator_spec.rb
@@ -3,10 +3,72 @@
require 'generator_helper'
RSpec.describe Gitlab::UsageMetricDefinitionGenerator do
+ include UsageDataHelpers
+
+ let(:key_path) { 'counts_weekly.test_metric' }
+ let(:dir) { '7d' }
+ let(:temp_dir) { Dir.mktmpdir }
+
+ before do
+ stub_const("#{described_class}::TOP_LEVEL_DIR", temp_dir)
+ # Stub Prometheus requests from Gitlab::Utils::UsageData
+ stub_request(:get, 'https://::1:9090/-/ready')
+ .to_return(
+ status: 200,
+ body: [{}].to_json,
+ headers: { 'Content-Type' => 'application/json' }
+ )
+
+ stub_request(:get, %r{^https://::1:9090/api/v1/query\?query=.*})
+ .to_return(
+ status: 200,
+ body: [{}].to_json,
+ headers: { 'Content-Type' => 'application/json' }
+ )
+ end
+
+ after do
+ FileUtils.rm_rf(temp_dir)
+ end
+
+ describe 'Creating metric definition file' do
+ let(:sample_metric) { load_sample_metric_definition }
+
+ # Stub version so that `milestone` key remains constant between releases to prevent flakiness.
+ before do
+ stub_const('Gitlab::VERSION', '13.9.0')
+ allow(::Gitlab::Usage::Metrics::NamesSuggestions::Generator).to receive(:generate).and_return('test metric name')
+ end
+
+ context 'with product_intelligence_metrics_names_suggestions feature ON' do
+ let(:sample_metric) { load_sample_metric_definition(filename: 'sample_metric_with_name_suggestions.yml') }
+
+ it 'creates a metric definition file using the template' do
+ stub_feature_flags(product_intelligence_metrics_names_suggestions: true)
+
+ described_class.new([key_path], { 'dir' => dir }).invoke_all
+
+ metric_definition_path = Dir.glob(File.join(temp_dir, 'metrics/counts_7d/*_test_metric.yml')).first
+
+ expect(YAML.safe_load(File.read(metric_definition_path))).to eq(sample_metric)
+ end
+ end
+
+ context 'with product_intelligence_metrics_names_suggestions feature OFF' do
+ it 'creates a metric definition file using the template' do
+ stub_feature_flags(product_intelligence_metrics_names_suggestions: false)
+
+ described_class.new([key_path], { 'dir' => dir }).invoke_all
+
+ metric_definition_path = Dir.glob(File.join(temp_dir, 'metrics/counts_7d/*_test_metric.yml')).first
+
+ expect(YAML.safe_load(File.read(metric_definition_path))).to eq(sample_metric)
+ end
+ end
+ end
+
describe 'Validation' do
- let(:key_path) { 'counter.category.event' }
- let(:dir) { '7d' }
- let(:options) { [key_path, '--dir', dir, '--pretend'] }
+ let(:options) { [key_path, '--dir', dir] }
subject { described_class.start(options) }
@@ -42,18 +104,12 @@ RSpec.describe Gitlab::UsageMetricDefinitionGenerator do
end
describe 'Name suggestions' do
- let(:temp_dir) { Dir.mktmpdir }
-
- before do
- stub_const("#{described_class}::TOP_LEVEL_DIR", temp_dir)
- end
-
context 'with product_intelligence_metrics_names_suggestions feature ON' do
it 'adds name key to metric definition' do
stub_feature_flags(product_intelligence_metrics_names_suggestions: true)
expect(::Gitlab::Usage::Metrics::NamesSuggestions::Generator).to receive(:generate).and_return('some name')
- described_class.new(['counts_weekly.test_metric'], { 'dir' => '7d' }).invoke_all
+ described_class.new([key_path], { 'dir' => dir }).invoke_all
metric_definition_path = Dir.glob(File.join(temp_dir, 'metrics/counts_7d/*_test_metric.yml')).first
expect(YAML.safe_load(File.read(metric_definition_path))).to include("name" => "some name")
@@ -65,7 +121,7 @@ RSpec.describe Gitlab::UsageMetricDefinitionGenerator do
stub_feature_flags(product_intelligence_metrics_names_suggestions: false)
expect(::Gitlab::Usage::Metrics::NamesSuggestions::Generator).not_to receive(:generate)
- described_class.new(['counts_weekly.test_metric'], { 'dir' => '7d' }).invoke_all
+ described_class.new([key_path], { 'dir' => dir }).invoke_all
metric_definition_path = Dir.glob(File.join(temp_dir, 'metrics/counts_7d/*_test_metric.yml')).first
expect(YAML.safe_load(File.read(metric_definition_path)).keys).not_to include(:name)