Class: ApplicationExperiment

Inherits:
Gitlab::Experiment show all
Defined in:
app/experiments/application_experiment.rb

Instance Method Summary collapse

Instance Method Details

#control_behaviorObject



6
7
8
# File 'app/experiments/application_experiment.rb', line 6

def control_behavior
  # define a default nil control behavior so we can omit it when not needed
end

#key_for(source, seed = name) ⇒ Object

Deprecated.

This is deprecated logic as of v0.6.0 and should eventually be removed, but needs to stay intact for actively running experiments. The new strategy utilizes Digest::SHA2, a secret seed, and generates a 64-byte string.

gitlab.com/gitlab-org/gitlab/-/issues/334590



17
18
19
20
21
22
23
24
25
26
# File 'app/experiments/application_experiment.rb', line 17

def key_for(source, seed = name)
  # If FIPS is enabled, we simply call the method available in the gem, which
  # uses SHA2.
  return super if Gitlab::FIPS.enabled?

  # If FIPS isn't enabled, we use the legacy MD5 logic to keep existing
  # experiment events working.
  source = source.keys + source.values if source.is_a?(Hash)
  Digest::MD5.hexdigest(Array(source).map { |v| identify(v) }.unshift(seed).join('|'))
end

#nest_experiment(other) ⇒ Object



28
29
30
# File 'app/experiments/application_experiment.rb', line 28

def nest_experiment(other)
  instance_exec(:nested, { label: other.name }, &Configuration.tracking_behavior)
end