Commit f73a06a6 authored by alinamihaila's avatar alinamihaila

Add feature as an option

parent 6547a3b7
...@@ -10,18 +10,18 @@ module RedisTrackingHelper ...@@ -10,18 +10,18 @@ module RedisTrackingHelper
# #
# include RedisTrackingHelper # include RedisTrackingHelper
# #
# track_redis_hll_event :index, :show, name: 'i_analytics_dev_ops_score' # track_redis_hll_event :index, :show, name: 'i_analytics_dev_ops_score', feature: :my_feature
# #
class_methods do class_methods do
def track_redis_hll_events(*controller_actions, name:) def track_redis_hll_events(*controller_actions, name:, feature:)
after_action only: controller_actions, if: -> { request.format.html? && request.headers['DNT'] != '1' } do after_action only: controller_actions, if: -> { request.format.html? && request.headers['DNT'] != '1' } do
track_unique_redis_hll_event(name) track_unique_redis_hll_event(name, feature)
end end
end end
end end
def track_unique_redis_hll_event(event_name) def track_unique_redis_hll_event(event_name, feature)
return unless metric_feature_enabled?(event_name) return unless metric_feature_enabled?(feature)
return unless Gitlab::CurrentSettings.usage_ping_enabled? return unless Gitlab::CurrentSettings.usage_ping_enabled?
return unless visitor_id return unless visitor_id
...@@ -30,8 +30,8 @@ module RedisTrackingHelper ...@@ -30,8 +30,8 @@ module RedisTrackingHelper
private private
def metric_feature_enabled?(event_name) def metric_feature_enabled?(feature)
Feature.enabled?("redis_hll_#{event_name}") Feature.enabled?(feature)
end end
def visitor_id def visitor_id
......
...@@ -7,19 +7,20 @@ RSpec.describe RedisTrackingHelper do ...@@ -7,19 +7,20 @@ RSpec.describe RedisTrackingHelper do
describe '.track_unique_redis_hll_event' do describe '.track_unique_redis_hll_event' do
let(:event_name) { 'g_compliance_dashboard' } let(:event_name) { 'g_compliance_dashboard' }
let(:feature) { 'g_compliance_dashboard_feature' }
let(:current_user) { create(:user) } let(:current_user) { create(:user) }
before do before do
stub_feature_flags(redis_hll_g_compliance_dashboard: true) stub_feature_flags(feature => true)
end end
it 'does not track event if feature flag disabled' do it 'does not track event if feature flag disabled' do
stub_feature_flags(redis_hll_g_compliance_dashboard: false) stub_feature_flags(feature => false)
sign_in(current_user) sign_in(current_user)
expect(Gitlab::UsageDataCounters::HLLRedisCounter).not_to receive(:track_event) expect(Gitlab::UsageDataCounters::HLLRedisCounter).not_to receive(:track_event)
helper.track_unique_redis_hll_event(event_name) helper.track_unique_redis_hll_event(event_name, feature)
end end
it 'does not track event if usage ping is disabled' do it 'does not track event if usage ping is disabled' do
...@@ -28,13 +29,13 @@ RSpec.describe RedisTrackingHelper do ...@@ -28,13 +29,13 @@ RSpec.describe RedisTrackingHelper do
expect(Gitlab::UsageDataCounters::HLLRedisCounter).not_to receive(:track_event) expect(Gitlab::UsageDataCounters::HLLRedisCounter).not_to receive(:track_event)
helper.track_unique_redis_hll_event(event_name) helper.track_unique_redis_hll_event(event_name, feature)
end end
it 'does not track event if user is not logged in' do it 'does not track event if user is not logged in' do
expect_any_instance_of(Gitlab::UsageDataCounters::HLLRedisCounter).not_to receive(:track_event) expect_any_instance_of(Gitlab::UsageDataCounters::HLLRedisCounter).not_to receive(:track_event)
helper.track_unique_redis_hll_event(event_name) helper.track_unique_redis_hll_event(event_name, feature)
end end
it 'tracks event if user is logged in' do it 'tracks event if user is logged in' do
...@@ -42,7 +43,7 @@ RSpec.describe RedisTrackingHelper do ...@@ -42,7 +43,7 @@ RSpec.describe RedisTrackingHelper do
expect(Gitlab::UsageDataCounters::HLLRedisCounter).to receive(:track_event) expect(Gitlab::UsageDataCounters::HLLRedisCounter).to receive(:track_event)
helper.track_unique_redis_hll_event(event_name) helper.track_unique_redis_hll_event(event_name, feature)
end end
it 'tracks event if user is not logged in, but has the cookie already' do it 'tracks event if user is not logged in, but has the cookie already' do
...@@ -50,7 +51,7 @@ RSpec.describe RedisTrackingHelper do ...@@ -50,7 +51,7 @@ RSpec.describe RedisTrackingHelper do
expect(Gitlab::UsageDataCounters::HLLRedisCounter).to receive(:track_event) expect(Gitlab::UsageDataCounters::HLLRedisCounter).to receive(:track_event)
helper.track_unique_redis_hll_event(event_name) helper.track_unique_redis_hll_event(event_name, feature)
end end
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment