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_counters/hll_redis_counter_spec.rb')
-rw-r--r--spec/lib/gitlab/usage_data_counters/hll_redis_counter_spec.rb165
1 files changed, 29 insertions, 136 deletions
diff --git a/spec/lib/gitlab/usage_data_counters/hll_redis_counter_spec.rb b/spec/lib/gitlab/usage_data_counters/hll_redis_counter_spec.rb
index fc1d66d1d62..7bef14d5f7a 100644
--- a/spec/lib/gitlab/usage_data_counters/hll_redis_counter_spec.rb
+++ b/spec/lib/gitlab/usage_data_counters/hll_redis_counter_spec.rb
@@ -8,9 +8,6 @@ RSpec.describe Gitlab::UsageDataCounters::HLLRedisCounter, :clean_gitlab_redis_s
let(:entity3) { '34rfjuuy-ce56-sa35-ds34-dfer567dfrf2' }
let(:entity4) { '8b9a2671-2abf-4bec-a682-22f6a8f7bf31' }
- let(:default_context) { 'default' }
- let(:invalid_context) { 'invalid' }
-
around do |example|
# We need to freeze to a reference time
# because visits are grouped by the week number in the year
@@ -27,62 +24,39 @@ RSpec.describe Gitlab::UsageDataCounters::HLLRedisCounter, :clean_gitlab_redis_s
describe '.known_events' do
let(:ce_event) { { "name" => "ce_event" } }
-
- context 'with use_metric_definitions_for_events_list disabled' do
- let(:ce_temp_dir) { Dir.mktmpdir }
- let(:ce_temp_file) { Tempfile.new(%w[common .yml], ce_temp_dir) }
-
- before do
- stub_feature_flags(use_metric_definitions_for_events_list: false)
- stub_const("#{described_class}::KNOWN_EVENTS_PATH", File.expand_path('*.yml', ce_temp_dir))
- File.open(ce_temp_file.path, "w+b") { |f| f.write [ce_event].to_yaml }
- end
-
- after do
- ce_temp_file.unlink
- FileUtils.remove_entry(ce_temp_dir) if Dir.exist?(ce_temp_dir)
- end
-
- it 'returns ce events' do
- expect(described_class.known_events).to include(ce_event)
- end
+ let(:removed_ce_event) { { "name" => "removed_ce_event" } }
+ let(:metric_definition) do
+ Gitlab::Usage::MetricDefinition.new('ce_metric',
+ {
+ key_path: 'ce_metric_weekly',
+ status: 'active',
+ options: {
+ events: [ce_event['name']]
+ }
+ })
end
- context 'with use_metric_definitions_for_events_list enabled' do
- let(:removed_ce_event) { { "name" => "removed_ce_event" } }
- let(:metric_definition) do
- Gitlab::Usage::MetricDefinition.new('ce_metric',
- {
- key_path: 'ce_metric_weekly',
- status: 'active',
- options: {
- events: [ce_event['name']]
- }
- })
- end
-
- let(:removed_metric_definition) do
- Gitlab::Usage::MetricDefinition.new('removed_ce_metric',
- {
- key_path: 'removed_ce_metric_weekly',
- status: 'removed',
- options: {
- events: [removed_ce_event['name']]
- }
- })
- end
+ let(:removed_metric_definition) do
+ Gitlab::Usage::MetricDefinition.new('removed_ce_metric',
+ {
+ key_path: 'removed_ce_metric_weekly',
+ status: 'removed',
+ options: {
+ events: [removed_ce_event['name']]
+ }
+ })
+ end
- before do
- allow(Gitlab::Usage::MetricDefinition).to receive(:all).and_return([metric_definition, removed_metric_definition])
- end
+ before do
+ allow(Gitlab::Usage::MetricDefinition).to receive(:all).and_return([metric_definition, removed_metric_definition])
+ end
- it 'returns ce events' do
- expect(described_class.known_events).to include(ce_event)
- end
+ it 'returns ce events' do
+ expect(described_class.known_events).to include(ce_event)
+ end
- it 'does not return removed events' do
- expect(described_class.known_events).not_to include(removed_ce_event)
- end
+ it 'does not return removed events' do
+ expect(described_class.known_events).not_to include(removed_ce_event)
end
end
@@ -96,7 +70,6 @@ RSpec.describe Gitlab::UsageDataCounters::HLLRedisCounter, :clean_gitlab_redis_s
let(:no_slot) { 'no_slot' }
let(:different_aggregation) { 'different_aggregation' }
let(:custom_daily_event) { 'g_analytics_custom' }
- let(:context_event) { 'context_event' }
let(:global_category) { 'global' }
let(:compliance_category) { 'compliance' }
@@ -111,8 +84,7 @@ RSpec.describe Gitlab::UsageDataCounters::HLLRedisCounter, :clean_gitlab_redis_s
{ name: category_productivity_event },
{ name: compliance_slot_event },
{ name: no_slot },
- { name: different_aggregation },
- { name: context_event }
+ { name: different_aggregation }
].map(&:with_indifferent_access)
end
@@ -214,43 +186,6 @@ RSpec.describe Gitlab::UsageDataCounters::HLLRedisCounter, :clean_gitlab_redis_s
end
end
- describe '.track_event_in_context' do
- context 'with valid contex' do
- it 'increments context event counter' do
- expect(Gitlab::Redis::HLL).to receive(:add) do |kwargs|
- expect(kwargs[:key]).to match(/^#{default_context}_.*/)
- end
-
- described_class.track_event_in_context(context_event, values: entity1, context: default_context)
- end
-
- it 'tracks events with multiple values' do
- values = [entity1, entity2]
- expect(Gitlab::Redis::HLL).to receive(:add).with(key: /g_analytics_contribution/,
- value: values,
- expiry: described_class::KEY_EXPIRY_LENGTH)
-
- described_class.track_event_in_context(:g_analytics_contribution, values: values, context: default_context)
- end
- end
-
- context 'with empty context' do
- it 'does not increment a counter' do
- expect(Gitlab::Redis::HLL).not_to receive(:add)
-
- described_class.track_event_in_context(context_event, values: entity1, context: '')
- end
- end
-
- context 'when sending invalid context' do
- it 'does not increment a counter' do
- expect(Gitlab::Redis::HLL).not_to receive(:add)
-
- described_class.track_event_in_context(context_event, values: entity1, context: invalid_context)
- end
- end
- end
-
describe '.unique_events' do
before do
# events in current week, should not be counted as week is not complete
@@ -360,48 +295,6 @@ RSpec.describe Gitlab::UsageDataCounters::HLLRedisCounter, :clean_gitlab_redis_s
end
end
- describe 'context level tracking' do
- using RSpec::Parameterized::TableSyntax
-
- let(:known_events) do
- [
- { name: 'event_name_1' },
- { name: 'event_name_2' },
- { name: 'event_name_3' }
- ].map(&:with_indifferent_access)
- end
-
- before do
- allow(described_class).to receive(:known_events).and_return(known_events)
- allow(described_class).to receive(:categories).and_return(%w(category1 category2))
-
- described_class.track_event_in_context('event_name_1', values: [entity1, entity3], context: default_context, time: 2.days.ago)
- described_class.track_event_in_context('event_name_1', values: entity3, context: default_context, time: 2.days.ago)
- described_class.track_event_in_context('event_name_1', values: entity3, context: invalid_context, time: 2.days.ago)
- described_class.track_event_in_context('event_name_2', values: [entity1, entity2], context: '', time: 2.weeks.ago)
- end
-
- subject(:unique_events) { described_class.unique_events(event_names: event_names, start_date: 4.weeks.ago, end_date: Date.current, context: context) }
-
- context 'with correct arguments' do
- where(:event_names, :context, :value) do
- ['event_name_1'] | 'default' | 2
- ['event_name_1'] | '' | 0
- ['event_name_2'] | '' | 0
- end
-
- with_them do
- it { is_expected.to eq value }
- end
- end
-
- context 'with invalid context' do
- it 'raise error' do
- expect { described_class.unique_events(event_names: 'event_name_1', start_date: 4.weeks.ago, end_date: Date.current, context: invalid_context) }.to raise_error(Gitlab::UsageDataCounters::HLLRedisCounter::InvalidContext)
- end
- end
- end
-
describe '.calculate_events_union' do
let(:time_range) { { start_date: 7.days.ago, end_date: DateTime.current } }
let(:known_events) do