From aee0a117a889461ce8ced6fcf73207fe017f1d99 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Mon, 20 Dec 2021 13:37:47 +0000 Subject: Add latest changes from gitlab-org/gitlab@14-6-stable-ee --- .../destroy_all_expired_service_spec.rb | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'spec/services/ci/job_artifacts/destroy_all_expired_service_spec.rb') diff --git a/spec/services/ci/job_artifacts/destroy_all_expired_service_spec.rb b/spec/services/ci/job_artifacts/destroy_all_expired_service_spec.rb index 6761f052e18..e71f1a4266a 100644 --- a/spec/services/ci/job_artifacts/destroy_all_expired_service_spec.rb +++ b/spec/services/ci/job_artifacts/destroy_all_expired_service_spec.rb @@ -53,6 +53,46 @@ RSpec.describe Ci::JobArtifacts::DestroyAllExpiredService, :clean_gitlab_redis_s log = ActiveRecord::QueryRecorder.new { subject } expect(log.count).to be_within(1).of(8) end + + context 'with several locked-unknown artifact records' do + before do + stub_const("#{described_class}::LOOP_LIMIT", 10) + stub_const("#{described_class}::BATCH_SIZE", 2) + end + + let!(:lockable_artifact_records) do + [ + create(:ci_job_artifact, :metadata, :expired, locked: ::Ci::JobArtifact.lockeds[:unknown], job: locked_job), + create(:ci_job_artifact, :junit, :expired, locked: ::Ci::JobArtifact.lockeds[:unknown], job: locked_job), + create(:ci_job_artifact, :sast, :expired, locked: ::Ci::JobArtifact.lockeds[:unknown], job: locked_job), + create(:ci_job_artifact, :cobertura, :expired, locked: ::Ci::JobArtifact.lockeds[:unknown], job: locked_job), + create(:ci_job_artifact, :trace, :expired, locked: ::Ci::JobArtifact.lockeds[:unknown], job: locked_job) + ] + end + + let!(:unlockable_artifact_records) do + [ + create(:ci_job_artifact, :metadata, :expired, locked: ::Ci::JobArtifact.lockeds[:unknown], job: job), + create(:ci_job_artifact, :junit, :expired, locked: ::Ci::JobArtifact.lockeds[:unknown], job: job), + create(:ci_job_artifact, :sast, :expired, locked: ::Ci::JobArtifact.lockeds[:unknown], job: job), + create(:ci_job_artifact, :cobertura, :expired, locked: ::Ci::JobArtifact.lockeds[:unknown], job: job), + create(:ci_job_artifact, :trace, :expired, locked: ::Ci::JobArtifact.lockeds[:unknown], job: job), + artifact + ] + end + + it 'updates the locked status of job artifacts from artifacts-locked pipelines' do + subject + + expect(lockable_artifact_records).to be_all(&:persisted?) + expect(lockable_artifact_records).to be_all { |artifact| artifact.reload.artifact_artifacts_locked? } + end + + it 'unlocks and then destroys job artifacts from artifacts-unlocked pipelines' do + expect { subject }.to change { Ci::JobArtifact.count }.by(-6) + expect(Ci::JobArtifact.where(id: unlockable_artifact_records.map(&:id))).to be_empty + end + end end end -- cgit v1.2.1