summaryrefslogtreecommitdiff
path: root/lib/gitlab/experimentation/controller_concern.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/experimentation/controller_concern.rb')
-rw-r--r--lib/gitlab/experimentation/controller_concern.rb16
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/gitlab/experimentation/controller_concern.rb b/lib/gitlab/experimentation/controller_concern.rb
index 2b38b12c914..248abfeada5 100644
--- a/lib/gitlab/experimentation/controller_concern.rb
+++ b/lib/gitlab/experimentation/controller_concern.rb
@@ -15,7 +15,7 @@ module Gitlab
included do
before_action :set_experimentation_subject_id_cookie, unless: :dnt_enabled?
- helper_method :experiment_enabled?, :experiment_tracking_category_and_group, :tracking_label
+ helper_method :experiment_enabled?, :experiment_tracking_category_and_group, :record_experiment_group, :tracking_label
end
def set_experimentation_subject_id_cookie
@@ -72,12 +72,22 @@ module Gitlab
::Experiment.add_user(experiment_key, tracking_group(experiment_key, nil, subject: subject), current_user, context)
end
- def record_experiment_conversion_event(experiment_key)
+ def record_experiment_group(experiment_key, group)
+ return if dnt_enabled?
+ return unless Experimentation.active?(experiment_key) && group
+
+ variant_subject = Experimentation.rollout_strategy(experiment_key) == :cookie ? nil : group
+ variant = tracking_group(experiment_key, nil, subject: variant_subject)
+
+ ::Experiment.add_group(experiment_key, group: group, variant: variant)
+ end
+
+ def record_experiment_conversion_event(experiment_key, context = {})
return if dnt_enabled?
return unless current_user
return unless Experimentation.active?(experiment_key)
- ::Experiment.record_conversion_event(experiment_key, current_user)
+ ::Experiment.record_conversion_event(experiment_key, current_user, context)
end
def experiment_tracking_category_and_group(experiment_key, subject: nil)