diff options
author | Gabriel Mazetto <brodock@gmail.com> | 2017-09-06 07:16:26 +0200 |
---|---|---|
committer | Nick Thomas <nick@gitlab.com> | 2017-09-28 16:32:14 +0100 |
commit | f4de14d71f425dc14ee5837d96f4e9f42c7cc239 (patch) | |
tree | ef7d2183469853b049eee8326f66edd4a3744f68 /spec/tasks | |
parent | 38607b48b689b39721ff0cf7355ba2a176f4bf5e (diff) | |
download | gitlab-ce-f4de14d71f425dc14ee5837d96f4e9f42c7cc239.tar.gz |
Add support to migrate existing projects to Hashed Storage asynchashed-storage-migration-path
Diffstat (limited to 'spec/tasks')
-rw-r--r-- | spec/tasks/gitlab/storage_rake_spec.rb | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/spec/tasks/gitlab/storage_rake_spec.rb b/spec/tasks/gitlab/storage_rake_spec.rb new file mode 100644 index 00000000000..f59792c3d36 --- /dev/null +++ b/spec/tasks/gitlab/storage_rake_spec.rb @@ -0,0 +1,52 @@ +require 'rake_helper' + +describe 'gitlab:storage rake tasks' do + before do + Rake.application.rake_require 'tasks/gitlab/storage' + + stub_warn_user_is_not_gitlab + end + + describe 'migrate_to_hashed rake task' do + context '0 legacy projects' do + it 'does nothing' do + expect(StorageMigratorWorker).not_to receive(:perform_async) + + run_rake_task('gitlab:storage:migrate_to_hashed') + end + end + + context '5 legacy projects' do + let(:projects) { create_list(:project, 5, storage_version: 0) } + + context 'in batches of 1' do + before do + stub_env('BATCH' => 1) + end + + it 'enqueues one StorageMigratorWorker per project' do + projects.each do |project| + expect(StorageMigratorWorker).to receive(:perform_async).with(project.id, project.id) + end + + run_rake_task('gitlab:storage:migrate_to_hashed') + end + end + + context 'in batches of 2' do + before do + stub_env('BATCH' => 2) + end + + it 'enqueues one StorageMigratorWorker per 2 projects' do + projects.map(&:id).sort.each_slice(2) do |first, last| + last ||= first + expect(StorageMigratorWorker).to receive(:perform_async).with(first, last) + end + + run_rake_task('gitlab:storage:migrate_to_hashed') + end + end + end + end +end |