Skip to content
代码片段 群组 项目
提交 81d4053b 编辑于 作者: Vasilii Iakliushin's avatar Vasilii Iakliushin
浏览文件

Merge branch 'new_metric_umlu' into 'master'

Introduce new New Service Ping metric - UMAU

See merge request gitlab-org/gitlab!88631
No related branches found
No related tags found
无相关合并请求
---
key_path: counts_monthly.unique_active_users
name:
description: Users that have a last_activity_on date within the past 28 days
product_category:
product_section: dev
product_stage: manage
product_group: group::manage
value_type: number
status: active
milestone: "15.1"
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/88631
time_frame: 28d
data_source: database
data_category: optional
instrumentation_class: UniqueActiveUsersMetric
distribution:
- ce
- ee
tier:
- free
- premium
- ultimate
# frozen_string_literal: true
module Gitlab
module Usage
module Metrics
module Instrumentations
class UniqueActiveUsersMetric < DatabaseMetric
operation :count
relation { ::User.active }
metric_options do
{
batch_size: 10_000
}
end
def time_constraints
case time_frame
when '28d'
monthly_time_range_db_params(column: :last_activity_on)
else
super
end
end
end
end
end
end
end
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe Gitlab::Usage::Metrics::Instrumentations::UniqueActiveUsersMetric do
let_it_be(:user1) { create(:user, last_activity_on: 1.day.ago) }
let_it_be(:user2) { create(:user, last_activity_on: 5.days.ago) }
let_it_be(:user3) { create(:user, last_activity_on: 50.days.ago) }
let_it_be(:user4) { create(:user) }
let_it_be(:user5) { create(:user, user_type: 1, last_activity_on: 5.days.ago ) } # support bot
let_it_be(:user6) { create(:user, state: 'blocked') }
context '28d' do
let(:start) { 30.days.ago.to_date.to_s }
let(:finish) { 2.days.ago.to_date.to_s }
let(:expected_value) { 1 }
let(:expected_query) do
"SELECT COUNT(\"users\".\"id\") FROM \"users\" WHERE (\"users\".\"state\" IN ('active')) AND " \
"(\"users\".\"user_type\" IS NULL OR \"users\".\"user_type\" IN (6, 4)) AND \"users\".\"last_activity_on\" " \
"BETWEEN '#{start}' AND '#{finish}'"
end
it_behaves_like 'a correct instrumented metric value and query', { time_frame: '28d' }
end
context 'all' do
let(:expected_value) { 4 }
it_behaves_like 'a correct instrumented metric value', { time_frame: 'all' }
end
end
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册