Refactor matchers for background migrations
This commit is contained in:
parent
304851dc90
commit
153ea18301
11 changed files with 33 additions and 55 deletions
|
@ -35,7 +35,7 @@ class Issue < ActiveRecord::Base
|
|||
|
||||
validates :project, presence: true
|
||||
|
||||
alias_attribute :parent_id, :project_id
|
||||
alias_attribute :parent_ids, :project_id
|
||||
|
||||
scope :in_projects, ->(project_ids) { where(project_id: project_ids) }
|
||||
|
||||
|
|
|
@ -2,21 +2,10 @@ require 'spec_helper'
|
|||
|
||||
describe Gitlab::BackgroundMigration::PrepareUntrackedUploads, :sidekiq do
|
||||
include TrackUntrackedUploadsHelpers
|
||||
include MigrationsHelpers
|
||||
|
||||
let!(:untracked_files_for_uploads) { described_class::UntrackedFile }
|
||||
|
||||
matcher :be_scheduled_migration do |*expected|
|
||||
match do |migration|
|
||||
BackgroundMigrationWorker.jobs.any? do |job|
|
||||
job['args'] == [migration, expected]
|
||||
end
|
||||
end
|
||||
|
||||
failure_message do |migration|
|
||||
"Migration `#{migration}` with args `#{expected.inspect}` not scheduled!"
|
||||
end
|
||||
end
|
||||
|
||||
before do
|
||||
DatabaseCleaner.clean
|
||||
|
||||
|
|
|
@ -35,9 +35,9 @@ describe MigrateStageIdReferenceInBackground, :migration, :sidekiq do
|
|||
Timecop.freeze do
|
||||
migrate!
|
||||
|
||||
expect(described_class::MIGRATION).to be_scheduled_migration(2.minutes, 1, 2)
|
||||
expect(described_class::MIGRATION).to be_scheduled_migration(2.minutes, 3, 3)
|
||||
expect(described_class::MIGRATION).to be_scheduled_migration(4.minutes, 4, 5)
|
||||
expect(described_class::MIGRATION).to be_scheduled_delayed_migration(2.minutes, 1, 2)
|
||||
expect(described_class::MIGRATION).to be_scheduled_delayed_migration(2.minutes, 3, 3)
|
||||
expect(described_class::MIGRATION).to be_scheduled_delayed_migration(4.minutes, 4, 5)
|
||||
expect(BackgroundMigrationWorker.jobs.size).to eq 3
|
||||
end
|
||||
end
|
||||
|
|
|
@ -50,9 +50,9 @@ describe MigrateStagesStatuses, :migration do
|
|||
Timecop.freeze do
|
||||
migrate!
|
||||
|
||||
expect(described_class::MIGRATION).to be_scheduled_migration(5.minutes, 1, 1)
|
||||
expect(described_class::MIGRATION).to be_scheduled_migration(5.minutes, 2, 2)
|
||||
expect(described_class::MIGRATION).to be_scheduled_migration(10.minutes, 3, 3)
|
||||
expect(described_class::MIGRATION).to be_scheduled_delayed_migration(5.minutes, 1, 1)
|
||||
expect(described_class::MIGRATION).to be_scheduled_delayed_migration(5.minutes, 2, 2)
|
||||
expect(described_class::MIGRATION).to be_scheduled_delayed_migration(10.minutes, 3, 3)
|
||||
expect(BackgroundMigrationWorker.jobs.size).to eq 3
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,18 +2,6 @@ require 'spec_helper'
|
|||
require Rails.root.join('db', 'post_migrate', '20171005130944_schedule_create_gpg_key_subkeys_from_gpg_keys')
|
||||
|
||||
describe ScheduleCreateGpgKeySubkeysFromGpgKeys, :migration, :sidekiq do
|
||||
matcher :be_scheduled_migration do |*expected|
|
||||
match do |migration|
|
||||
BackgroundMigrationWorker.jobs.any? do |job|
|
||||
job['args'] == [migration, expected]
|
||||
end
|
||||
end
|
||||
|
||||
failure_message do |migration|
|
||||
"Migration `#{migration}` with args `#{expected.inspect}` not scheduled!"
|
||||
end
|
||||
end
|
||||
|
||||
before do
|
||||
create(:gpg_key, id: 1, key: GpgHelpers::User1.public_key)
|
||||
create(:gpg_key, id: 2, key: GpgHelpers::User3.public_key)
|
||||
|
|
|
@ -24,9 +24,9 @@ describe ScheduleMergeRequestDiffMigrations, :migration, :sidekiq do
|
|||
Timecop.freeze do
|
||||
migrate!
|
||||
|
||||
expect(described_class::MIGRATION).to be_scheduled_migration(5.minutes, 1, 1)
|
||||
expect(described_class::MIGRATION).to be_scheduled_migration(10.minutes, 2, 2)
|
||||
expect(described_class::MIGRATION).to be_scheduled_migration(15.minutes, 4, 4)
|
||||
expect(described_class::MIGRATION).to be_scheduled_delayed_migration(5.minutes, 1, 1)
|
||||
expect(described_class::MIGRATION).to be_scheduled_delayed_migration(10.minutes, 2, 2)
|
||||
expect(described_class::MIGRATION).to be_scheduled_delayed_migration(15.minutes, 4, 4)
|
||||
expect(BackgroundMigrationWorker.jobs.size).to eq 3
|
||||
end
|
||||
end
|
||||
|
|
|
@ -24,9 +24,9 @@ describe ScheduleMergeRequestDiffMigrationsTakeTwo, :migration, :sidekiq do
|
|||
Timecop.freeze do
|
||||
migrate!
|
||||
|
||||
expect(described_class::MIGRATION).to be_scheduled_migration(10.minutes, 1, 1)
|
||||
expect(described_class::MIGRATION).to be_scheduled_migration(20.minutes, 2, 2)
|
||||
expect(described_class::MIGRATION).to be_scheduled_migration(30.minutes, 4, 4)
|
||||
expect(described_class::MIGRATION).to be_scheduled_delayed_migration(10.minutes, 1, 1)
|
||||
expect(described_class::MIGRATION).to be_scheduled_delayed_migration(20.minutes, 2, 2)
|
||||
expect(described_class::MIGRATION).to be_scheduled_delayed_migration(30.minutes, 4, 4)
|
||||
expect(BackgroundMigrationWorker.jobs.size).to eq 3
|
||||
end
|
||||
end
|
||||
|
|
|
@ -44,9 +44,9 @@ describe ScheduleMergeRequestLatestMergeRequestDiffIdMigrations, :migration, :si
|
|||
Timecop.freeze do
|
||||
migrate!
|
||||
|
||||
expect(described_class::MIGRATION).to be_scheduled_migration(5.minutes, merge_request_1.id, merge_request_1.id)
|
||||
expect(described_class::MIGRATION).to be_scheduled_migration(10.minutes, merge_request_2.id, merge_request_2.id)
|
||||
expect(described_class::MIGRATION).to be_scheduled_migration(15.minutes, merge_request_4.id, merge_request_4.id)
|
||||
expect(described_class::MIGRATION).to be_scheduled_delayed_migration(5.minutes, merge_request_1.id, merge_request_1.id)
|
||||
expect(described_class::MIGRATION).to be_scheduled_delayed_migration(10.minutes, merge_request_2.id, merge_request_2.id)
|
||||
expect(described_class::MIGRATION).to be_scheduled_delayed_migration(15.minutes, merge_request_4.id, merge_request_4.id)
|
||||
expect(BackgroundMigrationWorker.jobs.size).to eq 3
|
||||
end
|
||||
end
|
||||
|
|
|
@ -12,10 +12,10 @@ describe SchedulePopulateMergeRequestMetricsWithEventsData, :migration, :sidekiq
|
|||
migrate!
|
||||
|
||||
expect(described_class::MIGRATION)
|
||||
.to be_scheduled_migration(10.minutes, mrs.first.id, mrs.second.id)
|
||||
.to be_scheduled_delayed_migration(10.minutes, mrs.first.id, mrs.second.id)
|
||||
|
||||
expect(described_class::MIGRATION)
|
||||
.to be_scheduled_migration(20.minutes, mrs.third.id, mrs.third.id)
|
||||
.to be_scheduled_delayed_migration(20.minutes, mrs.third.id, mrs.third.id)
|
||||
|
||||
expect(BackgroundMigrationWorker.jobs.size).to eq(2)
|
||||
end
|
||||
|
|
|
@ -4,18 +4,6 @@ require Rails.root.join('db', 'post_migrate', '20171103140253_track_untracked_up
|
|||
describe TrackUntrackedUploads, :migration, :sidekiq do
|
||||
include TrackUntrackedUploadsHelpers
|
||||
|
||||
matcher :be_scheduled_migration do
|
||||
match do |migration|
|
||||
BackgroundMigrationWorker.jobs.any? do |job|
|
||||
job['args'] == [migration]
|
||||
end
|
||||
end
|
||||
|
||||
failure_message do |migration|
|
||||
"Migration `#{migration}` with args `#{expected.inspect}` not scheduled!"
|
||||
end
|
||||
end
|
||||
|
||||
it 'correctly schedules the follow-up background migration' do
|
||||
Sidekiq::Testing.fake! do
|
||||
migrate!
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
RSpec::Matchers.define :be_scheduled_migration do |delay, *expected|
|
||||
RSpec::Matchers.define :be_scheduled_delayed_migration do |delay, *expected|
|
||||
match do |migration|
|
||||
BackgroundMigrationWorker.jobs.any? do |job|
|
||||
job['args'] == [migration, expected] &&
|
||||
|
@ -11,3 +11,16 @@ RSpec::Matchers.define :be_scheduled_migration do |delay, *expected|
|
|||
'not scheduled in expected time!'
|
||||
end
|
||||
end
|
||||
|
||||
RSpec::Matchers.define :be_scheduled_migration do |*expected|
|
||||
match do |migration|
|
||||
BackgroundMigrationWorker.jobs.any? do |job|
|
||||
args = job['args'].size == 1 ? [BackgroundMigrationWorker.jobs[0]['args'][0], []] : job['args']
|
||||
args == [migration, expected]
|
||||
end
|
||||
end
|
||||
|
||||
failure_message do |migration|
|
||||
"Migration `#{migration}` with args `#{expected.inspect}` not scheduled!"
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue