class WSDirector::Task

Single client operator

Attributes

client[R]
global_holder[R]
protocol[R]
result[R]
steps[R]

Public Class Methods

new(config, global_holder:, result:) click to toggle source
# File lib/wsdirector/task.rb, line 11
def initialize(config, global_holder:, result:)
  @ignore = config.fetch("ignore")
  @steps = config.fetch("steps")
  @global_holder = global_holder
  @result = result

  protocol_class = Protocols.get(config.fetch("protocol", "base"))
  @protocol = protocol_class.new(self)
end

Public Instance Methods

run() click to toggle source
# File lib/wsdirector/task.rb, line 21
def run
  connect!

  steps.each(&protocol)

  result.succeed
rescue Error => e
  result.failed(e.message)
end
sampled?(step) click to toggle source
# File lib/wsdirector/task.rb, line 31
def sampled?(step)
  return true unless step["sample"]

  id, max = step["id"], step["sample"]

  result.track_sample(id, max)
end

Private Instance Methods

connect!() click to toggle source
# File lib/wsdirector/task.rb, line 43
def connect!
  protocol.init_client(ignore: @ignore)
end