1
0
Fork 0
mirror of https://github.com/mperham/sidekiq.git synced 2022-11-09 13:52:34 -05:00
mperham--sidekiq/test/test_launcher.rb
2018-12-30 12:15:21 -08:00

97 lines
2.1 KiB
Ruby

# frozen_string_literal: true
require_relative 'helper'
require 'sidekiq/launcher'
class TestLauncher < Minitest::Test
describe Sidekiq::Launcher do
subject { Sidekiq::Launcher.new(options) }
let(:options) do
{
concurrency: 3,
queues: ['default'],
tag: 'myapp'
}
end
before do
Sidekiq.redis { |c| c.flushdb }
Sidekiq::Processor::WORKER_STATE.set('tid', { queue: 'queue', payload: 'job_hash', run_at: Time.now.to_i })
@proctitle = $0
end
after do
Sidekiq::Processor::WORKER_STATE.clear
$0 = @proctitle
end
describe '#heartbeat' do
describe 'run' do
it 'sets sidekiq version, tag and the number of busy workers to proctitle' do
subject.heartbeat
assert_equal "sidekiq #{Sidekiq::VERSION} myapp [1 of 3 busy]", $0
end
it 'stores process info in redis' do
subject.heartbeat
workers = Sidekiq.redis { |c| c.hmget(subject.identity, 'busy') }
assert_equal ["1"], workers
expires = Sidekiq.redis { |c| c.pttl(subject.identity) }
assert_in_delta 60000, expires, 500
end
describe 'events' do
before do
@cnt = 0
Sidekiq.on(:heartbeat) do
@cnt += 1
end
end
it 'fires start heartbeat event only once' do
assert_equal 0, @cnt
subject.heartbeat
assert_equal 1, @cnt
subject.heartbeat
assert_equal 1, @cnt
end
end
end
describe 'quite' do
before do
subject.quiet
end
it 'sets stopping proctitle' do
subject.heartbeat
assert_equal "sidekiq #{Sidekiq::VERSION} myapp [1 of 3 busy] stopping", $0
end
it 'stores process info in redis' do
subject.heartbeat
info = Sidekiq.redis { |c| c.hmget(subject.identity, 'busy') }
assert_equal ["1"], info
expires = Sidekiq.redis { |c| c.pttl(subject.identity) }
assert_in_delta 60000, expires, 50
end
end
end
end
end