Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/gitlab/usage_data_spec.rb')
-rw-r--r--spec/lib/gitlab/usage_data_spec.rb129
1 files changed, 124 insertions, 5 deletions
diff --git a/spec/lib/gitlab/usage_data_spec.rb b/spec/lib/gitlab/usage_data_spec.rb
index 01701f7aebd..d4b6ac09261 100644
--- a/spec/lib/gitlab/usage_data_spec.rb
+++ b/spec/lib/gitlab/usage_data_spec.rb
@@ -172,6 +172,7 @@ RSpec.describe Gitlab::UsageData, :aggregate_failures do
another_project = create(:project, :repository, creator: another_user)
create(:remote_mirror, project: another_project, enabled: false)
create(:snippet, author: user)
+ create(:suggestion, note: create(:note, project: project))
end
expect(described_class.usage_activity_by_stage_create({})).to include(
@@ -181,7 +182,8 @@ RSpec.describe Gitlab::UsageData, :aggregate_failures do
projects_with_disable_overriding_approvers_per_merge_request: 2,
projects_without_disable_overriding_approvers_per_merge_request: 6,
remote_mirrors: 2,
- snippets: 2
+ snippets: 2,
+ suggestions: 2
)
expect(described_class.usage_activity_by_stage_create(described_class.last_28_days_time_period)).to include(
deploy_keys: 1,
@@ -190,7 +192,8 @@ RSpec.describe Gitlab::UsageData, :aggregate_failures do
projects_with_disable_overriding_approvers_per_merge_request: 1,
projects_without_disable_overriding_approvers_per_merge_request: 3,
remote_mirrors: 1,
- snippets: 1
+ snippets: 1,
+ suggestions: 1
)
end
end
@@ -571,7 +574,6 @@ RSpec.describe Gitlab::UsageData, :aggregate_failures do
expect(count_data[:projects_with_repositories_enabled]).to eq(3)
expect(count_data[:projects_with_error_tracking_enabled]).to eq(1)
expect(count_data[:projects_with_tracing_enabled]).to eq(1)
- expect(count_data[:projects_with_alerts_service_enabled]).to eq(1)
expect(count_data[:projects_with_enabled_alert_integrations]).to eq(1)
expect(count_data[:projects_with_prometheus_alerts]).to eq(2)
expect(count_data[:projects_with_terraform_reports]).to eq(2)
@@ -745,10 +747,34 @@ RSpec.describe Gitlab::UsageData, :aggregate_failures do
end
end
+ describe '.runners_usage' do
+ before do
+ project = build(:project)
+ create_list(:ci_runner, 2, :instance_type, :online)
+ create(:ci_runner, :group, :online)
+ create(:ci_runner, :group, :inactive)
+ create_list(:ci_runner, 3, :project_type, :online, projects: [project])
+ end
+
+ subject { described_class.runners_usage }
+
+ it 'gathers runner usage counts correctly' do
+ expect(subject[:ci_runners]).to eq(7)
+ expect(subject[:ci_runners_instance_type_active]).to eq(2)
+ expect(subject[:ci_runners_group_type_active]).to eq(1)
+ expect(subject[:ci_runners_project_type_active]).to eq(3)
+
+ expect(subject[:ci_runners_instance_type_active_online]).to eq(2)
+ expect(subject[:ci_runners_group_type_active_online]).to eq(1)
+ expect(subject[:ci_runners_project_type_active_online]).to eq(3)
+ end
+ end
+
describe '.usage_counters' do
subject { described_class.usage_counters }
it { is_expected.to include(:kubernetes_agent_gitops_sync) }
+ it { is_expected.to include(:kubernetes_agent_k8s_api_proxy_request) }
it { is_expected.to include(:static_site_editor_views) }
it { is_expected.to include(:package_events_i_package_pull_package) }
it { is_expected.to include(:package_events_i_package_delete_package_by_user) }
@@ -1158,8 +1184,17 @@ RSpec.describe Gitlab::UsageData, :aggregate_failures do
end
describe ".system_usage_data_settings" do
+ let(:prometheus_client) { double(Gitlab::PrometheusClient) }
+
before do
allow(described_class).to receive(:operating_system).and_return('ubuntu-20.04')
+ expect(prometheus_client).to receive(:query).with(/gitlab_usage_ping:gitaly_apdex:ratio_avg_over_time_5m/).and_return([
+ {
+ 'metric' => {},
+ 'value' => [1616016381.473, '0.95']
+ }
+ ])
+ expect(described_class).to receive(:with_prometheus_client).and_yield(prometheus_client)
end
subject { described_class.system_usage_data_settings }
@@ -1171,6 +1206,10 @@ RSpec.describe Gitlab::UsageData, :aggregate_failures do
it 'populates operating system information' do
expect(subject[:settings][:operating_system]).to eq('ubuntu-20.04')
end
+
+ it 'gathers gitaly apdex', :aggregate_failures do
+ expect(subject[:settings][:gitaly_apdex]).to be_within(0.001).of(0.95)
+ end
end
end
@@ -1291,10 +1330,10 @@ RSpec.describe Gitlab::UsageData, :aggregate_failures do
'p_analytics_repo' => 123,
'i_analytics_cohorts' => 123,
'i_analytics_dev_ops_score' => 123,
- 'i_analytics_dev_ops_adoption' => 123,
'i_analytics_instance_statistics' => 123,
'p_analytics_merge_request' => 123,
- 'g_analytics_merge_request' => 123,
+ 'i_analytics_dev_ops_adoption' => 123,
+ 'users_viewing_analytics_group_devops_adoption' => 123,
'analytics_unique_visits_for_any_target' => 543,
'analytics_unique_visits_for_any_target_monthly' => 987
}
@@ -1426,6 +1465,86 @@ RSpec.describe Gitlab::UsageData, :aggregate_failures do
end
end
+ describe '.email_campaign_counts' do
+ subject { described_class.send(:email_campaign_counts) }
+
+ context 'when queries time out' do
+ before do
+ allow_any_instance_of(ActiveRecord::Relation)
+ .to receive(:count).and_raise(ActiveRecord::StatementInvalid.new(''))
+ end
+
+ it 'returns -1 for email campaign data' do
+ expected_data = {
+ "in_product_marketing_email_create_0_sent" => -1,
+ "in_product_marketing_email_create_0_cta_clicked" => -1,
+ "in_product_marketing_email_create_1_sent" => -1,
+ "in_product_marketing_email_create_1_cta_clicked" => -1,
+ "in_product_marketing_email_create_2_sent" => -1,
+ "in_product_marketing_email_create_2_cta_clicked" => -1,
+ "in_product_marketing_email_verify_0_sent" => -1,
+ "in_product_marketing_email_verify_0_cta_clicked" => -1,
+ "in_product_marketing_email_verify_1_sent" => -1,
+ "in_product_marketing_email_verify_1_cta_clicked" => -1,
+ "in_product_marketing_email_verify_2_sent" => -1,
+ "in_product_marketing_email_verify_2_cta_clicked" => -1,
+ "in_product_marketing_email_trial_0_sent" => -1,
+ "in_product_marketing_email_trial_0_cta_clicked" => -1,
+ "in_product_marketing_email_trial_1_sent" => -1,
+ "in_product_marketing_email_trial_1_cta_clicked" => -1,
+ "in_product_marketing_email_trial_2_sent" => -1,
+ "in_product_marketing_email_trial_2_cta_clicked" => -1,
+ "in_product_marketing_email_team_0_sent" => -1,
+ "in_product_marketing_email_team_0_cta_clicked" => -1,
+ "in_product_marketing_email_team_1_sent" => -1,
+ "in_product_marketing_email_team_1_cta_clicked" => -1,
+ "in_product_marketing_email_team_2_sent" => -1,
+ "in_product_marketing_email_team_2_cta_clicked" => -1
+ }
+
+ expect(subject).to eq(expected_data)
+ end
+ end
+
+ context 'when there are entries' do
+ before do
+ create(:in_product_marketing_email, track: :create, series: 0, cta_clicked_at: Time.zone.now)
+ create(:in_product_marketing_email, track: :verify, series: 0)
+ end
+
+ it 'gathers email campaign data' do
+ expected_data = {
+ "in_product_marketing_email_create_0_sent" => 1,
+ "in_product_marketing_email_create_0_cta_clicked" => 1,
+ "in_product_marketing_email_create_1_sent" => 0,
+ "in_product_marketing_email_create_1_cta_clicked" => 0,
+ "in_product_marketing_email_create_2_sent" => 0,
+ "in_product_marketing_email_create_2_cta_clicked" => 0,
+ "in_product_marketing_email_verify_0_sent" => 1,
+ "in_product_marketing_email_verify_0_cta_clicked" => 0,
+ "in_product_marketing_email_verify_1_sent" => 0,
+ "in_product_marketing_email_verify_1_cta_clicked" => 0,
+ "in_product_marketing_email_verify_2_sent" => 0,
+ "in_product_marketing_email_verify_2_cta_clicked" => 0,
+ "in_product_marketing_email_trial_0_sent" => 0,
+ "in_product_marketing_email_trial_0_cta_clicked" => 0,
+ "in_product_marketing_email_trial_1_sent" => 0,
+ "in_product_marketing_email_trial_1_cta_clicked" => 0,
+ "in_product_marketing_email_trial_2_sent" => 0,
+ "in_product_marketing_email_trial_2_cta_clicked" => 0,
+ "in_product_marketing_email_team_0_sent" => 0,
+ "in_product_marketing_email_team_0_cta_clicked" => 0,
+ "in_product_marketing_email_team_1_sent" => 0,
+ "in_product_marketing_email_team_1_cta_clicked" => 0,
+ "in_product_marketing_email_team_2_sent" => 0,
+ "in_product_marketing_email_team_2_cta_clicked" => 0
+ }
+
+ expect(subject).to eq(expected_data)
+ end
+ end
+ end
+
describe '.snowplow_event_counts' do
let_it_be(:time_period) { { collector_tstamp: 8.days.ago..1.day.ago } }