diff options
Diffstat (limited to 'spec/tasks/gitlab/sidekiq_rake_spec.rb')
-rw-r--r-- | spec/tasks/gitlab/sidekiq_rake_spec.rb | 42 |
1 files changed, 34 insertions, 8 deletions
diff --git a/spec/tasks/gitlab/sidekiq_rake_spec.rb b/spec/tasks/gitlab/sidekiq_rake_spec.rb index 75f904389e2..0e5111c90a1 100644 --- a/spec/tasks/gitlab/sidekiq_rake_spec.rb +++ b/spec/tasks/gitlab/sidekiq_rake_spec.rb @@ -9,7 +9,10 @@ RSpec.describe 'sidekiq.rake', :aggregate_failures, :silence_stdout do stub_warn_user_is_not_gitlab end + let(:migrator) { ::Gitlab::SidekiqMigrateJobs.new(mappings, logger: Logger.new($stdout)) } + shared_examples 'migration rake task' do + let(:mappings) { {} } it 'runs the migrator with a mapping of workers to queues' do test_routes = [ ['urgency=high', 'default'], @@ -17,20 +20,17 @@ RSpec.describe 'sidekiq.rake', :aggregate_failures, :silence_stdout do ] test_router = ::Gitlab::SidekiqConfig::WorkerRouter.new(test_routes) - migrator = ::Gitlab::SidekiqMigrateJobs.new(sidekiq_set, logger: Logger.new($stdout)) allow(::Gitlab::SidekiqConfig::WorkerRouter) .to receive(:global).and_return(test_router) expect(::Gitlab::SidekiqMigrateJobs) - .to receive(:new).with(sidekiq_set, logger: an_instance_of(Logger)).and_return(migrator) + .to receive(:new).with(a_hash_including('PostReceive' => 'default', + 'MergeWorker' => 'default', + 'DeleteDiffFilesWorker' => 'delete_diff_files'), + logger: an_instance_of(Logger)).and_return(migrator) - expect(migrator) - .to receive(:execute) - .with(a_hash_including('PostReceive' => 'default', - 'MergeWorker' => 'default', - 'DeleteDiffFilesWorker' => 'delete_diff_files')) - .and_call_original + expect(migrator).to receive(:migrate_set).with(sidekiq_set).and_call_original run_rake_task("gitlab:sidekiq:migrate_jobs:#{sidekiq_set}") @@ -50,4 +50,30 @@ RSpec.describe 'sidekiq.rake', :aggregate_failures, :silence_stdout do it_behaves_like 'migration rake task' end + + describe 'gitlab:sidekiq:migrate_jobs:queued rake task' do + let(:mappings) { { 'PostReceive' => 'default' } } + + it 'runs the migrator with a mapping of workers to queues' do + test_routes = [ + ['*', 'default'] + ] + + test_router = ::Gitlab::SidekiqConfig::WorkerRouter.new(test_routes) + + allow(::Gitlab::SidekiqConfig::WorkerRouter) + .to receive(:global).and_return(test_router) + + expect(::Gitlab::SidekiqMigrateJobs) + .to receive(:new).with(a_hash_including('PostReceive' => 'default', + 'MergeWorker' => 'default'), + logger: an_instance_of(Logger)).and_return(migrator) + + expect(migrator).to receive(:migrate_queues).and_call_original + + run_rake_task("gitlab:sidekiq:migrate_jobs:queued") + + expect($stdout.string).to include('List of queues based on routing rules: ["default"]') + end + end end |