class Dynflow::Testing::DummyExecutor

Attributes

events_to_process[R]
world[R]

Public Class Methods

new(world) click to toggle source
# File lib/dynflow/testing/dummy_executor.rb, line 8
def initialize(world)
  @world             = world
  @events_to_process = []
end

Public Instance Methods

clear() click to toggle source
# File lib/dynflow/testing/dummy_executor.rb, line 46
def clear
  @events_to_process.clear
end
delayed_event(director_event) click to toggle source
# File lib/dynflow/testing/dummy_executor.rb, line 17
def delayed_event(director_event)
  @events_to_process << [director_event.execution_plan_id, director_event.step_id, director_event.event, director_event.result]
end
event(execution_plan_id, step_id, event, future = Concurrent::Promises.resolvable_future) click to toggle source
# File lib/dynflow/testing/dummy_executor.rb, line 13
def event(execution_plan_id, step_id, event, future = Concurrent::Promises.resolvable_future)
  @events_to_process << [execution_plan_id, step_id, event, future]
end
execute(action, event = nil) click to toggle source
# File lib/dynflow/testing/dummy_executor.rb, line 27
def execute(action, event = nil)
  action.execute event
  plan_events(action.delayed_events.dup)
  action.delayed_events.clear
end
plan_events(delayed_events) click to toggle source
# File lib/dynflow/testing/dummy_executor.rb, line 21
def plan_events(delayed_events)
  delayed_events.each do |event|
    world.plan_event(event.execution_plan_id, event.step_id, event.event, event.time)
  end
end
progress() click to toggle source

returns true if some event was processed.

# File lib/dynflow/testing/dummy_executor.rb, line 34
def progress
  events = @events_to_process.dup
  clear
  events.each do |execution_plan_id, step_id, event, future|
    future.fulfill true
    if event && world.action.state != :suspended
      return false
    end
    execute(world.action, event)
  end
end