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:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-07-29 18:09:48 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-07-29 18:09:48 +0300
commitf4d51a9f71cf3d4b0874a3e1948fe3c1ea193c4d (patch)
tree7ae3da76e824c435167dd108721c0124ad2ee484 /spec/workers
parent2dedd78ef505a0ab0a379c7340a3fcba56ada663 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/workers')
-rw-r--r--spec/workers/environments/auto_delete_cron_worker_spec.rb105
-rw-r--r--spec/workers/pages_domain_verification_cron_worker_spec.rb2
-rw-r--r--spec/workers/pages_domain_verification_worker_spec.rb2
-rw-r--r--spec/workers/projects/git_garbage_collect_worker_spec.rb2
-rw-r--r--spec/workers/schedule_merge_request_cleanup_refs_worker_spec.rb2
5 files changed, 109 insertions, 4 deletions
diff --git a/spec/workers/environments/auto_delete_cron_worker_spec.rb b/spec/workers/environments/auto_delete_cron_worker_spec.rb
new file mode 100644
index 00000000000..b18f3da5d10
--- /dev/null
+++ b/spec/workers/environments/auto_delete_cron_worker_spec.rb
@@ -0,0 +1,105 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Environments::AutoDeleteCronWorker do
+ include CreateEnvironmentsHelpers
+
+ let(:worker) { described_class.new }
+
+ describe '#perform' do
+ subject { worker.perform }
+
+ let_it_be(:project) { create(:project, :repository) }
+
+ let!(:environment) { create(:environment, :auto_deletable, project: project) }
+
+ it 'deletes the environment' do
+ expect { subject }.to change { Environment.count }.by(-1)
+ end
+
+ context 'when environment is not stopped' do
+ let!(:environment) { create(:environment, :available, auto_delete_at: 1.day.ago, project: project) }
+
+ it 'does not delete the environment' do
+ expect { subject }.not_to change { Environment.count }
+ end
+ end
+
+ context 'when auto_delete_at is null' do
+ let!(:environment) { create(:environment, :stopped, auto_delete_at: nil, project: project) }
+
+ it 'does not delete the environment' do
+ expect { subject }.not_to change { Environment.count }
+ end
+ end
+
+ context 'with multiple deletable environments' do
+ let!(:other_environment) { create(:environment, :auto_deletable, project: project) }
+
+ it 'deletes all deletable environments' do
+ expect { subject }.to change { Environment.count }.by(-2)
+ end
+
+ context 'when loop reached loop limit' do
+ before do
+ stub_const("#{described_class}::LOOP_LIMIT", 1)
+ stub_const("#{described_class}::BATCH_SIZE", 1)
+ end
+
+ it 'deletes only one deletable environment' do
+ expect { subject }.to change { Environment.count }.by(-1)
+ end
+ end
+
+ context 'when batch size is less than the number of environments' do
+ before do
+ stub_const("#{described_class}::BATCH_SIZE", 1)
+ end
+
+ it 'deletes all deletable environments' do
+ expect { subject }.to change { Environment.count }.by(-2)
+ end
+ end
+ end
+
+ context 'with multiple deployments' do
+ it 'deletes the deployment records and refs' do
+ deployment_1 = create(:deployment, environment: environment, project: project)
+ deployment_2 = create(:deployment, environment: environment, project: project)
+ deployment_1.create_ref
+ deployment_2.create_ref
+
+ expect(project.repository.commit(deployment_1.ref_path)).to be_present
+ expect(project.repository.commit(deployment_2.ref_path)).to be_present
+
+ expect { subject }.to change { Deployment.count }.by(-2)
+
+ expect(project.repository.commit(deployment_1.ref_path)).not_to be_present
+ expect(project.repository.commit(deployment_2.ref_path)).not_to be_present
+ end
+ end
+
+ context 'when loop reached timeout' do
+ before do
+ stub_const("#{described_class}::LOOP_TIMEOUT", 0.seconds)
+ stub_const("#{described_class}::LOOP_LIMIT", 100_000)
+ allow_next_instance_of(described_class) do |worker|
+ allow(worker).to receive(:destroy_in_batch) { true }
+ end
+ end
+
+ it 'does not delete the environment' do
+ expect { subject }.not_to change { Environment.count }
+ end
+ end
+
+ context 'with idempotent flag' do
+ include_examples 'an idempotent worker' do
+ it 'deletes the environment' do
+ expect { subject }.to change { Environment.count }.by(-1)
+ end
+ end
+ end
+ end
+end
diff --git a/spec/workers/pages_domain_verification_cron_worker_spec.rb b/spec/workers/pages_domain_verification_cron_worker_spec.rb
index 01eaf984c90..a7e5d02a743 100644
--- a/spec/workers/pages_domain_verification_cron_worker_spec.rb
+++ b/spec/workers/pages_domain_verification_cron_worker_spec.rb
@@ -11,7 +11,7 @@ RSpec.describe PagesDomainVerificationCronWorker do
let!(:disabled) { create(:pages_domain, :disabled) }
it 'does nothing if the database is read-only' do
- allow(Gitlab::Database).to receive(:read_only?).and_return(true)
+ allow(Gitlab::Database.main).to receive(:read_only?).and_return(true)
expect(PagesDomainVerificationWorker).not_to receive(:perform_async).with(reverify.id)
worker.perform
diff --git a/spec/workers/pages_domain_verification_worker_spec.rb b/spec/workers/pages_domain_verification_worker_spec.rb
index 6d2f9ee2f8d..c9a4b7a97b4 100644
--- a/spec/workers/pages_domain_verification_worker_spec.rb
+++ b/spec/workers/pages_domain_verification_worker_spec.rb
@@ -9,7 +9,7 @@ RSpec.describe PagesDomainVerificationWorker do
describe '#perform' do
it 'does nothing if the database is read-only' do
- allow(Gitlab::Database).to receive(:read_only?).and_return(true)
+ allow(Gitlab::Database.main).to receive(:read_only?).and_return(true)
expect(PagesDomain).not_to receive(:find_by).with(id: domain.id)
worker.perform(domain.id)
diff --git a/spec/workers/projects/git_garbage_collect_worker_spec.rb b/spec/workers/projects/git_garbage_collect_worker_spec.rb
index 7b54d7df4b2..10525cf217b 100644
--- a/spec/workers/projects/git_garbage_collect_worker_spec.rb
+++ b/spec/workers/projects/git_garbage_collect_worker_spec.rb
@@ -67,7 +67,7 @@ RSpec.describe Projects::GitGarbageCollectWorker do
end
it 'does nothing if the database is read-only' do
- allow(Gitlab::Database).to receive(:read_only?) { true }
+ allow(Gitlab::Database.main).to receive(:read_only?) { true }
expect(Gitlab::Cleanup::OrphanLfsFileReferences).not_to receive(:new)
subject.perform(*params)
diff --git a/spec/workers/schedule_merge_request_cleanup_refs_worker_spec.rb b/spec/workers/schedule_merge_request_cleanup_refs_worker_spec.rb
index ef515e43474..345b3f31353 100644
--- a/spec/workers/schedule_merge_request_cleanup_refs_worker_spec.rb
+++ b/spec/workers/schedule_merge_request_cleanup_refs_worker_spec.rb
@@ -7,7 +7,7 @@ RSpec.describe ScheduleMergeRequestCleanupRefsWorker do
describe '#perform' do
it 'does nothing if the database is read-only' do
- allow(Gitlab::Database).to receive(:read_only?).and_return(true)
+ allow(Gitlab::Database.main).to receive(:read_only?).and_return(true)
expect(MergeRequestCleanupRefsWorker).not_to receive(:perform_with_capacity)
worker.perform