From c640d72a911e8216d204ba40baa7cd38acca2a80 Mon Sep 17 00:00:00 2001 From: Jonas Larsen <jlarsen@gitlab.com> Date: Wed, 12 Mar 2025 11:22:53 +0100 Subject: [PATCH] Migrate DiffsCounter to Internal Events --- app/assets/javascripts/diffs/components/app.vue | 2 -- .../counts_all/20210723075525_diff_searches.yml | 8 +++----- lib/gitlab/usage_data_counters.rb | 1 - lib/gitlab/usage_data_counters/diffs_counter.rb | 10 ---------- .../total_counter_redis_key_overrides.yml | 1 + spec/frontend/diffs/components/app_spec.js | 7 ------- spec/lib/gitlab/usage_data_counters_spec.rb | 5 +++-- spec/lib/gitlab/utils/usage_data_spec.rb | 12 ++++++------ spec/requests/api/usage_data_spec.rb | 4 ++-- 9 files changed, 15 insertions(+), 35 deletions(-) delete mode 100644 lib/gitlab/usage_data_counters/diffs_counter.rb diff --git a/app/assets/javascripts/diffs/components/app.vue b/app/assets/javascripts/diffs/components/app.vue index 7f649d0b3751..8f89788cb61d 100644 --- a/app/assets/javascripts/diffs/components/app.vue +++ b/app/assets/javascripts/diffs/components/app.vue @@ -8,7 +8,6 @@ import { mapState as mapPiniaState, mapActions as mapPiniaActions } from 'pinia' import FindingsDrawer from 'ee_component/diffs/components/shared/findings_drawer.vue'; import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; import { convertToGraphQLId } from '~/graphql_shared/utils'; -import api from '~/api'; import { keysFor, MR_PREVIOUS_FILE_IN_DIFF, @@ -675,7 +674,6 @@ export default { this.disableVirtualScroller(); this.trackEvent('i_code_review_user_searches_diff'); - api.trackRedisCounterEvent('diff_searches'); } }, jumpToFile(step) { diff --git a/config/metrics/counts_all/20210723075525_diff_searches.yml b/config/metrics/counts_all/20210723075525_diff_searches.yml index 08865d01f2fc..a64eb7577ce9 100644 --- a/config/metrics/counts_all/20210723075525_diff_searches.yml +++ b/config/metrics/counts_all/20210723075525_diff_searches.yml @@ -10,11 +10,9 @@ status: active milestone: '14.2' introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66522 time_frame: all -data_source: redis -instrumentation_class: RedisMetric -options: - prefix: diff - event: searches +data_source: internal_events +events: + - name: i_code_review_user_searches_diff tiers: - free - premium diff --git a/lib/gitlab/usage_data_counters.rb b/lib/gitlab/usage_data_counters.rb index 3964c4830af5..a208fd943b31 100644 --- a/lib/gitlab/usage_data_counters.rb +++ b/lib/gitlab/usage_data_counters.rb @@ -3,7 +3,6 @@ module Gitlab module UsageDataCounters COUNTERS = [ - DiffsCounter, MergeRequestWidgetExtensionCounter ].freeze diff --git a/lib/gitlab/usage_data_counters/diffs_counter.rb b/lib/gitlab/usage_data_counters/diffs_counter.rb deleted file mode 100644 index b06c7e26f540..000000000000 --- a/lib/gitlab/usage_data_counters/diffs_counter.rb +++ /dev/null @@ -1,10 +0,0 @@ -# frozen_string_literal: true - -module Gitlab - module UsageDataCounters - class DiffsCounter < BaseCounter - KNOWN_EVENTS = %w[searches].freeze - PREFIX = 'diff' - end - end -end diff --git a/lib/gitlab/usage_data_counters/total_counter_redis_key_overrides.yml b/lib/gitlab/usage_data_counters/total_counter_redis_key_overrides.yml index 3914d1577098..6a1a32e8b8df 100644 --- a/lib/gitlab/usage_data_counters/total_counter_redis_key_overrides.yml +++ b/lib/gitlab/usage_data_counters/total_counter_redis_key_overrides.yml @@ -144,3 +144,4 @@ '{event_counters}_request_api_proxy_access_via_user': USAGE_KUBERNETES_AGENT_K8S_API_PROXY_REQUESTS_VIA_USER_ACCESS '{event_counters}_request_api_proxy_access_via_pat': USAGE_KUBERNETES_AGENT_K8S_API_PROXY_REQUESTS_VIA_PAT_ACCESS '{event_counters}_delete_manifest_from_container_registry': USAGE_CONTAINER_REGISTRY_EVENTS_I_CONTAINER_REGISTRY_DELETE_MANIFEST +'{event_counters}_i_code_review_user_searches_diff': USAGE_DIFF_SEARCHES diff --git a/spec/frontend/diffs/components/app_spec.js b/spec/frontend/diffs/components/app_spec.js index 0233a3a90494..9b76ce55251e 100644 --- a/spec/frontend/diffs/components/app_spec.js +++ b/spec/frontend/diffs/components/app_spec.js @@ -6,7 +6,6 @@ import VueApollo from 'vue-apollo'; // eslint-disable-next-line no-restricted-imports import Vuex from 'vuex'; import { createTestingPinia } from '@pinia/testing'; -import api from '~/api'; import getMRCodequalityAndSecurityReports from 'ee_else_ce/diffs/components/graphql/get_mr_codequality_and_security_reports.query.graphql'; import createMockApollo from 'helpers/mock_apollo_helper'; import setWindowLocation from 'helpers/set_window_location_helper'; @@ -51,8 +50,6 @@ const UPDATED_COMMIT_URL = `${TEST_HOST}/COMMIT/NEW`; const ENDPOINT_BATCH_URL = `${TEST_HOST}/diff/endpointBatch`; const ENDPOINT_METADATA_URL = `${TEST_HOST}/diff/endpointMetadata`; -jest.mock('~/api.js'); - Vue.use(Vuex); Vue.use(VueApollo); @@ -1184,7 +1181,6 @@ describe('diffs/components/app', () => { window.dispatchEvent(new Event('blur')); expect(trackEventSpy).not.toHaveBeenCalled(); - expect(api.trackRedisCounterEvent).not.toHaveBeenCalled(); }); it('should track metrics if delta is between 0 and 1000ms', async () => { @@ -1199,7 +1195,6 @@ describe('diffs/components/app', () => { window.dispatchEvent(new Event('blur')); expect(trackEventSpy).toHaveBeenCalledWith('i_code_review_user_searches_diff', {}, undefined); - expect(api.trackRedisCounterEvent).toHaveBeenCalledWith('diff_searches'); }); it('should not track metrics if delta is greater than or equal to 1000ms', async () => { @@ -1214,7 +1209,6 @@ describe('diffs/components/app', () => { window.dispatchEvent(new Event('blur')); expect(trackEventSpy).not.toHaveBeenCalled(); - expect(api.trackRedisCounterEvent).not.toHaveBeenCalled(); }); it('should not track metrics if delta is negative', async () => { @@ -1229,7 +1223,6 @@ describe('diffs/components/app', () => { window.dispatchEvent(new Event('blur')); expect(trackEventSpy).not.toHaveBeenCalled(); - expect(api.trackRedisCounterEvent).not.toHaveBeenCalled(); }); }); }); diff --git a/spec/lib/gitlab/usage_data_counters_spec.rb b/spec/lib/gitlab/usage_data_counters_spec.rb index 8d7e497dc1f7..958ac77bb2de 100644 --- a/spec/lib/gitlab/usage_data_counters_spec.rb +++ b/spec/lib/gitlab/usage_data_counters_spec.rb @@ -13,10 +13,11 @@ describe '.count' do subject { described_class.count(event_name) } - let(:event_name) { 'diff_searches' } + let(:event_name) { 'i_code_review_merge_request_widget_code_quality_count_view' } it 'increases a searches counter' do - expect(Gitlab::UsageDataCounters::DiffsCounter).to receive(:count).with('searches') + expect(Gitlab::UsageDataCounters::MergeRequestWidgetExtensionCounter) + .to receive(:count).with('code_quality_count_view') subject end diff --git a/spec/lib/gitlab/utils/usage_data_spec.rb b/spec/lib/gitlab/utils/usage_data_spec.rb index b235b4612159..e03220f62e29 100644 --- a/spec/lib/gitlab/utils/usage_data_spec.rb +++ b/spec/lib/gitlab/utils/usage_data_spec.rb @@ -502,18 +502,18 @@ def expect_error(exception, message, &block) context 'with counter given' do context 'when gets an error' do - subject { described_class.redis_usage_data(::Gitlab::UsageDataCounters::DiffsCounter) } + subject { described_class.redis_usage_data(::Gitlab::UsageDataCounters::MergeRequestWidgetExtensionCounter) } - let(:fallback) { ::Gitlab::UsageDataCounters::DiffsCounter.fallback_totals } - let(:failing_class) { ::Gitlab::UsageDataCounters::DiffsCounter } + let(:fallback) { ::Gitlab::UsageDataCounters::MergeRequestWidgetExtensionCounter.fallback_totals } + let(:failing_class) { ::Gitlab::UsageDataCounters::MergeRequestWidgetExtensionCounter } let(:failing_method) { :totals } it_behaves_like 'failing hardening method', ::Redis::CommandError end - it 'returns the totals when couter is given' do - allow(::Gitlab::UsageDataCounters::DiffsCounter).to receive(:totals).and_return({ merge_request_create: 2 }) - expect(described_class.redis_usage_data(::Gitlab::UsageDataCounters::DiffsCounter)).to eql({ merge_request_create: 2 }) + it 'returns the totals when counter is given' do + allow(::Gitlab::UsageDataCounters::MergeRequestWidgetExtensionCounter).to receive(:totals).and_return({ merge_request_create: 2 }) + expect(described_class.redis_usage_data(::Gitlab::UsageDataCounters::MergeRequestWidgetExtensionCounter)).to eql({ merge_request_create: 2 }) end end end diff --git a/spec/requests/api/usage_data_spec.rb b/spec/requests/api/usage_data_spec.rb index 8a25f5cb79e2..ef84e1c1a6a2 100644 --- a/spec/requests/api/usage_data_spec.rb +++ b/spec/requests/api/usage_data_spec.rb @@ -85,7 +85,7 @@ describe 'POST /usage_data/increment_counter' do let(:endpoint) { '/usage_data/increment_counter' } - let(:known_event) { "diff_searches" } + let(:known_event) { "i_code_review_merge_request_widget_code_quality_count_view" } let(:unknown_event) { 'unknown' } context 'without authentication' do @@ -113,7 +113,7 @@ context 'with correct params' do it 'returns status :ok' do - expect(Gitlab::UsageDataCounters::BaseCounter).to receive(:count).with("searches") + expect(Gitlab::UsageDataCounters::BaseCounter).to receive(:count).with("code_quality_count_view") post api(endpoint, user), params: { event: known_event } -- GitLab