Skip to content
Snippets Groups Projects
Verified Commit b958551c authored by Pavel Shutsin's avatar Pavel Shutsin :two: Committed by GitLab
Browse files

Rename ClickHouseTestHelpers class to be more precise

These helpers are used for schema and migration helpers
while ClickHouseHelpers are used for data population
helpers.
This renaming tries to fix confusion between two helper
classes.
parent 3e41b355
No related branches found
No related tags found
1 merge request!148952Add ClickHouse fixture helpers
Showing
with 56 additions and 119 deletions
......@@ -96,8 +96,6 @@ def resolve_contributions(args = {}, context = { current_user: current_user })
end
context 'when clickhouse is the data source', :click_house do
include ClickHouseHelpers
before do
allow(::Gitlab::ClickHouse).to receive(:enabled_for_analytics?).and_return(true)
......
......@@ -39,19 +39,17 @@
arguments[:identifier] = 'contributors'
insert_query = <<~SQL
INSERT INTO events
(id, path, author_id, target_id, target_type, action, created_at, updated_at)
VALUES
-- push event
-- push event, different user
-- outside of the date range
(1,'#{group.id}/',100,0,'',5,'2023-05-10','2023-05-10'),
(2,'#{group.id}/',200,0,'',5,'2023-05-15','2023-05-15'),
(3,'#{group.id}/',300,0,'',5,'2023-06-15','2023-06-15')
SQL
ClickHouse::Client.execute(insert_query, :main)
clickhouse_fixture(:events, [
# push event
{ id: 1, path: "#{group.id}/", author_id: 100, target_id: 0, target_type: '', action: 5,
created_at: '2023-05-10', updated_at: '2023-05-10' },
# push event, different user
{ id: 2, path: "#{group.id}/", author_id: 200, target_id: 0, target_type: '', action: 5,
created_at: '2023-05-15', updated_at: '2023-05-15' },
# otside of the date range
{ id: 3, path: "#{group.id}/", author_id: 300, target_id: 0, target_type: '', action: 5,
created_at: '2023-06-15', updated_at: '2023-06-15' }
])
end
it 'returns the correct count' do
......
......@@ -65,8 +65,6 @@
describe 'data retrieval' do
# clickhouse_data_collection is disabled by default, but enabled for this annotation
context 'when ClickHouse is enabled for analytics', :click_house do
include ClickHouseHelpers
before do
allow(::Gitlab::ClickHouse).to receive(:enabled_for_analytics?).and_return(true)
end
......
......@@ -94,8 +94,6 @@
end
context 'when clickhouse is the data source', :click_house do
include ClickHouseHelpers
before do
allow(::Gitlab::ClickHouse).to receive(:enabled_for_analytics?).and_return(false)
......
......@@ -117,8 +117,6 @@ def run_query
end
context 'when clickhouse is the data source', :click_house do
include ClickHouseHelpers
before do
allow(::Gitlab::ClickHouse).to receive(:enabled_for_analytics?).and_return(true)
......
......@@ -4,7 +4,6 @@
RSpec.describe 'Query.group(fullPath).ciQueueingHistory', :click_house, feature_category: :fleet_visibility do
include GraphqlHelpers
include ClickHouseHelpers
include RunnerReleasesHelper
let_it_be(:group) { create(:group) }
......
......@@ -5,7 +5,6 @@
RSpec.describe 'Query.ciQueueingHistory', :click_house, feature_category: :fleet_visibility do
include GraphqlHelpers
include RunnerReleasesHelper
include ClickHouseHelpers
let_it_be(:project) { create(:project) }
let_it_be(:instance_runner) { create(:ci_runner, :instance, :with_runner_manager) }
......
......@@ -4,7 +4,6 @@
RSpec.describe 'Query.ciRunnerUsageByProject', :click_house, feature_category: :fleet_visibility do
include GraphqlHelpers
include ClickHouseHelpers
let_it_be(:projects) { create_list(:project, 7) }
let_it_be(:project) { projects.first }
......
......@@ -4,7 +4,6 @@
RSpec.describe 'Query.ciRunnerUsageByProject', :click_house, feature_category: :fleet_visibility do
include GraphqlHelpers
include ClickHouseHelpers
let_it_be(:project) { create(:project) }
let_it_be(:instance_runners) { create_list(:ci_runner, 7, :instance, :with_runner_manager) }
......
......@@ -5,7 +5,6 @@
RSpec.describe 'RunnersExportUsage', :click_house, :enable_admin_mode, :sidekiq_inline, :freeze_time,
feature_category: :fleet_visibility do
include GraphqlHelpers
include ClickHouseHelpers
let_it_be(:current_user) { create(:admin) }
let_it_be(:instance_runner) { create(:ci_runner, :instance) }
......
......@@ -4,12 +4,7 @@
RSpec.describe Analytics::AiAnalytics::CodeSuggestionUsageRateService, feature_category: :value_stream_management do
subject(:service_response) do
described_class.new(
current_user,
namespace: container,
from: from,
to: to
).execute
described_class.new(current_user, namespace: container, from: from, to: to).execute
end
let_it_be(:user1) { create(:user) }
......@@ -18,10 +13,11 @@
let_it_be(:unmatched_user) { create(:user) }
let_it_be(:group) { create(:group) }
let_it_be(:subgroup) { create(:group, parent: group) }
let_it_be(:project) { create(:project, group: subgroup) }
let(:current_user) { user1 }
let(:from) { Time.zone.now }
let(:to) { Time.zone.now }
let(:from) { Time.current }
let(:to) { Time.current }
before_all do
group.add_developer(user1)
......@@ -50,7 +46,6 @@
context 'when the feature is available', :click_house, :freeze_time do
let(:from) { 14.days.ago }
let(:to) { 1.day.ago }
let(:traversal_path) { "#{contributions_target.traversal_ids.join('/')}/" }
context 'without data' do
it 'returns 0' do
......@@ -60,36 +55,20 @@
end
context 'with data' do
def format(date)
date.to_time.utc.to_f
end
before do
usages_query = <<~SQL
INSERT INTO code_suggestion_usages
(user_id, event, timestamp)
VALUES
(#{user1.id}, 1, #{format(to - 3.days)}),
(#{user1.id}, 1, #{format(to - 4.days)}),
(#{user1.id}, 1, #{format(to + 1.day)}),
(#{user1.id}, 1, #{format(from - 1.day)}),
(#{user2.id}, 1, #{format(to - 2.days)}),
(#{unmatched_user.id}, 1, #{format(to - 2.days)})
SQL
ClickHouse::Client.execute(usages_query, :main)
code_contributions_query = <<~SQL
INSERT INTO events
(id, path, author_id, target_id, target_type, action, created_at, updated_at)
VALUES
(1,'#{traversal_path}',#{user1.id},0,'',5,#{format(to - 1.day)},#{format(to - 1.day)}),
(2,'#{traversal_path}',#{user1.id},0,'',5,#{format(to - 2.days)},#{format(to - 2.days)}),
(3,'#{traversal_path}',#{user2.id},0,'',5,#{format(to - 1.day)},#{format(to - 1.day)}),
(4,'#{traversal_path}',#{user_without_ai_usage.id},0,'',5,#{format(to - 1.day)},#{format(to - 1.day)}),
SQL
ClickHouse::Client.execute(code_contributions_query, :main)
clickhouse_fixture(:code_suggestion_usages, [
{ user_id: user1.id, event: 1, timestamp: to - 3.days },
{ user_id: user1.id, event: 1, timestamp: to - 4.days },
{ user_id: user2.id, event: 1, timestamp: to - 2.days },
{ user_id: unmatched_user.id, event: 1, timestamp: to - 2.days }
])
insert_events_into_click_house([
build_stubbed(:event, :pushed, project: project, author: user1, created_at: to - 1.day),
build_stubbed(:event, :pushed, project: project, author: user1, created_at: to - 2.days),
build_stubbed(:event, :pushed, project: project, author: user2, created_at: to - 1.day),
build_stubbed(:event, :pushed, project: project, author: user_without_ai_usage, created_at: to - 1.day)
])
end
it 'returns percentage of matched code contributors who used AI' do
......@@ -102,14 +81,12 @@ def format(date)
context 'for group' do
let_it_be(:container) { group }
let_it_be(:contributions_target) { subgroup }
it_behaves_like 'common ai usage rate service'
end
context 'for project' do
let_it_be(:container) { create(:project, group: subgroup).project_namespace }
let_it_be(:contributions_target) { container.reload }
let_it_be(:container) { project.project_namespace.reload }
it_behaves_like 'common ai usage rate service'
end
......
......@@ -42,24 +42,15 @@
let(:from) { 14.days.ago }
let(:to) { 1.day.ago }
def format(date)
date.to_time.utc.to_f
end
before do
insert_query = <<~SQL
INSERT INTO code_suggestion_usages
(user_id, event, timestamp)
VALUES
(#{user1.id}, 1, #{format(to - 3.days)}),
(#{user1.id}, 1, #{format(to - 4.days)}),
(#{user1.id}, 1, #{format(to + 1.day)}),
(#{user1.id}, 1, #{format(from - 1.day)}),
(#{user2.id}, 1, #{format(to - 2.days)}),
(#{unmatched_user.id}, 1, #{format(to - 2.days)})
SQL
ClickHouse::Client.execute(insert_query, :main)
clickhouse_fixture(:code_suggestion_usages, [
{ user_id: user1.id, event: 1, timestamp: to - 3.days },
{ user_id: user1.id, event: 1, timestamp: to - 4.days },
{ user_id: user1.id, event: 1, timestamp: to + 1.day },
{ user_id: user1.id, event: 1, timestamp: from - 1.day },
{ user_id: user2.id, event: 1, timestamp: to - 2.days },
{ user_id: unmatched_user.id, event: 1, timestamp: to - 2.days }
])
end
it 'returns last code suggestion day matched to filters grouped by user' do
......
......@@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Analytics::ValueStreamDashboard::ContributorCountService, feature_category: :value_stream_management do
RSpec.describe Analytics::ValueStreamDashboard::ContributorCountService, :freeze_time, feature_category: :value_stream_management do
let_it_be(:user) { create(:user) }
let_it_be(:other_user) { create(:user) }
let_it_be(:group) { create(:group).tap { |g| g.add_developer(user) } }
......@@ -73,10 +73,6 @@
stub_licensed_features(group_level_analytics_dashboard: true)
end
def format(date)
date.to_time.utc.to_f
end
context 'when no data present' do
it 'returns 0' do
expect(service_response).to be_success
......@@ -86,23 +82,23 @@ def format(date)
context 'when data present' do
before do
insert_query = <<~SQL
INSERT INTO events
(id, path, author_id, target_id, target_type, action, created_at, updated_at)
VALUES
-- push event
-- push event same user
-- issue creation event, different user
-- issue creation event, outside of the date range
-- issue creation event, for a different group
(1,'#{group.id}/',100,0,'',5,#{format(from + 5.days)},#{format(from + 5.days)}),
(2,'#{group.id}/',100,0,'',5,#{format(from + 8.days)},#{format(from + 8.days)}),
(3,'#{group.id}/',200,0,'Issue',1,#{format(from + 9.days)},#{format(from + 9.days)}),
(4,'#{group.id}/',200,0,'Issue',1,#{format(from + 5.years)},#{format(from + 5.years)}),
(5,'0/',200,0,'Issue',1,#{format(from + 2.days)},#{format(from + 2.days)})
SQL
ClickHouse::Client.execute(insert_query, :main)
clickhouse_fixture(:events, [
# push event
{ id: 1, path: "#{group.id}/", author_id: 100, target_id: 0, target_type: '', action: 5,
created_at: from + 5.days, updated_at: from + 5.days },
# push event same user
{ id: 2, path: "#{group.id}/", author_id: 100, target_id: 0, target_type: '', action: 5,
created_at: from + 8.days, updated_at: from + 8.days },
# issue creation event, different user
{ id: 3, path: "#{group.id}/", author_id: 200, target_id: 0, target_type: 'Issue', action: 1,
created_at: from + 9.days, updated_at: from + 9.days },
# issue creation event, outside of the date range
{ id: 4, path: "#{group.id}/", author_id: 200, target_id: 0, target_type: 'Issue', action: 1,
created_at: from + 5.years, updated_at: from + 5.years },
# issue creation event, for a different group
{ id: 5, path: "0/", author_id: 200, target_id: 0, target_type: 'Issue', action: 1, created_at: from + 2.days,
updated_at: from + 2.days }
])
end
it 'returns distinct contributor count from ClickHouse' do
......
......@@ -3,8 +3,6 @@
require 'spec_helper'
RSpec.describe ::Ci::CollectQueueingHistoryService, :click_house, :enable_admin_mode, feature_category: :fleet_visibility do
include ClickHouseHelpers
let_it_be(:project) { create(:project) }
let_it_be(:instance_runner) { create(:ci_runner, :instance, :with_runner_manager) }
let_it_be(:project_runner) { create(:ci_runner, :project, :with_runner_manager) }
......
......@@ -4,8 +4,6 @@
RSpec.describe Ci::Runners::GenerateUsageCsvService, :enable_admin_mode, :click_house,
feature_category: :fleet_visibility do
include ClickHouseHelpers
let_it_be(:current_user) { build_stubbed(:admin) }
let_it_be(:instance_runner) { create(:ci_runner, :instance, :with_runner_manager) }
let_it_be(:group) { create(:group) }
......
......@@ -4,8 +4,6 @@
RSpec.describe Ci::Runners::GetUsageByProjectService, :click_house, :enable_admin_mode,
feature_category: :fleet_visibility do
include ClickHouseHelpers
let_it_be(:user) { create(:admin) }
let_it_be(:instance_runner) { create(:ci_runner, :instance, :with_runner_manager) }
let_it_be(:group) { create(:group) }
......
......@@ -4,8 +4,6 @@
RSpec.describe Ci::Runners::GetUsageService, :click_house, :enable_admin_mode,
feature_category: :fleet_visibility do
include ClickHouseHelpers
let_it_be(:project) { create(:project) }
let_it_be(:instance_runners) { create_list(:ci_runner, 3, :instance, :with_runner_manager) }
let_it_be(:group) { create(:group) }
......
......@@ -4,8 +4,6 @@
RSpec.describe Ci::Runners::SendUsageCsvService, :enable_admin_mode, :click_house, :freeze_time,
feature_category: :fleet_visibility do
include ClickHouseHelpers
let_it_be(:current_user) { build_stubbed(:admin) }
let_it_be(:instance_runner) { create(:ci_runner, :instance, :with_runner_manager) }
......
......@@ -3,8 +3,6 @@
require 'spec_helper'
RSpec.describe ClickHouse::RebuildMaterializedViewService, :click_house, feature_category: :database do
include ClickHouseHelpers
let_it_be(:event1) { create(:event, :pushed) }
let_it_be(:event2) { create(:event, :pushed) }
let_it_be(:event3) { create(:closed_issue_event) }
......
......@@ -4,7 +4,7 @@
RSpec.describe ClickHouse::MigrationSupport::MigrationContext,
click_house: :without_migrations, feature_category: :database do
include ClickHouseTestHelpers
include ClickHouseSchemaHelpers
# We don't need to delete data since we don't modify Postgres data
self.use_transactional_tests = false
......
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