diff options
author | Yorick Peterse <yorickpeterse@gmail.com> | 2018-03-09 12:57:06 +0000 |
---|---|---|
committer | Yorick Peterse <yorickpeterse@gmail.com> | 2018-03-09 12:57:06 +0000 |
commit | cd7fcfd5779716c302608ce462996809f952ceec (patch) | |
tree | cd928742fc7bced2c6b3a260177f525ef5bfc268 /spec | |
parent | 1221035824fa35490765e34ed7633edd6f44fae3 (diff) | |
parent | 7b22381603d4f2cddc87b1b70e5be076df63cf01 (diff) | |
download | gitlab-ce-cd7fcfd5779716c302608ce462996809f952ceec.tar.gz |
Merge branch 'jprovazn-commits-count-reschedule' into 'master'
Reschedule commits_count background migration
See merge request gitlab-org/gitlab-ce!17599
Diffstat (limited to 'spec')
-rw-r--r-- | spec/lib/gitlab/background_migration/add_merge_request_diff_commits_count_spec.rb | 12 | ||||
-rw-r--r-- | spec/migrations/reschedule_commits_count_for_merge_request_diff_spec.rb | 37 |
2 files changed, 49 insertions, 0 deletions
diff --git a/spec/lib/gitlab/background_migration/add_merge_request_diff_commits_count_spec.rb b/spec/lib/gitlab/background_migration/add_merge_request_diff_commits_count_spec.rb index 21a791f5695..c43ed72038e 100644 --- a/spec/lib/gitlab/background_migration/add_merge_request_diff_commits_count_spec.rb +++ b/spec/lib/gitlab/background_migration/add_merge_request_diff_commits_count_spec.rb @@ -37,6 +37,18 @@ describe Gitlab::BackgroundMigration::AddMergeRequestDiffCommitsCount, :migratio expect(diff.reload.commits_count).to eq(0) end + it 'skips diffs that have commits_count already set' do + timestamp = 2.days.ago + diff = merge_request_diffs_table.create!( + merge_request_id: merge_request.id, + commits_count: 0, + updated_at: timestamp) + + subject.perform(diff.id, diff.id) + + expect(diff.reload.updated_at).to be_within(1.second).of(timestamp) + end + it 'migrates multiple diffs to the correct values' do diffs = Array.new(3).map.with_index { |_, i| create_diff!(i, commits: 3) } diff --git a/spec/migrations/reschedule_commits_count_for_merge_request_diff_spec.rb b/spec/migrations/reschedule_commits_count_for_merge_request_diff_spec.rb new file mode 100644 index 00000000000..26489ef58bd --- /dev/null +++ b/spec/migrations/reschedule_commits_count_for_merge_request_diff_spec.rb @@ -0,0 +1,37 @@ +require 'spec_helper' +require Rails.root.join('db', 'migrate', '20180309121820_reschedule_commits_count_for_merge_request_diff') + +describe RescheduleCommitsCountForMergeRequestDiff, :migration, :sidekiq do + let(:merge_request_diffs) { table(:merge_request_diffs) } + let(:merge_requests) { table(:merge_requests) } + let(:projects) { table(:projects) } + let(:namespaces) { table(:namespaces) } + + before do + stub_const("#{described_class.name}::BATCH_SIZE", 1) + + namespaces.create!(id: 1, name: 'gitlab', path: 'gitlab') + + projects.create!(id: 1, namespace_id: 1) + + merge_requests.create!(id: 1, target_project_id: 1, source_project_id: 1, target_branch: 'feature', source_branch: 'master') + + merge_request_diffs.create!(id: 1, merge_request_id: 1) + merge_request_diffs.create!(id: 2, merge_request_id: 1) + merge_request_diffs.create!(id: 3, merge_request_id: 1, commits_count: 0) + merge_request_diffs.create!(id: 4, merge_request_id: 1) + end + + it 'correctly schedules background migrations' do + Sidekiq::Testing.fake! do + Timecop.freeze do + migrate! + + 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 + end +end |