Sha256: a4e7464b05f5b86ceecd48cd251361d2b88b1ab2ef3e376d800642982ea6cea1

Contents?: true

Size: 1.28 KB

Versions: 23

Compression:

Stored size: 1.28 KB

Contents

# encoding: utf-8
# This file is distributed under New Relic's license terms.
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.

class TestWorker
  include Sidekiq::Worker

  sidekiq_options :queue => SidekiqServer.instance.queue_name, :retry => false
  @jobs = {}
  @jobs_mutex = Mutex.new

  @done = Queue.new

  def self.register_signal(key)
    return if @registered_signal

    NewRelic::Agent.subscribe(:transaction_finished) do |payload|
      @done.push(true)
    end
    @registered_signal = true
  end

  def self.run_jobs(count)
    reset(count)
    count.times do |i|
      yield i
    end
    wait
  end

  def self.reset(done_at)
    @jobs = {}
    @done_at = done_at
  end

  def self.record(key, val)
    @jobs_mutex.synchronize do
      @jobs[key] ||= []
      @jobs[key] << val
    end
  end

  def self.records_for(key)
    @jobs[key]
  end

  def self.wait
    # Don't hang out forever, but shouldn't count on the timeout functionally
    Timeout.timeout(60) do
      @done_at.times do
        @done.pop
      end
    end
  end

  def self.fail=(val)
    @fail = val
  end

  def self.am_i_a_failure?
    @fail
  end

  def perform(key, val)
    if self.class.am_i_a_failure?
      raise "Uh oh"
    else
      TestWorker.record(key, val)
    end
  end
end

Version data entries

23 entries across 23 versions & 2 rubygems

Version Path
newrelic_rpm-4.1.0.333 test/multiverse/suites/sidekiq/test_worker.rb
newrelic_rpm-4.0.0.332 test/multiverse/suites/sidekiq/test_worker.rb
newrelic_rpm-3.18.1.330 test/multiverse/suites/sidekiq/test_worker.rb
newrelic_rpm-3.18.0.329 test/multiverse/suites/sidekiq/test_worker.rb
newrelic_rpm-3.17.2.327 test/multiverse/suites/sidekiq/test_worker.rb
newrelic_rpm-3.17.1.326 test/multiverse/suites/sidekiq/test_worker.rb
newrelic_rpm-3.17.0.325 test/multiverse/suites/sidekiq/test_worker.rb
newrelic_rpm-3.16.3.323 test/multiverse/suites/sidekiq/test_worker.rb
newrelic_rpm-3.16.2.321 test/multiverse/suites/sidekiq/test_worker.rb
newrelic_rpm-3.16.1.320 test/multiverse/suites/sidekiq/test_worker.rb
newrelic_rpm-3.16.0.318 test/multiverse/suites/sidekiq/test_worker.rb
ish_lib_manager-0.0.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/newrelic_rpm-3.15.2.317/test/multiverse/suites/sidekiq/test_worker.rb
newrelic_rpm-3.15.2.317 test/multiverse/suites/sidekiq/test_worker.rb
newrelic_rpm-3.15.1.316 test/multiverse/suites/sidekiq/test_worker.rb
newrelic_rpm-3.15.0.314 test/multiverse/suites/sidekiq/test_worker.rb
newrelic_rpm-3.14.3.313 test/multiverse/suites/sidekiq/test_worker.rb
newrelic_rpm-3.14.2.312 test/multiverse/suites/sidekiq/test_worker.rb
newrelic_rpm-3.14.1.311 test/multiverse/suites/sidekiq/test_worker.rb
newrelic_rpm-3.14.0.305 test/multiverse/suites/sidekiq/test_worker.rb
newrelic_rpm-3.13.2.302 test/multiverse/suites/sidekiq/test_worker.rb