Class: Stoplight::Wiring::ConfigCompatibilityValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/stoplight/wiring/config_compatibility_validator.rb

Overview

Validates that traffic control and recovery strategies are compatible with the provided configuration.

Different strategies have different configuration requirements:

  • ErrorRate requires window_size and threshold ∈ [0,1]

  • ConsecutiveErrors requires threshold > 0

  • ConsecutiveSuccesses requires recovery_threshold > 0

Raises:

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config:) ⇒ ConfigCompatibilityValidator

Returns a new instance of ConfigCompatibilityValidator.



21
22
23
# File 'lib/stoplight/wiring/config_compatibility_validator.rb', line 21

def initialize(config:)
  @config = config
end

Class Method Details

.call(config:) ⇒ Object



18
# File 'lib/stoplight/wiring/config_compatibility_validator.rb', line 18

def call(config:) = new(config:).call

Instance Method Details

#callObject



25
26
27
28
29
# File 'lib/stoplight/wiring/config_compatibility_validator.rb', line 25

def call
  validate_traffic_control!
  validate_traffic_recovery!
  config
end

#validate_traffic_recovery!Object



42
43
44
45
46
47
48
49
50
51
# File 'lib/stoplight/wiring/config_compatibility_validator.rb', line 42

def validate_traffic_recovery!
  traffic_recovery = config.traffic_recovery
  traffic_recovery.check_compatibility(config).then do |compatibility_result|
    if compatibility_result.incompatible?
      raise Error::ConfigurationError,
        "#{traffic_recovery} incompatible with config: #{compatibility_result.error_messages}",
        caller(8)
    end
  end
end