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>2023-10-19 15:57:54 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-10-19 15:57:54 +0300
commit419c53ec62de6e97a517abd5fdd4cbde3a942a34 (patch)
tree1f43a548b46bca8a5fb8fe0c31cef1883d49c5b6 /spec/lib/gitlab/usage/metrics
parent1da20d9135b3ad9e75e65b028bffc921aaf8deb7 (diff)
Add latest changes from gitlab-org/gitlab@16-5-stable-eev16.5.0-rc42
Diffstat (limited to 'spec/lib/gitlab/usage/metrics')
-rw-r--r--spec/lib/gitlab/usage/metrics/aggregates/sources/postgres_hll_spec.rb10
-rw-r--r--spec/lib/gitlab/usage/metrics/instrumentations/container_registry_db_enabled_metric_spec.rb9
-rw-r--r--spec/lib/gitlab/usage/metrics/instrumentations/count_ci_internal_pipelines_metric_spec.rb2
-rw-r--r--spec/lib/gitlab/usage/metrics/instrumentations/count_csv_imports_metric_spec.rb32
-rw-r--r--spec/lib/gitlab/usage/metrics/instrumentations/count_issues_created_manually_from_alerts_metric_spec.rb2
-rw-r--r--spec/lib/gitlab/usage/metrics/instrumentations/count_jira_imports_metric_spec.rb32
-rw-r--r--spec/lib/gitlab/usage/metrics/instrumentations/count_packages_metric_spec.rb33
-rw-r--r--spec/lib/gitlab/usage/metrics/instrumentations/count_projects_metric_spec.rb33
-rw-r--r--spec/lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_cta_clicked_metric_spec.rb8
-rw-r--r--spec/lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_sent_metric_spec.rb6
-rw-r--r--spec/lib/gitlab/usage/metrics/instrumentations/incoming_email_encrypted_secrets_enabled_metric_spec.rb2
-rw-r--r--spec/lib/gitlab/usage/metrics/instrumentations/service_desk_email_encrypted_secrets_enabled_metric_spec.rb2
-rw-r--r--spec/lib/gitlab/usage/metrics/instrumentations/total_count_metric_spec.rb40
-rw-r--r--spec/lib/gitlab/usage/metrics/query_spec.rb6
14 files changed, 199 insertions, 18 deletions
diff --git a/spec/lib/gitlab/usage/metrics/aggregates/sources/postgres_hll_spec.rb b/spec/lib/gitlab/usage/metrics/aggregates/sources/postgres_hll_spec.rb
index 59b944ac398..18a97447f1c 100644
--- a/spec/lib/gitlab/usage/metrics/aggregates/sources/postgres_hll_spec.rb
+++ b/spec/lib/gitlab/usage/metrics/aggregates/sources/postgres_hll_spec.rb
@@ -88,10 +88,12 @@ RSpec.describe Gitlab::Usage::Metrics::Aggregates::Sources::PostgresHll, :clean_
describe '.save_aggregated_metrics' do
subject(:save_aggregated_metrics) do
- described_class.save_aggregated_metrics(metric_name: metric_1,
- time_period: time_period,
- recorded_at_timestamp: recorded_at,
- data: data)
+ described_class.save_aggregated_metrics(
+ metric_name: metric_1,
+ time_period: time_period,
+ recorded_at_timestamp: recorded_at,
+ data: data
+ )
end
context 'with compatible data argument' do
diff --git a/spec/lib/gitlab/usage/metrics/instrumentations/container_registry_db_enabled_metric_spec.rb b/spec/lib/gitlab/usage/metrics/instrumentations/container_registry_db_enabled_metric_spec.rb
new file mode 100644
index 00000000000..605764cd7f8
--- /dev/null
+++ b/spec/lib/gitlab/usage/metrics/instrumentations/container_registry_db_enabled_metric_spec.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Gitlab::Usage::Metrics::Instrumentations::ContainerRegistryDbEnabledMetric, feature_category: :service_ping do
+ let(:expected_value) { Gitlab::CurrentSettings.container_registry_db_enabled }
+
+ it_behaves_like 'a correct instrumented metric value', { time_frame: 'none' }
+end
diff --git a/spec/lib/gitlab/usage/metrics/instrumentations/count_ci_internal_pipelines_metric_spec.rb b/spec/lib/gitlab/usage/metrics/instrumentations/count_ci_internal_pipelines_metric_spec.rb
index 77c49d448d7..2b6e17f615c 100644
--- a/spec/lib/gitlab/usage/metrics/instrumentations/count_ci_internal_pipelines_metric_spec.rb
+++ b/spec/lib/gitlab/usage/metrics/instrumentations/count_ci_internal_pipelines_metric_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe Gitlab::Usage::Metrics::Instrumentations::CountCiInternalPipelinesMetric,
-feature_category: :service_ping do
+ feature_category: :service_ping do
let_it_be(:ci_pipeline_1) { create(:ci_pipeline, source: :external, created_at: 3.days.ago) }
let_it_be(:ci_pipeline_2) { create(:ci_pipeline, source: :push, created_at: 3.days.ago) }
let_it_be(:old_pipeline) { create(:ci_pipeline, source: :push, created_at: 2.months.ago) }
diff --git a/spec/lib/gitlab/usage/metrics/instrumentations/count_csv_imports_metric_spec.rb b/spec/lib/gitlab/usage/metrics/instrumentations/count_csv_imports_metric_spec.rb
new file mode 100644
index 00000000000..2b481563ecd
--- /dev/null
+++ b/spec/lib/gitlab/usage/metrics/instrumentations/count_csv_imports_metric_spec.rb
@@ -0,0 +1,32 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Gitlab::Usage::Metrics::Instrumentations::CountCsvImportsMetric, feature_category: :service_ping do
+ let_it_be(:user) { create(:user) }
+
+ let_it_be(:old_import) { create(:issue_csv_import, user: user, created_at: 2.months.ago) }
+ let_it_be(:new_import) { create(:issue_csv_import, user: user, created_at: 21.days.ago) }
+
+ context 'with all time frame' do
+ let(:expected_value) { 2 }
+ let(:expected_query) do
+ %q{SELECT COUNT("csv_issue_imports"."id") FROM "csv_issue_imports"}
+ end
+
+ it_behaves_like 'a correct instrumented metric value and query', time_frame: 'all'
+ end
+
+ context 'for 28d time frame' do
+ let(:expected_value) { 1 }
+ let(:start) { 30.days.ago.to_fs(:db) }
+ let(:finish) { 2.days.ago.to_fs(:db) }
+ let(:expected_query) do
+ "SELECT COUNT(\"csv_issue_imports\".\"id\") FROM \"csv_issue_imports\" " \
+ "WHERE \"csv_issue_imports\".\"created_at\" " \
+ "BETWEEN '#{start}' AND '#{finish}'"
+ end
+
+ it_behaves_like 'a correct instrumented metric value and query', time_frame: '28d'
+ end
+end
diff --git a/spec/lib/gitlab/usage/metrics/instrumentations/count_issues_created_manually_from_alerts_metric_spec.rb b/spec/lib/gitlab/usage/metrics/instrumentations/count_issues_created_manually_from_alerts_metric_spec.rb
index 65e514bf345..56b847257a5 100644
--- a/spec/lib/gitlab/usage/metrics/instrumentations/count_issues_created_manually_from_alerts_metric_spec.rb
+++ b/spec/lib/gitlab/usage/metrics/instrumentations/count_issues_created_manually_from_alerts_metric_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe Gitlab::Usage::Metrics::Instrumentations::CountIssuesCreatedManuallyFromAlertsMetric,
-feature_category: :service_ping do
+ feature_category: :service_ping do
let_it_be(:issue) { create(:issue) }
let_it_be(:issue_with_alert) { create(:issue, :with_alert) }
diff --git a/spec/lib/gitlab/usage/metrics/instrumentations/count_jira_imports_metric_spec.rb b/spec/lib/gitlab/usage/metrics/instrumentations/count_jira_imports_metric_spec.rb
new file mode 100644
index 00000000000..9a51c3cc408
--- /dev/null
+++ b/spec/lib/gitlab/usage/metrics/instrumentations/count_jira_imports_metric_spec.rb
@@ -0,0 +1,32 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Gitlab::Usage::Metrics::Instrumentations::CountJiraImportsMetric, feature_category: :service_ping do
+ let_it_be(:user) { create(:user) }
+ let_it_be(:project) { create(:project, creator_id: user.id) }
+
+ let_it_be(:old_import) { create(:jira_import_state, :finished, project: project, created_at: 2.months.ago) }
+ let_it_be(:new_import) { create(:jira_import_state, :finished, project: project, created_at: 21.days.ago) }
+
+ context 'with all time frame' do
+ let(:expected_value) { 2 }
+ let(:expected_query) do
+ %q{SELECT COUNT("jira_imports"."id") FROM "jira_imports"}
+ end
+
+ it_behaves_like 'a correct instrumented metric value and query', time_frame: 'all'
+ end
+
+ context 'for 28d time frame' do
+ let(:expected_value) { 1 }
+ let(:start) { 30.days.ago.to_fs(:db) }
+ let(:finish) { 2.days.ago.to_fs(:db) }
+ let(:expected_query) do
+ "SELECT COUNT(\"jira_imports\".\"id\") FROM \"jira_imports\" WHERE \"jira_imports\".\"created_at\" " \
+ "BETWEEN '#{start}' AND '#{finish}'"
+ end
+
+ it_behaves_like 'a correct instrumented metric value and query', time_frame: '28d'
+ end
+end
diff --git a/spec/lib/gitlab/usage/metrics/instrumentations/count_packages_metric_spec.rb b/spec/lib/gitlab/usage/metrics/instrumentations/count_packages_metric_spec.rb
new file mode 100644
index 00000000000..9a2e5c27c1d
--- /dev/null
+++ b/spec/lib/gitlab/usage/metrics/instrumentations/count_packages_metric_spec.rb
@@ -0,0 +1,33 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Gitlab::Usage::Metrics::Instrumentations::CountPackagesMetric, feature_category: :service_ping do
+ before_all do
+ create :package, created_at: 2.months.ago
+ create :package, created_at: 21.days.ago
+ create :package, created_at: 7.days.ago
+ end
+
+ context "with all time frame" do
+ let(:expected_value) { 3 }
+ let(:expected_query) do
+ 'SELECT COUNT("packages_packages"."id") FROM "packages_packages"'
+ end
+
+ it_behaves_like 'a correct instrumented metric value and query', { time_frame: 'all' }
+ end
+
+ context "with 28d time frame" do
+ let(:expected_value) { 2 }
+ let(:start) { 30.days.ago.to_fs(:db) }
+ let(:finish) { 2.days.ago.to_fs(:db) }
+ let(:expected_query) do
+ 'SELECT COUNT("packages_packages"."id") FROM "packages_packages" ' \
+ 'WHERE "packages_packages"."created_at" ' \
+ "BETWEEN '#{start}' AND '#{finish}'"
+ end
+
+ it_behaves_like 'a correct instrumented metric value and query', { time_frame: '28d' }
+ end
+end
diff --git a/spec/lib/gitlab/usage/metrics/instrumentations/count_projects_metric_spec.rb b/spec/lib/gitlab/usage/metrics/instrumentations/count_projects_metric_spec.rb
new file mode 100644
index 00000000000..28185fb9df4
--- /dev/null
+++ b/spec/lib/gitlab/usage/metrics/instrumentations/count_projects_metric_spec.rb
@@ -0,0 +1,33 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Gitlab::Usage::Metrics::Instrumentations::CountProjectsMetric, feature_category: :service_ping do
+ before_all do
+ create :project, created_at: 2.months.ago
+ create :project, created_at: 21.days.ago
+ create :project, created_at: 7.days.ago
+ end
+
+ context "with all time frame" do
+ let(:expected_value) { 3 }
+ let(:expected_query) do
+ 'SELECT COUNT("projects"."id") FROM "projects"'
+ end
+
+ it_behaves_like 'a correct instrumented metric value and query', { time_frame: 'all' }
+ end
+
+ context "with 28d time frame" do
+ let(:expected_value) { 2 }
+ let(:start) { 30.days.ago.to_fs(:db) }
+ let(:finish) { 2.days.ago.to_fs(:db) }
+ let(:expected_query) do
+ 'SELECT COUNT("projects"."id") FROM "projects" ' \
+ 'WHERE "projects"."created_at" ' \
+ "BETWEEN '#{start}' AND '#{finish}'"
+ end
+
+ it_behaves_like 'a correct instrumented metric value and query', { time_frame: '28d' }
+ end
+end
diff --git a/spec/lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_cta_clicked_metric_spec.rb b/spec/lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_cta_clicked_metric_spec.rb
index cb94da11d58..91ad81c4291 100644
--- a/spec/lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_cta_clicked_metric_spec.rb
+++ b/spec/lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_cta_clicked_metric_spec.rb
@@ -9,10 +9,10 @@ RSpec.describe Gitlab::Usage::Metrics::Instrumentations::InProductMarketingEmail
let(:options) { { track: 'verify', series: 0 } }
let(:expected_value) { 2 }
let(:expected_query) do
- 'SELECT COUNT("in_product_marketing_emails"."id") FROM "in_product_marketing_emails"' \
- ' WHERE "in_product_marketing_emails"."cta_clicked_at" IS NOT NULL' \
- ' AND "in_product_marketing_emails"."series" = 0'\
- ' AND "in_product_marketing_emails"."track" = 1'
+ 'SELECT COUNT("in_product_marketing_emails"."id") FROM "in_product_marketing_emails" ' \
+ 'WHERE "in_product_marketing_emails"."cta_clicked_at" IS NOT NULL ' \
+ 'AND "in_product_marketing_emails"."series" = 0 ' \
+ 'AND "in_product_marketing_emails"."track" = 1'
end
before do
diff --git a/spec/lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_sent_metric_spec.rb b/spec/lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_sent_metric_spec.rb
index 0cc82773d56..3c51368f396 100644
--- a/spec/lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_sent_metric_spec.rb
+++ b/spec/lib/gitlab/usage/metrics/instrumentations/in_product_marketing_email_sent_metric_spec.rb
@@ -8,9 +8,9 @@ RSpec.describe Gitlab::Usage::Metrics::Instrumentations::InProductMarketingEmail
let(:email_attributes) { { track: 'verify', series: 0 } }
let(:expected_value) { 2 }
let(:expected_query) do
- 'SELECT COUNT("in_product_marketing_emails"."id") FROM "in_product_marketing_emails"' \
- ' WHERE "in_product_marketing_emails"."series" = 0'\
- ' AND "in_product_marketing_emails"."track" = 1'
+ 'SELECT COUNT("in_product_marketing_emails"."id") FROM "in_product_marketing_emails" ' \
+ 'WHERE "in_product_marketing_emails"."series" = 0 ' \
+ 'AND "in_product_marketing_emails"."track" = 1'
end
before do
diff --git a/spec/lib/gitlab/usage/metrics/instrumentations/incoming_email_encrypted_secrets_enabled_metric_spec.rb b/spec/lib/gitlab/usage/metrics/instrumentations/incoming_email_encrypted_secrets_enabled_metric_spec.rb
index b1b193c8d04..ad1f231a12d 100644
--- a/spec/lib/gitlab/usage/metrics/instrumentations/incoming_email_encrypted_secrets_enabled_metric_spec.rb
+++ b/spec/lib/gitlab/usage/metrics/instrumentations/incoming_email_encrypted_secrets_enabled_metric_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe Gitlab::Usage::Metrics::Instrumentations::IncomingEmailEncryptedSecretsEnabledMetric,
-feature_category: :service_ping do
+ feature_category: :service_ping do
it_behaves_like 'a correct instrumented metric value', { time_frame: 'none', data_source: 'ruby' } do
let(:expected_value) { ::Gitlab::Email::IncomingEmail.encrypted_secrets.active? }
end
diff --git a/spec/lib/gitlab/usage/metrics/instrumentations/service_desk_email_encrypted_secrets_enabled_metric_spec.rb b/spec/lib/gitlab/usage/metrics/instrumentations/service_desk_email_encrypted_secrets_enabled_metric_spec.rb
index ea239e53d01..dae7f17a3b6 100644
--- a/spec/lib/gitlab/usage/metrics/instrumentations/service_desk_email_encrypted_secrets_enabled_metric_spec.rb
+++ b/spec/lib/gitlab/usage/metrics/instrumentations/service_desk_email_encrypted_secrets_enabled_metric_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe Gitlab::Usage::Metrics::Instrumentations::ServiceDeskEmailEncryptedSecretsEnabledMetric,
-feature_category: :service_ping do
+ feature_category: :service_ping do
it_behaves_like 'a correct instrumented metric value', { time_frame: 'none', data_source: 'ruby' } do
let(:expected_value) { ::Gitlab::Email::ServiceDeskEmail.encrypted_secrets.active? }
end
diff --git a/spec/lib/gitlab/usage/metrics/instrumentations/total_count_metric_spec.rb b/spec/lib/gitlab/usage/metrics/instrumentations/total_count_metric_spec.rb
new file mode 100644
index 00000000000..f3aa1ba4f88
--- /dev/null
+++ b/spec/lib/gitlab/usage/metrics/instrumentations/total_count_metric_spec.rb
@@ -0,0 +1,40 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Gitlab::Usage::Metrics::Instrumentations::TotalCountMetric, :clean_gitlab_redis_shared_state,
+ feature_category: :product_analytics_data_management do
+ before do
+ allow(Gitlab::InternalEvents::EventDefinitions).to receive(:known_event?).and_return(true)
+ end
+
+ context 'with multiple similar events' do
+ let(:expected_value) { 10 }
+
+ before do
+ 10.times do
+ Gitlab::InternalEvents.track_event('my_event')
+ end
+ end
+
+ it_behaves_like 'a correct instrumented metric value', { time_frame: 'all', events: [{ name: 'my_event' }] }
+ end
+
+ context 'with multiple different events' do
+ let(:expected_value) { 2 }
+
+ before do
+ Gitlab::InternalEvents.track_event('my_event1')
+ Gitlab::InternalEvents.track_event('my_event2')
+ end
+
+ it_behaves_like 'a correct instrumented metric value',
+ { time_frame: 'all', events: [{ name: 'my_event1' }, { name: 'my_event2' }] }
+ end
+
+ describe '.redis_key' do
+ it 'adds the key prefix to the event name' do
+ expect(described_class.redis_key('my_event')).to eq('{event_counters}_my_event')
+ end
+ end
+end
diff --git a/spec/lib/gitlab/usage/metrics/query_spec.rb b/spec/lib/gitlab/usage/metrics/query_spec.rb
index 750d340551a..418bbf322d0 100644
--- a/spec/lib/gitlab/usage/metrics/query_spec.rb
+++ b/spec/lib/gitlab/usage/metrics/query_spec.rb
@@ -75,9 +75,9 @@ RSpec.describe Gitlab::Usage::Metrics::Query do
describe '.histogram' do
it 'returns the histogram sql' do
- expect(described_class.for(:histogram, AlertManagement::HttpIntegration.active,
- :project_id, buckets: 1..2, bucket_size: 101))
- .to match(/^WITH "count_cte" AS MATERIALIZED/)
+ expect(described_class.for(
+ :histogram, AlertManagement::HttpIntegration.active, :project_id, buckets: 1..2, bucket_size: 101
+ )).to match(/^WITH "count_cte" AS MATERIALIZED/)
end
end