diff options
Diffstat (limited to 'spec/tasks/gitlab/pages_rake_spec.rb')
-rw-r--r-- | spec/tasks/gitlab/pages_rake_spec.rb | 94 |
1 files changed, 54 insertions, 40 deletions
diff --git a/spec/tasks/gitlab/pages_rake_spec.rb b/spec/tasks/gitlab/pages_rake_spec.rb index 76808f52890..08194f4d1c9 100644 --- a/spec/tasks/gitlab/pages_rake_spec.rb +++ b/spec/tasks/gitlab/pages_rake_spec.rb @@ -2,66 +2,80 @@ require 'rake_helper' -RSpec.describe 'gitlab:pages:migrate_legacy_storagerake task' do +RSpec.describe 'gitlab:pages' do before(:context) do Rake.application.rake_require 'tasks/gitlab/pages' end - subject { run_rake_task('gitlab:pages:migrate_legacy_storage') } + describe 'migrate_legacy_storage task' do + subject { run_rake_task('gitlab:pages:migrate_legacy_storage') } - let(:project) { create(:project) } + it 'calls migration service' do + expect_next_instance_of(::Pages::MigrateFromLegacyStorageService, anything, + migration_threads: 3, + batch_size: 10, + ignore_invalid_entries: false) do |service| + expect(service).to receive(:execute).and_call_original + end - it 'does not try to migrate pages if pages are not deployed' do - expect(::Pages::MigrateLegacyStorageToDeploymentService).not_to receive(:new) + subject + end - subject - end + it 'uses PAGES_MIGRATION_THREADS environment variable' do + stub_env('PAGES_MIGRATION_THREADS', '5') - context 'when pages are marked as deployed' do - before do - project.mark_pages_as_deployed + expect_next_instance_of(::Pages::MigrateFromLegacyStorageService, anything, + migration_threads: 5, + batch_size: 10, + ignore_invalid_entries: false) do |service| + expect(service).to receive(:execute).and_call_original + end + + subject end - context 'when pages directory does not exist' do - it 'tries to migrate the project, but does not crash' do - expect_next_instance_of(::Pages::MigrateLegacyStorageToDeploymentService, project) do |service| - expect(service).to receive(:execute).and_call_original - end + it 'uses PAGES_MIGRATION_BATCH_SIZE environment variable' do + stub_env('PAGES_MIGRATION_BATCH_SIZE', '100') - subject + expect_next_instance_of(::Pages::MigrateFromLegacyStorageService, anything, + migration_threads: 3, + batch_size: 100, + ignore_invalid_entries: false) do |service| + expect(service).to receive(:execute).and_call_original end + + subject end - context 'when pages directory exists on disk' do - before do - FileUtils.mkdir_p File.join(project.pages_path, "public") - File.open(File.join(project.pages_path, "public/index.html"), "w") do |f| - f.write("Hello!") - end + it 'uses PAGES_MIGRATION_IGNORE_INVALID_ENTRIES environment variable' do + stub_env('PAGES_MIGRATION_IGNORE_INVALID_ENTRIES', 'true') + + expect_next_instance_of(::Pages::MigrateFromLegacyStorageService, anything, + migration_threads: 3, + batch_size: 10, + ignore_invalid_entries: true) do |service| + expect(service).to receive(:execute).and_call_original end - it 'migrates pages projects without deployments' do - expect_next_instance_of(::Pages::MigrateLegacyStorageToDeploymentService, project) do |service| - expect(service).to receive(:execute).and_call_original - end + subject + end + end + + describe 'clean_migrated_zip_storage task' do + it 'removes only migrated deployments' do + regular_deployment = create(:pages_deployment) + migrated_deployment = create(:pages_deployment, :migrated) - expect do - subject - end.to change { project.pages_metadatum.reload.pages_deployment }.from(nil) - end + regular_deployment.project.update_pages_deployment!(regular_deployment) + migrated_deployment.project.update_pages_deployment!(migrated_deployment) - context 'when deployed already exists for the project' do - before do - deployment = create(:pages_deployment, project: project) - project.set_first_pages_deployment!(deployment) - end + expect(PagesDeployment.all).to contain_exactly(regular_deployment, migrated_deployment) - it 'does not try to migrate project' do - expect(::Pages::MigrateLegacyStorageToDeploymentService).not_to receive(:new) + run_rake_task('gitlab:pages:clean_migrated_zip_storage') - subject - end - end + expect(PagesDeployment.all).to contain_exactly(regular_deployment) + expect(PagesDeployment.find_by_id(regular_deployment.id)).not_to be_nil + expect(PagesDeployment.find_by_id(migrated_deployment.id)).to be_nil end end end |