Commit c4300145 authored by Jarka Košanová's avatar Jarka Košanová

Track checking epic tasks on usage data

parent fcc7d5c0
......@@ -1100,6 +1100,54 @@ Status: `data_available`
Tiers: `free`
### `counts.g_project_management_users_checking_epic_task_monthly`
Counts of MAU checking epic task
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210421080207_g_project_management_users_checking_epic_task_monthly.yml)
Group: `group::product planning`
Status: `implemented`
Tiers: `premium`, `ultimate`
### `counts.g_project_management_users_checking_epic_task_weekly`
Counts of WAU checking epic task
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210421075943_g_project_management_users_checking_epic_task_weekly.yml)
Group: `group::product planning`
Status: `implemented`
Tiers: `premium`, `ultimate`
### `counts.g_project_management_users_unchecking_epic_task_monthly`
Counts of MAU unchecking epic task
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210421102516_g_project_management_users_unchecking_epic_task_monthly.yml)
Group: `group::product planning`
Status: `implemented`
Tiers: `premium`, `ultimate`
### `counts.g_project_management_users_unchecking_epic_task_weekly`
Counts of WAU unchecking epic task
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210421102812_g_project_management_users_unchecking_epic_task_weekly.yml)
Group: `group::product planning`
Status: `implemented`
Tiers: `premium`, `ultimate`
### `counts.geo_event_log_max_id`
Number of replication events on a Geo primary
......@@ -6430,7 +6478,7 @@ Tiers: `free`, `premium`, `ultimate`
### `database.pg_system_id`
Missing description
TBD
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183248_pg_system_id.yml)
......@@ -7764,7 +7812,7 @@ Tiers: `free`, `premium`, `ultimate`
Number of projects using 5 min production app CI template in last 7 days.
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216184515_p_ci_templates_5_min_production_app_weekly.yml)
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184515_p_ci_templates_5_min_production_app_weekly.yml)
Group: `group::5-min-app`
......@@ -16010,6 +16058,8 @@ Tiers: `free`
Histogram (buckets 1 to 100) of projects with at least 1 enabled integration.
[Object JSON schema](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/objects_schemas/projects_with_enabled_alert_integrations_histogram.json)
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210309165717_projects_with_enabled_alert_integrations_histogram.yml)
Group: `group::monitor`
......
......@@ -135,6 +135,19 @@ module Epics
if epic.saved_change_to_attribute?(:description)
::Gitlab::UsageDataCounters::EpicActivityUniqueCounter.track_epic_description_changed_action(author: current_user)
track_task_changes(epic)
end
end
def track_task_changes(epic)
return if epic.updated_tasks.blank?
epic.updated_tasks.each do |task|
if task.complete?
Gitlab::UsageDataCounters::EpicActivityUniqueCounter.track_epic_task_checked(author: current_user)
else
Gitlab::UsageDataCounters::EpicActivityUniqueCounter.track_epic_task_unchecked(author: current_user)
end
end
end
end
......
---
title: Track checking/unchecking tasks on epics
merge_request: 60846
author:
type: added
---
# 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: counts.g_project_management_users_checking_epic_task_monthly
description: Counts of MAU checking epic task
product_section: dev
product_stage: plan
product_group: group::product planning
product_category: epics
value_type: number
status: implemented
milestone: "13.12"
introduced_by_url:
time_frame: 28d
data_source: redis_hll
distribution:
- ee
tier:
- premium
- ultimate
\ No newline at end of file
---
# 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: counts.g_project_management_users_unchecking_epic_task_monthly
description: Counts of MAU unchecking epic task
product_section: dev
product_stage: plan
product_group: group::product planning
product_category: epics
value_type: number
status: implemented
milestone: "13.12"
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/59871
time_frame: 28d
data_source: redis_hll
distribution:
- ee
tier:
- premium
- ultimate
\ No newline at end of file
---
# 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: counts.g_project_management_users_checking_epic_task_weekly
description: Counts of WAU checking epic task
product_section: dev
product_stage: plan
product_group: group::product planning
product_category: epics
value_type: number
status: implemented
milestone: "13.12"
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/59871
time_frame: 7d
data_source: redis_hll
distribution:
- ee
tier:
- premium
- ultimate
\ No newline at end of file
---
# 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: counts.g_project_management_users_unchecking_epic_task_weekly
description: Counts of WAU unchecking epic task
product_section: dev
product_stage: plan
product_group: group::product planning
product_category: epics
value_type: number
status: implemented
milestone: "13.12"
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/59871
time_frame: 7d
data_source: redis_hll
distribution:
- ee
tier:
- premium
- ultimate
......@@ -29,6 +29,8 @@ module Gitlab
EPIC_VISIBLE = 'g_project_management_users_setting_epic_visible'
EPIC_LABELS = 'g_project_management_epic_users_changing_labels'
EPIC_DESTROYED = 'g_project_management_epic_destroyed'
EPIC_TASK_CHECKED = 'project_management_users_checking_epic_task'
EPIC_TASK_UNCHECKED = 'project_management_users_unchecking_epic_task'
class << self
def track_epic_created_action(author:)
......@@ -119,6 +121,14 @@ module Gitlab
track_unique_action(EPIC_DESTROYED, author)
end
def track_epic_task_checked(author:)
track_unique_action(EPIC_TASK_CHECKED, author)
end
def track_epic_task_unchecked(author:)
track_unique_action(EPIC_TASK_UNCHECKED, author)
end
private
def track_unique_action(action, author)
......
......@@ -269,4 +269,28 @@ RSpec.describe Gitlab::UsageDataCounters::EpicActivityUniqueCounter, :clean_gitl
it_behaves_like 'does not track when feature flag is disabled', :track_epics_activity
end
context 'for margin epic task as checked' do
def track_action(params)
described_class.track_epic_task_checked(**params)
end
it_behaves_like 'a daily tracked issuable event' do
let(:action) { described_class::EPIC_TASK_CHECKED }
end
it_behaves_like 'does not track when feature flag is disabled', :track_epics_activity
end
context 'for margin epic task as unchecked' do
def track_action(params)
described_class.track_epic_task_unchecked(**params)
end
it_behaves_like 'a daily tracked issuable event' do
let(:action) { described_class::EPIC_TASK_UNCHECKED }
end
it_behaves_like 'does not track when feature flag is disabled', :track_epics_activity
end
end
......@@ -317,7 +317,7 @@ RSpec.describe Epics::UpdateService do
context 'when Epic has tasks' do
before do
update_epic({ description: "- [ ] Task 1\n- [ ] Task 2" })
update_epic(description: "- [ ] Task 1\n- [ ] Task 2")
end
it { expect(epic.tasks?).to eq(true) }
......@@ -329,11 +329,9 @@ RSpec.describe Epics::UpdateService do
end
context 'when tasks are marked as completed' do
before do
update_epic({ description: "- [x] Task 1\n- [X] Task 2" })
end
it 'creates system note about task status change' do
update_epic(description: "- [x] Task 1\n- [X] Task 2")
note1 = find_note('marked the task **Task 1** as completed')
note2 = find_note('marked the task **Task 2** as completed')
......@@ -343,15 +341,23 @@ RSpec.describe Epics::UpdateService do
description_notes = find_notes('description')
expect(description_notes.length).to eq(1)
end
it 'counts the change correctly' do
expect(Gitlab::UsageDataCounters::EpicActivityUniqueCounter).to receive(:track_epic_task_checked)
.with(author: user).twice
update_epic(description: "- [x] Task 1\n- [X] Task 2")
end
end
context 'when tasks are marked as incomplete' do
before do
update_epic({ description: "- [x] Task 1\n- [X] Task 2" })
update_epic({ description: "- [ ] Task 1\n- [ ] Task 2" })
update_epic(description: "- [x] Task 1\n- [X] Task 2")
end
it 'creates system note about task status change' do
update_epic(description: "- [ ] Task 1\n- [ ] Task 2")
note1 = find_note('marked the task **Task 1** as incomplete')
note2 = find_note('marked the task **Task 2** as incomplete')
......@@ -361,6 +367,13 @@ RSpec.describe Epics::UpdateService do
description_notes = find_notes('description')
expect(description_notes.length).to eq(1)
end
it 'counts the change correctly' do
expect(Gitlab::UsageDataCounters::EpicActivityUniqueCounter).to receive(:track_epic_task_unchecked)
.with(author: user).twice
update_epic(description: "- [ ] Task 1\n- [ ] Task 2")
end
end
end
......
......@@ -9,6 +9,20 @@
aggregation: daily
feature_flag: track_epics_activity
# content change events
- name: project_management_users_unchecking_epic_task
category: epics_usage
redis_slot: project_management
aggregation: daily
feature_flag: track_epics_activity
- name: project_management_users_checking_epic_task
category: epics_usage
redis_slot: project_management
aggregation: daily
feature_flag: track_epics_activity
- name: g_project_management_users_updating_epic_titles
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