Commit 388abbd1 authored by Grzegorz Bizon's avatar Grzegorz Bizon

Extract background migratons queue class method

parent c17b1d5f
module Gitlab
module BackgroundMigration
def self.queue
BackgroundMigrationWorker.sidekiq_options['queue']
end
# Begins stealing jobs from the background migrations queue, blocking the
# caller until all jobs have been completed.
#
# steal_class - The name of the class for which to steal jobs.
def self.steal(steal_class)
queue = Sidekiq::Queue
.new(BackgroundMigrationWorker.sidekiq_options['queue'])
queue = Sidekiq::Queue.new(self.queue)
queue.each do |job|
migration_class, migration_args = job.args
......
require 'spec_helper'
describe Gitlab::BackgroundMigration do
describe '.steal' do
it 'steals jobs from a queue' do
queue = [double(:job, args: ['Foo', [10, 20]])]
allow(Sidekiq::Queue).to receive(:new)
.with(BackgroundMigrationWorker.sidekiq_options['queue'])
.and_return(queue)
describe '.queue' do
it 'returns background migration worker queue' do
expect(described_class.queue)
.to eq BackgroundMigrationWorker.sidekiq_options['queue']
end
end
expect(queue[0]).to receive(:delete)
describe '.steal' do
context 'when there are enqueued jobs present' do
let(:queue) { [double(:job, args: ['Foo', [10, 20]])] }
expect(described_class).to receive(:perform).with('Foo', [10, 20])
before do
allow(Sidekiq::Queue).to receive(:new)
.with(described_class.queue)
.and_return(queue)
end
described_class.steal('Foo')
end
it 'steals jobs from a queue' do
expect(queue[0]).to receive(:delete)
it 'does not steal jobs for a different migration' do
queue = [double(:job, args: ['Foo', [10, 20]])]
expect(described_class).to receive(:perform).with('Foo', [10, 20])
allow(Sidekiq::Queue).to receive(:new)
.with(BackgroundMigrationWorker.sidekiq_options['queue'])
.and_return(queue)
described_class.steal('Foo')
end
expect(described_class).not_to receive(:perform)
it 'does not steal jobs for a different migration' do
expect(described_class).not_to receive(:perform)
expect(queue[0]).not_to receive(:delete)
expect(queue[0]).not_to receive(:delete)
described_class.steal('Bar')
described_class.steal('Bar')
end
end
end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment