Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/tasks/gitlab/pages_rake_spec.rb')
-rw-r--r--spec/tasks/gitlab/pages_rake_spec.rb116
1 files changed, 100 insertions, 16 deletions
diff --git a/spec/tasks/gitlab/pages_rake_spec.rb b/spec/tasks/gitlab/pages_rake_spec.rb
index 08194f4d1c9..664899c361b 100644
--- a/spec/tasks/gitlab/pages_rake_spec.rb
+++ b/spec/tasks/gitlab/pages_rake_spec.rb
@@ -12,10 +12,9 @@ RSpec.describe 'gitlab:pages' do
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
+ ignore_invalid_entries: false,
+ mark_projects_as_not_deployed: false) do |service|
+ expect(service).to receive(:execute_with_threads).with(threads: 3, batch_size: 10).and_call_original
end
subject
@@ -25,10 +24,9 @@ RSpec.describe 'gitlab:pages' do
stub_env('PAGES_MIGRATION_THREADS', '5')
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
+ ignore_invalid_entries: false,
+ mark_projects_as_not_deployed: false) do |service|
+ expect(service).to receive(:execute_with_threads).with(threads: 5, batch_size: 10).and_call_original
end
subject
@@ -38,10 +36,9 @@ RSpec.describe 'gitlab:pages' do
stub_env('PAGES_MIGRATION_BATCH_SIZE', '100')
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
+ ignore_invalid_entries: false,
+ mark_projects_as_not_deployed: false) do |service|
+ expect(service).to receive(:execute_with_threads).with(threads: 3, batch_size: 100).and_call_original
end
subject
@@ -51,10 +48,21 @@ RSpec.describe 'gitlab:pages' 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
+ ignore_invalid_entries: true,
+ mark_projects_as_not_deployed: false) do |service|
+ expect(service).to receive(:execute_with_threads).with(threads: 3, batch_size: 10).and_call_original
+ end
+
+ subject
+ end
+
+ it 'uses PAGES_MIGRATION_MARK_PROJECTS_AS_NOT_DEPLOYED environment variable' do
+ stub_env('PAGES_MIGRATION_MARK_PROJECTS_AS_NOT_DEPLOYED', 'true')
+
+ expect_next_instance_of(::Pages::MigrateFromLegacyStorageService, anything,
+ ignore_invalid_entries: false,
+ mark_projects_as_not_deployed: true) do |service|
+ expect(service).to receive(:execute_with_threads).with(threads: 3, batch_size: 10).and_call_original
end
subject
@@ -78,4 +86,80 @@ RSpec.describe 'gitlab:pages' do
expect(PagesDeployment.find_by_id(migrated_deployment.id)).to be_nil
end
end
+
+ describe 'gitlab:pages:deployments:migrate_to_object_storage' do
+ subject { run_rake_task('gitlab:pages:deployments:migrate_to_object_storage') }
+
+ before do
+ stub_pages_object_storage(::Pages::DeploymentUploader, enabled: object_storage_enabled)
+ end
+
+ let!(:deployment) { create(:pages_deployment, file_store: store) }
+ let(:object_storage_enabled) { true }
+
+ context 'when local storage is used' do
+ let(:store) { ObjectStorage::Store::LOCAL }
+
+ context 'and remote storage is defined' do
+ it 'migrates file to remote storage' do
+ subject
+
+ expect(deployment.reload.file_store).to eq(ObjectStorage::Store::REMOTE)
+ end
+ end
+
+ context 'and remote storage is not defined' do
+ let(:object_storage_enabled) { false }
+
+ it 'fails to migrate to remote storage' do
+ subject
+
+ expect(deployment.reload.file_store).to eq(ObjectStorage::Store::LOCAL)
+ end
+ end
+ end
+
+ context 'when remote storage is used' do
+ let(:store) { ObjectStorage::Store::REMOTE }
+
+ it 'file stays on remote storage' do
+ subject
+
+ expect(deployment.reload.file_store).to eq(ObjectStorage::Store::REMOTE)
+ end
+ end
+ end
+
+ describe 'gitlab:pages:deployments:migrate_to_local' do
+ subject { run_rake_task('gitlab:pages:deployments:migrate_to_local') }
+
+ before do
+ stub_pages_object_storage(::Pages::DeploymentUploader, enabled: object_storage_enabled)
+ end
+
+ let!(:deployment) { create(:pages_deployment, file_store: store) }
+ let(:object_storage_enabled) { true }
+
+ context 'when remote storage is used' do
+ let(:store) { ObjectStorage::Store::REMOTE }
+
+ context 'and job has remote file store defined' do
+ it 'migrates file to local storage' do
+ subject
+
+ expect(deployment.reload.file_store).to eq(ObjectStorage::Store::LOCAL)
+ end
+ end
+ end
+
+ context 'when local storage is used' do
+ let(:store) { ObjectStorage::Store::LOCAL }
+
+ it 'file stays on local storage' do
+ subject
+
+ expect(deployment.reload.file_store).to eq(ObjectStorage::Store::LOCAL)
+ end
+ end
+ end
end