debian-mirror-gitlab/spec/support/helpers/usage_data_helpers.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

208 lines
6 KiB
Ruby
Raw Permalink Normal View History

2020-04-22 19:07:51 +05:30
# frozen_string_literal: true
module UsageDataHelpers
COUNTS_KEYS = %i(
2023-03-04 22:38:38 +05:30
assignee_lists
ci_builds
ci_external_pipelines
ci_pipeline_config_auto_devops
ci_pipeline_config_repository
ci_triggers
ci_pipeline_schedules
auto_devops_enabled
auto_devops_disabled
deploy_keys
deployments
successful_deployments
failed_deployments
environments
clusters
clusters_enabled
project_clusters_enabled
group_clusters_enabled
instance_clusters_enabled
clusters_disabled
project_clusters_disabled
group_clusters_disabled
instance_clusters_disabled
clusters_platforms_eks
clusters_platforms_gke
clusters_platforms_user
clusters_integrations_prometheus
clusters_management_project
in_review_folder
grafana_integrated_projects
groups
issues
issues_created_from_gitlab_error_tracking_ui
issues_with_associated_zoom_link
issues_using_zoom_quick_actions
issues_with_embedded_grafana_charts_approx
incident_issues
keys
label_lists
labels
lfs_objects
merge_requests
milestone_lists
milestones
notes
pool_repositories
projects
projects_imported_from_github
projects_asana_active
projects_jenkins_active
projects_jira_active
projects_jira_dvcs_cloud_active
projects_jira_dvcs_server_active
projects_slack_active
projects_slack_slash_commands_active
projects_custom_issue_tracker_active
projects_mattermost_active
projects_prometheus_active
projects_with_repositories_enabled
projects_with_error_tracking_enabled
projects_with_enabled_alert_integrations
projects_with_terraform_reports
projects_with_terraform_states
pages_domains
protected_branches
protected_branches_except_default
releases
remote_mirrors
snippets
personal_snippets
project_snippets
suggestions
terraform_reports
terraform_states
todos
uploads
web_hooks
user_preferences_user_gitpod_enabled
).freeze
2020-04-22 19:07:51 +05:30
USAGE_DATA_KEYS = %i(
2023-03-04 22:38:38 +05:30
counts
counts_monthly
recorded_at
mattermost_enabled
signup_enabled
ldap_enabled
gravatar_enabled
omniauth_enabled
reply_by_email_enabled
container_registry_enabled
dependency_proxy_enabled
gitlab_shared_runners_enabled
gitlab_pages
git
gitaly
database
prometheus_metrics_enabled
object_store
topology
).freeze
2020-05-24 23:13:21 +05:30
2020-06-23 00:09:42 +05:30
def stub_usage_data_connections
2023-03-17 16:20:25 +05:30
Gitlab::Database.database_base_models_with_gitlab_shared.each_value do |base_model|
allow(base_model.connection).to receive(:transaction_open?).and_return(false)
end
2021-12-11 22:18:48 +05:30
2020-06-23 00:09:42 +05:30
allow(Gitlab::Prometheus::Internal).to receive(:prometheus_enabled?).and_return(false)
end
2021-04-29 21:17:54 +05:30
def stub_prometheus_queries
2023-06-20 00:43:36 +05:30
stub_request(:get, %r{^https?://.*:9090/-/ready})
2021-04-29 21:17:54 +05:30
.to_return(
status: 200,
body: [{}].to_json,
headers: { 'Content-Type' => 'application/json' }
)
2023-06-20 00:43:36 +05:30
stub_request(:get, %r{^https?://.*:9090/api/v1/query\?query=.*})
2021-04-29 21:17:54 +05:30
.to_return(
status: 200,
body: [{}].to_json,
headers: { 'Content-Type' => 'application/json' }
)
end
2022-03-02 08:16:31 +05:30
def stub_database_flavor_check(flavor = nil)
allow(ApplicationRecord.database).to receive(:flavor).and_return(flavor)
end
2021-01-03 14:25:43 +05:30
def clear_memoized_values(values)
values.each { |v| described_class.clear_memoization(v) }
end
2020-05-24 23:13:21 +05:30
def stub_object_store_settings
allow(Settings).to receive(:[]).with('artifacts')
.and_return(
{ 'enabled' => true,
2022-10-11 01:57:18 +05:30
'object_store' =>
2020-05-24 23:13:21 +05:30
{ 'enabled' => true,
2022-10-11 01:57:18 +05:30
'remote_directory' => 'artifacts',
'direct_upload' => true,
'connection' =>
2020-05-24 23:13:21 +05:30
{ 'provider' => 'AWS', 'aws_access_key_id' => 'minio', 'aws_secret_access_key' => 'gdk-minio', 'region' => 'gdk', 'endpoint' => 'http://127.0.0.1:9000', 'path_style' => true },
'proxy_download' => false } }
)
allow(Settings).to receive(:[]).with('external_diffs').and_return({ 'enabled' => false })
allow(Settings).to receive(:[]).with('lfs')
.and_return(
{ 'enabled' => true,
2022-10-11 01:57:18 +05:30
'object_store' =>
2020-05-24 23:13:21 +05:30
{ 'enabled' => false,
2022-10-11 01:57:18 +05:30
'remote_directory' => 'lfs-objects',
'direct_upload' => true,
'connection' =>
2020-05-24 23:13:21 +05:30
{ 'provider' => 'AWS', 'aws_access_key_id' => 'minio', 'aws_secret_access_key' => 'gdk-minio', 'region' => 'gdk', 'endpoint' => 'http://127.0.0.1:9000', 'path_style' => true },
'proxy_download' => false } }
)
allow(Settings).to receive(:[]).with('uploads')
.and_return(
{ 'object_store' =>
{ 'enabled' => false,
2022-10-11 01:57:18 +05:30
'remote_directory' => 'uploads',
'direct_upload' => true,
'connection' =>
2020-05-24 23:13:21 +05:30
{ 'provider' => 'AWS', 'aws_access_key_id' => 'minio', 'aws_secret_access_key' => 'gdk-minio', 'region' => 'gdk', 'endpoint' => 'http://127.0.0.1:9000', 'path_style' => true },
2022-10-11 01:57:18 +05:30
'proxy_download' => false } }
2020-05-24 23:13:21 +05:30
)
allow(Settings).to receive(:[]).with('packages')
.and_return(
{ 'enabled' => true,
2022-10-11 01:57:18 +05:30
'object_store' =>
2020-05-24 23:13:21 +05:30
{ 'enabled' => false,
2022-10-11 01:57:18 +05:30
'remote_directory' => 'packages',
'direct_upload' => false,
'connection' =>
2020-05-24 23:13:21 +05:30
{ 'provider' => 'AWS', 'aws_access_key_id' => 'minio', 'aws_secret_access_key' => 'gdk-minio', 'region' => 'gdk', 'endpoint' => 'http://127.0.0.1:9000', 'path_style' => true },
'proxy_download' => false } }
)
end
2020-06-23 00:09:42 +05:30
2020-11-24 15:15:51 +05:30
def expect_prometheus_client_to(*receive_matchers)
receive_matchers.each { |m| expect(prometheus_client).to m }
2020-07-28 23:09:34 +05:30
end
2021-01-03 14:25:43 +05:30
def for_defined_days_back(days: [31, 3])
2020-07-28 23:09:34 +05:30
days.each do |n|
2021-01-03 14:25:43 +05:30
travel_to(n.days.ago) do
2020-07-28 23:09:34 +05:30
yield
end
2020-06-23 00:09:42 +05:30
end
end
2021-04-29 21:17:54 +05:30
def load_sample_metric_definition(filename: 'sample_metric.yml')
load_metric_yaml(fixture_file("lib/generators/gitlab/usage_metric_definition_generator/#{filename}"))
end
def load_metric_yaml(data)
::Gitlab::Config::Loader::Yaml.new(data).load_raw!
end
2020-04-22 19:07:51 +05:30
end