Commit d8957eb4 authored by Felipe Artur's avatar Felipe Artur

Track epic issues moved between projects

Record epic issues moved between projects
with Redis HLL.
parent ff6a7e96
No related merge requests found
......@@ -9896,6 +9896,30 @@ Status: `implemented`
Tiers: `premium`, `ultimate`
### `redis_hll_counters.epics_usage.g_project_management_epic_issue_moved_from_project_monthly`
Counts of MAU moving epic issues between projects
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210405190240_g_project_management_epic_issue_moved_from_project_monthly.yml)
Group: `group::product planning`
Status: `implemented`
Tiers: `premium`, `ultimate`
### `redis_hll_counters.epics_usage.g_project_management_epic_issue_moved_from_project_weekly`
Counts of WAU moving epic issues between projects
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210405185814_g_project_management_epic_issue_moved_from_project_weekly.yml)
Group: `group::product planning`
Status: `implemented`
Tiers: `premium`, `ultimate`
### `redis_hll_counters.epics_usage.g_project_management_epic_issue_removed_monthly`
Count of MAU removing issues from epics
......
......@@ -9,6 +9,7 @@ module EE
def update_old_entity
rewrite_epic_issue
rewrite_related_vulnerability_issues
track_epic_issue_moved_from_project
super
end
......@@ -25,6 +26,12 @@ module EE
original_entity.reset
end
def track_epic_issue_moved_from_project
return unless original_entity.epic_issue
::Gitlab::UsageDataCounters::EpicActivityUniqueCounter.track_epic_issue_moved_from_project(author: current_user)
end
def rewrite_related_vulnerability_issues
issue_links = Vulnerabilities::IssueLink.for_issue(original_entity)
issue_links.update_all(issue_id: new_entity.id)
......
---
title: Track epic issues moved between projects
merge_request: 58590
author:
type: other
---
# Name of this metric contains g_project_management prefix
# because we are using the same slot from issue_tracking to
# allow data aggregation.
key_path: redis_hll_counters.epics_usage.g_project_management_epic_issue_moved_from_project_monthly
description: Counts of MAU moving epic issues between projects
product_section: dev
product_stage: plan
product_group: group::product planning
product_category: epics_usage
value_type: number
status: implemented
milestone: "13.11"
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/58590
time_frame: 28d
data_source: redis_hll
distribution:
- ee
tier:
- premium
- ultimate
---
# Name of this metric contains g_project_management prefix
# because we are using the same slot from issue_tracking to
# allow data aggregation.
key_path: redis_hll_counters.epics_usage.g_project_management_epic_issue_moved_from_project_weekly
description: Counts of WAU moving epic issues between projects
product_section: dev
product_stage: plan
product_group: group::product planning
product_category: epics_usage
value_type: number
status: implemented
milestone: "13.11"
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/58590
time_frame: 7d
data_source: redis_hll
distribution:
- ee
tier:
- premium
- ultimate
......@@ -21,6 +21,7 @@ module Gitlab
EPIC_FIXED_DUE_DATE_UPDATED = 'g_project_management_users_updating_fixed_epic_due_date'
EPIC_ISSUE_ADDED = 'g_project_management_epic_issue_added'
EPIC_ISSUE_REMOVED = 'g_project_management_epic_issue_removed'
EPIC_ISSUE_MOVED_FROM_PROJECT = 'g_project_management_epic_issue_moved_from_project'
EPIC_CLOSED = 'g_project_management_epic_closed'
EPIC_REOPENED = 'g_project_management_epic_reopened'
ISSUE_PROMOTED_TO_EPIC = 'g_project_management_issue_promoted_to_epic'
......@@ -85,6 +86,10 @@ module Gitlab
track_unique_action(EPIC_ISSUE_REMOVED, author)
end
def track_epic_issue_moved_from_project(author:)
track_unique_action(EPIC_ISSUE_MOVED_FROM_PROJECT, author)
end
def track_epic_closed_action(author:)
track_unique_action(EPIC_CLOSED, author)
end
......
......@@ -234,6 +234,18 @@ RSpec.describe Gitlab::UsageDataCounters::EpicActivityUniqueCounter, :clean_gitl
it_behaves_like 'does not track when feature flag is disabled', :track_epics_activity
end
context 'for moving an issue that belongs to epic' do
def track_action(params)
described_class.track_epic_issue_moved_from_project(**params)
end
it_behaves_like 'a daily tracked issuable event' do
let(:action) { described_class::EPIC_ISSUE_MOVED_FROM_PROJECT }
end
it_behaves_like 'does not track when feature flag is disabled', :track_epics_activity
end
context 'for promoting issue to epic' do
def track_action(params)
described_class.track_issue_promoted_to_epic(**params)
......
......@@ -29,6 +29,23 @@ RSpec.describe Issues::MoveService do
expect { move_service.execute(old_issue, new_project) }
.not_to raise_error # Sidekiq::Worker::EnqueueFromTransactionError
end
context 'when moved issue belongs to epic' do
it 'records epic moved from project event' do
create(:epic_issue, issue: old_issue)
expect(Gitlab::UsageDataCounters::EpicActivityUniqueCounter).to receive(:track_epic_issue_moved_from_project).with(author: user)
move_service.execute(old_issue, new_project)
end
end
context 'when moved issue does not belong to epic' do
it 'does not record epic moved from project event' do
expect(Gitlab::UsageDataCounters::EpicActivityUniqueCounter).not_to receive(:track_epic_issue_moved_from_project)
move_service.execute(old_issue, new_project)
end
end
end
context 'resource weight events' do
......
......@@ -93,6 +93,12 @@
aggregation: daily
feature_flag: track_epics_activity
- name: g_project_management_epic_issue_moved_from_project
category: epics_usage
redis_slot: project_management
aggregation: daily
feature_flag: track_epics_activity
- name: g_project_management_epic_closed
category: epics_usage
redis_slot: project_management
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment