Skip to content
Snippets Groups Projects
Commit dc066d72 authored by Bogdan Denkovych's avatar Bogdan Denkovych :cityscape: Committed by drew stachon
Browse files

Remove incorrect enterprise users metrics

Related to #412320

Changelog: removed
EE: true
parent cef3068f
No related branches found
No related tags found
2 merge requests!122445Draft: Resolve "Snowplow - Total Page Views visualization throws error",!121719Remove incorrect enterprise users metrics
Showing
with 46 additions and 207 deletions
# frozen_string_literal: true
class RemoveIndexUserDetailsOnUserIdForEnterpriseUsersWithoutDate < Gitlab::Database::Migration[2.1]
INDEX_NAME = 'index_user_details_on_user_id_for_enterprise_users_without_date'
disable_ddl_transaction!
def up
remove_concurrent_index_by_name :user_details, INDEX_NAME
end
def down
add_concurrent_index(
:user_details, :user_id,
where: 'provisioned_by_group_id IS NOT NULL AND provisioned_by_group_at IS NULL',
name: INDEX_NAME
)
end
end
# frozen_string_literal: true
class RemoveIndexUserDetailsOnUserIdForEnterpriseUsersWithDate < Gitlab::Database::Migration[2.1]
INDEX_NAME = 'index_user_details_on_user_id_for_enterprise_users_with_date'
disable_ddl_transaction!
def up
remove_concurrent_index_by_name :user_details, INDEX_NAME
end
def down
add_concurrent_index(
:user_details, :user_id,
where: 'provisioned_by_group_id IS NOT NULL AND provisioned_by_group_at IS NOT NULL',
name: INDEX_NAME
)
end
end
073d817772476d9d32fa623547fb711c9e6890f507b974272fe8bca4e5c17a83
\ No newline at end of file
093e6faef2171b8d7ab75bc096cfe140d5c595f113a911ca000529cf66f6eb6d
\ No newline at end of file
......@@ -32732,10 +32732,6 @@ COMMENT ON INDEX index_user_details_on_phone IS 'JiHu-specific index';
 
CREATE UNIQUE INDEX index_user_details_on_user_id ON user_details USING btree (user_id);
 
CREATE INDEX index_user_details_on_user_id_for_enterprise_users_with_date ON user_details USING btree (user_id) WHERE ((provisioned_by_group_id IS NOT NULL) AND (provisioned_by_group_at IS NOT NULL));
CREATE INDEX index_user_details_on_user_id_for_enterprise_users_without_date ON user_details USING btree (user_id) WHERE ((provisioned_by_group_id IS NOT NULL) AND (provisioned_by_group_at IS NULL));
CREATE INDEX index_user_group_callouts_on_group_id ON user_group_callouts USING btree (group_id);
 
CREATE INDEX index_user_highest_roles_on_user_id_and_highest_access_level ON user_highest_roles USING btree (user_id, highest_access_level);
......@@ -109,10 +109,6 @@ module User
scope :managed_by, ->(group) { where(managing_group: group) }
scope :enterprise, -> { where(id: ::UserDetail.enterprise) }
scope :enterprise_created_via_saml_or_scim, -> { where(id: ::UserDetail.enterprise_created_via_saml_or_scim) }
scope :enterprise_based_on_domain_verification, -> { where(id: ::UserDetail.enterprise_based_on_domain_verification) }
scope :excluding_guests, -> do
subquery = ::Member
.select(1)
......
......@@ -6,10 +6,6 @@ module UserDetail
prepended do
belongs_to :provisioned_by_group, class_name: 'Group', optional: true, inverse_of: :provisioned_user_details
scope :enterprise, -> { where.not(provisioned_by_group_id: nil) }
scope :enterprise_created_via_saml_or_scim, -> { enterprise.where(provisioned_by_group_at: nil) }
scope :enterprise_based_on_domain_verification, -> { enterprise.where.not(provisioned_by_group_at: nil) }
end
def provisioned_by_group?
......
......@@ -5,7 +5,9 @@ product_section: dev
product_stage: manage
product_group: authentication_and_authorization
value_type: number
status: active
status: removed
removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121719
milestone_removed: "16.1"
milestone: "15.10"
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/112185
time_frame: all
......
......@@ -5,7 +5,9 @@ product_section: dev
product_stage: manage
product_group: authentication_and_authorization
value_type: number
status: active
status: removed
removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121719
milestone_removed: "16.1"
milestone: "15.10"
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/112185
time_frame: all
......
# frozen_string_literal: true
module Gitlab
module Usage
module Metrics
module Instrumentations
class CountEnterpriseUsersBasedOnDomainVerificationMetric < DatabaseMetric
operation :count
relation do
UserDetail.enterprise_based_on_domain_verification
end
end
end
end
end
end
# frozen_string_literal: true
module Gitlab
module Usage
module Metrics
module Instrumentations
class CountEnterpriseUsersCreatedViaSamlOrScimMetric < DatabaseMetric
operation :count
relation do
UserDetail.enterprise_created_via_saml_or_scim
end
end
end
end
end
end
......@@ -17,25 +17,6 @@
end
end
trait :enterprise_user_created_via_saml do
after(:create) do |user, evaluator|
group_saml_identity = create(:group_saml_identity, user: user)
user.user_detail.update!(provisioned_by_group_id: group_saml_identity.saml_provider.group_id)
end
end
trait :enterprise_user_created_via_scim do
after(:create) do |user, evaluator|
scim_identity = create(:scim_identity, user: user)
user.user_detail.update!(provisioned_by_group_id: scim_identity.group_id)
end
end
trait :enterprise_user_based_on_domain_verification do
provisioned_by_group_id { create(:group).id }
provisioned_by_group_at { Time.current }
end
trait :service_user do
user_type { :service_user }
end
......
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe(
Gitlab::Usage::Metrics::Instrumentations::CountEnterpriseUsersBasedOnDomainVerificationMetric,
feature_category: :user_management
) do
let_it_be(:enterprise_user_created_via_saml) { create(:user, :enterprise_user_created_via_saml) }
let_it_be(:enterprise_user_created_via_scim) { create(:user, :enterprise_user_created_via_scim) }
let_it_be(:enterprise_user_based_on_domain_verification) do
create(:user, :enterprise_user_based_on_domain_verification)
end
let_it_be(:non_enterprise_users) { create_list(:user, 3) }
let(:expected_value) { 1 }
let(:expected_query) do
'SELECT COUNT("user_details"."user_id") FROM "user_details" ' \
'WHERE "user_details"."provisioned_by_group_id" IS NOT NULL AND "user_details"."provisioned_by_group_at" IS NOT NULL' # rubocop: disable Layout/LineLength
end
it_behaves_like 'a correct instrumented metric value and query', { time_frame: 'all', data_source: 'database' }
end
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe(
Gitlab::Usage::Metrics::Instrumentations::CountEnterpriseUsersCreatedViaSamlOrScimMetric,
feature_category: :user_management
) do
let_it_be(:enterprise_user_created_via_saml) { create(:user, :enterprise_user_created_via_saml) }
let_it_be(:enterprise_user_created_via_scim) { create(:user, :enterprise_user_created_via_scim) }
let_it_be(:enterprise_user_based_on_domain_verification) do
create(:user, :enterprise_user_based_on_domain_verification)
end
let_it_be(:non_enterprise_users) { create_list(:user, 3) }
let(:expected_value) { 2 }
let(:expected_query) do
'SELECT COUNT("user_details"."user_id") FROM "user_details" ' \
'WHERE "user_details"."provisioned_by_group_id" IS NOT NULL AND "user_details"."provisioned_by_group_at" IS NULL'
end
it_behaves_like 'a correct instrumented metric value and query', { time_frame: 'all', data_source: 'database' }
end
......@@ -32,8 +32,6 @@
expect(subject[:counts]).to include(:saml_group_links)
expect(subject[:counts]).to include(:users_with_custom_roles)
expect(subject[:counts]).to include(:member_roles)
expect(subject[:counts]).to include(:enterprise_users_created_via_saml_or_scim)
expect(subject[:counts]).to include(:enterprise_users_based_on_domain_verification)
end
describe 'Redis_HLL_counters' do
......
......@@ -30,49 +30,4 @@
expect(subject).to be_nil
end
end
describe 'scopes' do
context 'for enterprise users' do
let_it_be(:user_detail_of_enterprise_user_created_via_saml) do
create(:user, :enterprise_user_created_via_saml).user_detail
end
let_it_be(:user_detail_of_enterprise_user_created_via_scim) do
create(:user, :enterprise_user_created_via_scim).user_detail
end
let_it_be(:user_detail_of_enterprise_user_based_on_domain_verification) do
create(:user, :enterprise_user_based_on_domain_verification).user_detail
end
let_it_be(:user_details_of_non_enterprise_users) { create_list(:user_detail, 3) }
describe '.enterprise' do
it 'returns user details of all enterprise users' do
expect(described_class.enterprise).to contain_exactly(
user_detail_of_enterprise_user_created_via_saml,
user_detail_of_enterprise_user_created_via_scim,
user_detail_of_enterprise_user_based_on_domain_verification
)
end
end
describe '.enterprise_created_via_saml_or_scim' do
it 'returns user details of enterprise users created via saml or scim' do
expect(described_class.enterprise_created_via_saml_or_scim).to contain_exactly(
user_detail_of_enterprise_user_created_via_saml,
user_detail_of_enterprise_user_created_via_scim
)
end
end
describe '.enterprise_based_on_domain_verification' do
it 'returns user details of enterprise users based on domain verification' do
expect(described_class.enterprise_based_on_domain_verification).to contain_exactly(
user_detail_of_enterprise_user_based_on_domain_verification
)
end
end
end
end
end
......@@ -138,45 +138,6 @@
expect(described_class.managed_by(group)).to match_array(managed_users)
end
end
context 'for enterprise users' do
let_it_be(:enterprise_user_created_via_saml) { create(:user, :enterprise_user_created_via_saml) }
let_it_be(:enterprise_user_created_via_scim) { create(:user, :enterprise_user_created_via_scim) }
let_it_be(:enterprise_user_based_on_domain_verification) do
create(:user, :enterprise_user_based_on_domain_verification)
end
let_it_be(:non_enterprise_users) { create_list(:user, 3) }
describe '.enterprise' do
it 'returns all enterprise users' do
expect(described_class.enterprise).to contain_exactly(
enterprise_user_created_via_saml,
enterprise_user_created_via_scim,
enterprise_user_based_on_domain_verification
)
end
end
describe '.enterprise_created_via_saml_or_scim' do
it 'returns enterprise users created via saml or scim' do
expect(described_class.enterprise_created_via_saml_or_scim).to contain_exactly(
enterprise_user_created_via_saml,
enterprise_user_created_via_scim
)
end
end
describe '.enterprise_based_on_domain_verification' do
it 'returns enterprise users based on domain verification' do
expect(described_class.enterprise_based_on_domain_verification).to contain_exactly(
enterprise_user_based_on_domain_verification
)
end
end
end
end
describe 'after_create' do
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment