summaryrefslogtreecommitdiff
path: root/spec/migrations/migrate_old_artifacts_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/migrations/migrate_old_artifacts_spec.rb')
-rw-r--r--spec/migrations/migrate_old_artifacts_spec.rb140
1 files changed, 0 insertions, 140 deletions
diff --git a/spec/migrations/migrate_old_artifacts_spec.rb b/spec/migrations/migrate_old_artifacts_spec.rb
deleted file mode 100644
index bc826d91471..00000000000
--- a/spec/migrations/migrate_old_artifacts_spec.rb
+++ /dev/null
@@ -1,140 +0,0 @@
-# encoding: utf-8
-
-require 'spec_helper'
-require Rails.root.join('db', 'post_migrate', '20170523083112_migrate_old_artifacts.rb')
-
-# Adding the ci_job_artifacts table (from the 20170918072948 schema)
-# makes the use of model code below easier.
-describe MigrateOldArtifacts, :migration, schema: 20170918072948 do
- let(:migration) { described_class.new }
- let!(:directory) { Dir.mktmpdir }
-
- before do
- allow(Gitlab.config.artifacts).to receive(:path).and_return(directory)
- end
-
- after do
- FileUtils.remove_entry_secure(directory)
- end
-
- context 'with migratable data' do
- let(:projects) { table(:projects) }
- let(:ci_pipelines) { table(:ci_pipelines) }
- let(:ci_builds) { table(:ci_builds) }
-
- let!(:project1) { projects.create!(ci_id: 2) }
- let!(:project2) { projects.create!(ci_id: 3) }
- let!(:project3) { projects.create! }
-
- let!(:pipeline1) { ci_pipelines.create!(project_id: project1.id) }
- let!(:pipeline2) { ci_pipelines.create!(project_id: project2.id) }
- let!(:pipeline3) { ci_pipelines.create!(project_id: project3.id) }
-
- let!(:build_with_legacy_artifacts) { ci_builds.create!(commit_id: pipeline1.id, project_id: project1.id, type: 'Ci::Build').becomes(Ci::Build) }
- let!(:build_without_artifacts) { ci_builds.create!(commit_id: pipeline1.id, project_id: project1.id, type: 'Ci::Build').becomes(Ci::Build) }
- let!(:build2) { ci_builds.create!(commit_id: pipeline2.id, project_id: project2.id, type: 'Ci::Build').becomes(Ci::Build) }
- let!(:build3) { ci_builds.create!(commit_id: pipeline3.id, project_id: project3.id, type: 'Ci::Build').becomes(Ci::Build) }
-
- before do
- setup_builds(build2, build3)
-
- store_artifacts_in_legacy_path(build_with_legacy_artifacts)
- end
-
- it "legacy artifacts are not accessible" do
- expect(build_with_legacy_artifacts.artifacts?).to be_falsey
- end
-
- describe '#min_id' do
- subject { migration.send(:min_id) }
-
- it 'returns the newest build for which ci_id is not defined' do
- is_expected.to eq(build3.id)
- end
- end
-
- describe '#builds_with_artifacts' do
- subject { migration.send(:builds_with_artifacts).map(&:id) }
-
- it 'returns a list of builds that has artifacts and could be migrated' do
- is_expected.to contain_exactly(build_with_legacy_artifacts.id, build2.id)
- end
- end
-
- describe '#up' do
- context 'when migrating artifacts' do
- before do
- migration.up
- end
-
- it 'all files do have artifacts' do
- Ci::Build.with_artifacts_archive do |build|
- expect(build).to have_artifacts
- end
- end
-
- it 'artifacts are no longer present on legacy path' do
- expect(File.exist?(legacy_path(build_with_legacy_artifacts))).to eq(false)
- end
- end
-
- context 'when there are artifacts in old and new directory' do
- before do
- store_artifacts_in_legacy_path(build2)
-
- migration.up
- end
-
- it 'does not move old files' do
- expect(File.exist?(legacy_path(build2))).to eq(true)
- end
- end
- end
-
- private
-
- def store_artifacts_in_legacy_path(build)
- FileUtils.mkdir_p(legacy_path(build))
-
- FileUtils.copy(
- Rails.root.join('spec/fixtures/ci_build_artifacts.zip'),
- File.join(legacy_path(build), "ci_build_artifacts.zip"))
-
- FileUtils.copy(
- Rails.root.join('spec/fixtures/ci_build_artifacts_metadata.gz'),
- File.join(legacy_path(build), "ci_build_artifacts_metadata.gz"))
-
- build.update_columns(
- artifacts_file: 'ci_build_artifacts.zip',
- artifacts_metadata: 'ci_build_artifacts_metadata.gz')
-
- build.reload
- end
-
- def legacy_path(build)
- File.join(directory,
- build.created_at.utc.strftime('%Y_%m'),
- build.project.ci_id.to_s,
- build.id.to_s)
- end
-
- def new_legacy_path(build)
- File.join(directory,
- build.created_at.utc.strftime('%Y_%m'),
- build.project_id.to_s,
- build.id.to_s)
- end
-
- def setup_builds(*builds)
- builds.each do |build|
- FileUtils.mkdir_p(new_legacy_path(build))
-
- build.update_columns(
- artifacts_file: 'ci_build_artifacts.zip',
- artifacts_metadata: 'ci_build_artifacts_metadata.gz')
-
- build.reload
- end
- end
- end
-end