class Sidekiq::Benchmark::Worker::Benchmark

Attributes

finish_time[R]
metrics[R]
redis_keys[R]
start_time[R]

Public Class Methods

new(worker, redis_key, options) click to toggle source
# File lib/sidekiq-benchmark/worker.rb, line 24
def initialize(worker, redis_key, options)
  @metrics = {}
  @worker = worker
  @options = options
  @start_time = Time.now

  @redis_keys =
    %i[total stats].reduce({}) do |m, e|
      m[e] = "#{REDIS_NAMESPACE}:#{redis_key}:#{e}"
      m
    end

  set_redis_key redis_key
end

Public Instance Methods

[](name) click to toggle source
# File lib/sidekiq-benchmark/worker.rb, line 67
def [](name)
  @metrics[name]
end
[]=(name, value) click to toggle source
# File lib/sidekiq-benchmark/worker.rb, line 63
def []=(name, value)
  @metrics[name] = value.to_f
end
bm(name)
Alias for: measure
call(name, *args) click to toggle source
# File lib/sidekiq-benchmark/worker.rb, line 59
def call(name, *args)
  measure(name) { @worker.send(name, *args) }
end
finish() click to toggle source
# File lib/sidekiq-benchmark/worker.rb, line 39
def finish
  @finish_time = Time.now
  self[:job_time] = finish_time - start_time
  save
end
measure(name) { || ... } click to toggle source
# File lib/sidekiq-benchmark/worker.rb, line 45
def measure(name)
  t0  = Time.now
  ret = yield
  t1  = Time.now

  self[name] ||= 0.0
  self[name] += t1 - t0

  Sidekiq.logger.info "Benchmark #{name}: #{t1 - t0} sec." if @options[:log]

  ret
end
Also aliased as: bm
method_missing(name, *args, &block) click to toggle source
# File lib/sidekiq-benchmark/worker.rb, line 98
def method_missing(name, *args, &block)
  if block_given?
    measure(name, &block)
    self[name]
  else
    self[name] = args[0]
  end
end
save() click to toggle source
# File lib/sidekiq-benchmark/testing.rb, line 5
def save; end
set_redis_key(key) click to toggle source
# File lib/sidekiq-benchmark/testing.rb, line 6
def set_redis_key(key); end