mirror of
https://gitlab.com/gitlab-org/gitlab-foss.git
synced 2025-08-13 13:31:19 +00:00
77 lines
2.3 KiB
Ruby
77 lines
2.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
|
|
RSpec.describe Gitlab::SidekiqMiddleware::PauseControl::Server, :clean_gitlab_redis_queues, feature_category: :global_search do
|
|
let(:worker_class) do
|
|
Class.new do
|
|
def self.name
|
|
'TestPauseWorker'
|
|
end
|
|
|
|
include ApplicationWorker
|
|
|
|
pause_control :zoekt
|
|
|
|
def perform(*)
|
|
self.class.work
|
|
end
|
|
|
|
def self.work; end
|
|
end
|
|
end
|
|
|
|
before do
|
|
stub_const('TestPauseWorker', worker_class)
|
|
end
|
|
|
|
around do |example|
|
|
with_sidekiq_server_middleware do |chain|
|
|
chain.add described_class
|
|
Sidekiq::Testing.inline! { example.run }
|
|
end
|
|
end
|
|
|
|
describe '#call' do
|
|
context 'when strategy is enabled' do
|
|
before do
|
|
allow(Gitlab::CurrentSettings).to receive(:zoekt_indexing_paused?).and_return(true)
|
|
end
|
|
|
|
it 'puts the job to another queue without execution' do
|
|
bare_job = { 'class' => 'TestPauseWorker', 'args' => ['hello'] }
|
|
job_definition = Gitlab::SidekiqMiddleware::PauseControl::StrategyHandler.new(TestPauseWorker, bare_job.dup)
|
|
|
|
expect(Gitlab::SidekiqMiddleware::PauseControl::StrategyHandler)
|
|
.to receive(:new).with(TestPauseWorker, a_hash_including(bare_job))
|
|
.and_return(job_definition).once
|
|
|
|
expect(TestPauseWorker).not_to receive(:work)
|
|
expect(Gitlab::SidekiqMiddleware::PauseControl::PauseControlService).to receive(:add_to_waiting_queue!).once
|
|
|
|
TestPauseWorker.perform_async('hello')
|
|
end
|
|
end
|
|
|
|
context 'when strategy is disabled' do
|
|
before do
|
|
allow(Gitlab::CurrentSettings).to receive(:zoekt_indexing_paused?).and_return(false)
|
|
end
|
|
|
|
it 'executes the job' do
|
|
bare_job = { 'class' => 'TestPauseWorker', 'args' => ['hello'] }
|
|
job_definition = Gitlab::SidekiqMiddleware::PauseControl::StrategyHandler.new(TestPauseWorker, bare_job.dup)
|
|
|
|
expect(Gitlab::SidekiqMiddleware::PauseControl::StrategyHandler)
|
|
.to receive(:new).with(TestPauseWorker, hash_including(bare_job))
|
|
.and_return(job_definition).twice
|
|
|
|
expect(TestPauseWorker).to receive(:work)
|
|
expect(Gitlab::SidekiqMiddleware::PauseControl::PauseControlService).not_to receive(:add_to_waiting_queue!)
|
|
|
|
TestPauseWorker.perform_async('hello')
|
|
end
|
|
end
|
|
end
|
|
end
|