diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-10-19 15:57:54 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-10-19 15:57:54 +0300 |
commit | 419c53ec62de6e97a517abd5fdd4cbde3a942a34 (patch) | |
tree | 1f43a548b46bca8a5fb8fe0c31cef1883d49c5b6 /spec/lib/gitlab/usage/metrics | |
parent | 1da20d9135b3ad9e75e65b028bffc921aaf8deb7 (diff) |
Add latest changes from gitlab-org/gitlab@16-5-stable-eev16.5.0-rc42
Diffstat (limited to 'spec/lib/gitlab/usage/metrics')
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 |