summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/usage/service_ping_report_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/gitlab/usage/service_ping_report_spec.rb')
-rw-r--r--spec/lib/gitlab/usage/service_ping_report_spec.rb137
1 files changed, 52 insertions, 85 deletions
diff --git a/spec/lib/gitlab/usage/service_ping_report_spec.rb b/spec/lib/gitlab/usage/service_ping_report_spec.rb
index 1f62ddd0bbb..b6119ab52ec 100644
--- a/spec/lib/gitlab/usage/service_ping_report_spec.rb
+++ b/spec/lib/gitlab/usage/service_ping_report_spec.rb
@@ -7,119 +7,86 @@ RSpec.describe Gitlab::Usage::ServicePingReport, :use_clean_rails_memory_store_c
let(:usage_data) { { uuid: "1111", counts: { issue: 0 } } }
- context 'when feature merge_service_ping_instrumented_metrics enabled' do
- before do
- stub_feature_flags(merge_service_ping_instrumented_metrics: true)
+ before do
+ allow_next_instance_of(Gitlab::Usage::ServicePing::PayloadKeysProcessor) do |instance|
+ allow(instance).to receive(:missing_key_paths).and_return([])
+ end
- allow_next_instance_of(Gitlab::Usage::ServicePing::PayloadKeysProcessor) do |instance|
- allow(instance).to receive(:missing_key_paths).and_return([])
- end
+ allow_next_instance_of(Gitlab::Usage::ServicePing::InstrumentedPayload) do |instance|
+ allow(instance).to receive(:build).and_return({})
+ end
+ end
- allow_next_instance_of(Gitlab::Usage::ServicePing::InstrumentedPayload) do |instance|
- allow(instance).to receive(:build).and_return({})
- end
+ context 'all_metrics_values' do
+ it 'generates the service ping when there are no missing values' do
+ expect(Gitlab::UsageData).to receive(:data).and_return(usage_data)
+ expect(described_class.for(output: :all_metrics_values)).to eq({ uuid: "1111", counts: { issue: 0 } })
end
- context 'all_metrics_values' do
- it 'generates the service ping when there are no missing values' do
- expect(Gitlab::UsageData).to receive(:data).and_return(usage_data)
- expect(described_class.for(output: :all_metrics_values)).to eq({ uuid: "1111", counts: { issue: 0 } })
+ it 'generates the service ping with the missing values' do
+ expect_next_instance_of(Gitlab::Usage::ServicePing::PayloadKeysProcessor, usage_data) do |instance|
+ expect(instance).to receive(:missing_instrumented_metrics_key_paths).and_return(['counts.boards'])
end
- it 'generates the service ping with the missing values' do
- expect_next_instance_of(Gitlab::Usage::ServicePing::PayloadKeysProcessor, usage_data) do |instance|
- expect(instance).to receive(:missing_instrumented_metrics_key_paths).and_return(['counts.boards'])
- end
-
- expect_next_instance_of(Gitlab::Usage::ServicePing::InstrumentedPayload, ['counts.boards'], :with_value) do |instance|
- expect(instance).to receive(:build).and_return({ counts: { boards: 1 } })
- end
-
- expect(Gitlab::UsageData).to receive(:data).and_return(usage_data)
- expect(described_class.for(output: :all_metrics_values)).to eq({ uuid: "1111", counts: { issue: 0, boards: 1 } })
+ expect_next_instance_of(Gitlab::Usage::ServicePing::InstrumentedPayload, ['counts.boards'], :with_value) do |instance|
+ expect(instance).to receive(:build).and_return({ counts: { boards: 1 } })
end
- end
-
- context 'for output: :metrics_queries' do
- it 'generates the service ping' do
- expect(Gitlab::UsageData).to receive(:data).and_return(usage_data)
- described_class.for(output: :metrics_queries)
- end
+ expect(Gitlab::UsageData).to receive(:data).and_return(usage_data)
+ expect(described_class.for(output: :all_metrics_values)).to eq({ uuid: "1111", counts: { issue: 0, boards: 1 } })
end
+ end
- context 'for output: :non_sql_metrics_values' do
- it 'generates the service ping' do
- expect(Gitlab::UsageData).to receive(:data).and_return(usage_data)
+ context 'for output: :metrics_queries' do
+ it 'generates the service ping' do
+ expect(Gitlab::UsageData).to receive(:data).and_return(usage_data)
- described_class.for(output: :non_sql_metrics_values)
- end
+ described_class.for(output: :metrics_queries)
end
+ end
- context 'when using cached' do
- context 'for cached: true' do
- let(:new_usage_data) { { uuid: "1112" } }
-
- it 'caches the values' do
- allow(Gitlab::UsageData).to receive(:data).and_return(usage_data, new_usage_data)
+ context 'for output: :non_sql_metrics_values' do
+ it 'generates the service ping' do
+ expect(Gitlab::UsageData).to receive(:data).and_return(usage_data)
- expect(described_class.for(output: :all_metrics_values)).to eq(usage_data)
- expect(described_class.for(output: :all_metrics_values, cached: true)).to eq(usage_data)
+ described_class.for(output: :non_sql_metrics_values)
+ end
+ end
- expect(Rails.cache.fetch('usage_data')).to eq(usage_data)
- end
+ context 'when using cached' do
+ context 'for cached: true' do
+ let(:new_usage_data) { { uuid: "1112" } }
- it 'writes to cache and returns fresh data' do
- allow(Gitlab::UsageData).to receive(:data).and_return(usage_data, new_usage_data)
+ it 'caches the values' do
+ allow(Gitlab::UsageData).to receive(:data).and_return(usage_data, new_usage_data)
- expect(described_class.for(output: :all_metrics_values)).to eq(usage_data)
- expect(described_class.for(output: :all_metrics_values)).to eq(new_usage_data)
- expect(described_class.for(output: :all_metrics_values, cached: true)).to eq(new_usage_data)
+ expect(described_class.for(output: :all_metrics_values)).to eq(usage_data)
+ expect(described_class.for(output: :all_metrics_values, cached: true)).to eq(usage_data)
- expect(Rails.cache.fetch('usage_data')).to eq(new_usage_data)
- end
+ expect(Rails.cache.fetch('usage_data')).to eq(usage_data)
end
- context 'when no caching' do
- let(:new_usage_data) { { uuid: "1112" } }
-
- it 'returns fresh data' do
- allow(Gitlab::UsageData).to receive(:data).and_return(usage_data, new_usage_data)
-
- expect(described_class.for(output: :all_metrics_values)).to eq(usage_data)
- expect(described_class.for(output: :all_metrics_values)).to eq(new_usage_data)
-
- expect(Rails.cache.fetch('usage_data')).to eq(new_usage_data)
- end
- end
- end
- end
+ it 'writes to cache and returns fresh data' do
+ allow(Gitlab::UsageData).to receive(:data).and_return(usage_data, new_usage_data)
- context 'when feature merge_service_ping_instrumented_metrics disabled' do
- before do
- stub_feature_flags(merge_service_ping_instrumented_metrics: false)
- end
+ expect(described_class.for(output: :all_metrics_values)).to eq(usage_data)
+ expect(described_class.for(output: :all_metrics_values)).to eq(new_usage_data)
+ expect(described_class.for(output: :all_metrics_values, cached: true)).to eq(new_usage_data)
- context 'all_metrics_values' do
- it 'generates the service ping when there are no missing values' do
- expect(Gitlab::UsageData).to receive(:data).and_return(usage_data)
- expect(described_class.for(output: :all_metrics_values)).to eq({ uuid: "1111", counts: { issue: 0 } })
+ expect(Rails.cache.fetch('usage_data')).to eq(new_usage_data)
end
end
- context 'for output: :metrics_queries' do
- it 'generates the service ping' do
- expect(Gitlab::UsageData).to receive(:data).and_return(usage_data)
+ context 'when no caching' do
+ let(:new_usage_data) { { uuid: "1112" } }
- described_class.for(output: :metrics_queries)
- end
- end
+ it 'returns fresh data' do
+ allow(Gitlab::UsageData).to receive(:data).and_return(usage_data, new_usage_data)
- context 'for output: :non_sql_metrics_values' do
- it 'generates the service ping' do
- expect(Gitlab::UsageData).to receive(:data).and_return(usage_data)
+ expect(described_class.for(output: :all_metrics_values)).to eq(usage_data)
+ expect(described_class.for(output: :all_metrics_values)).to eq(new_usage_data)
- described_class.for(output: :non_sql_metrics_values)
+ expect(Rails.cache.fetch('usage_data')).to eq(new_usage_data)
end
end
end