Class: Hackle::ContainerExperimentFlowEvaluator

Inherits:
Object
  • Object
show all
Includes:
ExperimentFlowEvaluator
Defined in:
lib/hackle/internal/evaluation/evaluator/experiment/experiment_flow_evaluator.rb

Instance Method Summary collapse

Constructor Details

#initialize(container_resolver:) ⇒ ContainerExperimentFlowEvaluator

Returns a new instance of ContainerExperimentFlowEvaluator.

Parameters:



209
210
211
212
# File 'lib/hackle/internal/evaluation/evaluator/experiment/experiment_flow_evaluator.rb', line 209

def initialize(container_resolver:)
  # @type [ExperimentContainerResolver]
  @container_resolver = container_resolver
end

Instance Method Details

#evaluate(request, context, next_flow) ⇒ Object

Raises:

  • (ArgumentError)


214
215
216
217
218
219
220
221
222
223
224
225
226
227
# File 'lib/hackle/internal/evaluation/evaluator/experiment/experiment_flow_evaluator.rb', line 214

def evaluate(request, context, next_flow)
  container_id = request.experiment.container_id
  return next_flow.evaluate(request, context) if container_id.nil?

  container = request.workspace.get_container_or_nil(container_id)
  raise ArgumentError, "container [#{container_id}]" if container.nil?

  is_user_in_container_group = @container_resolver.user_in_container_group?(request, container)
  if is_user_in_container_group
    next_flow.evaluate(request, context)
  else
    ExperimentEvaluation.create_default(request, context, DecisionReason::NOT_IN_MUTUAL_EXCLUSION_EXPERIMENT)
  end
end