class Opera::Operation::Executor

Attributes

operation[R]

Public Class Methods

new(operation) click to toggle source
# File lib/opera/operation/executor.rb, line 8
def initialize(operation)
  @operation = operation
end

Public Instance Methods

add_instruction_output(instruction, output = {}) click to toggle source
# File lib/opera/operation/executor.rb, line 75
def add_instruction_output(instruction, output = {})
  context["#{instruction[:method]}_output".to_sym] = output
end
break_condition() click to toggle source
# File lib/opera/operation/executor.rb, line 71
def break_condition
  operation.finished? || result.failure?
end
call(instruction) click to toggle source
# File lib/opera/operation/executor.rb, line 12
def call(instruction)
  instructions = instruction[:instructions]

  if instructions
    evaluate_instructions(instructions)
  else
    evaluate_instruction(instruction)
  end
end
config() click to toggle source
# File lib/opera/operation/executor.rb, line 59
def config
  operation.config
end
context() click to toggle source
# File lib/opera/operation/executor.rb, line 63
def context
  operation.context
end
evaluate_instruction(instruction) click to toggle source

rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity

# File lib/opera/operation/executor.rb, line 33
def evaluate_instruction(instruction)
  case instruction[:kind]
  when :step
    Instructions::Executors::Step.new(operation).call(instruction)
  when :operation
    Instructions::Executors::Operation.new(operation).call(instruction)
  when :operations
    Instructions::Executors::Operations.new(operation).call(instruction)
  when :success
    Instructions::Executors::Success.new(operation).call(instruction)
  when :validate
    Instructions::Executors::Validate.new(operation).call(instruction)
  when :transaction
    Instructions::Executors::Transaction.new(operation).call(instruction)
  when :benchmark
    Instructions::Executors::Benchmark.new(operation).call(instruction)
  else
    raise(UnknownInstructionError, "Unknown instruction #{instruction[:kind]}")
  end
end
evaluate_instructions(instructions = []) click to toggle source
# File lib/opera/operation/executor.rb, line 22
def evaluate_instructions(instructions = [])
  instruction_copy = Marshal.load(Marshal.dump(instructions))

  while instruction_copy.any?
    instruction = instruction_copy.shift
    evaluate_instruction(instruction)
    break if break_condition
  end
end
reporter() click to toggle source
# File lib/opera/operation/executor.rb, line 67
def reporter
  config.reporter
end
result() click to toggle source

rubocop:enable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity

# File lib/opera/operation/executor.rb, line 55
def result
  operation.result
end