45 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| require 'spec_helper'
 | |
| 
 | |
| # allow_unrouted_sidekiq_calls as this is run on every startup, so shard awareness is not needed
 | |
| RSpec.describe Gitlab::SidekiqVersioning, :clean_gitlab_redis_queues, :allow_unrouted_sidekiq_calls do
 | |
|   before do
 | |
|     allow(Gitlab::SidekiqConfig).to receive(:routing_queues).and_return(%w[foo bar])
 | |
|   end
 | |
| 
 | |
|   subject(:queues) { Sidekiq::Queue.all.map(&:name) }
 | |
| 
 | |
|   describe '.install!' do
 | |
|     it 'registers all versionless and versioned queues with Redis' do
 | |
|       described_class.install!
 | |
| 
 | |
|       expect(queues).to include('foo')
 | |
|       expect(queues).to include('bar')
 | |
|     end
 | |
| 
 | |
|     context 'when some queues outside routing rules were already registered' do
 | |
|       before do
 | |
|         Sidekiq.redis do |conn|
 | |
|           conn.sadd('queues', 'a', 'b', 'c', 'foo')
 | |
|         end
 | |
|       end
 | |
| 
 | |
|       it 'removes the queues outside routing rules' do
 | |
|         described_class.install!
 | |
| 
 | |
|         expect(queues).not_to include('a')
 | |
|         expect(queues).not_to include('b')
 | |
|         expect(queues).not_to include('c')
 | |
|       end
 | |
| 
 | |
|       it 'registers all queues in routing rules' do
 | |
|         described_class.install!
 | |
| 
 | |
|         expect(queues).to include('foo')
 | |
|         expect(queues).to include('bar')
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 |