diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-05-19 10:33:21 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-05-19 10:33:21 +0300 |
commit | 36a59d088eca61b834191dacea009677a96c052f (patch) | |
tree | e4f33972dab5d8ef79e3944a9f403035fceea43f /spec/models/container_repository_spec.rb | |
parent | a1761f15ec2cae7c7f7bbda39a75494add0dfd6f (diff) |
Add latest changes from gitlab-org/gitlab@15-0-stable-eev15.0.0-rc42
Diffstat (limited to 'spec/models/container_repository_spec.rb')
-rw-r--r-- | spec/models/container_repository_spec.rb | 68 |
1 files changed, 52 insertions, 16 deletions
diff --git a/spec/models/container_repository_spec.rb b/spec/models/container_repository_spec.rb index 2ea042fb767..af4e40cecb7 100644 --- a/spec/models/container_repository_spec.rb +++ b/spec/models/container_repository_spec.rb @@ -208,9 +208,23 @@ RSpec.describe ContainerRepository, :aggregate_failures do shared_examples 'queueing the next import' do it 'starts the worker' do expect(::ContainerRegistry::Migration::EnqueuerWorker).to receive(:perform_async) + expect(::ContainerRegistry::Migration::EnqueuerWorker).to receive(:perform_in) subject end + + context 'enqueue_twice feature flag disabled' do + before do + stub_feature_flags(container_registry_migration_phase2_enqueue_twice: false) + end + + it 'starts the worker only once' do + expect(::ContainerRegistry::Migration::EnqueuerWorker).to receive(:perform_async) + expect(::ContainerRegistry::Migration::EnqueuerWorker).not_to receive(:perform_in) + + subject + end + end end describe '#start_pre_import' do @@ -354,6 +368,7 @@ RSpec.describe ContainerRepository, :aggregate_failures do subject { repository.skip_import(reason: :too_many_retries) } it_behaves_like 'transitioning from allowed states', ContainerRepository::SKIPPABLE_MIGRATION_STATES + it_behaves_like 'queueing the next import' it 'sets migration_skipped_at and migration_skipped_reason' do expect { subject }.to change { repository.reload.migration_skipped_at } @@ -630,10 +645,15 @@ RSpec.describe ContainerRepository, :aggregate_failures do describe '#start_expiration_policy!' do subject { repository.start_expiration_policy! } + before do + repository.update_column(:last_cleanup_deleted_tags_count, 10) + end + it 'sets the expiration policy started at to now' do freeze_time do expect { subject } .to change { repository.expiration_policy_started_at }.from(nil).to(Time.zone.now) + .and change { repository.last_cleanup_deleted_tags_count }.from(10).to(nil) end end end @@ -690,22 +710,6 @@ RSpec.describe ContainerRepository, :aggregate_failures do end end - describe '#reset_expiration_policy_started_at!' do - subject { repository.reset_expiration_policy_started_at! } - - before do - repository.start_expiration_policy! - end - - it 'resets the expiration policy started at' do - started_at = repository.expiration_policy_started_at - - expect(started_at).not_to be_nil - expect { subject } - .to change { repository.expiration_policy_started_at }.from(started_at).to(nil) - end - end - context 'registry migration' do before do allow(repository.gitlab_api_client).to receive(:supports_gitlab_api?).and_return(true) @@ -1307,6 +1311,38 @@ RSpec.describe ContainerRepository, :aggregate_failures do end end + describe '#nearing_or_exceeded_retry_limit?' do + subject { repository.nearing_or_exceeded_retry_limit? } + + before do + stub_application_setting(container_registry_import_max_retries: 3) + end + + context 'migration_retries_count is 1 less than max_retries' do + before do + repository.update_column(:migration_retries_count, 2) + end + + it { is_expected.to eq(true) } + end + + context 'migration_retries_count is lower than max_retries' do + before do + repository.update_column(:migration_retries_count, 1) + end + + it { is_expected.to eq(false) } + end + + context 'migration_retries_count equal to or higher than max_retries' do + before do + repository.update_column(:migration_retries_count, 3) + end + + it { is_expected.to eq(true) } + end + end + context 'with repositories' do let_it_be_with_reload(:repository) { create(:container_repository, :cleanup_unscheduled) } let_it_be(:other_repository) { create(:container_repository, :cleanup_unscheduled) } |