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>2023-12-19 14:01:45 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-12-19 14:01:45 +0300
commit9297025d0b7ddf095eb618dfaaab2ff8f2018d8b (patch)
tree865198c01d1824a9b098127baa3ab980c9cd2c06 /spec/services/ci
parent6372471f43ee03c05a7c1f8b0c6ac6b8a7431dbe (diff)
Add latest changes from gitlab-org/gitlab@16-7-stable-eev16.7.0-rc42
Diffstat (limited to 'spec/services/ci')
-rw-r--r--spec/services/ci/catalog/resources/destroy_service_spec.rb38
-rw-r--r--spec/services/ci/components/fetch_service_spec.rb34
-rw-r--r--spec/services/ci/create_pipeline_service/workflow_auto_cancel_spec.rb169
-rw-r--r--spec/services/ci/create_pipeline_service_spec.rb4
-rw-r--r--spec/services/ci/generate_coverage_reports_service_spec.rb19
-rw-r--r--spec/services/ci/job_artifacts/create_service_spec.rb52
-rw-r--r--spec/services/ci/pipeline_creation/cancel_redundant_pipelines_service_spec.rb28
-rw-r--r--spec/services/ci/process_sync_events_service_spec.rb65
-rw-r--r--spec/services/ci/runners/assign_runner_service_spec.rb2
-rw-r--r--spec/services/ci/runners/bulk_delete_runners_service_spec.rb2
-rw-r--r--spec/services/ci/runners/create_runner_service_spec.rb2
-rw-r--r--spec/services/ci/runners/process_runner_version_update_service_spec.rb2
-rw-r--r--spec/services/ci/runners/reconcile_existing_runner_versions_service_spec.rb2
-rw-r--r--spec/services/ci/runners/register_runner_service_spec.rb2
-rw-r--r--spec/services/ci/runners/reset_registration_token_service_spec.rb2
-rw-r--r--spec/services/ci/runners/set_runner_associated_projects_service_spec.rb2
-rw-r--r--spec/services/ci/runners/stale_managers_cleanup_service_spec.rb2
-rw-r--r--spec/services/ci/runners/unassign_runner_service_spec.rb2
-rw-r--r--spec/services/ci/runners/unregister_runner_manager_service_spec.rb2
-rw-r--r--spec/services/ci/runners/unregister_runner_service_spec.rb2
-rw-r--r--spec/services/ci/runners/update_runner_service_spec.rb2
-rw-r--r--spec/services/ci/stuck_builds/drop_pending_service_spec.rb2
-rw-r--r--spec/services/ci/stuck_builds/drop_running_service_spec.rb2
-rw-r--r--spec/services/ci/stuck_builds/drop_scheduled_service_spec.rb2
24 files changed, 354 insertions, 87 deletions
diff --git a/spec/services/ci/catalog/resources/destroy_service_spec.rb b/spec/services/ci/catalog/resources/destroy_service_spec.rb
new file mode 100644
index 00000000000..da5ba7ad0bc
--- /dev/null
+++ b/spec/services/ci/catalog/resources/destroy_service_spec.rb
@@ -0,0 +1,38 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Ci::Catalog::Resources::DestroyService, feature_category: :pipeline_composition do
+ let_it_be(:project) { create(:project, :catalog_resource_with_components) }
+ let_it_be(:catalog_resource) { create(:ci_catalog_resource, project: project) }
+ let_it_be(:user) { create(:user) }
+
+ let(:service) { described_class.new(project, user) }
+
+ before do
+ stub_licensed_features(ci_namespace_catalog: true)
+ end
+
+ describe '#execute' do
+ context 'with an unauthorized user' do
+ it 'raises an AccessDeniedError' do
+ expect { service.execute(catalog_resource) }.to raise_error(Gitlab::Access::AccessDeniedError)
+ end
+ end
+
+ context 'with an authorized user' do
+ before_all do
+ project.add_owner(user)
+ end
+
+ it 'destroys a catalog resource' do
+ expect(project.catalog_resource).to eq(catalog_resource)
+
+ response = service.execute(catalog_resource)
+
+ expect(project.reload.catalog_resource).to be_nil
+ expect(response.status).to be(:success)
+ end
+ end
+ end
+end
diff --git a/spec/services/ci/components/fetch_service_spec.rb b/spec/services/ci/components/fetch_service_spec.rb
index 21b7df19f4a..82be795e997 100644
--- a/spec/services/ci/components/fetch_service_spec.rb
+++ b/spec/services/ci/components/fetch_service_spec.rb
@@ -21,14 +21,15 @@ RSpec.describe Ci::Components::FetchService, feature_category: :pipeline_composi
project = create(
:project, :custom_repo,
files: {
- 'template.yml' => content,
- 'my-component/template.yml' => content,
- 'my-dir/my-component/template.yml' => content
+ 'templates/first-component.yml' => content,
+ 'templates/second-component/template.yml' => content
}
)
project.repository.add_tag(project.creator, 'v0.1', project.repository.commit.sha)
+ create(:release, project: project, tag: 'v0.1', sha: project.repository.commit.sha)
+
project
end
@@ -119,32 +120,27 @@ RSpec.describe Ci::Components::FetchService, feature_category: :pipeline_composi
context 'when address points to an external component' do
let(:address) { "#{current_host}/#{component_path}@#{version}" }
- context 'when component path is the full path to a project' do
- let(:component_path) { project.full_path }
- let(:component_yaml_path) { 'template.yml' }
+ context 'when component path points to a template file in a project' do
+ let(:component_path) { "#{project.full_path}/first-component" }
it_behaves_like 'an external component'
end
- context 'when component path points to a directory in a project' do
- let(:component_path) { "#{project.full_path}/my-component" }
- let(:component_yaml_path) { 'my-component/template.yml' }
+ context 'when component path points to a template directory in a project' do
+ let(:component_path) { "#{project.full_path}/second-component" }
it_behaves_like 'an external component'
end
- context 'when component path points to a nested directory in a project' do
- let(:component_path) { "#{project.full_path}/my-dir/my-component" }
- let(:component_yaml_path) { 'my-dir/my-component/template.yml' }
+ context 'when the project exists but the component does not' do
+ let(:component_path) { "#{project.full_path}/unknown-component" }
+ let(:version) { '~latest' }
- it_behaves_like 'an external component'
+ it 'returns a content not found error' do
+ expect(result).to be_error
+ expect(result.reason).to eq(:content_not_found)
+ end
end
end
end
-
- def stub_project_blob(ref, path, content)
- allow_next_instance_of(Repository) do |instance|
- allow(instance).to receive(:blob_data_at).with(ref, path).and_return(content)
- end
- end
end
diff --git a/spec/services/ci/create_pipeline_service/workflow_auto_cancel_spec.rb b/spec/services/ci/create_pipeline_service/workflow_auto_cancel_spec.rb
new file mode 100644
index 00000000000..851c6f8fbea
--- /dev/null
+++ b/spec/services/ci/create_pipeline_service/workflow_auto_cancel_spec.rb
@@ -0,0 +1,169 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Ci::CreatePipelineService, :yaml_processor_feature_flag_corectness,
+ feature_category: :pipeline_composition do
+ let_it_be(:project) { create(:project, :repository) }
+ let_it_be(:user) { project.first_owner }
+
+ let(:service) { described_class.new(project, user, { ref: 'master' }) }
+ let(:pipeline) { service.execute(:push).payload }
+
+ before do
+ stub_ci_pipeline_yaml_file(config)
+ end
+
+ describe 'on_new_commit' do
+ context 'when is set to interruptible' do
+ let(:config) do
+ <<~YAML
+ workflow:
+ auto_cancel:
+ on_new_commit: interruptible
+
+ test1:
+ script: exit 0
+ YAML
+ end
+
+ before do
+ stub_ci_pipeline_yaml_file(config)
+ end
+
+ it 'creates a pipeline with on_new_commit' do
+ expect(pipeline).to be_persisted
+ expect(pipeline.errors).to be_empty
+ expect(pipeline.pipeline_metadata.auto_cancel_on_new_commit).to eq('interruptible')
+ end
+ end
+
+ context 'when is set to invalid' do
+ let(:config) do
+ <<~YAML
+ workflow:
+ auto_cancel:
+ on_new_commit: invalid
+
+ test1:
+ script: exit 0
+ YAML
+ end
+
+ before do
+ stub_ci_pipeline_yaml_file(config)
+ end
+
+ it 'creates a pipeline with errors' do
+ expect(pipeline).to be_persisted
+ expect(pipeline.errors.full_messages).to include(
+ 'workflow:auto_cancel on new commit must be one of: conservative, interruptible, disabled')
+ end
+ end
+ end
+
+ describe 'on_job_failure' do
+ context 'when is set to none' do
+ let(:config) do
+ <<~YAML
+ workflow:
+ auto_cancel:
+ on_job_failure: none
+
+ test1:
+ script: exit 0
+ YAML
+ end
+
+ before do
+ stub_ci_pipeline_yaml_file(config)
+ end
+
+ it 'creates a pipeline with on_job_failure' do
+ expect(pipeline).to be_persisted
+ expect(pipeline.errors).to be_empty
+ expect(pipeline.pipeline_metadata.auto_cancel_on_job_failure).to eq('none')
+ end
+ end
+
+ context 'when is set to all' do
+ let(:config) do
+ <<~YAML
+ workflow:
+ auto_cancel:
+ on_job_failure: all
+
+ test1:
+ script: exit 0
+ YAML
+ end
+
+ before do
+ stub_ci_pipeline_yaml_file(config)
+ end
+
+ it 'creates a pipeline with on_job_failure' do
+ expect(pipeline).to be_persisted
+ expect(pipeline.errors).to be_empty
+ expect(pipeline.pipeline_metadata.auto_cancel_on_job_failure).to eq('all')
+ end
+
+ context 'when auto_cancel_pipeline_on_job_failure feature flag is disabled' do
+ before do
+ stub_feature_flags(auto_cancel_pipeline_on_job_failure: false)
+ end
+
+ context 'when there are no other metadata settings present' do
+ it 'creates a pipeline without metadata' do
+ expect(pipeline).to be_persisted
+ expect(pipeline.errors).to be_empty
+ expect(pipeline.pipeline_metadata).to be_nil
+ end
+ end
+
+ context 'when other metadata settings are present' do
+ let(:config) do
+ <<~YAML
+ workflow:
+ name: pipeline_name
+ auto_cancel:
+ on_job_failure: all
+
+ test1:
+ script: exit 0
+ YAML
+ end
+
+ it 'creates a pipeline with on_job_failure' do
+ expect(pipeline).to be_persisted
+ expect(pipeline.errors).to be_empty
+ expect(pipeline.pipeline_metadata.auto_cancel_on_job_failure).to eq('none')
+ end
+ end
+ end
+ end
+
+ context 'when on_job_failure is set to invalid' do
+ let(:config) do
+ <<~YAML
+ workflow:
+ auto_cancel:
+ on_job_failure: invalid
+
+ test1:
+ script: exit 0
+ YAML
+ end
+
+ before do
+ stub_ci_pipeline_yaml_file(config)
+ end
+
+ it 'creates a pipeline with errors' do
+ expect(pipeline).to be_persisted
+ expect(pipeline.errors.full_messages).to include(
+ 'workflow:auto_cancel on job failure must be one of: none, all')
+ end
+ end
+ end
+end
diff --git a/spec/services/ci/create_pipeline_service_spec.rb b/spec/services/ci/create_pipeline_service_spec.rb
index 19e55c22df8..7dea50ba270 100644
--- a/spec/services/ci/create_pipeline_service_spec.rb
+++ b/spec/services/ci/create_pipeline_service_spec.rb
@@ -1757,7 +1757,7 @@ RSpec.describe Ci::CreatePipelineService, :yaml_processor_feature_flag_corectnes
let(:sha) do
components_project.repository.create_file(
user,
- 'my-component/template.yml',
+ 'templates/my-component/template.yml',
template,
message: 'Add my first CI component',
branch_name: 'master'
@@ -1894,7 +1894,7 @@ RSpec.describe Ci::CreatePipelineService, :yaml_processor_feature_flag_corectnes
let(:sha) do
components_project.repository.create_file(
user,
- 'my-component/template.yml',
+ 'templates/my-component/template.yml',
template,
message: 'Add my first CI component',
branch_name: 'master'
diff --git a/spec/services/ci/generate_coverage_reports_service_spec.rb b/spec/services/ci/generate_coverage_reports_service_spec.rb
index 811431bf9d6..dac8dc57261 100644
--- a/spec/services/ci/generate_coverage_reports_service_spec.rb
+++ b/spec/services/ci/generate_coverage_reports_service_spec.rb
@@ -25,6 +25,21 @@ RSpec.describe Ci::GenerateCoverageReportsService, feature_category: :code_testi
expect(subject[:status]).to eq(:parsed)
expect(subject[:data]).to eq(files: {})
end
+
+ context 'when there is a parsing error' do
+ before do
+ allow_next_found_instance_of(MergeRequest) do |merge_request|
+ allow(merge_request).to receive(:new_paths).and_raise(StandardError)
+ end
+ end
+
+ it 'returns status with error message and tracks the error' do
+ expect(service).to receive(:track_exception).and_call_original
+
+ expect(subject[:status]).to eq(:error)
+ expect(subject[:status_reason]).to include('An error occurred while fetching coverage reports.')
+ end
+ end
end
context 'when head pipeline does not have a coverage report artifact' do
@@ -38,6 +53,8 @@ RSpec.describe Ci::GenerateCoverageReportsService, feature_category: :code_testi
end
it 'returns status and error message' do
+ expect(service).not_to receive(:track_exception)
+
expect(subject[:status]).to eq(:error)
expect(subject[:status_reason]).to include('An error occurred while fetching coverage reports.')
end
@@ -48,6 +65,8 @@ RSpec.describe Ci::GenerateCoverageReportsService, feature_category: :code_testi
let!(:base_pipeline) { nil }
it 'returns status and error message' do
+ expect(service).not_to receive(:track_exception)
+
expect(subject[:status]).to eq(:error)
expect(subject[:status_reason]).to include('An error occurred while fetching coverage reports.')
end
diff --git a/spec/services/ci/job_artifacts/create_service_spec.rb b/spec/services/ci/job_artifacts/create_service_spec.rb
index a23ba250daf..0d6a15b0ea3 100644
--- a/spec/services/ci/job_artifacts/create_service_spec.rb
+++ b/spec/services/ci/job_artifacts/create_service_spec.rb
@@ -139,59 +139,19 @@ RSpec.describe Ci::JobArtifacts::CreateService, :clean_gitlab_redis_shared_state
shared_examples_for 'handling accessibility' do
shared_examples 'public accessibility' do
it 'sets accessibility to public level' do
+ subject
+
+ expect(job.job_artifacts).not_to be_empty
expect(job.job_artifacts).to all be_public_accessibility
end
end
shared_examples 'private accessibility' do
it 'sets accessibility to private level' do
- expect(job.job_artifacts).to all be_private_accessibility
- end
- end
-
- context 'when non_public_artifacts flag is disabled' do
- before do
- stub_feature_flags(non_public_artifacts: false)
- end
-
- it_behaves_like 'public accessibility'
- end
-
- context 'when non_public_artifacts flag is enabled' do
- context 'and accessibility is defined in the params' do
- context 'and is passed as private' do
- before do
- params.merge!('accessibility' => 'private')
- end
-
- it_behaves_like 'private accessibility'
- end
-
- context 'and is passed as public' do
- before do
- params.merge!('accessibility' => 'public')
- end
-
- it_behaves_like 'public accessibility'
- end
- end
-
- context 'and accessibility is not defined in the params' do
- context 'and job has no public artifacts defined in its CI config' do
- it_behaves_like 'public accessibility'
- end
-
- context 'and job artifacts defined as private in the CI config' do
- let(:job) { create(:ci_build, :with_private_artifacts_config, project: project) }
-
- it_behaves_like 'private accessibility'
- end
-
- context 'and job artifacts defined as public in the CI config' do
- let(:job) { create(:ci_build, :with_public_artifacts_config, project: project) }
+ subject
- it_behaves_like 'public accessibility'
- end
+ expect(job.job_artifacts).not_to be_empty
+ expect(job.job_artifacts).to all be_private_accessibility
end
end
diff --git a/spec/services/ci/pipeline_creation/cancel_redundant_pipelines_service_spec.rb b/spec/services/ci/pipeline_creation/cancel_redundant_pipelines_service_spec.rb
index a5dda1d13aa..0d83187f9e4 100644
--- a/spec/services/ci/pipeline_creation/cancel_redundant_pipelines_service_spec.rb
+++ b/spec/services/ci/pipeline_creation/cancel_redundant_pipelines_service_spec.rb
@@ -207,12 +207,12 @@ RSpec.describe Ci::PipelineCreation::CancelRedundantPipelinesService, feature_ca
it 'does not cancel any builds' do
expect(build_statuses(prev_pipeline)).to contain_exactly('running', 'success', 'created')
- expect(build_statuses(parent_pipeline)).to contain_exactly('running', 'running')
+ expect(build_statuses(parent_pipeline)).to contain_exactly('created', 'running', 'running')
execute
expect(build_statuses(prev_pipeline)).to contain_exactly('running', 'success', 'created')
- expect(build_statuses(parent_pipeline)).to contain_exactly('running', 'running')
+ expect(build_statuses(parent_pipeline)).to contain_exactly('created', 'running', 'running')
end
end
@@ -227,6 +227,25 @@ RSpec.describe Ci::PipelineCreation::CancelRedundantPipelinesService, feature_ca
end
end
+ context 'when there are trigger jobs' do
+ before do
+ create(:ci_bridge, :created, pipeline: prev_pipeline)
+ create(:ci_bridge, :running, pipeline: prev_pipeline)
+ create(:ci_bridge, :success, pipeline: prev_pipeline)
+ create(:ci_bridge, :interruptible, :created, pipeline: prev_pipeline)
+ create(:ci_bridge, :interruptible, :running, pipeline: prev_pipeline)
+ create(:ci_bridge, :interruptible, :success, pipeline: prev_pipeline)
+ end
+
+ it 'still cancels the pipeline because auto-cancel is not affected by non-interruptible started triggers' do
+ execute
+
+ expect(job_statuses(prev_pipeline)).to contain_exactly(
+ 'canceled', 'success', 'canceled', 'canceled', 'canceled', 'success', 'canceled', 'canceled', 'success')
+ expect(job_statuses(pipeline)).to contain_exactly('pending')
+ end
+ end
+
it 'does not cancel future pipelines' do
expect(prev_pipeline.id).to be < pipeline.id
expect(build_statuses(pipeline)).to contain_exactly('pending')
@@ -269,7 +288,8 @@ RSpec.describe Ci::PipelineCreation::CancelRedundantPipelinesService, feature_ca
private
- def build_statuses(pipeline)
- pipeline.builds.pluck(:status)
+ def job_statuses(pipeline)
+ pipeline.statuses.pluck(:status)
end
+ alias_method :build_statuses, :job_statuses
end
diff --git a/spec/services/ci/process_sync_events_service_spec.rb b/spec/services/ci/process_sync_events_service_spec.rb
index c58d73815b0..cea5eec294e 100644
--- a/spec/services/ci/process_sync_events_service_spec.rb
+++ b/spec/services/ci/process_sync_events_service_spec.rb
@@ -163,5 +163,70 @@ RSpec.describe Ci::ProcessSyncEventsService, feature_category: :continuous_integ
execute
end
end
+
+ context 'for Ci::Catalog::Resources::SyncEvent' do
+ let(:sync_event_class) { Ci::Catalog::Resources::SyncEvent }
+ let(:hierarchy_class) { Ci::Catalog::Resource }
+
+ let_it_be(:project1) { create(:project) }
+ let_it_be(:project2) { create(:project) }
+ let_it_be_with_refind(:resource1) { create(:ci_catalog_resource, project: project1) }
+ let_it_be(:resource2) { create(:ci_catalog_resource, project: project2) }
+
+ before_all do
+ create(:ci_catalog_resource_sync_event, catalog_resource: resource1, status: :processed)
+ # PG trigger adds an event for each update
+ project1.update!(name: 'Name 1', description: 'Test 1')
+ project1.update!(visibility_level: Gitlab::VisibilityLevel::INTERNAL)
+ project2.update!(name: 'Name 2', description: 'Test 2')
+ project2.update!(visibility_level: Gitlab::VisibilityLevel::PUBLIC)
+ end
+
+ it 'processes the events', :aggregate_failures do
+ # 2 pending events from resource1 + 2 pending events from resource2
+ expect { execute }.to change(Ci::Catalog::Resources::SyncEvent.status_pending, :count).from(4).to(0)
+
+ expect(resource1.reload.name).to eq(project1.name)
+ expect(resource2.reload.name).to eq(project2.name)
+ expect(resource1.reload.description).to eq(project1.description)
+ expect(resource2.reload.description).to eq(project2.description)
+ expect(resource1.reload.visibility_level).to eq(project1.visibility_level)
+ expect(resource2.reload.visibility_level).to eq(project2.visibility_level)
+ end
+
+ context 'when there are no remaining unprocessed events' do
+ it 'does not enqueue Ci::Catalog::Resources::ProcessSyncEventsWorker' do
+ stub_const("#{described_class}::BATCH_SIZE", 4)
+
+ expect(Ci::Catalog::Resources::ProcessSyncEventsWorker).not_to receive(:perform_async)
+
+ execute
+ end
+ end
+
+ context 'when there are remaining unprocessed events' do
+ it 'enqueues Ci::Catalog::Resources::ProcessSyncEventsWorker' do
+ stub_const("#{described_class}::BATCH_SIZE", 1)
+
+ expect(Ci::Catalog::Resources::ProcessSyncEventsWorker).to receive(:perform_async)
+
+ execute
+ end
+ end
+
+ # The `p_catalog_resource_sync_events` table does not enforce an FK on catalog_resource_id
+ context 'when there are orphaned sync events' do
+ it 'processes the events', :aggregate_failures do
+ resource1.destroy!
+
+ # 2 pending events from resource1 + 2 pending events from resource2
+ expect { execute }.to change(Ci::Catalog::Resources::SyncEvent.status_pending, :count).from(4).to(0)
+
+ expect(resource2.reload.name).to eq(project2.name)
+ expect(resource2.reload.description).to eq(project2.description)
+ expect(resource2.reload.visibility_level).to eq(project2.visibility_level)
+ end
+ end
+ end
end
end
diff --git a/spec/services/ci/runners/assign_runner_service_spec.rb b/spec/services/ci/runners/assign_runner_service_spec.rb
index 00fbb5e2d26..eb0b7478ad3 100644
--- a/spec/services/ci/runners/assign_runner_service_spec.rb
+++ b/spec/services/ci/runners/assign_runner_service_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe ::Ci::Runners::AssignRunnerService, '#execute', feature_category: :runner_fleet do
+RSpec.describe ::Ci::Runners::AssignRunnerService, '#execute', feature_category: :fleet_visibility do
subject(:execute) { described_class.new(runner, new_project, user).execute }
let_it_be(:owner_group) { create(:group) }
diff --git a/spec/services/ci/runners/bulk_delete_runners_service_spec.rb b/spec/services/ci/runners/bulk_delete_runners_service_spec.rb
index 5e697565972..b57cae00867 100644
--- a/spec/services/ci/runners/bulk_delete_runners_service_spec.rb
+++ b/spec/services/ci/runners/bulk_delete_runners_service_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe ::Ci::Runners::BulkDeleteRunnersService, '#execute', feature_category: :runner_fleet do
+RSpec.describe ::Ci::Runners::BulkDeleteRunnersService, '#execute', feature_category: :fleet_visibility do
subject(:execute) { described_class.new(**service_args).execute }
let_it_be(:admin_user) { create(:user, :admin) }
diff --git a/spec/services/ci/runners/create_runner_service_spec.rb b/spec/services/ci/runners/create_runner_service_spec.rb
index db337b0b005..eaba7b9e4db 100644
--- a/spec/services/ci/runners/create_runner_service_spec.rb
+++ b/spec/services/ci/runners/create_runner_service_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe ::Ci::Runners::CreateRunnerService, "#execute", feature_category: :runner_fleet do
+RSpec.describe ::Ci::Runners::CreateRunnerService, "#execute", feature_category: :fleet_visibility do
subject(:execute) { described_class.new(user: current_user, params: params).execute }
let(:runner) { execute.payload[:runner] }
diff --git a/spec/services/ci/runners/process_runner_version_update_service_spec.rb b/spec/services/ci/runners/process_runner_version_update_service_spec.rb
index f8b7aa281af..cc8df6579d4 100644
--- a/spec/services/ci/runners/process_runner_version_update_service_spec.rb
+++ b/spec/services/ci/runners/process_runner_version_update_service_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe Ci::Runners::ProcessRunnerVersionUpdateService, feature_category: :runner_fleet do
+RSpec.describe Ci::Runners::ProcessRunnerVersionUpdateService, feature_category: :fleet_visibility do
subject(:service) { described_class.new(version) }
let(:version) { '1.0.0' }
diff --git a/spec/services/ci/runners/reconcile_existing_runner_versions_service_spec.rb b/spec/services/ci/runners/reconcile_existing_runner_versions_service_spec.rb
index 8d7e97e5ea8..88f0a930599 100644
--- a/spec/services/ci/runners/reconcile_existing_runner_versions_service_spec.rb
+++ b/spec/services/ci/runners/reconcile_existing_runner_versions_service_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe ::Ci::Runners::ReconcileExistingRunnerVersionsService, '#execute', feature_category: :runner_fleet do
+RSpec.describe ::Ci::Runners::ReconcileExistingRunnerVersionsService, '#execute', feature_category: :fleet_visibility do
include RunnerReleasesHelper
subject(:execute) { described_class.new.execute }
diff --git a/spec/services/ci/runners/register_runner_service_spec.rb b/spec/services/ci/runners/register_runner_service_spec.rb
index 4b997855657..aabf30d975a 100644
--- a/spec/services/ci/runners/register_runner_service_spec.rb
+++ b/spec/services/ci/runners/register_runner_service_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe ::Ci::Runners::RegisterRunnerService, '#execute', feature_category: :runner_fleet do
+RSpec.describe ::Ci::Runners::RegisterRunnerService, '#execute', feature_category: :fleet_visibility do
let(:registration_token) { 'abcdefg123456' }
let(:token) {}
let(:args) { {} }
diff --git a/spec/services/ci/runners/reset_registration_token_service_spec.rb b/spec/services/ci/runners/reset_registration_token_service_spec.rb
index c8115236034..68faa9fa387 100644
--- a/spec/services/ci/runners/reset_registration_token_service_spec.rb
+++ b/spec/services/ci/runners/reset_registration_token_service_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe ::Ci::Runners::ResetRegistrationTokenService, '#execute', feature_category: :runner_fleet do
+RSpec.describe ::Ci::Runners::ResetRegistrationTokenService, '#execute', feature_category: :fleet_visibility do
subject(:execute) { described_class.new(scope, current_user).execute }
let_it_be(:user) { build(:user) }
diff --git a/spec/services/ci/runners/set_runner_associated_projects_service_spec.rb b/spec/services/ci/runners/set_runner_associated_projects_service_spec.rb
index 8d612174a0b..b617cb0a006 100644
--- a/spec/services/ci/runners/set_runner_associated_projects_service_spec.rb
+++ b/spec/services/ci/runners/set_runner_associated_projects_service_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe ::Ci::Runners::SetRunnerAssociatedProjectsService, '#execute', feature_category: :runner_fleet do
+RSpec.describe ::Ci::Runners::SetRunnerAssociatedProjectsService, '#execute', feature_category: :fleet_visibility do
subject(:execute) do
described_class.new(runner: runner, current_user: user, project_ids: new_projects.map(&:id)).execute
end
diff --git a/spec/services/ci/runners/stale_managers_cleanup_service_spec.rb b/spec/services/ci/runners/stale_managers_cleanup_service_spec.rb
index 0a20c12bc15..4931f24d5d8 100644
--- a/spec/services/ci/runners/stale_managers_cleanup_service_spec.rb
+++ b/spec/services/ci/runners/stale_managers_cleanup_service_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe Ci::Runners::StaleManagersCleanupService, feature_category: :runner_fleet do
+RSpec.describe Ci::Runners::StaleManagersCleanupService, feature_category: :fleet_visibility do
let(:service) { described_class.new }
let!(:runner_manager3) { create(:ci_runner_machine, created_at: 6.months.ago, contacted_at: Time.current) }
diff --git a/spec/services/ci/runners/unassign_runner_service_spec.rb b/spec/services/ci/runners/unassign_runner_service_spec.rb
index e91d4249473..99cf087cf78 100644
--- a/spec/services/ci/runners/unassign_runner_service_spec.rb
+++ b/spec/services/ci/runners/unassign_runner_service_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe ::Ci::Runners::UnassignRunnerService, '#execute', feature_category: :runner_fleet do
+RSpec.describe ::Ci::Runners::UnassignRunnerService, '#execute', feature_category: :fleet_visibility do
let_it_be(:project) { create(:project) }
let_it_be(:runner) { create(:ci_runner, :project, projects: [project]) }
diff --git a/spec/services/ci/runners/unregister_runner_manager_service_spec.rb b/spec/services/ci/runners/unregister_runner_manager_service_spec.rb
index 8bfda8e2083..590df18469d 100644
--- a/spec/services/ci/runners/unregister_runner_manager_service_spec.rb
+++ b/spec/services/ci/runners/unregister_runner_manager_service_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe ::Ci::Runners::UnregisterRunnerManagerService, '#execute', feature_category: :runner_fleet do
+RSpec.describe ::Ci::Runners::UnregisterRunnerManagerService, '#execute', feature_category: :fleet_visibility do
subject(:execute) { described_class.new(runner, 'some_token', system_id: system_id).execute }
context 'with runner registered with registration token' do
diff --git a/spec/services/ci/runners/unregister_runner_service_spec.rb b/spec/services/ci/runners/unregister_runner_service_spec.rb
index fb779e1a673..e73dcb2511e 100644
--- a/spec/services/ci/runners/unregister_runner_service_spec.rb
+++ b/spec/services/ci/runners/unregister_runner_service_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe ::Ci::Runners::UnregisterRunnerService, '#execute', feature_category: :runner_fleet do
+RSpec.describe ::Ci::Runners::UnregisterRunnerService, '#execute', feature_category: :fleet_visibility do
subject(:execute) { described_class.new(runner, 'some_token').execute }
let(:runner) { create(:ci_runner) }
diff --git a/spec/services/ci/runners/update_runner_service_spec.rb b/spec/services/ci/runners/update_runner_service_spec.rb
index 86875df70a2..9483d122c35 100644
--- a/spec/services/ci/runners/update_runner_service_spec.rb
+++ b/spec/services/ci/runners/update_runner_service_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe Ci::Runners::UpdateRunnerService, '#execute', feature_category: :runner_fleet do
+RSpec.describe Ci::Runners::UpdateRunnerService, '#execute', feature_category: :fleet_visibility do
subject(:execute) { described_class.new(runner).execute(params) }
let(:runner) { create(:ci_runner) }
diff --git a/spec/services/ci/stuck_builds/drop_pending_service_spec.rb b/spec/services/ci/stuck_builds/drop_pending_service_spec.rb
index 9da63930057..b3045d838a1 100644
--- a/spec/services/ci/stuck_builds/drop_pending_service_spec.rb
+++ b/spec/services/ci/stuck_builds/drop_pending_service_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe Ci::StuckBuilds::DropPendingService, feature_category: :runner_fleet do
+RSpec.describe Ci::StuckBuilds::DropPendingService, feature_category: :fleet_visibility do
let_it_be(:runner) { create(:ci_runner) }
let_it_be(:pipeline) { create(:ci_empty_pipeline) }
let_it_be_with_reload(:job) do
diff --git a/spec/services/ci/stuck_builds/drop_running_service_spec.rb b/spec/services/ci/stuck_builds/drop_running_service_spec.rb
index c2f8a643f24..74b02240ea5 100644
--- a/spec/services/ci/stuck_builds/drop_running_service_spec.rb
+++ b/spec/services/ci/stuck_builds/drop_running_service_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe Ci::StuckBuilds::DropRunningService, feature_category: :runner_fleet do
+RSpec.describe Ci::StuckBuilds::DropRunningService, feature_category: :fleet_visibility do
let!(:runner) { create :ci_runner }
let!(:job) { create(:ci_build, runner: runner, created_at: created_at, updated_at: updated_at, status: status) }
diff --git a/spec/services/ci/stuck_builds/drop_scheduled_service_spec.rb b/spec/services/ci/stuck_builds/drop_scheduled_service_spec.rb
index 5560eaf9b40..5a95b55054f 100644
--- a/spec/services/ci/stuck_builds/drop_scheduled_service_spec.rb
+++ b/spec/services/ci/stuck_builds/drop_scheduled_service_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe Ci::StuckBuilds::DropScheduledService, feature_category: :runner_fleet do
+RSpec.describe Ci::StuckBuilds::DropScheduledService, feature_category: :fleet_visibility do
let_it_be(:runner) { create :ci_runner }
let!(:job) { create :ci_build, :scheduled, scheduled_at: scheduled_at, runner: runner }