class Clockwork::Test::Manager

Attributes

end_time[R]
history[R]
max_ticks[R]
start_time[R]
total_ticks[R]

Public Class Methods

new(opts = {}) click to toggle source
Calls superclass method
# File lib/clockwork/test/manager.rb, line 6
def initialize(opts = {})
  super()
  @history = JobHistory.new
  @total_ticks = 0
  set_opts(opts)

  config[:logger].level = Logger::ERROR
end

Public Instance Methods

block_for(job) click to toggle source
# File lib/clockwork/test/manager.rb, line 38
def block_for(job)
  history.block_for(job)
end
ran_job?(job) click to toggle source
# File lib/clockwork/test/manager.rb, line 30
def ran_job?(job)
  history.ran_job?(job)
end
run(opts = {}) { || ... } click to toggle source
# File lib/clockwork/test/manager.rb, line 15
def run(opts = {})
  set_opts(opts)

  if start_time
    @time_altered = true
    Timecop.travel(start_time)
  end

  yield if block_given?

  tick_loop

  Timecop.return if @time_altered
end
times_run(job) click to toggle source
# File lib/clockwork/test/manager.rb, line 34
def times_run(job)
  history.times_run(job)
end

Private Instance Methods

events_run_now() click to toggle source
# File lib/clockwork/test/manager.rb, line 85
def events_run_now
  events_to_run(Time.now)
end
increase_time() click to toggle source
# File lib/clockwork/test/manager.rb, line 71
def increase_time
  Timecop.travel(Time.now + @tick_speed) if @tick_speed
end
register(period, job, block, options) click to toggle source
# File lib/clockwork/test/manager.rb, line 75
def register(period, job, block, options)
  event = ::Clockwork::Test::Event.new(self, period, job, block || handler, options)
  @events << event
  event
end
set_opts(opts) click to toggle source
# File lib/clockwork/test/manager.rb, line 44
def set_opts(opts)
  @max_ticks = opts[:max_ticks] if opts[:max_ticks]
  @start_time = opts[:start_time] if opts[:start_time]
  if opts[:end_time]
    @end_time = opts[:end_time]
  elsif @start_time
    @end_time = Time.current
  end
  @tick_speed = opts[:tick_speed]

  raise "End time can't precede start time." if @start_time && (@start_time > @end_time)
end
tick_loop() click to toggle source
# File lib/clockwork/test/manager.rb, line 59
def tick_loop
  while true do
    update_job_history

    tick
    increase_time

    @total_ticks += 1
    break if ticks_exceeded? || time_exceeded?
  end
end
ticks_exceeded?() click to toggle source
# File lib/clockwork/test/manager.rb, line 89
def ticks_exceeded?
  max_ticks && total_ticks >= max_ticks
end
time_exceeded?() click to toggle source
# File lib/clockwork/test/manager.rb, line 93
def time_exceeded?
  end_time && Time.now >= end_time
end
update_job_history() click to toggle source
# File lib/clockwork/test/manager.rb, line 81
def update_job_history
  history.record(events_run_now)
end