summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/background_migration
diff options
context:
space:
mode:
authorOswaldo Ferreira <oswaldo@gitlab.com>2018-07-03 17:05:19 -0300
committerOswaldo Ferreira <oswaldo@gitlab.com>2018-07-10 09:43:58 -0300
commite66535e8407ccb8dd229fefdce817902a364f58a (patch)
treec90cbfc48845479074fd508d3a19b88cc594fda9 /spec/lib/gitlab/background_migration
parent80a7be87f82b36c23e273b6a84b5a6bdbffaa947 (diff)
downloadgitlab-ce-e66535e8407ccb8dd229fefdce817902a364f58a.tar.gz
Create a diff deletion worker scheduler to avoid long-running post-migration
Diffstat (limited to 'spec/lib/gitlab/background_migration')
-rw-r--r--spec/lib/gitlab/background_migration/schedule_diff_files_deletion_spec.rb43
1 files changed, 43 insertions, 0 deletions
diff --git a/spec/lib/gitlab/background_migration/schedule_diff_files_deletion_spec.rb b/spec/lib/gitlab/background_migration/schedule_diff_files_deletion_spec.rb
new file mode 100644
index 00000000000..a699571ca90
--- /dev/null
+++ b/spec/lib/gitlab/background_migration/schedule_diff_files_deletion_spec.rb
@@ -0,0 +1,43 @@
+require 'spec_helper'
+
+describe Gitlab::BackgroundMigration::ScheduleDiffFilesDeletion, :migration, schema: 20180619121030 do
+ describe '#perform' do
+ let(:merge_request_diffs) { table(:merge_request_diffs) }
+ let(:merge_requests) { table(:merge_requests) }
+ let(:namespaces) { table(:namespaces) }
+ let(:projects) { table(:projects) }
+
+ before do
+ stub_const("#{described_class.name}::BATCH_SIZE", 3)
+
+ namespaces.create!(id: 1, name: 'gitlab', path: 'gitlab')
+ projects.create!(id: 1, namespace_id: 1, name: 'gitlab', path: 'gitlab')
+
+ merge_requests.create!(id: 1, target_project_id: 1, source_project_id: 1, target_branch: 'feature', source_branch: 'master', state: 'merged')
+
+ 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)
+ merge_request_diffs.create!(id: 4, merge_request_id: 1)
+ merge_request_diffs.create!(id: 5, merge_request_id: 1)
+ end
+
+ it 'correctly schedules diff file deletion workers' do
+ Sidekiq::Testing.fake! do
+ Timecop.freeze do
+ described_class.new.perform([1, 2, 3, 4, 5], 1)
+
+ [1, 2, 3].each do |id|
+ expect(described_class::MIGRATION).to be_scheduled_delayed_migration(10.minutes, id)
+ end
+
+ [4, 5].each do |id|
+ expect(described_class::MIGRATION).to be_scheduled_delayed_migration(11.minutes, id)
+ end
+
+ expect(BackgroundMigrationWorker.jobs.size).to eq(5)
+ end
+ end
+ end
+ end
+end