Class: Hackle::TrafficAllocateExperimentFlowEvaluator
- Inherits:
-
Object
- Object
- Hackle::TrafficAllocateExperimentFlowEvaluator
- Includes:
- ExperimentFlowEvaluator
- Defined in:
- lib/hackle/internal/evaluation/evaluator/experiment/experiment_flow_evaluator.rb
Instance Method Summary collapse
- #evaluate(request, context, _next_flow) ⇒ Object
-
#initialize(action_resolver:) ⇒ TrafficAllocateExperimentFlowEvaluator
constructor
A new instance of TrafficAllocateExperimentFlowEvaluator.
Constructor Details
#initialize(action_resolver:) ⇒ TrafficAllocateExperimentFlowEvaluator
Returns a new instance of TrafficAllocateExperimentFlowEvaluator.
120 121 122 123 |
# File 'lib/hackle/internal/evaluation/evaluator/experiment/experiment_flow_evaluator.rb', line 120 def initialize(action_resolver:) # @type [ExperimentActionResolver] @action_resolver = action_resolver end |
Instance Method Details
#evaluate(request, context, _next_flow) ⇒ Object
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/hackle/internal/evaluation/evaluator/experiment/experiment_flow_evaluator.rb', line 125 def evaluate(request, context, _next_flow) if request.experiment.status != ExperimentStatus::RUNNING raise ArgumentError, "experiment status must be RUNNING [#{request.experiment.id}]" end if request.experiment.type != ExperimentType::AB_TEST raise ArgumentError, "experiment type must be AB_TEST [#{request.experiment.id}]" end variation = @action_resolver.resolve_or_nil(request, request.experiment.default_rule) if variation.nil? return ExperimentEvaluation.create_default(request, context, DecisionReason::TRAFFIC_NOT_ALLOCATED) end if variation.is_dropped return ExperimentEvaluation.create_default(request, context, DecisionReason::VARIATION_DROPPED) end ExperimentEvaluation.create(request, context, variation, DecisionReason::TRAFFIC_ALLOCATED) end |