Running with gitlab-runner 17.4.0~pre.110.g27400594 (27400594)
  on blue-6.private.runners-manager.gitlab.com/gitlab.com/gitlab-org mKJTFBei, system ID: s_90a66139ec06
  feature flags: FF_NETWORK_PER_BUILD:true
Resolving secrets
section_start:1732239543:prepare_executor
Preparing the "docker+machine" executor
Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bookworm-ruby-3.2.5-golang-1.23-rust-1.73-node-20.12-postgresql-14:rubygems-3.5-git-2.45-lfs-2.9-chrome-123-yarn-1.22-graphicsmagick-1.3.36 ...
Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-14-pgvector-0.4.1...
Authenticating with credentials from job payload (GitLab Registry)
Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-14-pgvector-0.4.1 ...
Using docker image sha256:82f132c22567f8ce17cc132c14b2f9aa3eaf9bb5424d91c2d966912433f0257d for registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-14-pgvector-0.4.1 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:c55e1364ee4327b244a9cfa1750f19feea14fc774eaf792b725967d146eb45f5 ...
WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.
WARNING: Service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 is already created. Ignoring.
Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12...
Authenticating with credentials from job payload (GitLab Registry)
Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 ...
Using docker image sha256:5c5ba5b83d6c60cb0b225bd670b7a43be8c238cc72347d24af57e5027c3648f3 for registry.gitlab.com/gitlab-org/gitlab-build-images:redis-cluster-6.2.12 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:46aceab84c42d0e819c8e7940f2f98ce9e184785cd7b22d95872024a35f52407 ...
Starting service redis:6.2-alpine...
Pulling docker image redis:6.2-alpine ...
Using docker image sha256:4100b5bd17430263e85ad9d8ab851959b234acaaf378e093f1f98400f4998815 for redis:6.2-alpine with digest redis@sha256:eaba718fecd1196d88533de7ba49bf903ad33664a92debb24660a922ecd9cac8 ...
Waiting for services to be up and running (timeout 30 seconds)...
Authenticating with credentials from job payload (GitLab Registry)
Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bookworm-ruby-3.2.5-golang-1.23-rust-1.73-node-20.12-postgresql-14:rubygems-3.5-git-2.45-lfs-2.9-chrome-123-yarn-1.22-graphicsmagick-1.3.36 ...
Using docker image sha256:1d9126ee78e7adb7447812473d0b81fbbe5a6112e250f178242639bfdc4eb066 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bookworm-ruby-3.2.5-golang-1.23-rust-1.73-node-20.12-postgresql-14:rubygems-3.5-git-2.45-lfs-2.9-chrome-123-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bookworm-ruby-3.2.5-golang-1.23-rust-1.73-node-20.12-postgresql-14@sha256:2e50a48489394d2212aab7a1bac67630db2a54ab2004da7f49fb80f2f85abe62 ...
section_end:1732239634:prepare_executor
section_start:1732239634:prepare_script
Preparing environment
Running on runner-mkjtfbei-project-278964-concurrent-0 via runner-mkjtfbei-private-1732239487-bccc01ab...
section_end:1732239634:prepare_script
section_start:1732239634:get_sources
Getting source from Git repository
Skipping Git repository setup
Skipping Git checkout
Skipping Git submodules setup
section_end:1732239635:get_sources
section_start:1732239635:restore_cache
Restoring cache
Checking cache for ruby-gems-debian-bookworm-ruby-3.2.5-gemfile-Gemfile-21...
Downloading cache from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/ruby-gems-debian-bookworm-ruby-3.2.5-gemfile-Gemfile-21  ETag="9730f42519a36bcb618be16369e6172f"
Successfully extracted cache
section_end:1732239651:restore_cache
section_start:1732239651:download_artifacts
Downloading artifacts
Downloading artifacts for clone-gitlab-repo (8442484940)...
Downloading artifacts from coordinator... ok        host=storage.googleapis.com id=8442484940 responseStatus=200 OK token=glcbt-66
WARNING: Part of .git directory is on the list of files to extract 
WARNING: This may introduce unexpected problems    
Downloading artifacts for compile-test-assets (8442484966)...
Downloading artifacts from coordinator... ok        host=storage.googleapis.com id=8442484966 responseStatus=200 OK token=glcbt-66
Downloading artifacts for retrieve-tests-metadata (8442484981)...
Downloading artifacts from coordinator... ok        host=storage.googleapis.com id=8442484981 responseStatus=200 OK token=glcbt-66
Downloading artifacts for setup-test-env (8442484974)...
Downloading artifacts from coordinator... ok        host=storage.googleapis.com id=8442484974 responseStatus=200 OK token=glcbt-66
section_end:1732239696:download_artifacts
section_start:1732239696:step_script
Executing "step_script" stage of the job script
Using docker image sha256:1d9126ee78e7adb7447812473d0b81fbbe5a6112e250f178242639bfdc4eb066 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bookworm-ruby-3.2.5-golang-1.23-rust-1.73-node-20.12-postgresql-14:rubygems-3.5-git-2.45-lfs-2.9-chrome-123-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bookworm-ruby-3.2.5-golang-1.23-rust-1.73-node-20.12-postgresql-14@sha256:2e50a48489394d2212aab7a1bac67630db2a54ab2004da7f49fb80f2f85abe62 ...
$ echo $FOSS_ONLY

$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb
$ export GOPATH=$CI_PROJECT_DIR/.go
$ mkdir -p $GOPATH
$ source scripts/utils.sh
$ log_disk_usage "true"
*******************************************************
This runner currently has 80G free disk space.
*******************************************************
section_start:1732239698:log_disk_usage[collapsed=true]
Disk usage detail
df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          95G   15G   80G  16% /
tmpfs            64M     0   64M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/sda1        95G   15G   80G  16% /cache
tmpfs           3.9G     0  3.9G   0% /sys/devices/virtual/dmi/id
du -h -d 1
7.4M	./workhorse
148K	./bin
1.2M	./.gitlab
194M	./.git
4.0K	./builds
28M	./lib
8.0K	./.vscode
564K	./storybook
20K	./log
1.9M	./data
11M	./qa
3.1M	./.rubocop_todo
855M	./vendor
1.1G	./public
62M	./doc
484K	./danger
16K	./rspec
556K	./tooling
146M	./ee
1.3M	./knapsack
300K	./patches
4.3M	./changelogs
20K	./haml_lint
28K	./metrics_server
108K	./keeps
36K	./shared
44K	./generator_templates
1.3M	./scripts
719M	./tmp
128M	./spec
20K	./file_hooks
16K	./sidekiq_cluster
17M	./gems
1.2M	./fixtures
968K	./rubocop
4.0K	./.go
34M	./db
12K	./.github
129M	./locale
20M	./config
86M	./app
20K	./.lefthook
3.5G	.
section_end:1732239699:log_disk_usage

$ source scripts/prepare_build.sh
section_start:1732239699:bundle-install[collapsed=true]
Installing gems
3.5.18
Bundler version 2.5.18
production:development
Settings are listed in order of priority. The top value will be used.
clean
Set for your local app (/builds/gitlab-org/gitlab/.bundle/config): true

frozen
Set via BUNDLE_FROZEN: true

gemfile
Set via BUNDLE_GEMFILE: "/builds/gitlab-org/gitlab/Gemfile"

install_flags
Set via BUNDLE_INSTALL_FLAGS: "--jobs=$(nproc) --retry=3"

path
Set for your local app (/builds/gitlab-org/gitlab/.bundle/config): "/builds/gitlab-org/gitlab/vendor"

without
Set via BUNDLE_WITHOUT: [:production, :development]

$ bundle install --jobs=$(nproc) --retry=3 
Don't run Bundler as root. Installing your bundle as root will break this
application for all non-root users on this machine.
Patching bundler with bundler-checksum...
Bundle complete! 365 Gemfile dependencies, 675 gems now installed.
Gems in the groups 'production' and 'development' were not installed.
Bundled gems are installed into `./vendor`
3 installed gems you directly depend on are looking for funding.
  Run `bundle fund` for details
==> 'bundle install --jobs=$(nproc) --retry=3 ' succeeded in 1 seconds.
$ bundle pristine pg
Patching bundler with bundler-checksum...
Installing pg 1.5.9 with native extensions
==> 'bundle pristine pg' succeeded in 17 seconds.
section_end:1732239719:bundle-install

Using decomposed database config (config/database.yml.decomposed-postgresql)
Geo DB won't be set up.
Embedding DB won't be set up.
section_start:1732239719:setup-db[collapsed=true]
Setting up DBs
CREATE ROLE
GRANT
$ bundle exec rake db:drop db:create db:schema:load db:migrate gitlab:db:lock_writes
/builds/gitlab-org/gitlab/vendor/ruby/3.2.0/gems/io-event-1.6.5/lib/io/event/support.rb:27: warning: IO::Buffer is experimental and both the Ruby and C interface may change in the future!
Dropped database 'gitlabhq_test'
Dropped database 'gitlabhq_test_ci'
Created database 'gitlabhq_test'
Created database 'gitlabhq_test_ci'
==> 'bundle exec rake db:drop db:create db:schema:load db:migrate gitlab:db:lock_writes' succeeded in 91 seconds.
SELECT pg_catalog.set_config('search_path', '', false);
CREATE DATABASE praefect_test ENCODING 'UTF8';
section_end:1732239810:setup-db

$ source ./scripts/rspec_helpers.sh
$ run_timed_command "gem install knapsack --no-document"
$ gem install knapsack --no-document
Successfully installed knapsack-4.0.0
1 gem installed
==> 'gem install knapsack --no-document' succeeded in 1 seconds.
$ section_start "gitaly-test-spawn" "Spawning Gitaly"; scripts/gitaly-test-spawn; section_end "gitaly-test-spawn"
section_start:1732239811:gitaly-test-spawn[collapsed=true]
Spawning Gitaly
Trying to connect to gitaly: ..... OK
Trying to connect to gitaly2: ........ OK
Starting Praefect with in-memory election strategyTrying to connect to praefect: ...... OK
section_end:1732239815:gitaly-test-spawn

$ export RSPEC_SKIPPED_TESTS_REPORT_PATH="rspec/skipped_tests-${CI_JOB_ID}.txt"
$ export RSPEC_RETRIED_TESTS_REPORT_PATH="rspec/retried_tests-${CI_JOB_ID}.txt"
$ tooling/bin/create_job_metrics_file || true
[job-metrics] Creating the job metrics file for the CI/CD job.
$ rspec_section rspec_parallelized_job "--fail-fast=${RSPEC_FAIL_FAST_THRESHOLD} --tag ~quarantine --tag ~level:background_migration --tag ~click_house"
section_start:1732239819:rspec[collapsed=false]
RSpec
[01:43:39] Starting rspec_parallelized_job
RETRY_FAILED_TESTS_IN_NEW_PROCESS: true
KNAPSACK_GENERATE_REPORT: true
FLAKY_RSPEC_GENERATE_REPORT: true
KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,components,config,contracts,db,dependencies,elastic,elastic_integration,experiments,factories,finders,frontend,graphql,haml_lint,helpers,initializers,keeps,lib,metrics_server,models,policies,presenters,rack_servers,replicators,routing,rubocop,scripts,serializers,services,sidekiq,sidekiq_cluster,spam,support_specs,tasks,uploaders,validators,views,workers,tooling,dot_gitlab_ci}{,/**/}*_spec.rb
KNAPSACK_LOG_LEVEL: debug
KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg14_19_44_278964_report.json
FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json
FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg14_19_44_278964_report.json
NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg14_19_44_278964_report.json
RSPEC_SKIPPED_TESTS_REPORT_PATH: rspec/skipped_tests-8442485251.txt
CRYSTALBALL: 
RSPEC_TESTS_MAPPING_ENABLED: 
RSPEC_TESTS_FILTER_FILE: 
Shell set options (set -o) enabled:
braceexpand    	on
hashall        	on
interactive-comments	on
pipefail       	on
Parsing expected rspec suite duration...
RSpec suite is expected to take 27 minutes 31.33 seconds.
Expected duration for tests:

{
  "spec/services/merge_requests/push_options_handler_service_spec.rb": 305.034386627287,
  "spec/models/members/members/invited_private_group_accessibility_assigner_spec.rb": 151.56720559057055,
  "spec/lib/gitlab/background_migration/backfill_merge_request_diffs_project_id_spec.rb": 120.47239045016441,
  "spec/lib/gitlab/background_migration/delete_invalid_protected_branch_push_access_levels_spec.rb": 95.3036890967839,
  "spec/models/clusters/cluster_spec.rb": 78.57483884375439,
  "spec/services/boards/issues/move_service_spec.rb": 71.20917988187628,
  "spec/lib/gitlab/background_migration/backfill_merge_request_reviewers_project_id_spec.rb": 60.93926828379236,
  "spec/services/event_create_service_spec.rb": 53.29670275225433,
  "spec/lib/gitlab/background_migration/backfill_protected_environment_approval_rules_protected_environment_group_id_spec.rb": 48.62024930782195,
  "spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb": 42.30091156622053,
  "spec/lib/gitlab/background_migration/backfill_protected_environment_deploy_access_levels_protected_environment_project_id_spec.rb": 38.39904935734219,
  "spec/lib/gitlab/ci/pipeline/seed/build_spec.rb": 32.052746729334245,
  "spec/lib/gitlab/background_migration/backfill_alert_management_alert_metric_images_project_id_spec.rb": 29.14691018787972,
  "spec/models/resource_state_event_spec.rb": 26.781475559149662,
  "spec/lib/gitlab/background_migration/backfill_alert_management_alert_user_mentions_project_id_spec.rb": 24.785107347720064,
  "spec/lib/gitlab/database/tables_truncate_spec.rb": 23.110624956344083,
  "spec/lib/gitlab/background_migration/nullify_organization_id_for_snippets_spec.rb": 21.07843972627173,
  "spec/lib/gitlab/ci/pipeline/seed/stage_spec.rb": 19.580426586254838,
  "spec/services/deployments/update_environment_service_spec.rb": 18.345462993446496,
  "spec/helpers/issues_helper_spec.rb": 16.81065342921706,
  "spec/models/concerns/project_api_compatibility_spec.rb": 16.031404165867322,
  "spec/lib/gitlab/import_export/attributes_permitter_spec.rb": 14.892868019626608,
  "spec/policies/ci/runner_manager_policy_spec.rb": 14.205799318641905,
  "spec/workers/remove_expired_group_links_worker_spec.rb": 13.098748871666992,
  "spec/services/ci/stuck_builds/drop_scheduled_service_spec.rb": 12.667477878003348,
  "spec/models/protectable_dropdown_spec.rb": 11.896259031583448,
  "spec/models/protected_branch/push_access_level_spec.rb": 11.187598321747597,
  "spec/models/ci/build_report_result_spec.rb": 10.71737952119799,
  "spec/serializers/discussion_diff_file_entity_spec.rb": 9.95568416974667,
  "spec/lib/gitlab/ci/templates/Verify/load_performance_testing_gitlab_ci_yaml_spec.rb": 9.91277664338552,
  "spec/lib/gitlab/file_hook_spec.rb": 9.43042921713453,
  "spec/services/merge_requests/merge_strategies/from_source_branch_spec.rb": 8.865036887441802,
  "spec/models/jira_connect/public_key_spec.rb": 8.419496897555138,
  "spec/lib/gitlab/cache/helpers_spec.rb": 8.12024601599322,
  "spec/lib/banzai/reference_parser/issue_parser_spec.rb": 7.7111520825085655,
  "spec/services/ci/compare_test_reports_service_spec.rb": 7.321040139451808,
  "spec/services/merge_requests/add_context_service_spec.rb": 7.038201477368515,
  "spec/workers/ci/archive_traces_cron_worker_spec.rb": 6.6091020086957615,
  "spec/lib/gitlab/background_migration/populate_operation_visibility_permissions_from_operations_spec.rb": 6.329869337721387,
  "spec/finders/sentry_issue_finder_spec.rb": 6.188087180965115,
  "spec/lib/gitlab/background_migration/mark_single_issuable_resource_links_spec.rb": 5.953905338377391,
  "spec/services/tags/destroy_service_spec.rb": 5.6783041984255656,
  "spec/lib/gitlab/gitaly_client/with_feature_flag_actors_spec.rb": 5.552998341925331,
  "spec/graphql/resolvers/group_issues_resolver_spec.rb": 5.264626125148429,
  "spec/policies/design_management/design_policy_spec.rb": 5.138480604075258,
  "spec/workers/issue_due_scheduler_worker_spec.rb": 4.883637982995272,
  "spec/graphql/resolvers/clusters/agent_tokens_resolver_spec.rb": 4.722056117687854,
  "spec/lib/api/entities/project_import_status_spec.rb": 4.686567704909095,
  "spec/services/users/create_service_spec.rb": 4.3476675312160005,
  "spec/services/spam/spam_verdict_service_spec.rb": 4.336336388432725,
  "spec/models/projects/data_transfer_spec.rb": 3.990150294158625,
  "spec/models/custom_emoji_spec.rb": 3.977493289153612,
  "spec/lib/gitlab/import_export/command_line_util_spec.rb": 3.7347539156008027,
  "spec/helpers/auth_helper_spec.rb": 3.635518609877873,
  "spec/models/concerns/batch_nullify_dependent_associations_spec.rb": 3.5224340080851526,
  "spec/graphql/mutations/customer_relations/contacts/create_spec.rb": 3.3860787382769995,
  "spec/lib/gitlab/import/merge_request_creator_spec.rb": 3.240514845308263,
  "spec/lib/gitlab/github_import/push_placeholder_references_spec.rb": 3.193877337667633,
  "spec/lib/gitlab/database/reindexing/index_selection_spec.rb": 3.035803775272855,
  "spec/services/incident_management/link_alerts/create_service_spec.rb": 2.996066308579195,
  "spec/lib/gitlab/cleanup/remote_uploads_spec.rb": 2.856188642381281,
  "spec/lib/gitlab/auth/user_access_denied_reason_spec.rb": 2.8118428062835132,
  "spec/lib/gitlab/database/postgres_hll/batch_distinct_counter_spec.rb": 2.6812467665953017,
  "spec/lib/gitlab/analytics/cycle_analytics/stage_events/plan_stage_start_spec.rb": 2.596641996797778,
  "spec/workers/invalid_gpg_signature_update_worker_spec.rb": 2.4845215675422163,
  "spec/lib/gitlab/sidekiq_migrate_jobs_spec.rb": 2.4254521407771525,
  "spec/lib/gitlab/ci/config/external/file/remote_spec.rb": 2.3066322154168466,
  "spec/workers/ci/catalog/resources/aggregate_last30_day_usage_worker_spec.rb": 2.282013244774623,
  "spec/lib/gitlab/ci/templates/Diffblue_Cover_spec.rb": 2.1609024904364027,
  "spec/models/concerns/after_commit_queue_spec.rb": 2.136383602447231,
  "spec/workers/analytics/usage_trends/counter_job_worker_spec.rb": 2.0488615918102386,
  "spec/workers/update_project_statistics_worker_spec.rb": 2.0076944676770445,
  "spec/services/ci/trigger_downstream_pipeline_service_spec.rb": 1.9681861132153116,
  "spec/services/achievements/award_service_spec.rb": 1.8764050147177112,
  "spec/services/namespaces/update_denormalized_descendants_service_spec.rb": 1.847997593158377,
  "spec/graphql/types/snippets/blob_type_spec.rb": 1.7986855807211741,
  "spec/helpers/jira_connect_helper_spec.rb": 1.7191711409560995,
  "spec/finders/projects/topics_finder_spec.rb": 1.7167285289853416,
  "spec/routing/environments_spec.rb": 1.6486845389003109,
  "spec/models/ci/catalog/resources/components/last_usage_spec.rb": 1.5955317413002934,
  "spec/services/virtual_registries/packages/maven/cached_responses/create_or_update_service_spec.rb": 1.5627932279120744,
  "spec/helpers/ci/secure_files_helper_spec.rb": 1.5227751023252827,
  "spec/lib/api/entities/draft_note_spec.rb": 1.4607911203172472,
  "spec/models/ci/tag_spec.rb": 1.440657479367536,
  "spec/lib/gitlab/blame_spec.rb": 1.3807335062607078,
  "spec/helpers/ci/status_helper_spec.rb": 1.37508334833085,
  "spec/lib/gitlab/seeders/ci/variables_group_seeder_spec.rb": 1.320742860777687,
  "spec/lib/gitlab/jira_import/issues_importer_spec.rb": 1.301234184018982,
  "spec/lib/gitlab/database/load_balancing/sidekiq_client_middleware_spec.rb": 1.2567544672695796,
  "spec/lib/gitlab/analytics/usage_trends/workers_argument_builder_spec.rb": 1.2094590615722884,
  "spec/services/web_hooks/create_service_spec.rb": 1.1798804922253219,
  "spec/serializers/feature_flag_entity_spec.rb": 1.1457721321101513,
  "spec/lib/gitlab/ci/config/entry/rules/rule/changes_spec.rb": 1.092503624338376,
  "spec/services/ci/pipeline_triggers/destroy_service_spec.rb": 1.0586051937832568,
  "spec/presenters/member_presenter_spec.rb": 1.0388975270852252,
  "spec/models/error_tracking/error_event_spec.rb": 0.9935677436491084,
  "spec/lib/gitlab/github_import/importer/attachments/notes_importer_spec.rb": 0.9669661473758924,
  "spec/serializers/project_access_token_entity_spec.rb": 0.9351038833138997,
  "spec/uploaders/lfs_object_uploader_spec.rb": 0.9013816108235613,
  "spec/graphql/mutations/customer_relations/organizations/create_spec.rb": 0.871198698457176,
  "spec/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_project_type_active_online_metric_spec.rb": 0.8302762038072795,
  "spec/services/snippets/schedule_bulk_repository_shard_moves_service_spec.rb": 0.8046656336629223,
  "spec/lib/gitlab/github_import/importer/attachments/releases_importer_spec.rb": 0.7716740388414962,
  "spec/graphql/resolvers/group_milestones_resolver_spec.rb": 0.7518351691524845,
  "spec/rubocop/todo_dir_spec.rb": 0.704613231195073,
  "spec/serializers/project_access_token_serializer_spec.rb": 0.6911204320797293,
  "spec/lib/gitlab/rack_attack_spec.rb": 0.6739248871727873,
  "spec/views/admin/application_settings/_package_registry.html.haml_spec.rb": 0.631128253927759,
  "spec/support_specs/helpers/html_escaped_helpers_spec.rb": 0.629758287177637,
  "spec/validators/ip_cidr_array_validator_spec.rb": 0.5947756680622223,
  "spec/lib/gitlab/database/partitioning/multiple_numeric_list_partition_spec.rb": 0.5886663306632192,
  "spec/finders/ci/runner_managers_finder_spec.rb": 0.5619864305973479,
  "spec/models/organizations/organization_setting_spec.rb": 0.5441455580539196,
  "spec/initializers/rails_yaml_safe_load_spec.rb": 0.5228479580257183,
  "spec/lib/gitlab/sidekiq_middleware/concurrency_limit/server_spec.rb": 0.5050901666760641,
  "spec/views/groups/show.html.haml_spec.rb": 0.48551038877761876,
  "spec/lib/gitlab/experiment_feature_rollout_spec.rb": 0.4717884688786992,
  "spec/lib/gitlab/database/pg_class_spec.rb": 0.44755292990153844,
  "spec/lib/security/ci_configuration/sast_build_action_spec.rb": 0.4412956440054639,
  "spec/services/users/dismiss_broadcast_message_service_spec.rb": 0.4068693280481923,
  "spec/models/concerns/ignorable_columns_spec.rb": 0.3990194427268177,
  "spec/services/projects/count_service_spec.rb": 0.36934093145586766,
  "spec/helpers/admin/background_migrations_helper_spec.rb": 0.354743388093313,
  "spec/lib/gitlab/background_migration_spec.rb": 0.34154381356062985,
  "spec/rubocop/cop/migration/schedule_async_spec.rb": 0.32867472143616516,
  "spec/lib/gitlab/favicon_spec.rb": 0.31950230087742504,
  "spec/lib/grafana/time_window_spec.rb": 0.29973087681265653,
  "spec/support_specs/ability_check_spec.rb": 0.29831539373568416,
  "spec/lib/gitlab/manifest_import/manifest_spec.rb": 0.28796209163575026,
  "spec/services/dependency_proxy/head_manifest_service_spec.rb": 0.26881388811324947,
  "spec/graphql/mutations/concerns/mutations/resolves_group_spec.rb": 0.26386848720210526,
  "spec/lib/gitlab/metrics/subscribers/action_cable_spec.rb": 0.2501457285675833,
  "spec/models/design_user_mention_spec.rb": 0.23759118330332013,
  "spec/lib/gitlab/database/load_balancing/service_discovery/sampler_spec.rb": 0.2347565297148266,
  "spec/support_specs/helpers/active_record/query_recorder_spec.rb": 0.22501811266721555,
  "spec/lib/sidebars/concerns/super_sidebar_panel_spec.rb": 0.21515420597842505,
  "spec/lib/gitlab/fp/rop_helpers_spec.rb": 0.2049309745660053,
  "spec/graphql/types/color_type_spec.rb": 0.2040749734058138,
  "spec/rubocop/check_graceful_task_spec.rb": 0.18635370148866479,
  "spec/lib/gitlab/global_id/deprecations_spec.rb": 0.18632459409410376,
  "spec/lib/gitlab/metrics/subscribers/ldap_spec.rb": 0.17320228965301537,
  "spec/services/deploy_keys/create_service_spec.rb": 0.17123499298085193,
  "spec/lib/gitlab/github_gists_import/importer/gists_importer_spec.rb": 0.1637734744563646,
  "spec/helpers/artifacts_helper_spec.rb": 0.15890127004419882,
  "spec/lib/gitlab/graphql/type_name_deprecations_spec.rb": 0.1508282930755929,
  "spec/lib/backup/tasks/task_spec.rb": 0.1495590323047131,
  "spec/lib/gitlab/config/entry/validator_spec.rb": 0.144322863407934,
  "spec/lib/gitlab/sentence_spec.rb": 0.13591708524387552,
  "spec/lib/gitlab/database/stat_activity_spec.rb": 0.13371624020298703,
  "spec/views/help/drawers.html.haml_spec.rb": 0.12493558485387755,
  "spec/lib/backup/restore/preconditions_spec.rb": 0.12302909010989597,
  "spec/lib/gitlab/ci/yaml_processor/dag_spec.rb": 0.11574453788242206,
  "spec/lib/gitlab/view/presenter/simple_spec.rb": 0.11300697426224507,
  "spec/lib/gitlab/sidekiq_middleware/pause_control/strategy_handler_spec.rb": 0.10924329651877385,
  "spec/lib/google_api/auth_spec.rb": 0.1030589582291165,
  "spec/helpers/external_link_helper_spec.rb": 0.09932283477489146,
  "spec/graphql/types/security/codequality_reports_comparer_type_spec.rb": 0.09539754428558074,
  "spec/serializers/ci/trigger_serializer_spec.rb": 0.09299351656941611,
  "spec/lib/sidebars/organizations/menus/scope_menu_spec.rb": 0.09139228329204663,
  "spec/rubocop/cop/database/rescue_statement_timeout_spec.rb": 0.08305730625486864,
  "spec/rubocop/cop/migration/refer_to_index_by_name_spec.rb": 0.08255938038223021,
  "spec/lib/gitlab/query_limiting/active_support_subscriber_spec.rb": 0.07508470823310091,
  "spec/services/import/gitlab_projects/file_acquisition_strategies/file_upload_spec.rb": 0.07251000524822872,
  "spec/sidekiq/cron/job_gem_dependency_spec.rb": 0.07091510522139091,
  "spec/workers/file_hook_worker_spec.rb": 0.06875052767552485,
  "spec/graphql/types/current_user_type_spec.rb": 0.06829485838513477,
  "spec/lib/gitlab/middleware/webhook_recursion_detection_spec.rb": 0.06557679637619933,
  "spec/lib/gitlab/merge_requests/mergeability/redis_interface_spec.rb": 0.0653070720772577,
  "spec/lib/gitlab/diff/inline_diff_marker_spec.rb": 0.062833440217029,
  "spec/graphql/types/ci/instance_variable_type_spec.rb": 0.06125004699473152,
  "spec/lib/gitlab/sidekiq_middleware/instrumentation_logger_spec.rb": 0.049154713844110944,
  "spec/lib/gitlab/middleware/action_controller_static_context_spec.rb": 0.04861147700235967,
  "spec/lib/gitlab/ci/config/external/mapper/filter_spec.rb": 0.04475669762800624,
  "spec/lib/gitlab/usage/metrics/instrumentations/version_metric_spec.rb": 0.04221955851692891,
  "spec/lib/bulk_imports/retry_pipeline_error_spec.rb": 0.040980102833906656,
  "spec/lib/gitlab/word_diff/segments/newline_spec.rb": 0.03977003672500744,
  "spec/graphql/types/work_items/widgets/start_and_due_date_update_input_type_spec.rb": 0.037988355814501704
}

Running command: bundle exec rspec -Ispec -rspec_helper --color --failure-exit-code 1 --error-exit-code 2 --format documentation --format Support::Formatters::JsonFormatter --out rspec/rspec-8442485251.json --format RspecJunitFormatter --out rspec/rspec-8442485251.xml --fail-fast=20 --tag ~quarantine --tag ~level:background_migration --tag ~click_house -- spec/services/merge_requests/push_options_handler_service_spec.rb spec/models/members/members/invited_private_group_accessibility_assigner_spec.rb spec/lib/gitlab/background_migration/backfill_merge_request_diffs_project_id_spec.rb spec/lib/gitlab/background_migration/delete_invalid_protected_branch_push_access_levels_spec.rb spec/models/clusters/cluster_spec.rb spec/services/boards/issues/move_service_spec.rb spec/lib/gitlab/background_migration/backfill_merge_request_reviewers_project_id_spec.rb spec/services/event_create_service_spec.rb spec/lib/gitlab/background_migration/backfill_protected_environment_approval_rules_protected_environment_group_id_spec.rb spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb spec/lib/gitlab/background_migration/backfill_protected_environment_deploy_access_levels_protected_environment_project_id_spec.rb spec/lib/gitlab/ci/pipeline/seed/build_spec.rb spec/lib/gitlab/background_migration/backfill_alert_management_alert_metric_images_project_id_spec.rb spec/models/resource_state_event_spec.rb spec/lib/gitlab/background_migration/backfill_alert_management_alert_user_mentions_project_id_spec.rb spec/lib/gitlab/database/tables_truncate_spec.rb spec/lib/gitlab/background_migration/nullify_organization_id_for_snippets_spec.rb spec/lib/gitlab/ci/pipeline/seed/stage_spec.rb spec/services/deployments/update_environment_service_spec.rb spec/helpers/issues_helper_spec.rb spec/models/concerns/project_api_compatibility_spec.rb spec/lib/gitlab/import_export/attributes_permitter_spec.rb spec/policies/ci/runner_manager_policy_spec.rb spec/workers/remove_expired_group_links_worker_spec.rb spec/services/ci/stuck_builds/drop_scheduled_service_spec.rb spec/models/protectable_dropdown_spec.rb spec/models/protected_branch/push_access_level_spec.rb spec/models/ci/build_report_result_spec.rb spec/serializers/discussion_diff_file_entity_spec.rb spec/lib/gitlab/ci/templates/Verify/load_performance_testing_gitlab_ci_yaml_spec.rb spec/lib/gitlab/file_hook_spec.rb spec/services/merge_requests/merge_strategies/from_source_branch_spec.rb spec/models/jira_connect/public_key_spec.rb spec/lib/gitlab/cache/helpers_spec.rb spec/lib/banzai/reference_parser/issue_parser_spec.rb spec/services/ci/compare_test_reports_service_spec.rb spec/services/merge_requests/add_context_service_spec.rb spec/workers/ci/archive_traces_cron_worker_spec.rb spec/lib/gitlab/background_migration/populate_operation_visibility_permissions_from_operations_spec.rb spec/finders/sentry_issue_finder_spec.rb spec/lib/gitlab/background_migration/mark_single_issuable_resource_links_spec.rb spec/services/tags/destroy_service_spec.rb spec/lib/gitlab/gitaly_client/with_feature_flag_actors_spec.rb spec/graphql/resolvers/group_issues_resolver_spec.rb spec/policies/design_management/design_policy_spec.rb spec/workers/issue_due_scheduler_worker_spec.rb spec/graphql/resolvers/clusters/agent_tokens_resolver_spec.rb spec/lib/api/entities/project_import_status_spec.rb spec/services/users/create_service_spec.rb spec/services/spam/spam_verdict_service_spec.rb spec/models/projects/data_transfer_spec.rb spec/models/custom_emoji_spec.rb spec/lib/gitlab/import_export/command_line_util_spec.rb spec/helpers/auth_helper_spec.rb spec/models/concerns/batch_nullify_dependent_associations_spec.rb spec/graphql/mutations/customer_relations/contacts/create_spec.rb spec/lib/gitlab/import/merge_request_creator_spec.rb spec/lib/gitlab/github_import/push_placeholder_references_spec.rb spec/lib/gitlab/database/reindexing/index_selection_spec.rb spec/services/incident_management/link_alerts/create_service_spec.rb spec/lib/gitlab/cleanup/remote_uploads_spec.rb spec/lib/gitlab/auth/user_access_denied_reason_spec.rb spec/lib/gitlab/database/postgres_hll/batch_distinct_counter_spec.rb spec/lib/gitlab/analytics/cycle_analytics/stage_events/plan_stage_start_spec.rb spec/workers/invalid_gpg_signature_update_worker_spec.rb spec/lib/gitlab/sidekiq_migrate_jobs_spec.rb spec/lib/gitlab/ci/config/external/file/remote_spec.rb spec/workers/ci/catalog/resources/aggregate_last30_day_usage_worker_spec.rb spec/lib/gitlab/ci/templates/Diffblue_Cover_spec.rb spec/models/concerns/after_commit_queue_spec.rb spec/workers/analytics/usage_trends/counter_job_worker_spec.rb spec/workers/update_project_statistics_worker_spec.rb spec/services/ci/trigger_downstream_pipeline_service_spec.rb spec/services/achievements/award_service_spec.rb spec/services/namespaces/update_denormalized_descendants_service_spec.rb spec/graphql/types/snippets/blob_type_spec.rb spec/helpers/jira_connect_helper_spec.rb spec/finders/projects/topics_finder_spec.rb spec/routing/environments_spec.rb spec/models/ci/catalog/resources/components/last_usage_spec.rb spec/services/virtual_registries/packages/maven/cached_responses/create_or_update_service_spec.rb spec/helpers/ci/secure_files_helper_spec.rb spec/lib/api/entities/draft_note_spec.rb spec/models/ci/tag_spec.rb spec/lib/gitlab/blame_spec.rb spec/helpers/ci/status_helper_spec.rb spec/lib/gitlab/seeders/ci/variables_group_seeder_spec.rb spec/lib/gitlab/jira_import/issues_importer_spec.rb spec/lib/gitlab/database/load_balancing/sidekiq_client_middleware_spec.rb spec/lib/gitlab/analytics/usage_trends/workers_argument_builder_spec.rb spec/services/web_hooks/create_service_spec.rb spec/serializers/feature_flag_entity_spec.rb spec/lib/gitlab/ci/config/entry/rules/rule/changes_spec.rb spec/services/ci/pipeline_triggers/destroy_service_spec.rb spec/presenters/member_presenter_spec.rb spec/models/error_tracking/error_event_spec.rb spec/lib/gitlab/github_import/importer/attachments/notes_importer_spec.rb spec/serializers/project_access_token_entity_spec.rb spec/uploaders/lfs_object_uploader_spec.rb spec/graphql/mutations/customer_relations/organizations/create_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_project_type_active_online_metric_spec.rb spec/services/snippets/schedule_bulk_repository_shard_moves_service_spec.rb spec/lib/gitlab/github_import/importer/attachments/releases_importer_spec.rb spec/graphql/resolvers/group_milestones_resolver_spec.rb spec/rubocop/todo_dir_spec.rb spec/serializers/project_access_token_serializer_spec.rb spec/lib/gitlab/rack_attack_spec.rb spec/views/admin/application_settings/_package_registry.html.haml_spec.rb spec/support_specs/helpers/html_escaped_helpers_spec.rb spec/validators/ip_cidr_array_validator_spec.rb spec/lib/gitlab/database/partitioning/multiple_numeric_list_partition_spec.rb spec/finders/ci/runner_managers_finder_spec.rb spec/models/organizations/organization_setting_spec.rb spec/initializers/rails_yaml_safe_load_spec.rb spec/lib/gitlab/sidekiq_middleware/concurrency_limit/server_spec.rb spec/views/groups/show.html.haml_spec.rb spec/lib/gitlab/experiment_feature_rollout_spec.rb spec/lib/gitlab/database/pg_class_spec.rb spec/lib/security/ci_configuration/sast_build_action_spec.rb spec/services/users/dismiss_broadcast_message_service_spec.rb spec/models/concerns/ignorable_columns_spec.rb spec/services/projects/count_service_spec.rb spec/helpers/admin/background_migrations_helper_spec.rb spec/lib/gitlab/background_migration_spec.rb spec/rubocop/cop/migration/schedule_async_spec.rb spec/lib/gitlab/favicon_spec.rb spec/lib/grafana/time_window_spec.rb spec/support_specs/ability_check_spec.rb spec/lib/gitlab/manifest_import/manifest_spec.rb spec/services/dependency_proxy/head_manifest_service_spec.rb spec/graphql/mutations/concerns/mutations/resolves_group_spec.rb spec/lib/gitlab/metrics/subscribers/action_cable_spec.rb spec/models/design_user_mention_spec.rb spec/lib/gitlab/database/load_balancing/service_discovery/sampler_spec.rb spec/support_specs/helpers/active_record/query_recorder_spec.rb spec/lib/sidebars/concerns/super_sidebar_panel_spec.rb spec/lib/gitlab/fp/rop_helpers_spec.rb spec/graphql/types/color_type_spec.rb spec/rubocop/check_graceful_task_spec.rb spec/lib/gitlab/global_id/deprecations_spec.rb spec/lib/gitlab/metrics/subscribers/ldap_spec.rb spec/services/deploy_keys/create_service_spec.rb spec/lib/gitlab/github_gists_import/importer/gists_importer_spec.rb spec/helpers/artifacts_helper_spec.rb spec/lib/gitlab/graphql/type_name_deprecations_spec.rb spec/lib/backup/tasks/task_spec.rb spec/lib/gitlab/config/entry/validator_spec.rb spec/lib/gitlab/sentence_spec.rb spec/lib/gitlab/database/stat_activity_spec.rb spec/views/help/drawers.html.haml_spec.rb spec/lib/backup/restore/preconditions_spec.rb spec/lib/gitlab/ci/yaml_processor/dag_spec.rb spec/lib/gitlab/view/presenter/simple_spec.rb spec/lib/gitlab/sidekiq_middleware/pause_control/strategy_handler_spec.rb spec/lib/google_api/auth_spec.rb spec/helpers/external_link_helper_spec.rb spec/graphql/types/security/codequality_reports_comparer_type_spec.rb spec/serializers/ci/trigger_serializer_spec.rb spec/lib/sidebars/organizations/menus/scope_menu_spec.rb spec/rubocop/cop/database/rescue_statement_timeout_spec.rb spec/rubocop/cop/migration/refer_to_index_by_name_spec.rb spec/lib/gitlab/query_limiting/active_support_subscriber_spec.rb spec/services/import/gitlab_projects/file_acquisition_strategies/file_upload_spec.rb spec/sidekiq/cron/job_gem_dependency_spec.rb spec/workers/file_hook_worker_spec.rb spec/graphql/types/current_user_type_spec.rb spec/lib/gitlab/middleware/webhook_recursion_detection_spec.rb spec/lib/gitlab/merge_requests/mergeability/redis_interface_spec.rb spec/lib/gitlab/diff/inline_diff_marker_spec.rb spec/graphql/types/ci/instance_variable_type_spec.rb spec/lib/gitlab/sidekiq_middleware/instrumentation_logger_spec.rb spec/lib/gitlab/middleware/action_controller_static_context_spec.rb spec/lib/gitlab/ci/config/external/mapper/filter_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/version_metric_spec.rb spec/lib/bulk_imports/retry_pipeline_error_spec.rb spec/lib/gitlab/word_diff/segments/newline_spec.rb spec/graphql/types/work_items/widgets/start_and_due_date_update_input_type_spec.rbKnapsack report generator started!
/builds/gitlab-org/gitlab/vendor/ruby/3.2.0/gems/io-event-1.6.5/lib/io/event/support.rb:27: warning: IO::Buffer is experimental and both the Ruby and C interface may change in the future!
warning: parser/current is loading parser/ruby32, which recognizes 3.2.6-compliant syntax, but you are running 3.2.5.
Please see https://github.com/whitequark/parser#compatibility-with-ruby-mri.
Run options: exclude {:quarantine=>true, :level=>"background_migration", :click_house=>true}

# [RSpecRunTime] Starting RSpec timer...
[TEST PROF INFO] EventProf enabled (sql.active_record)
unknown OID 2249: failed to recognize type of 'pg_stat_file'. It will be treated as String.
unknown OID 2249: failed to recognize type of 'pg_stat_file'. It will be treated as String.

Test environment set up in 2.597863731 seconds
# [RSpecRunTime] Starting example group spec/services/merge_requests/push_options_handler_service_spec.rb. Expected to take 5 minutes 5.03 seconds.

MergeRequests::PushOptionsHandlerService
  `create` push option
    with a new branch
      behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
        creates a merge request with the correct target branch
        when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          sets the correct source and target project
    with an existing branch but no open MR
      behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
        creates a merge request with the correct target branch
        when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 29.16 seconds. Current RSS: ~1293M. Threads: 4. load average: 1.06 1.16 0.66 1/284 730
.

    with an existing branch that has a merge request open
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
    behaves like with a deleted branch
      behaves like a service that does nothing
        is expected not to change `MergeRequest.count`
        is expected not to change `MergeRequest.maximum(:updated_at)`
    behaves like with the project default branch
      behaves like a service that does nothing
        is expected not to change `MergeRequest.count`
        is expected not to change `MergeRequest.maximum(:updated_at)`
  `merge_when_pipeline_succeeds` push option
    with a new branch
      adds an error to the service
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      when coupled with the `create` push option
        behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          creates a merge request with the correct target branch
          when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 37.5 seconds. Current RSS: ~1291M. Threads: 4. load average: 1.06 1.16 0.67 1/285 897
.

        behaves like a service that can set the merge request to merge when pipeline succeeds
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          sets auto_merge_enabled
# [RSpecRunTime] RSpec elapsed time: 38.68 seconds. Current RSS: ~1291M. Threads: 4. load average: 1.06 1.16 0.67 1/285 900
.

    with an existing branch but no open MR
      adds an error to the service
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      when coupled with the `create` push option
        behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          creates a merge request with the correct target branch
          when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 46.78 seconds. Current RSS: ~1291M. Threads: 4. load average: 1.05 1.15 0.67 1/284 1036
.

        behaves like a service that can set the merge request to merge when pipeline succeeds
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          sets auto_merge_enabled
# [RSpecRunTime] RSpec elapsed time: 48.01 seconds. Current RSS: ~1292M. Threads: 4. load average: 1.05 1.15 0.67 1/284 1039
.

    with an existing branch that has a merge request open
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      behaves like a service that can set the merge request to merge when pipeline succeeds
        sets auto_merge_enabled
    behaves like with a deleted branch
      behaves like a service that does nothing
        is expected not to change `MergeRequest.count`
        is expected not to change `MergeRequest.maximum(:updated_at)`
    behaves like with the project default branch
      behaves like a service that does nothing
        is expected not to change `MergeRequest.count`
        is expected not to change `MergeRequest.maximum(:updated_at)`
  `remove_source_branch` push option
    with a new branch
      adds an error to the service
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      when coupled with the `create` push option
        behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          creates a merge request with the correct target branch
          when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 56.93 seconds. Current RSS: ~1292M. Threads: 4. load average: 1.04 1.15 0.67 1/284 1233
.

        behaves like a service that can remove the source branch when it is merged
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          returns true to force_remove_source_branch?
# [RSpecRunTime] RSpec elapsed time: 58.17 seconds. Current RSS: ~1291M. Threads: 4. load average: 1.04 1.15 0.67 1/284 1236
.

    with an existing branch but no open MR
      adds an error to the service
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      when coupled with the `create` push option
        behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          creates a merge request with the correct target branch
          when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 1 minute 6.28 seconds. Current RSS: ~1293M. Threads: 4. load average: 1.03 1.14 0.68 1/284 1370
.

        behaves like a service that can remove the source branch when it is merged
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          returns true to force_remove_source_branch?
# [RSpecRunTime] RSpec elapsed time: 1 minute 7.47 seconds. Current RSS: ~1292M. Threads: 4. load average: 1.03 1.14 0.68 1/283 1373
.

    with an existing branch that has a merge request open
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      behaves like a service that can remove the source branch when it is merged
        returns true to force_remove_source_branch?
    behaves like with a deleted branch
      behaves like a service that does nothing
        is expected not to change `MergeRequest.count`
        is expected not to change `MergeRequest.maximum(:updated_at)`
    behaves like with the project default branch
      behaves like a service that does nothing
        is expected not to change `MergeRequest.count`
        is expected not to change `MergeRequest.maximum(:updated_at)`
  `target` push option
    with a new branch
      adds an error to the service
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      when coupled with the `create` push option
        behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          creates a merge request with the correct target branch
          when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 1 minute 16.36 seconds. Current RSS: ~1287M. Threads: 4. load average: 1.03 1.14 0.68 1/284 1572
.

        behaves like a service that can set the target of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          sets the target_branch
# [RSpecRunTime] RSpec elapsed time: 1 minute 17.62 seconds. Current RSS: ~1288M. Threads: 4. load average: 1.03 1.14 0.68 1/284 1575
.

    with an existing branch but no open MR
      adds an error to the service
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      when coupled with the `create` push option
        behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          creates a merge request with the correct target branch
          when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 1 minute 25.67 seconds. Current RSS: ~1288M. Threads: 4. load average: 1.02 1.13 0.68 1/284 1711
.

        behaves like a service that can set the target of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          sets the target_branch
# [RSpecRunTime] RSpec elapsed time: 1 minute 26.85 seconds. Current RSS: ~1288M. Threads: 4. load average: 1.02 1.13 0.68 1/283 1714
.

    with an existing branch that has a merge request open
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      behaves like a service that can set the target of a merge request
        sets the target_branch
    behaves like with a deleted branch
      behaves like a service that does nothing
        is expected not to change `MergeRequest.count`
        is expected not to change `MergeRequest.maximum(:updated_at)`
    behaves like with the project default branch
      behaves like a service that does nothing
        is expected not to change `MergeRequest.count`
        is expected not to change `MergeRequest.maximum(:updated_at)`
  `target_project` push option
    to self
      behaves like a service that can set the target project of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
        creates a merge request with the correct target project
# [RSpecRunTime] RSpec elapsed time: 1 minute 31.12 seconds. Current RSS: ~1287M. Threads: 4. load average: 1.02 1.13 0.69 1/283 1806
.

    to intermediate project
      behaves like a service that can set the target project of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
        creates a merge request with the correct target project
# [RSpecRunTime] RSpec elapsed time: 1 minute 33.65 seconds. Current RSS: ~1301M. Threads: 4. load average: 1.02 1.13 0.69 1/283 1841
.

    to base project
      behaves like a service that can set the target project of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
        creates a merge request with the correct target project
# [RSpecRunTime] RSpec elapsed time: 1 minute 36.23 seconds. Current RSS: ~1308M. Threads: 4. load average: 1.02 1.13 0.69 1/283 1871
.

  `title` push option
    with a new branch
      adds an error to the service
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      when coupled with the `create` push option
        behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          creates a merge request with the correct target branch
          when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 1 minute 43.31 seconds. Current RSS: ~1288M. Threads: 4. load average: 1.10 1.14 0.70 1/284 2007
.

        behaves like a service that can set the title of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          sets the title
# [RSpecRunTime] RSpec elapsed time: 1 minute 44.51 seconds. Current RSS: ~1287M. Threads: 4. load average: 1.09 1.14 0.70 1/284 2010
.

    with an existing branch but no open MR
      adds an error to the service
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      when coupled with the `create` push option
        behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          creates a merge request with the correct target branch
          when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 1 minute 52.38 seconds. Current RSS: ~1293M. Threads: 4. load average: 1.08 1.14 0.70 1/284 2147
.

        behaves like a service that can set the title of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          sets the title
# [RSpecRunTime] RSpec elapsed time: 1 minute 53.6 seconds. Current RSS: ~1293M. Threads: 4. load average: 1.08 1.14 0.70 1/283 2150
.

    with an existing branch that has a merge request open
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
# [RSpecRunTime] RSpec elapsed time: 1 minute 54.66 seconds. Current RSS: ~1293M. Threads: 4. load average: 1.08 1.13 0.70 1/284 2184
.

      behaves like a service that can set the title of a merge request
        sets the title
# [RSpecRunTime] RSpec elapsed time: 1 minute 55.7 seconds. Current RSS: ~1293M. Threads: 4. load average: 1.08 1.13 0.70 1/284 2215
.

    behaves like with a deleted branch
      behaves like a service that does nothing
        is expected not to change `MergeRequest.count`
        is expected not to change `MergeRequest.maximum(:updated_at)`
    behaves like with the project default branch
      behaves like a service that does nothing
        is expected not to change `MergeRequest.count`
        is expected not to change `MergeRequest.maximum(:updated_at)`
  `description` push option
    with a new branch
      adds an error to the service
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      when coupled with the `create` push option
        behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          creates a merge request with the correct target branch
          when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 2 minutes 2.78 seconds. Current RSS: ~1291M. Threads: 4. load average: 1.07 1.13 0.70 1/284 2349
.

        behaves like a service that can set the description of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          sets the description
# [RSpecRunTime] RSpec elapsed time: 2 minutes 4.0 seconds. Current RSS: ~1292M. Threads: 4. load average: 1.06 1.13 0.71 1/284 2352
.

    with an existing branch but no open MR
      adds an error to the service
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      when coupled with the `create` push option
        behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          creates a merge request with the correct target branch
          when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 2 minutes 12.09 seconds. Current RSS: ~1293M. Threads: 4. load average: 1.06 1.13 0.71 1/284 2486
.

        behaves like a service that can set the description of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          sets the description
# [RSpecRunTime] RSpec elapsed time: 2 minutes 13.25 seconds. Current RSS: ~1294M. Threads: 4. load average: 1.06 1.13 0.71 1/284 2489
.

    with an existing branch that has a merge request open
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
# [RSpecRunTime] RSpec elapsed time: 2 minutes 14.35 seconds. Current RSS: ~1294M. Threads: 4. load average: 1.05 1.12 0.71 1/284 2524
.

      behaves like a service that can set the description of a merge request
        sets the description
# [RSpecRunTime] RSpec elapsed time: 2 minutes 15.42 seconds. Current RSS: ~1294M. Threads: 4. load average: 1.05 1.12 0.71 1/284 2554
.

      with a multiline description
        behaves like a service that does not create a merge request
          is expected not to change `MergeRequest.count`
# [RSpecRunTime] RSpec elapsed time: 2 minutes 16.45 seconds. Current RSS: ~1288M. Threads: 4. load average: 1.05 1.12 0.71 1/284 2583
.

        behaves like a service that can set the multiline description of a merge request
          sets the multiline description
# [RSpecRunTime] RSpec elapsed time: 2 minutes 17.48 seconds. Current RSS: ~1281M. Threads: 4. load average: 1.05 1.12 0.71 1/284 2612
.

    behaves like with a deleted branch
      behaves like a service that does nothing
        is expected not to change `MergeRequest.count`
        is expected not to change `MergeRequest.maximum(:updated_at)`
    behaves like with the project default branch
      behaves like a service that does nothing
        is expected not to change `MergeRequest.count`
        is expected not to change `MergeRequest.maximum(:updated_at)`
  `draft` push option
    with a new branch
      adds an error to the service
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      when coupled with the `create` push option
        behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          creates a merge request with the correct target branch
          when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 2 minutes 24.76 seconds. Current RSS: ~1292M. Threads: 4. load average: 1.12 1.14 0.72 1/284 2747
.

        behaves like a service that can set the draft of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          sets the draft
# [RSpecRunTime] RSpec elapsed time: 2 minutes 26.13 seconds. Current RSS: ~1291M. Threads: 4. load average: 1.12 1.14 0.72 1/284 2750
.

    with an existing branch but no open MR
      adds an error to the service
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
# [RSpecRunTime] RSpec elapsed time: 2 minutes 27.24 seconds. Current RSS: ~1291M. Threads: 4. load average: 1.12 1.14 0.72 1/283 2751
.

      when coupled with the `create` push option
        behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          creates a merge request with the correct target branch
          when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 2 minutes 34.12 seconds. Current RSS: ~1286M. Threads: 4. load average: 1.10 1.13 0.72 1/284 2885
.

        behaves like a service that can set the draft of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          sets the draft
# [RSpecRunTime] RSpec elapsed time: 2 minutes 35.46 seconds. Current RSS: ~1286M. Threads: 4. load average: 1.10 1.13 0.72 1/283 2888
.

    with an existing branch that has a merge request open
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
# [RSpecRunTime] RSpec elapsed time: 2 minutes 36.54 seconds. Current RSS: ~1286M. Threads: 4. load average: 1.10 1.13 0.72 1/284 2923
.

      behaves like a service that can set the draft of a merge request
        sets the draft
# [RSpecRunTime] RSpec elapsed time: 2 minutes 37.56 seconds. Current RSS: ~1280M. Threads: 4. load average: 1.10 1.13 0.72 1/284 2952
.

    draft title provided while `draft` push option is set to false
      behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
        creates a merge request with the correct target branch
        when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 2 minutes 44.56 seconds. Current RSS: ~1290M. Threads: 4. load average: 1.08 1.13 0.73 1/284 3086
.

      behaves like a service that can set the draft of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
        sets the draft
# [RSpecRunTime] RSpec elapsed time: 2 minutes 45.79 seconds. Current RSS: ~1290M. Threads: 4. load average: 1.08 1.13 0.73 1/284 3089
.

    behaves like with a deleted branch
      behaves like a service that does nothing
        is expected not to change `MergeRequest.count`
        is expected not to change `MergeRequest.maximum(:updated_at)`
    behaves like with the project default branch
      behaves like a service that does nothing
        is expected not to change `MergeRequest.count`
        is expected not to change `MergeRequest.maximum(:updated_at)`
  `squash` push option
    with a new branch
      adds an error to the service
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      when coupled with the `create` push option
        behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          creates a merge request with the correct target branch
          when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 2 minutes 54.16 seconds. Current RSS: ~1291M. Threads: 4. load average: 1.14 1.14 0.74 1/284 3227
.

        behaves like a service that can set a merge request to be squashed
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          sets the squash property
# [RSpecRunTime] RSpec elapsed time: 2 minutes 55.38 seconds. Current RSS: ~1290M. Threads: 4. load average: 1.14 1.14 0.74 1/283 3230
.

        when squash is false
          behaves like a service that can set a merge request to be squashed
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the squash property
# [RSpecRunTime] RSpec elapsed time: 2 minutes 56.59 seconds. Current RSS: ~1291M. Threads: 4. load average: 1.14 1.14 0.74 1/282 3233
.

    with an existing branch but no open MR
      adds an error to the service
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      when coupled with the `create` push option
        behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          creates a merge request with the correct target branch
          when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 3 minutes 3.68 seconds. Current RSS: ~1289M. Threads: 4. load average: 1.21 1.15 0.74 1/284 3368
.

        behaves like a service that can set a merge request to be squashed
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          sets the squash property
# [RSpecRunTime] RSpec elapsed time: 3 minutes 4.92 seconds. Current RSS: ~1290M. Threads: 4. load average: 1.28 1.17 0.75 1/283 3371
.

        when squash is false
          behaves like a service that can set a merge request to be squashed
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the squash property
# [RSpecRunTime] RSpec elapsed time: 3 minutes 6.04 seconds. Current RSS: ~1292M. Threads: 4. load average: 1.28 1.17 0.75 1/282 3374
.

    with an existing branch that has a merge request open
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      behaves like a service that can set a merge request to be squashed
        sets the squash property
    behaves like with a deleted branch
      behaves like a service that does nothing
        is expected not to change `MergeRequest.count`
        is expected not to change `MergeRequest.maximum(:updated_at)`
    behaves like with the project default branch
      behaves like a service that does nothing
        is expected not to change `MergeRequest.count`
        is expected not to change `MergeRequest.maximum(:updated_at)`
  `label` push option
    with a new branch
      adds an error to the service
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      when coupled with the `create` push option
        behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          creates a merge request with the correct target branch
          when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 3 minutes 16.87 seconds. Current RSS: ~1295M. Threads: 4. load average: 1.23 1.16 0.75 1/284 3570
.

        behaves like a service that can change labels of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          changes label count
# [RSpecRunTime] RSpec elapsed time: 3 minutes 18.49 seconds. Current RSS: ~1295M. Threads: 4. load average: 1.23 1.16 0.75 1/283 3573
.

    with an existing branch but no open MR
      adds an error to the service
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      when coupled with the `create` push option
        behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          creates a merge request with the correct target branch
          when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 3 minutes 26.06 seconds. Current RSS: ~1286M. Threads: 4. load average: 1.20 1.16 0.76 1/284 3709
.

        behaves like a service that can change labels of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          changes label count
# [RSpecRunTime] RSpec elapsed time: 3 minutes 27.63 seconds. Current RSS: ~1287M. Threads: 4. load average: 1.20 1.16 0.76 1/283 3712
.

    with an existing branch that has a merge request open
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
# [RSpecRunTime] RSpec elapsed time: 3 minutes 28.78 seconds. Current RSS: ~1293M. Threads: 4. load average: 1.20 1.16 0.76 1/284 3746
.

      behaves like a service that can change labels of a merge request
        changes label count
# [RSpecRunTime] RSpec elapsed time: 3 minutes 29.93 seconds. Current RSS: ~1291M. Threads: 4. load average: 1.26 1.17 0.76 1/284 3775
.

    behaves like with a deleted branch
      behaves like a service that does nothing
        is expected not to change `MergeRequest.count`
        is expected not to change `MergeRequest.maximum(:updated_at)`
    behaves like with the project default branch
      behaves like a service that does nothing
        is expected not to change `MergeRequest.count`
        is expected not to change `MergeRequest.maximum(:updated_at)`
  `unlabel` push option
    with a new branch
      adds an error to the service
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      when coupled with the `create` push option
        behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          creates a merge request with the correct target branch
          when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 3 minutes 38.68 seconds. Current RSS: ~1296M. Threads: 4. load average: 1.48 1.22 0.78 1/283 3910
.

        behaves like a service that can change labels of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          changes label count
# [RSpecRunTime] RSpec elapsed time: 3 minutes 40.25 seconds. Current RSS: ~1295M. Threads: 4. load average: 1.52 1.23 0.79 1/282 3913
.

    with an existing branch but no open MR
      adds an error to the service
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      when coupled with the `create` push option
        behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          creates a merge request with the correct target branch
          when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 3 minutes 48.04 seconds. Current RSS: ~1293M. Threads: 4. load average: 1.48 1.23 0.79 1/283 4049
.

        behaves like a service that can change labels of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          changes label count
# [RSpecRunTime] RSpec elapsed time: 3 minutes 49.73 seconds. Current RSS: ~1293M. Threads: 4. load average: 1.44 1.22 0.79 1/282 4052
.

    with an existing branch that has a merge request open
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
# [RSpecRunTime] RSpec elapsed time: 3 minutes 50.99 seconds. Current RSS: ~1296M. Threads: 4. load average: 1.44 1.22 0.79 1/283 4087
.

      behaves like a service that can change labels of a merge request
        changes label count
# [RSpecRunTime] RSpec elapsed time: 3 minutes 52.36 seconds. Current RSS: ~1290M. Threads: 4. load average: 1.44 1.22 0.79 1/283 4117
.

    behaves like with a deleted branch
      behaves like a service that does nothing
        is expected not to change `MergeRequest.count`
        is expected not to change `MergeRequest.maximum(:updated_at)`
    behaves like with the project default branch
      behaves like a service that does nothing
        is expected not to change `MergeRequest.count`
        is expected not to change `MergeRequest.maximum(:updated_at)`
  `milestone` push option
    with a valid milestone
      with a new branch
        adds an error to the service
        behaves like a service that does not create a merge request
          is expected not to change `MergeRequest.count`
        when coupled with the `create` push option
          behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            creates a merge request with the correct target branch
            when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
              sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 4 minutes 0.72 second. Current RSS: ~1291M. Threads: 4. load average: 1.37 1.21 0.79 1/283 4251
.

          behaves like a service that can set the milestone of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the milestone
# [RSpecRunTime] RSpec elapsed time: 4 minutes 1.99 seconds. Current RSS: ~1291M. Threads: 4. load average: 1.37 1.21 0.79 1/282 4254
.

      with an existing branch but no open MR
        adds an error to the service
        behaves like a service that does not create a merge request
          is expected not to change `MergeRequest.count`
        when coupled with the `create` push option
          behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            creates a merge request with the correct target branch
            when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
              sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 4 minutes 9.11 seconds. Current RSS: ~1293M. Threads: 4. load average: 1.32 1.21 0.80 1/283 4389
.

          behaves like a service that can set the milestone of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the milestone
# [RSpecRunTime] RSpec elapsed time: 4 minutes 10.38 seconds. Current RSS: ~1294M. Threads: 4. load average: 1.32 1.21 0.80 1/283 4392
.

      with an existing branch that has a merge request open
        behaves like a service that does not create a merge request
          is expected not to change `MergeRequest.count`
# [RSpecRunTime] RSpec elapsed time: 4 minutes 11.44 seconds. Current RSS: ~1294M. Threads: 4. load average: 1.32 1.21 0.80 1/283 4427
.

        behaves like a service that can set the milestone of a merge request
          sets the milestone
# [RSpecRunTime] RSpec elapsed time: 4 minutes 12.47 seconds. Current RSS: ~1294M. Threads: 4. load average: 1.32 1.21 0.80 1/283 4456
.

      behaves like with a deleted branch
        behaves like a service that does nothing
          is expected not to change `MergeRequest.count`
          is expected not to change `MergeRequest.maximum(:updated_at)`
      behaves like with the project default branch
        behaves like a service that does nothing
          is expected not to change `MergeRequest.count`
          is expected not to change `MergeRequest.maximum(:updated_at)`
    with invalid milestone
      behaves like a service that can set the milestone of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
        sets the milestone
# [RSpecRunTime] RSpec elapsed time: 4 minutes 13.88 seconds. Current RSS: ~1288M. Threads: 4. load average: 1.32 1.21 0.80 1/283 4459
.

    with an ancestor milestone
      with immediate parent milestone
        behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          creates a merge request with the correct target branch
          when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 4 minutes 21.97 seconds. Current RSS: ~1301M. Threads: 4. load average: 1.34 1.22 0.80 1/283 4595
.

        behaves like a service that can set the milestone of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          sets the milestone
# [RSpecRunTime] RSpec elapsed time: 4 minutes 23.25 seconds. Current RSS: ~1300M. Threads: 4. load average: 1.34 1.22 0.80 1/282 4598
.

      with multi-level ancestor milestone
        behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          creates a merge request with the correct target branch
          when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 4 minutes 30.42 seconds. Current RSS: ~1292M. Threads: 4. load average: 1.29 1.21 0.81 1/283 4733
.

        behaves like a service that can set the milestone of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          sets the milestone
# [RSpecRunTime] RSpec elapsed time: 4 minutes 31.77 seconds. Current RSS: ~1292M. Threads: 4. load average: 1.29 1.21 0.81 1/283 4736
.

  `assign` push option
    behaves like with a new branch
      adds an error to the service
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      behaves like when coupled with the `create` push option
        behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          creates a merge request with the correct target branch
          when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 4 minutes 39.75 seconds. Current RSS: ~1283M. Threads: 4. load average: 1.32 1.22 0.81 1/283 4871
.

        behaves like a service that can change assignees of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          changes assignee count
# [RSpecRunTime] RSpec elapsed time: 4 minutes 40.98 seconds. Current RSS: ~1283M. Threads: 4. load average: 1.32 1.22 0.81 1/282 4874
.

    behaves like with an existing branch but no open MR
      adds an error to the service
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      behaves like when coupled with the `create` push option
        behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          creates a merge request with the correct target branch
          when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 4 minutes 47.78 seconds. Current RSS: ~1290M. Threads: 4. load average: 1.29 1.21 0.82 1/283 5010
.

        behaves like a service that can change assignees of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          changes assignee count
# [RSpecRunTime] RSpec elapsed time: 4 minutes 48.97 seconds. Current RSS: ~1291M. Threads: 4. load average: 1.29 1.21 0.82 1/283 5013
.

    behaves like with an existing branch that has a merge request open in foss
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      behaves like a service that can change assignees of a merge request
        changes assignee count
# [RSpecRunTime] RSpec elapsed time: 4 minutes 51.91 seconds. Current RSS: ~1290M. Threads: 4. load average: 1.27 1.21 0.82 1/283 5076
.

    behaves like with a deleted branch
      behaves like a service that does nothing
        is expected not to change `MergeRequest.count`
        is expected not to change `MergeRequest.maximum(:updated_at)`
    behaves like with the project default branch
      behaves like a service that does nothing
        is expected not to change `MergeRequest.count`
        is expected not to change `MergeRequest.maximum(:updated_at)`
    when passing in usernames
      behaves like with an existing branch that has a merge request open in foss
        behaves like a service that does not create a merge request
          is expected not to change `MergeRequest.count`
# [RSpecRunTime] RSpec elapsed time: 4 minutes 53.88 seconds. Current RSS: ~1275M. Threads: 4. load average: 1.27 1.21 0.82 1/283 5106
.

        behaves like a service that can change assignees of a merge request
          changes assignee count
# [RSpecRunTime] RSpec elapsed time: 4 minutes 55.51 seconds. Current RSS: ~1273M. Threads: 4. load average: 1.25 1.21 0.82 1/283 5137
.

  `unassign` push option
    behaves like with a new branch
      adds an error to the service
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      behaves like when coupled with the `create` push option
        behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          creates a merge request with the correct target branch
          when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 5 minutes 2.72 seconds. Current RSS: ~1292M. Threads: 4. load average: 1.23 1.20 0.82 1/283 5271
.

        behaves like a service that can change assignees of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          changes assignee count
# [RSpecRunTime] RSpec elapsed time: 5 minutes 3.99 seconds. Current RSS: ~1292M. Threads: 4. load average: 1.23 1.20 0.82 1/283 5274
.

    behaves like with an existing branch but no open MR
      adds an error to the service
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      behaves like when coupled with the `create` push option
        behaves like a service that can create a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          creates a merge request with the correct target branch
          when project has been forked
Job arguments to Integrations::GroupMentionWorker must be native JSON types, but :mentionable_type is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
            sets the correct source and target project
# [RSpecRunTime] RSpec elapsed time: 5 minutes 10.98 seconds. Current RSS: ~1291M. Threads: 4. load average: 1.19 1.20 0.82 1/283 5409
.

        behaves like a service that can change assignees of a merge request
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
          changes assignee count
# [RSpecRunTime] RSpec elapsed time: 5 minutes 13.28 seconds. Current RSS: ~1290M. Threads: 4. load average: 1.19 1.20 0.82 1/282 5412
.

    behaves like with an existing branch that has a merge request open in foss
      behaves like a service that does not create a merge request
        is expected not to change `MergeRequest.count`
      behaves like a service that can change assignees of a merge request
        changes assignee count
    behaves like with a deleted branch
      behaves like a service that does nothing
        is expected not to change `MergeRequest.count`
        is expected not to change `MergeRequest.maximum(:updated_at)`
    behaves like with the project default branch
      behaves like a service that does nothing
        is expected not to change `MergeRequest.count`
        is expected not to change `MergeRequest.maximum(:updated_at)`
    when passing in usernames
      behaves like with an existing branch that has a merge request open in foss
        behaves like a service that does not create a merge request
          is expected not to change `MergeRequest.count`
        behaves like a service that can change assignees of a merge request
          changes assignee count
  multiple pushed branches
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
Job arguments to MergeRequests::SyncCodeOwnerApprovalRulesWorker must be native JSON types, but :expire_unapproved_key is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
    creates a merge request per branch
    when there are too many pushed branches
      records an error
# [RSpecRunTime] RSpec elapsed time: 5 minutes 19.5 seconds. Current RSS: ~1289M. Threads: 4. load average: 1.16 1.19 0.82 1/283 5536
.

  no push options
    behaves like a service that does nothing
      is expected not to change `MergeRequest.count`
      is expected not to change `MergeRequest.maximum(:updated_at)`
  no user
    records an error
  unauthorized user
    records an error
# [RSpecRunTime] RSpec elapsed time: 5 minutes 21.15 seconds. Current RSS: ~1289M. Threads: 4. load average: 1.16 1.19 0.82 1/282 5539
.

  handling unexpected exceptions
    records an error
    writes to Gitlab::AppLogger
  when target is not a valid branch name
    records an error
  when the target project does not exist
    records an error
  when user does not have access to target project
    records an error
  when MRs are not enabled
    records an error
# [RSpecRunTime] RSpec elapsed time: 5 minutes 22.73 seconds. Current RSS: ~1296M. Threads: 4. load average: 1.16 1.19 0.82 1/282 5563
.

  when projects are unrelated
    records an error
# [RSpecRunTime] RSpec elapsed time: 5 minutes 23.92 seconds. Current RSS: ~1301M. Threads: 4. load average: 1.16 1.19 0.82 1/281 5587
.

  when MR has ActiveRecord errors
    adds the error to its errors property

# [RSpecRunTime] Finishing example group spec/services/merge_requests/push_options_handler_service_spec.rb. It took 5 minutes 17.6 seconds. Expected to take 5 minutes 5.03 seconds.
# [RSpecRunTime] Starting example group spec/models/members/members/invited_private_group_accessibility_assigner_spec.rb. Expected to take 2 minutes 31.57 seconds.

Members::InvitedPrivateGroupAccessibilityAssigner
  does not allow STI
  #execute
    for project members
      behaves like assigns is_source_accessible_to_current_user
        for direct members
          source_visibility: :public
            behaves like sets is_source_accessible_to_current_user to true for all members
              is expected to eq true
          source_visibility: :private
            behaves like sets is_source_accessible_to_current_user to true for all members
              is expected to eq true
        for inherited members
          source_visibility: :public
            behaves like sets is_source_accessible_to_current_user to true for all members
              is expected to eq true
          source_visibility: :private
            behaves like sets is_source_accessible_to_current_user to true for all members
              is expected to eq true
        for shared source members
          when current user is unauthenticated
            shared_source_visibility: :public, invited_group_visibility: :public, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 5 minutes 32.13 seconds. Current RSS: ~1275M. Threads: 4. load average: 1.14 1.18 0.83 1/278 5591
.

            shared_source_visibility: :public, invited_group_visibility: :private, can_see_invited_members_source?: false
              is expected to eq false
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 5 minutes 36.12 seconds. Current RSS: ~1268M. Threads: 4. load average: 1.12 1.18 0.83 1/277 5592
.

          when current user non-member of shared source
            shared_source_visibility: :public, invited_group_visibility: :public, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 5 minutes 40.01 seconds. Current RSS: ~1269M. Threads: 4. load average: 1.11 1.17 0.83 1/277 5593
.

            shared_source_visibility: :public, invited_group_visibility: :private, can_see_invited_members_source?: false
              is expected to eq false
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 5 minutes 44.15 seconds. Current RSS: ~1270M. Threads: 4. load average: 1.10 1.17 0.83 3/277 5594
.

          when current user a member of shared source but not of invited group
            shared_source_visibility: :public, invited_group_visibility: :public, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 5 minutes 48.67 seconds. Current RSS: ~1270M. Threads: 4. load average: 1.10 1.17 0.83 1/277 5595
.

            shared_source_visibility: :public, invited_group_visibility: :private, can_see_invited_members_source?: false
              is expected to eq false
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 5 minutes 53.32 seconds. Current RSS: ~1271M. Threads: 4. load average: 1.10 1.17 0.83 1/277 5596
.

            shared_source_visibility: :private, invited_group_visibility: :public, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 5 minutes 57.83 seconds. Current RSS: ~1270M. Threads: 4. load average: 1.09 1.17 0.83 1/277 5597
.

            shared_source_visibility: :private, invited_group_visibility: :private, can_see_invited_members_source?: false
              is expected to eq false
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 6 minutes 2.29 seconds. Current RSS: ~1272M. Threads: 4. load average: 1.08 1.16 0.83 1/277 5598
.

          when current user is a direct member of shared group and of invited group through sharing
            shared_source_visibility: :public, invited_group_visibility: :public, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 6 minutes 6.82 seconds. Current RSS: ~1273M. Threads: 4. load average: 1.07 1.16 0.83 1/277 5599
.

            shared_source_visibility: :public, invited_group_visibility: :private, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 6 minutes 11.62 seconds. Current RSS: ~1273M. Threads: 4. load average: 1.07 1.16 0.83 1/277 5600
.

            shared_source_visibility: :private, invited_group_visibility: :public, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 6 minutes 16.24 seconds. Current RSS: ~1274M. Threads: 4. load average: 1.06 1.15 0.83 1/277 5601
.

            shared_source_visibility: :private, invited_group_visibility: :private, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 6 minutes 21.05 seconds. Current RSS: ~1273M. Threads: 4. load average: 1.14 1.17 0.84 1/277 5602
.

          when current user is a direct member of shared group and of invited group through inheritance
            shared_source_visibility: :public, invited_group_visibility: :public, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 6 minutes 25.5 seconds. Current RSS: ~1275M. Threads: 4. load average: 1.13 1.17 0.84 1/277 5603
.

            shared_source_visibility: :public, invited_group_visibility: :private, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 6 minutes 30.25 seconds. Current RSS: ~1279M. Threads: 4. load average: 1.12 1.16 0.84 1/277 5604
.

            shared_source_visibility: :private, invited_group_visibility: :public, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 6 minutes 35.15 seconds. Current RSS: ~1279M. Threads: 4. load average: 1.11 1.16 0.84 1/277 5605
.

            shared_source_visibility: :private, invited_group_visibility: :private, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 6 minutes 39.99 seconds. Current RSS: ~1281M. Threads: 4. load average: 1.10 1.16 0.85 1/277 5606
.

          when current user can manage member of shared group not invited group members
            shared_source_visibility: :public, invited_group_visibility: :public, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 6 minutes 44.87 seconds. Current RSS: ~1282M. Threads: 4. load average: 1.09 1.15 0.85 1/277 5607
.

            shared_source_visibility: :public, invited_group_visibility: :private, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 6 minutes 50.63 seconds. Current RSS: ~1283M. Threads: 4. load average: 1.08 1.15 0.85 1/277 5608
.

            shared_source_visibility: :private, invited_group_visibility: :public, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 6 minutes 55.36 seconds. Current RSS: ~1279M. Threads: 4. load average: 1.08 1.15 0.85 1/277 5609
.

            shared_source_visibility: :private, invited_group_visibility: :private, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 7 minutes 0.15 second. Current RSS: ~1275M. Threads: 4. load average: 1.07 1.14 0.85 1/277 5610
.

    for group members
      behaves like assigns is_source_accessible_to_current_user
        for direct members
          source_visibility: :public
            behaves like sets is_source_accessible_to_current_user to true for all members
              is expected to eq true
          source_visibility: :private
            behaves like sets is_source_accessible_to_current_user to true for all members
              is expected to eq true
        for inherited members
          source_visibility: :public
            behaves like sets is_source_accessible_to_current_user to true for all members
              is expected to eq true
          source_visibility: :private
            behaves like sets is_source_accessible_to_current_user to true for all members
              is expected to eq true
        for shared source members
          when current user is unauthenticated
            shared_source_visibility: :public, invited_group_visibility: :public, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 7 minutes 5.47 seconds. Current RSS: ~1275M. Threads: 4. load average: 1.06 1.14 0.85 1/277 5611
.

            shared_source_visibility: :public, invited_group_visibility: :private, can_see_invited_members_source?: false
              is expected to eq false
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 7 minutes 8.66 seconds. Current RSS: ~1275M. Threads: 4. load average: 1.06 1.14 0.85 1/277 5612
.

          when current user non-member of shared source
            shared_source_visibility: :public, invited_group_visibility: :public, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 7 minutes 11.83 seconds. Current RSS: ~1275M. Threads: 4. load average: 1.06 1.14 0.85 1/277 5613
.

            shared_source_visibility: :public, invited_group_visibility: :private, can_see_invited_members_source?: false
              is expected to eq false
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 7 minutes 15.21 seconds. Current RSS: ~1275M. Threads: 4. load average: 1.05 1.14 0.85 1/277 5614
.

          when current user a member of shared source but not of invited group
            shared_source_visibility: :public, invited_group_visibility: :public, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 7 minutes 18.89 seconds. Current RSS: ~1276M. Threads: 4. load average: 1.05 1.14 0.85 1/277 5615
.

            shared_source_visibility: :public, invited_group_visibility: :private, can_see_invited_members_source?: false
              is expected to eq false
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 7 minutes 22.89 seconds. Current RSS: ~1276M. Threads: 4. load average: 1.05 1.14 0.85 1/277 5616
.

            shared_source_visibility: :private, invited_group_visibility: :public, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 7 minutes 26.66 seconds. Current RSS: ~1277M. Threads: 4. load average: 1.04 1.13 0.85 1/277 5617
.

            shared_source_visibility: :private, invited_group_visibility: :private, can_see_invited_members_source?: false
              is expected to eq false
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 7 minutes 30.42 seconds. Current RSS: ~1277M. Threads: 4. load average: 1.04 1.13 0.85 1/277 5618
.

          when current user is a direct member of shared group and of invited group through sharing
            shared_source_visibility: :public, invited_group_visibility: :public, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 7 minutes 34.39 seconds. Current RSS: ~1275M. Threads: 4. load average: 1.04 1.13 0.86 1/277 5619
.

            shared_source_visibility: :public, invited_group_visibility: :private, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 7 minutes 38.5 seconds. Current RSS: ~1277M. Threads: 4. load average: 1.04 1.13 0.86 1/277 5620
.

            shared_source_visibility: :private, invited_group_visibility: :public, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 7 minutes 42.51 seconds. Current RSS: ~1277M. Threads: 4. load average: 1.03 1.13 0.86 1/277 5621
.

            shared_source_visibility: :private, invited_group_visibility: :private, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 7 minutes 46.61 seconds. Current RSS: ~1278M. Threads: 4. load average: 1.03 1.12 0.86 1/277 5622
.

          when current user is a direct member of shared group and of invited group through inheritance
            shared_source_visibility: :public, invited_group_visibility: :public, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 7 minutes 50.17 seconds. Current RSS: ~1278M. Threads: 4. load average: 1.03 1.12 0.86 1/277 5623
.

            shared_source_visibility: :public, invited_group_visibility: :private, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 7 minutes 53.84 seconds. Current RSS: ~1280M. Threads: 4. load average: 1.03 1.12 0.86 1/278 5624
.

            shared_source_visibility: :private, invited_group_visibility: :public, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 7 minutes 57.39 seconds. Current RSS: ~1280M. Threads: 4. load average: 1.11 1.14 0.87 1/278 5625
.

            shared_source_visibility: :private, invited_group_visibility: :private, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 8 minutes 1.14 seconds. Current RSS: ~1279M. Threads: 4. load average: 1.10 1.13 0.87 1/278 5626
.

          when current user can manage member of shared group not invited group members
            shared_source_visibility: :public, invited_group_visibility: :public, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 8 minutes 4.77 seconds. Current RSS: ~1280M. Threads: 4. load average: 1.09 1.13 0.87 1/278 5627
.

            shared_source_visibility: :public, invited_group_visibility: :private, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 8 minutes 8.39 seconds. Current RSS: ~1280M. Threads: 4. load average: 1.09 1.13 0.87 1/278 5628
.

            shared_source_visibility: :private, invited_group_visibility: :public, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 8 minutes 12.0 seconds. Current RSS: ~1281M. Threads: 4. load average: 1.08 1.13 0.87 1/278 5629
.

            shared_source_visibility: :private, invited_group_visibility: :private, can_see_invited_members_source?: true
              is expected to eq true
              with multiple members belonging to the same source
                avoid N+1 queries
# [RSpecRunTime] RSpec elapsed time: 8 minutes 15.67 seconds. Current RSS: ~1282M. Threads: 4. load average: 1.08 1.13 0.87 1/278 5630
.


# [RSpecRunTime] Finishing example group spec/models/members/members/invited_private_group_accessibility_assigner_spec.rb. It took 2 minutes 50.9 seconds. Expected to take 2 minutes 31.57 seconds.
# [RSpecRunTime] Starting example group spec/models/clusters/cluster_spec.rb. Expected to take 1 minute 18.57 seconds.

Clusters::Cluster
  is expected to have one provider_gcp
  is expected to have one cluster_project
  is expected to have one integration_prometheus
  is expected to have one provider_aws
  is expected to belong to management_project class_name => ::Project required: false
  is expected to have many cluster_projects
  is expected to have many deployment_clusters
  is expected to have many projects
  is expected to respond to #project
  is expected to delegate #status to the #provider object
  is expected to be namespace per environment
  is expected to delegate #status_reason to the #provider object
  is expected to have many environments through deployments
  is expected to belong to user required: false
  is expected to have one platform_kubernetes
  is expected to have many cluster_groups
  is expected to have many kubernetes_namespaces
  is expected to includes the HasEnvironmentScope module
  is expected to have many groups
  has default helm_major_version 3
  is expected to have many groups_projects
  does not allow STI
  #delete_cached_resources!
    deletes associated namespace records
# [RSpecRunTime] RSpec elapsed time: 8 minutes 17.72 seconds. Current RSS: ~1279M. Threads: 4. load average: 1.08 1.13 0.87 1/278 5631
.

  .ancestor_clusters_for_clusterable
    when project does not belong to this group
      returns nothing
    when group has a configured kubernetes cluster
      returns the group cluster
# [RSpecRunTime] RSpec elapsed time: 8 minutes 19.66 seconds. Current RSS: ~1289M. Threads: 4. load average: 1.07 1.12 0.87 1/278 5632
.

    when group and instance have configured kubernetes clusters
      returns clusters in order, descending the hierachy
# [RSpecRunTime] RSpec elapsed time: 8 minutes 22.74 seconds. Current RSS: ~1299M. Threads: 4. load average: 1.07 1.12 0.87 3/279 5633
.

    when sub-group has configured kubernetes cluster
      returns clusters in order, descending the hierachy
      avoids N+1 queries
      for a group
        returns clusters in order for a group
# [RSpecRunTime] RSpec elapsed time: 8 minutes 30.33 seconds. Current RSS: ~1306M. Threads: 4. load average: 1.06 1.12 0.87 1/278 5634
.

    scope chaining
      returns nothing
# [RSpecRunTime] RSpec elapsed time: 8 minutes 31.57 seconds. Current RSS: ~1306M. Threads: 4. load average: 1.06 1.12 0.87 1/278 5635
.

  .gcp_installed
    is expected to contain exactly #<Clusters::Cluster id: 36, user_id: 221, provider_type: "gcp", platform_type: "kubernetes", created_...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>
  #group
    when cluster belongs to a group
      is expected to eq #<Group id:533 @group391>
    when cluster does not belong to any group
      is expected to be nil
  #provided_by_user?
    with a GCP provider
      is expected to be falsy
    with an user provider
      is expected to be truthy
  #metrics_connection_error
Job arguments to ExternalServiceReactiveCachingWorker must be native JSON types, but Clusters::Cluster(id: integer, user_id: integer, provider_type: integer, platform_type: integer, created_at: datetime, updated_at: datetime, enabled: boolean, name: string, environment_scope: string, cluster_type: integer, domain: string, managed: boolean, namespace_per_environment: boolean, management_project_id: integer, cleanup_status: integer, cleanup_status_reason: text, helm_major_version: integer) is a Class.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
    is expected to be nil
    with a cached status
      is expected to eq :unknown_error
  #integration_prometheus_available?
    is expected to be falsey
    when integration is enabled
      is expected to be truthy
    when integration is disabled
      is expected to be falsey
  .with_management_project
    cluster has a management project
      is expected to include #<Clusters::Cluster id: 49, user_id: 235, provider_type: nil, platform_type: nil, created_at: "2024-1...ue, management_project_id: 90, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>
    cluster does not have a management project
      is expected not to include #<Clusters::Cluster id: 50, user_id: 237, provider_type: nil, platform_type: nil, created_at: "2024-1...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>
  #all_projects
    cluster_type is project_type
      returns projects
    cluster_type is group_type
      returns group projects
# [RSpecRunTime] RSpec elapsed time: 8 minutes 37.63 seconds. Current RSS: ~1299M. Threads: 4. load average: 0.97 1.10 0.87 1/278 5636
.

    cluster_type is instance_type
      returns all instance's projects
  default values
    is expected to eq 3
  #connection_status
Job arguments to ExternalServiceReactiveCachingWorker must be native JSON types, but Clusters::Cluster(id: integer, user_id: integer, provider_type: integer, platform_type: integer, created_at: datetime, updated_at: datetime, enabled: boolean, name: string, environment_scope: string, cluster_type: integer, domain: string, managed: boolean, namespace_per_environment: boolean, management_project_id: integer, cleanup_status: integer, cleanup_status_reason: text, helm_major_version: integer) is a Class.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
    is expected to be nil
    with a cached status
      is expected to eq :connected
  #status_name
    the cluster has a provider
      is expected to eq :errored
      when cluster cleanup is ongoing
        status_name: :errored, cleanup_status: :cleanup_not_started
          returns cleanup_ongoing when uninstalling applications
        status_name: :cleanup_ongoing, cleanup_status: :cleanup_removing_project_namespaces
          returns cleanup_ongoing when uninstalling applications
        status_name: :cleanup_ongoing, cleanup_status: :cleanup_removing_service_account
          returns cleanup_ongoing when uninstalling applications
        status_name: :cleanup_errored, cleanup_status: :cleanup_errored
          returns cleanup_ongoing when uninstalling applications
    there is a cached connection status
      is expected to eq :connected
    there is no connection status in the cache
      is expected to eq :created
  .gcp_provided
    is expected to contain exactly #<Clusters::Cluster id: 68, user_id: 258, provider_type: "gcp", platform_type: "kubernetes", created_...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>
  #node_connection_error
Job arguments to ExternalServiceReactiveCachingWorker must be native JSON types, but Clusters::Cluster(id: integer, user_id: integer, provider_type: integer, platform_type: integer, created_at: datetime, updated_at: datetime, enabled: boolean, name: string, environment_scope: string, cluster_type: integer, domain: string, managed: boolean, namespace_per_environment: boolean, management_project_id: integer, cleanup_status: integer, cleanup_status_reason: text, helm_major_version: integer) is a Class.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
    is expected to be nil
    with a cached status
      is expected to eq :unknown_error
  #platform_kubernetes_rbac?
    without platform_kubernetes
      is expected to eq false
    with platform_kubernetes
      with rbac? set to true
        is expected to eq true
      with rbac? set to false
        is expected to eq false
  .with_name
    is expected to contain exactly #<Clusters::Cluster id: 73, user_id: 263, provider_type: nil, platform_type: nil, created_at: "2024-1...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>
# [RSpecRunTime] RSpec elapsed time: 8 minutes 43.27 seconds. Current RSS: ~1288M. Threads: 4. load average: 0.97 1.10 0.87 1/278 5637
.

  behaves like having unique enum values
    has unique values in "cluster_type"
    has unique values in "platform_type"
    has unique values in "provider_type"
  validations
    when validates unique_environment_scope
      for a project cluster
        when identical environment scope exists in project
          is expected to be falsey
        when identical environment scope does not exist in project
          is expected to be truthy
        when identical environment scope exists in different project
          is expected to be truthy
# [RSpecRunTime] RSpec elapsed time: 8 minutes 46.65 seconds. Current RSS: ~1282M. Threads: 4. load average: 0.98 1.10 0.87 1/277 5638
.

      for a group cluster
        when identical environment scope exists in group
          is expected to be falsey
        when identical environment scope does not exist in group
          is expected to be truthy
        when identical environment scope exists in different group
          is expected to be truthy
      for an instance cluster
        identical environment scope exists
          is expected to be falsey
        identical environment scope does not exist
          is expected to be truthy
    when validates name
      when provided by user
        when name is empty
          is expected to be falsey
        when name is nil
          is expected to be falsey
        when name is present
          is expected to be truthy
      when provided by gcp
        when name is shorter than 1
          is expected to be falsey
        when name is longer than 63
          is expected to be falsey
        when name includes invalid character
          is expected to be falsey
        when name is present
          is expected to be truthy
        when record is persisted
          when name is changed
            is expected to be falsey
          when name is same
            is expected to be truthy
    when validates restrict_modification
      when creation is on going
        is expected to be falsey
      when creation is done
        is expected to be truthy
    cluster_type validations
      validates presence
      project_type cluster
        does not allow setting group
      group_type cluster
        does not allow setting project
      instance_type cluster
        does not allow setting group
        does not allow setting project
# [RSpecRunTime] RSpec elapsed time: 8 minutes 54.21 seconds. Current RSS: ~1301M. Threads: 4. load average: 0.98 1.09 0.87 1/278 5639
.

    domain validation
      when cluster has domain
        is expected to be valid
      when cluster is not a valid hostname
        adds an error on domain
      when cluster does not have a domain
        is expected to be valid
    unique scope for management_project
      duplicate scopes for the same management project
        adds an error on environment_scope
    helm_major_version can only be 2 or 3
      helm_major_version: 2, expect_valid: true
        is expected to eq true
      helm_major_version: 3, expect_valid: true
        is expected to eq true
      helm_major_version: 4, expect_valid: false
        is expected to eq false
      helm_major_version: -1, expect_valid: false
        is expected to eq false
  #on_creation?
    without provider
      is expected to eq false
    with provider
      with on_creation? set to true
        is expected to eq true
      with on_creation? set to false
        is expected to eq false
  behaves like it has loose foreign keys
    has at least one loose foreign key definition
    has the deletion trigger present
    records record deletions
    cleans up record deletions
# [RSpecRunTime] RSpec elapsed time: 8 minutes 56.74 seconds. Current RSS: ~1295M. Threads: 4. load average: 0.98 1.09 0.87 1/278 5640
.

  .with_project_http_integrations
    project has alert service data
      is expected to include #<Clusters::Cluster id: 103, user_id: 303, provider_type: nil, platform_type: nil, created_at: "2024-...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>
    project has no alert service data
      is expected not to include #<Clusters::Cluster id: 104, user_id: 305, provider_type: nil, platform_type: nil, created_at: "2024-...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>
  .user_provided
    is expected to contain exactly #<Clusters::Cluster id: 105, user_id: 307, provider_type: "user", platform_type: "kubernetes", create...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>
  .aws_installed
    is expected to contain exactly #<Clusters::Cluster id: 107, user_id: 309, provider_type: "aws", platform_type: "kubernetes", created...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>
  .with_integration_prometheus
    cluster has prometheus application
      is expected to include #<Clusters::Cluster id: 109, user_id: 311, provider_type: nil, platform_type: nil, created_at: "2024-...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>
    cluster does not have prometheus application
      is expected not to include #<Clusters::Cluster id: 110, user_id: 312, provider_type: nil, platform_type: nil, created_at: "2024-...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>
  .aws_provided
    is expected to contain exactly #<Clusters::Cluster id: 111, user_id: 313, provider_type: "aws", platform_type: "kubernetes", created...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>
  #platform
    when platform is kubernetes
      returns a platform
  #prometheus_adapter
    returns nothing
    has integration_prometheus
      returns the integration
  #allow_user_defined_namespace?
    project type cluster
      gitlab managed
        is expected to be truthy
      not managed
        is expected to be truthy
    group type cluster
      gitlab managed
        is expected to be falsey
      not managed
        is expected to be truthy
    instance type cluster
      gitlab managed
        is expected to be falsey
      not managed
        is expected to be truthy
  .enabled
    is expected to contain exactly #<Clusters::Cluster id: 123, user_id: 326, provider_type: nil, platform_type: nil, created_at: "2024-...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>
  .for_project_namespace
    is expected to contain exactly #<Clusters::Cluster id: 125, user_id: 328, provider_type: nil, platform_type: nil, created_at: "2024-...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>
# [RSpecRunTime] RSpec elapsed time: 9 minutes 3.93 seconds. Current RSS: ~1284M. Threads: 4. load average: 0.98 1.09 0.87 1/280 5641
.

  #calculate_reactive_cache
    cluster is disabled
      does not populate the cache
    cluster is enabled
      connection to the cluster is successful
        is expected to eq {:connection_status=>:connected, :nodes=>[{"metadata"=>{"name"=>"gke-cluster-applications-default-poo...ity"=>{"cpu"=>"2", "memory"=>"7657228Ki"}}, "usage"=>{"cpu"=>"144208668n", "memory"=>"1789048Ki"}}]}
      cluster cannot be reached
        is expected to eq {:connection_error=>:connection_error, :connection_status=>:unreachable}
      cluster cannot be authenticated to
        is expected to eq {:connection_error=>:authentication_error, :connection_status=>:authentication_failure}
      Kubeclient::HttpError
        is expected to eq {:connection_error=>:http_error, :connection_status=>:authentication_failure}
        generic timeout
          is expected to eq {:connection_error=>:http_error, :connection_status=>:unreachable}
# [RSpecRunTime] RSpec elapsed time: 9 minutes 7.42 seconds. Current RSS: ~1300M. Threads: 4. load average: 0.98 1.09 0.87 1/280 5642
.

        gateway timeout
          is expected to eq {:connection_error=>:http_error, :connection_status=>:unreachable}
      an uncategorised error is raised
        is expected to eq {:connection_error=>:unknown_error, :connection_status=>:unknown_failure}
        notifies Sentry
# [RSpecRunTime] RSpec elapsed time: 9 minutes 9.6 seconds. Current RSS: ~1305M. Threads: 4. load average: 0.99 1.09 0.87 1/280 5643
.

  #nodes
Job arguments to ExternalServiceReactiveCachingWorker must be native JSON types, but Clusters::Cluster(id: integer, user_id: integer, provider_type: integer, platform_type: integer, created_at: datetime, updated_at: datetime, enabled: boolean, name: string, environment_scope: string, cluster_type: integer, domain: string, managed: boolean, namespace_per_environment: boolean, management_project_id: integer, cleanup_status: integer, cleanup_status_reason: text, helm_major_version: integer) is a Class.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
    is expected to be nil
    with a cached status
      is expected to eq [{"metadata"=>{"name"=>"gke-cluster-applications-default-pool-49b7f225-v527"}, "status"=>{"allocatable"=>{"cpu"=>"1930m", "memory"=>"5777164Ki"}, "capacity"=>{"cpu"=>"2", "memory"=>"7657228Ki"}}}]
  cleanup_status state_machine
    #start_cleanup!
      when cleanup_status is cleanup_not_started
        behaves like cleanup_status transition
          transitions cleanup_status correctly
          schedules a Clusters::Cleanup::*Worker
      when cleanup_status is errored
        behaves like cleanup_status transition
          transitions cleanup_status correctly
          schedules a Clusters::Cleanup::*Worker
    #make_cleanup_errored!
      transitions cleanup_status from cleanup_not_started to cleanup_errored
      sets error message
      transitions cleanup_status from cleanup_removing_project_namespaces to cleanup_errored
      sets error message
      transitions cleanup_status from cleanup_removing_service_account to cleanup_errored
      sets error message
# [RSpecRunTime] RSpec elapsed time: 9 minutes 11.6 seconds. Current RSS: ~1299M. Threads: 4. load average: 0.99 1.09 0.87 1/280 5644
.

    #continue_cleanup!
      behaves like cleanup_status transition
        transitions cleanup_status correctly
        schedules a Clusters::Cleanup::*Worker
  #kube_ingress_domain
    with domain set in cluster
      is expected to eq "example.com"
    with no domain on cluster
      with domain set at instance level
        is expected to eq "global_domain.com"
  #provider
    when provider is gcp
      returns a provider
    when provider is aws
      returns a provider
    when provider is user
      is expected to be nil
  #predefined_variables
    with an instance domain
      includes KUBE_INGRESS_BASE_DOMAIN
    with a cluster domain
      includes KUBE_INGRESS_BASE_DOMAIN
    with no domain
      returns an empty array
  .managed
    cluster is not managed
      is expected not to include #<Clusters::Cluster id: 175, user_id: 380, provider_type: nil, platform_type: nil, created_at: "2024-...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>
    cluster is managed
      is expected to include #<Clusters::Cluster id: 176, user_id: 381, provider_type: nil, platform_type: nil, created_at: "2024-...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>
  #connection_error
Job arguments to ExternalServiceReactiveCachingWorker must be native JSON types, but Clusters::Cluster(id: integer, user_id: integer, provider_type: integer, platform_type: integer, created_at: datetime, updated_at: datetime, enabled: boolean, name: string, environment_scope: string, cluster_type: integer, domain: string, managed: boolean, namespace_per_environment: boolean, management_project_id: integer, cleanup_status: integer, cleanup_status_reason: text, helm_major_version: integer) is a Class.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
    is expected to be nil
    with a cached status
      is expected to eq :unknown_error
  #platform_kubernetes_active?
    without platform_kubernetes
      is expected to eq false
    with platform_kubernetes
      with active? set to true
        is expected to eq true
      with active? set to false
        is expected to eq false
  .disabled
    is expected to contain exactly #<Clusters::Cluster id: 179, user_id: 384, provider_type: nil, platform_type: nil, created_at: "2024-...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>
  #clusterable
    project type
      is expected to eq #<Project id:109 namespace65/project-109>>
    group type
      is expected to eq #<Group id:590 @group407>
    instance type
      is expected to be a kind of Clusters::Instance
    unknown type
      raises NotImplementedError
  .distinct_with_deployed_environments
    cluster has multiple successful deployment with environment
      is expected to include #<Clusters::Cluster id: 185, user_id: 392, provider_type: nil, platform_type: nil, created_at: "2024-...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>
      lists only distinct environments
# [RSpecRunTime] RSpec elapsed time: 9 minutes 28.9 seconds. Current RSS: ~1311M. Threads: 4. load average: 0.99 1.08 0.88 1/285 5759
.

    cluster has only failed deployment with environment
      is expected not to include #<Clusters::Cluster id: 200, user_id: 412, provider_type: "gcp", platform_type: "kubernetes", created...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>
# [RSpecRunTime] RSpec elapsed time: 9 minutes 32.12 seconds. Current RSS: ~1315M. Threads: 4. load average: 1.07 1.10 0.88 1/285 5798
.

    cluster does not have any deployment
      is expected not to include #<Clusters::Cluster id: 185, user_id: 392, provider_type: nil, platform_type: nil, created_at: "2024-...e, management_project_id: nil, cleanup_status: 1, cleanup_status_reason: nil, helm_major_version: 3>
  #kubernetes_namespace_for
    validates the project id
    when environment has no last_deployable
      is expected to eq "project-121-121-the-environment-name"
# [RSpecRunTime] RSpec elapsed time: 9 minutes 34.57 seconds. Current RSS: ~1297M. Threads: 4. load average: 1.07 1.10 0.88 1/285 5799
.

    when cluster is managed
      returns the cached namespace if present, ignoring CI config
      returns the default namespace when no cached namespace, ignoring CI config
# [RSpecRunTime] RSpec elapsed time: 9 minutes 37.5 seconds. Current RSS: ~1286M. Threads: 4. load average: 1.07 1.10 0.88 1/284 5800
.

    when cluster is not managed
      returns the cached namespace if present, regardless of CI config
      returns the CI YAML namespace when configured
      returns the default namespace when no namespace is configured
# [RSpecRunTime] RSpec elapsed time: 9 minutes 42.01 seconds. Current RSS: ~1277M. Threads: 4. load average: 1.06 1.09 0.89 1/282 5801
.

  #first_project
    when cluster belongs to a project
      is expected to eq #<Project id:132 namespace88/project-132>>
    when cluster does not belong to projects
      is expected to be nil

# [RSpecRunTime] Finishing example group spec/models/clusters/cluster_spec.rb. It took 1 minute 27.24 seconds. Expected to take 1 minute 18.57 seconds.
# [RSpecRunTime] Starting example group spec/services/boards/issues/move_service_spec.rb. Expected to take 1 minute 11.21 seconds.

Boards::Issues::MoveService
  #execute
    when parent is a project
      behaves like issues move service
        when moving an issue between lists
          delegates the label changes to Issues::UpdateService
          removes the label from the list it came from and adds the label of the list it goes to
          behaves like updating timestamps
            updates updated_at
# [RSpecRunTime] RSpec elapsed time: 9 minutes 47.95 seconds. Current RSS: ~1285M. Threads: 4. load average: 1.06 1.09 0.89 1/280 5802
.

        when moving to closed
          delegates the close proceedings to Issues::CloseService
          removes all list-labels from boards and close the issue
          behaves like updating timestamps
            updates updated_at
# [RSpecRunTime] RSpec elapsed time: 9 minutes 53.13 seconds. Current RSS: ~1288M. Threads: 4. load average: 1.05 1.09 0.89 2/280 5803
.

        when moving to backlog
          keeps labels and milestone
          behaves like updating timestamps
            updates updated_at
# [RSpecRunTime] RSpec elapsed time: 9 minutes 56.51 seconds. Current RSS: ~1286M. Threads: 4. load average: 1.05 1.09 0.89 1/280 5804
.

        when moving from closed
          delegates the re-open proceedings to Issues::ReopenService
          adds the label of the list it goes to and reopen the issue
          behaves like updating timestamps
            updates updated_at
# [RSpecRunTime] RSpec elapsed time: 10 minutes 2.41 seconds. Current RSS: ~1291M. Threads: 4. load average: 1.04 1.09 0.89 1/280 5805
.

        when moving to same list
          returns nil
          keeps issues labels
          keeps issues assignees
          sorts issues
          does not update updated_at
          when moving to a specific list position
            moves issue to the top of the list
            moves issue to a position in the middle of the list
            moves issue to the bottom of the list
            when given position is greater than number of issues in the list
              moves the issue to the bottom of the list
# [RSpecRunTime] RSpec elapsed time: 10 minutes 17.65 seconds. Current RSS: ~1282M. Threads: 4. load average: 1.11 1.10 0.90 1/280 5806
.

    when parent is a group
      behaves like issues move service
        when moving an issue between lists
          delegates the label changes to Issues::UpdateService
          removes the label from the list it came from and adds the label of the list it goes to
          behaves like updating timestamps
            updates updated_at
# [RSpecRunTime] RSpec elapsed time: 10 minutes 22.03 seconds. Current RSS: ~1286M. Threads: 4. load average: 1.10 1.10 0.90 1/281 5807
.

        when moving to closed
          delegates the close proceedings to Issues::CloseService
          removes all list-labels from boards and close the issue
          behaves like updating timestamps
            updates updated_at
# [RSpecRunTime] RSpec elapsed time: 10 minutes 27.22 seconds. Current RSS: ~1287M. Threads: 4. load average: 1.01 1.08 0.89 1/280 5808
.

        when moving to backlog
          keeps labels and milestone
          behaves like updating timestamps
            updates updated_at
# [RSpecRunTime] RSpec elapsed time: 10 minutes 30.6 seconds. Current RSS: ~1288M. Threads: 4. load average: 1.01 1.08 0.89 1/280 5809
.

        when moving from closed
          delegates the re-open proceedings to Issues::ReopenService
          adds the label of the list it goes to and reopen the issue
          behaves like updating timestamps
            updates updated_at
# [RSpecRunTime] RSpec elapsed time: 10 minutes 35.6 seconds. Current RSS: ~1288M. Threads: 4. load average: 1.01 1.07 0.90 1/280 5810
.

        when moving to same list
          returns nil
          keeps issues labels
          keeps issues assignees
          sorts issues
          does not update updated_at
          when moving to a specific list position
            moves issue to the top of the list
            moves issue to a position in the middle of the list
            moves issue to the bottom of the list
            when given position is greater than number of issues in the list
              moves the issue to the bottom of the list
# [RSpecRunTime] RSpec elapsed time: 10 minutes 51.32 seconds. Current RSS: ~1291M. Threads: 4. load average: 1.00 1.07 0.90 1/280 5811
.

    #execute_multiple
      returns the expected result if list of issues is empty
      moving multiple issues
        moves multiple issues from one list to another
# [RSpecRunTime] RSpec elapsed time: 10 minutes 53.48 seconds. Current RSS: ~1294M. Threads: 4. load average: 1.00 1.07 0.90 1/280 5812
.

      moving a single issue
        moves one issue
      moving issues visually after an existing issue
        moves one issue
# [RSpecRunTime] RSpec elapsed time: 10 minutes 55.8 seconds. Current RSS: ~1298M. Threads: 4. load average: 1.08 1.09 0.90 1/280 5813
.

      moving issues visually before an existing issue
        moves one issue
# [RSpecRunTime] RSpec elapsed time: 10 minutes 57.43 seconds. Current RSS: ~1305M. Threads: 4. load average: 1.08 1.09 0.90 1/280 5814
.


# [RSpecRunTime] Finishing example group spec/services/boards/issues/move_service_spec.rb. It took 1 minute 14.5 seconds. Expected to take 1 minute 11.21 seconds.
# [RSpecRunTime] Starting example group spec/services/event_create_service_spec.rb. Expected to take 53.3 seconds.

EventCreateService
  no project or group
    links the event to the personal namespace of the author
# [RSpecRunTime] RSpec elapsed time: 10 minutes 58.9 seconds. Current RSS: ~1306M. Threads: 4. load average: 1.08 1.09 0.90 2/280 5815
.

  Issues
    #open_issue
      is expected to be truthy
      creates new event
# [RSpecRunTime] RSpec elapsed time: 11 minutes 0.44 second. Current RSS: ~1303M. Threads: 4. load average: 1.08 1.08 0.91 1/280 5816
.

    #close_issue
      is expected to be truthy
      creates new event
# [RSpecRunTime] RSpec elapsed time: 11 minutes 2.14 seconds. Current RSS: ~1300M. Threads: 4. load average: 1.08 1.08 0.91 1/280 5817
.

    #reopen_issue
      is expected to be truthy
      creates new event
# [RSpecRunTime] RSpec elapsed time: 11 minutes 3.74 seconds. Current RSS: ~1296M. Threads: 4. load average: 1.08 1.08 0.91 1/280 5818
.

  Merge Requests
    #open_mr
      is expected to be truthy
      creates new event
      behaves like it records the event in the event counter
        is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 1
# [RSpecRunTime] RSpec elapsed time: 11 minutes 9.8 seconds. Current RSS: ~1319M. Threads: 4. load average: 1.07 1.08 0.91 1/286 5990
.

      behaves like Snowplow event tracking with RedisHLL context
        behaves like Snowplow event tracking
          is emitted
# [RSpecRunTime] RSpec elapsed time: 11 minutes 11.43 seconds. Current RSS: ~1319M. Threads: 4. load average: 1.07 1.08 0.91 1/286 6047
.

    #close_mr
      is expected to be truthy
      creates new event
      behaves like it records the event in the event counter
        is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 1
# [RSpecRunTime] RSpec elapsed time: 11 minutes 16.13 seconds. Current RSS: ~1312M. Threads: 4. load average: 1.06 1.08 0.91 2/286 6217
.

      behaves like Snowplow event tracking with RedisHLL context
        behaves like Snowplow event tracking
          is emitted
# [RSpecRunTime] RSpec elapsed time: 11 minutes 17.8 seconds. Current RSS: ~1312M. Threads: 4. load average: 1.06 1.08 0.91 1/286 6274
.

    #merge_mr
      is expected to be truthy
      creates new event
      behaves like it records the event in the event counter
        is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 1
# [RSpecRunTime] RSpec elapsed time: 11 minutes 22.42 seconds. Current RSS: ~1312M. Threads: 4. load average: 1.14 1.10 0.91 1/286 6445
.

      behaves like Snowplow event tracking with RedisHLL context
        behaves like Snowplow event tracking
          is emitted
# [RSpecRunTime] RSpec elapsed time: 11 minutes 24.06 seconds. Current RSS: ~1312M. Threads: 4. load average: 1.14 1.10 0.91 1/286 6503
.

    #reopen_mr
      is expected to be truthy
      creates new event
# [RSpecRunTime] RSpec elapsed time: 11 minutes 27.13 seconds. Current RSS: ~1312M. Threads: 4. load average: 1.12 1.09 0.92 1/286 6618
.

    #approve_mr
      is expected to be truthy
      creates new event
# [RSpecRunTime] RSpec elapsed time: 11 minutes 30.13 seconds. Current RSS: ~1312M. Threads: 4. load average: 1.11 1.09 0.92 1/286 6732
.

  Milestone
    #open_milestone
      is expected to be truthy
      creates new event
# [RSpecRunTime] RSpec elapsed time: 11 minutes 31.5 seconds. Current RSS: ~1309M. Threads: 4. load average: 1.11 1.09 0.92 1/286 6733
.

    #close_mr
      is expected to be truthy
      creates new event
# [RSpecRunTime] RSpec elapsed time: 11 minutes 32.92 seconds. Current RSS: ~1306M. Threads: 4. load average: 1.11 1.09 0.92 1/285 6734
.

    #destroy_mr
      is expected to be truthy
      creates new event
# [RSpecRunTime] RSpec elapsed time: 11 minutes 34.29 seconds. Current RSS: ~1302M. Threads: 4. load average: 1.11 1.09 0.92 1/285 6735
.

  #wiki_event
    action: :created
      creates the event
      is idempotent
      behaves like it records the event in the event counter
        is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 1
# [RSpecRunTime] RSpec elapsed time: 11 minutes 35.63 seconds. Current RSS: ~1300M. Threads: 4. load average: 1.11 1.09 0.92 1/285 6794
.

      behaves like it records a git write event
        is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 1
    action: :updated
      creates the event
      is idempotent
      behaves like it records the event in the event counter
        is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 1
      behaves like it records a git write event
        is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 1
    action: :destroyed
      creates the event
      is idempotent
      behaves like it records the event in the event counter
        is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 1
      behaves like it records a git write event
        is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 1
    The action is created
      raises an error
    The action is updated
      raises an error
    The action is closed
      raises an error
    The action is reopened
      raises an error
    The action is pushed
      raises an error
    The action is commented
      raises an error
    The action is merged
      raises an error
    The action is joined
      raises an error
    The action is left
      raises an error
    The action is destroyed
      raises an error
    The action is expired
      raises an error
    The action is approved
      raises an error
  #push
    behaves like service for creating a push event
      creates a new event
      creates the push event payload
      updates user last activity
      publishes an activity event
      caches the last push event for the user
      does not create any event data when an error is raised
    behaves like it records the event in the event counter
      is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 1
    behaves like it records a git write event
      is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 1
    behaves like Snowplow event tracking with RedisHLL context
      behaves like Snowplow event tracking
        is emitted
  #bulk_push
    behaves like service for creating a push event
      creates a new event
      creates the push event payload
      updates user last activity
      publishes an activity event
      caches the last push event for the user
      does not create any event data when an error is raised
    behaves like it records the event in the event counter
      is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 1
    behaves like it records a git write event
      is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 1
    behaves like Snowplow event tracking with RedisHLL context
      behaves like Snowplow event tracking
        is emitted
  #join_source
    when source is a group
      is expected to be falsey
      is expected not to change `Event.count`
    when source is a project
      is expected to be truthy
      is expected to change `Event.count` from 0 to 1
  #expired_leave_project
    is expected to be truthy
    is expected to change `Event.count` from 0 to 1
  design events
    #save_designs
      is expected to change `Event.count` by 8
      is expected not to exceed query limit 2
      creates 3 created design events
      creates 5 created design events
      behaves like it records the event in the event counter
        is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 1
# [RSpecRunTime] RSpec elapsed time: 11 minutes 44.02 seconds. Current RSS: ~1282M. Threads: 4. load average: 1.10 1.09 0.92 1/282 6811
.

      behaves like it records a git write event
        is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 1
      Snowplow tracking
        for create event
          behaves like Snowplow event tracking with RedisHLL context
            behaves like Snowplow event tracking
              is emitted
        for update event
          behaves like Snowplow event tracking with RedisHLL context
            behaves like Snowplow event tracking
              is emitted
    #destroy_designs
      is expected to change `Event.count` by 5
      is expected not to exceed query limit 2
      creates 5 destroyed design events
      behaves like it records the event in the event counter
        is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 1
# [RSpecRunTime] RSpec elapsed time: 11 minutes 46.79 seconds. Current RSS: ~1281M. Threads: 4. load average: 1.09 1.09 0.92 1/280 6812
.

      behaves like it records a git write event
        is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 1
      behaves like Snowplow event tracking with RedisHLL context
        behaves like Snowplow event tracking
          is emitted
  #leave_note
    is expected to be truthy
    creates new event
    when it is a diff note
      behaves like it records the event in the event counter
        is expected to change `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**tracking_params)` by 1
# [RSpecRunTime] RSpec elapsed time: 11 minutes 50.49 seconds. Current RSS: ~1294M. Threads: 4. load average: 1.08 1.08 0.92 1/283 6876
.

      behaves like Snowplow event tracking with RedisHLL context
        behaves like Snowplow event tracking
          is emitted
# [RSpecRunTime] RSpec elapsed time: 11 minutes 52.33 seconds. Current RSS: ~1304M. Threads: 4. load average: 1.08 1.08 0.92 1/285 6939
.

    when it is not a diff note
      does not change the unique action counter

# [RSpecRunTime] Finishing example group spec/services/event_create_service_spec.rb. It took 55.78 seconds. Expected to take 53.3 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb. Expected to take 42.3 seconds.

Gitlab::Diff::FileCollection::MergeRequestDiffBatch
  initialize
    memoizes pagination_data
# [RSpecRunTime] RSpec elapsed time: 11 minutes 54.76 seconds. Current RSS: ~1305M. Threads: 4. load average: 1.24 1.12 0.93 1/286 6996
.

  #diff_files
    returns paginated diff files
    returns a valid instance of a DiffCollection
    first page
      returns correct diff files
# [RSpecRunTime] RSpec elapsed time: 11 minutes 59.29 seconds. Current RSS: ~1315M. Threads: 4. load average: 1.38 1.15 0.94 2/286 7169
.

    another page
      returns correct diff files
# [RSpecRunTime] RSpec elapsed time: 12 minutes 0.84 second. Current RSS: ~1313M. Threads: 4. load average: 1.38 1.15 0.94 1/286 7228
.

    nil batch_page
      returns correct diff files
# [RSpecRunTime] RSpec elapsed time: 12 minutes 2.45 seconds. Current RSS: ~1316M. Threads: 4. load average: 1.38 1.15 0.94 2/286 7286
.

    nil batch_size
      returns correct diff files
# [RSpecRunTime] RSpec elapsed time: 12 minutes 4.01 seconds. Current RSS: ~1315M. Threads: 4. load average: 1.38 1.15 0.94 1/286 7344
.

    invalid page
      returns correct diff files
# [RSpecRunTime] RSpec elapsed time: 12 minutes 5.63 seconds. Current RSS: ~1316M. Threads: 4. load average: 1.43 1.16 0.95 1/286 7401
.

    last page
      returns correct diff files
# [RSpecRunTime] RSpec elapsed time: 12 minutes 7.15 seconds. Current RSS: ~1315M. Threads: 4. load average: 1.43 1.16 0.95 1/286 7459
.

  behaves like unfoldable diff
    calls Gitlab::Diff::File#unfold_diff_lines with correct position
# [RSpecRunTime] RSpec elapsed time: 12 minutes 8.77 seconds. Current RSS: ~1316M. Threads: 4. load average: 1.43 1.16 0.95 1/286 7516
.

  behaves like diff statistics
    when include_stats is true
      Repository#diff_stats is called
      Gitlab::Diff::File is initialized with diff stats
# [RSpecRunTime] RSpec elapsed time: 12 minutes 12.0 seconds. Current RSS: ~1317M. Threads: 4. load average: 1.39 1.16 0.95 1/286 7633
.

    when should not request diff stats
      Repository#diff_stats is not called
# [RSpecRunTime] RSpec elapsed time: 12 minutes 13.52 seconds. Current RSS: ~1316M. Threads: 4. load average: 1.39 1.16 0.95 1/287 7690
.

  behaves like cacheable diff collection
    #write_cache
      calls Gitlab::Diff::HighlightCache#write_if_empty
      calls Gitlab::Diff::StatsCache#write_if_empty with diff stats
# [RSpecRunTime] RSpec elapsed time: 12 minutes 16.61 seconds. Current RSS: ~1317M. Threads: 4. load average: 1.36 1.16 0.95 1/287 7806
.

    #clear_cache
      calls Gitlab::Diff::HighlightCache#clear
      calls Gitlab::Diff::StatsCache#clear
# [RSpecRunTime] RSpec elapsed time: 12 minutes 19.6 seconds. Current RSS: ~1317M. Threads: 4. load average: 1.33 1.15 0.95 1/287 7919
.

    #diff_files
      calls Gitlab::Diff::HighlightCache#decorate
      when there are stats cached
        does not make a diff stats rpc call
# [RSpecRunTime] RSpec elapsed time: 12 minutes 22.84 seconds. Current RSS: ~1316M. Threads: 4. load average: 1.33 1.15 0.95 1/287 8034
.

      when there are no stats cached
        makes a diff stats rpc call
# [RSpecRunTime] RSpec elapsed time: 12 minutes 24.37 seconds. Current RSS: ~1316M. Threads: 4. load average: 1.47 1.18 0.96 1/287 8092
.

  behaves like unsortable diff files
    #raw_diff_files
      does not call Gitlab::Diff::FileCollectionSorter even when sorted is true
# [RSpecRunTime] RSpec elapsed time: 12 minutes 27.1 seconds. Current RSS: ~1319M. Threads: 4. load average: 1.47 1.18 0.96 1/287 8151
.


# [RSpecRunTime] Finishing example group spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb. It took 33.9 seconds. Expected to take 42.3 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/pipeline/seed/build_spec.rb. Expected to take 32.05 seconds.

Gitlab::Ci::Pipeline::Seed::Build
  #attributes
    is expected to be a kind of Hash
    is expected to include :name, :project, and :ref
    with job:when
      is expected to include {:when => "on_failure"}
# [RSpecRunTime] RSpec elapsed time: 12 minutes 28.24 seconds. Current RSS: ~1317M. Threads: 4. load average: 1.47 1.18 0.96 1/287 8180
.

    with job:when:delayed
      is expected to include {:when => "delayed", :options => {:start_in => "3 hours"}}
    with job:rules:[when:]
      is matched
        is expected to include {:when => "always"}
      is not matched
        is expected to include {:when => "never"}
    with job:run attribute
      includes execution_config attribute with run steps
      when job:run attribute is not specified
        does not include execution_config attribute
    with job:rules:[when:delayed]
      is matched
        is expected to include {:when => "delayed", :options => {:start_in => "3 hours"}}
      is not matched
        is expected to include {:when => "never"}
    with job: rules but no explicit when:
      with a manual job
        with a matched rule
          is expected to include {:when => "manual"}
        is not matched
          is expected to include {:when => "never"}
      with an automatic job
        is matched
          is expected to include {:when => "on_success"}
        is not matched
          is expected to include {:when => "never"}
    with job:rules:[variables:]
      is expected to include {:yaml_variables => [{:key => "VAR1", :value => "new var 1"}, {:key => "VAR3", :value => "var 3"}, {:key => "VAR2", :value => "var 2"}]}
    with job:rules:[needs:]
      with a single rule
        when job has needs set
          when rule evaluates to true
            overrides the job needs
          when rule evaluates to false
            keeps the job needs
          with subkeys: artifacts, optional
            when rule evaluates to true
              sets the job needs as well as the job subkeys
              sets the scheduling type to dag
        with multiple rules
          when a rule evaluates to true
            overrides the job needs
          when all rules evaluates to false
            keeps the job needs
    with job:rules:[interruptible:]
      when rule evaluates to true
        overrides the job interruptible value
        when job does not have an interruptible value
          adds interruptible value to the job
        when rules:interruptible is not specified
          does not change the job interruptible value
      when rule evaluates to false
        does not change the job interruptible value
    with job:tags
      is expected to include {:tag_list => ["static-tag", "value", "$NO_VARIABLE"]}
      is expected to include {:yaml_variables => [{:key => "VARIABLE", :value => "value"}]}
    with cache:key
      is expected to include {:options => {:cache => [(a hash including {:key => "a-value"})]}}
      with cache:key:files
        includes cache options
      with cache:key:prefix
        is expected to include {:options => {:cache => [(a hash including {:key => "something-default"})]}}
      with cache:key:files and prefix
        includes cache options
    with empty cache
      is expected to include {}
    with allow_failure
      when rules does not override allow_failure
        is expected to match (a hash including {:options => {:allow_failure_criteria => {:exit_codes => [42]}}})
      when rules set allow_failure to true
        is expected to match (a hash including {:options => {:allow_failure_criteria => nil}})
      when rules set allow_failure to false
        is expected to match (a hash including {:options => {:allow_failure_criteria => nil}})
    with workflow:rules:[variables:]
      when the pipeline has variables
        when root_variables_inheritance is true
          returns calculated yaml variables
        when root_variables_inheritance is false
          returns job variables
        when root_variables_inheritance is an array
          returns calculated yaml variables
      when the pipeline has not a variable
        returns seed yaml variables
    when the job rule depends on variables
      when the rules use job variables
        recalculates the variables
      when the rules use root variables
        recalculates the variables
        when the root_variables_inheritance is false
          does not recalculate the variables
  #bridge?
    when job is a downstream bridge
      is expected to be truthy
      when trigger definition is empty
        is expected to be falsey
    when job is an upstream bridge
      is expected to be truthy
      when upstream definition is empty
        is expected to be falsey
    when job is not a bridge
      is expected to be falsey
  #to_resource
    memoizes a resource object
    can not be persisted without explicit assignment
  applying job inclusion policies
    when no branch policy is specified
      is expected to be included
    when branch policy does not match
      when using only
        is expected not to be included
      when using except
        is expected to be included
      with both only and except policies
        is expected not to be included
    when branch regexp policy does not match
      when using only
        is expected not to be included
      when using except
        is expected to be included
      with both only and except policies
        is expected not to be included
    when branch policy matches
      when using only
        is expected to be included
      when using except
        is expected not to be included
      when using both only and except policies
        is expected not to be included
    when keyword policy matches
      when using only
        is expected to be included
      when using except
        is expected not to be included
      when using both only and except policies
        is expected not to be included
    when keyword policy does not match
      when using only
        is expected not to be included
      when using except
        is expected to be included
      when using both only and except policies
        is expected not to be included
    with source-keyword policy
      matches
        keyword: "pushes", source: "push"
          using an only policy
            is expected to be included
          using an except policy
            is expected not to be included
          using both only and except policies
            is expected not to be included
        keyword: "web", source: "web"
          using an only policy
            is expected to be included
          using an except policy
            is expected not to be included
          using both only and except policies
            is expected not to be included
        keyword: "triggers", source: "trigger"
          using an only policy
            is expected to be included
          using an except policy
            is expected not to be included
          using both only and except policies
            is expected not to be included
        keyword: "schedules", source: "schedule"
          using an only policy
            is expected to be included
          using an except policy
            is expected not to be included
          using both only and except policies
            is expected not to be included
        keyword: "api", source: "api"
          using an only policy
            is expected to be included
          using an except policy
            is expected not to be included
          using both only and except policies
            is expected not to be included
        keyword: "external", source: "external"
          using an only policy
            is expected to be included
          using an except policy
            is expected not to be included
          using both only and except policies
            is expected not to be included
      non-matches
        keyword: "pushes", source: "web"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "pushes", source: "trigger"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "pushes", source: "schedule"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "pushes", source: "api"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "pushes", source: "external"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "web", source: "push"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "web", source: "trigger"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "web", source: "schedule"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "web", source: "api"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "web", source: "external"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "triggers", source: "push"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "triggers", source: "web"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "triggers", source: "schedule"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "triggers", source: "api"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "triggers", source: "external"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "schedules", source: "push"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "schedules", source: "web"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "schedules", source: "trigger"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "schedules", source: "api"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "schedules", source: "external"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "api", source: "push"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "api", source: "web"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "api", source: "trigger"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "api", source: "schedule"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "api", source: "external"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "external", source: "push"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "external", source: "web"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "external", source: "trigger"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "external", source: "schedule"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
        keyword: "external", source: "api"
          using an only policy
            is expected not to be included
          using an except policy
            is expected to be included
          using both only and except policies
            is expected not to be included
    when repository path matches
      when using only
        is expected to be included
      when using except
        is expected not to be included
      when using both only and except policies
        is expected not to be included
      when using both only and except policies
        is expected not to be included
    when repository path does not match
      when using only
        is expected not to be included
      when using except
        is expected to be included
      when using both only and except policies
        is expected not to be included
    using rules:
      with a matching if: rule
        with an explicit `when: never`
          rule_set: [{:if=>"$VARIABLE == null", :when=>"never"}]
            is expected not to be included
            still correctly populates when:
          rule_set: [{:if=>"$VARIABLE == null", :when=>"never"}, {:if=>"$VARIABLE == null", :when=>"always"}]
            is expected not to be included
            still correctly populates when:
          rule_set: [{:if=>"$VARIABLE != \"the wrong value\"", :when=>"never"}, {:if=>"$VARIABLE == null", :when=>"always"}]
            is expected not to be included
            still correctly populates when:
        with an explicit `when: always`
          rule_set: [{:if=>"$VARIABLE == null", :when=>"always"}]
            is expected to be included
            correctly populates when:
          rule_set: [{:if=>"$VARIABLE == null", :when=>"always"}, {:if=>"$VARIABLE == null", :when=>"never"}]
            is expected to be included
            correctly populates when:
          rule_set: [{:if=>"$VARIABLE != \"the wrong value\"", :when=>"always"}, {:if=>"$VARIABLE == null", :when=>"never"}]
            is expected to be included
            correctly populates when:
        with an explicit `when: on_failure`
          rule_set: [{:if=>"$CI_JOB_NAME == \"rspec\" && $VAR == null", :when=>"on_failure"}]
            is expected to be included
            correctly populates when:
          rule_set: [{:if=>"$VARIABLE != null", :when=>"delayed", :start_in=>"1 day"}, {:if=>"$CI_JOB_NAME   == \"rspec\"", :when=>"on_failure"}]
            is expected to be included
            correctly populates when:
          rule_set: [{:if=>"$VARIABLE == \"the wrong value\"", :when=>"delayed", :start_in=>"1 day"}, {:if=>"$CI_JOB_NAME == \"rspec\"", :when=>"on_failure"}]
            is expected to be included
            correctly populates when:
        with an explicit `when: delayed`
          rule_set: [{:if=>"$VARIABLE == null", :when=>"delayed", :start_in=>"1 day"}]
            is expected to be included
            correctly populates when:
          rule_set: [{:if=>"$VARIABLE == null", :when=>"delayed", :start_in=>"1 day"}, {:if=>"$VARIABLE == null", :when=>"never"}]
            is expected to be included
            correctly populates when:
          rule_set: [{:if=>"$VARIABLE != \"the wrong value\"", :when=>"delayed", :start_in=>"1 day"}, {:if=>"$VARIABLE == null", :when=>"never"}]
            is expected to be included
            correctly populates when:
        without an explicit when: value
          rule_set: [{:if=>"$VARIABLE == null"}]
            is expected to be included
            correctly populates when:
          rule_set: [{:if=>"$VARIABLE == null"}, {:if=>"$VARIABLE == null"}]
            is expected to be included
            correctly populates when:
          rule_set: [{:if=>"$VARIABLE != \"the wrong value\""}, {:if=>"$VARIABLE == null"}]
            is expected to be included
            correctly populates when:
      with a matching changes: rule
        with an explicit `when: never`
          rule_set: [{:changes=>{:paths=>["*/**/*.rb"]}, :when=>"never"}, {:changes=>{:paths=>["*/**/*.rb"]}, :when=>"always"}]
            is expected not to be included
            correctly populates when:
          rule_set: [{:changes=>{:paths=>["app/models/ci/pipeline.rb"]}, :when=>"never"}, {:changes=>{:paths=>["app/models/ci/pipeline.rb"]}, :when=>"always"}]
            is expected not to be included
            correctly populates when:
          rule_set: [{:changes=>{:paths=>["spec/**/*.rb"]}, :when=>"never"}, {:changes=>{:paths=>["spec/**/*.rb"]}, :when=>"always"}]
            is expected not to be included
            correctly populates when:
          rule_set: [{:changes=>{:paths=>["*.yml"]}, :when=>"never"}, {:changes=>{:paths=>["*.yml"]}, :when=>"always"}]
            is expected not to be included
            correctly populates when:
          rule_set: [{:changes=>{:paths=>[".*.yml"]}, :when=>"never"}, {:changes=>{:paths=>[".*.yml"]}, :when=>"always"}]
            is expected not to be included
            correctly populates when:
          rule_set: [{:changes=>{:paths=>["**/*"]}, :when=>"never"}, {:changes=>{:paths=>["**/*"]}, :when=>"always"}]
            is expected not to be included
            correctly populates when:
          rule_set: [{:changes=>{:paths=>["*/**/*.rb", "*.yml"]}, :when=>"never"}, {:changes=>{:paths=>["*/**/*.rb", "*.yml"]}, :when=>"always"}]
            is expected not to be included
            correctly populates when:
          rule_set: [{:changes=>{:paths=>[".*.yml", "**/*"]}, :when=>"never"}, {:changes=>{:paths=>[".*.yml", "**/*"]}, :when=>"always"}]
            is expected not to be included
            correctly populates when:
        with an explicit `when: always`
          rule_set: [{:changes=>{:paths=>["*/**/*.rb"]}, :when=>"always"}, {:changes=>{:paths=>["*/**/*.rb"]}, :when=>"never"}]
            is expected to be included
            correctly populates when:
          rule_set: [{:changes=>{:paths=>["app/models/ci/pipeline.rb"]}, :when=>"always"}, {:changes=>{:paths=>["app/models/ci/pipeline.rb"]}, :when=>"never"}]
            is expected to be included
            correctly populates when:
          rule_set: [{:changes=>{:paths=>["spec/**/*.rb"]}, :when=>"always"}, {:changes=>{:paths=>["spec/**/*.rb"]}, :when=>"never"}]
            is expected to be included
            correctly populates when:
          rule_set: [{:changes=>{:paths=>["*.yml"]}, :when=>"always"}, {:changes=>{:paths=>["*.yml"]}, :when=>"never"}]
            is expected to be included
            correctly populates when:
          rule_set: [{:changes=>{:paths=>[".*.yml"]}, :when=>"always"}, {:changes=>{:paths=>[".*.yml"]}, :when=>"never"}]
            is expected to be included
            correctly populates when:
          rule_set: [{:changes=>{:paths=>["**/*"]}, :when=>"always"}, {:changes=>{:paths=>["**/*"]}, :when=>"never"}]
            is expected to be included
            correctly populates when:
          rule_set: [{:changes=>{:paths=>["*/**/*.rb", "*.yml"]}, :when=>"always"}, {:changes=>{:paths=>["*/**/*.rb", "*.yml"]}, :when=>"never"}]
            is expected to be included
            correctly populates when:
          rule_set: [{:changes=>{:paths=>[".*.yml", "**/*"]}, :when=>"always"}, {:changes=>{:paths=>[".*.yml", "**/*"]}, :when=>"never"}]
            is expected to be included
            correctly populates when:
        without an explicit when: value
          rule_set: [{:changes=>{:paths=>["*/**/*.rb"]}}]
            is expected to be included
            correctly populates when:
          rule_set: [{:changes=>{:paths=>["app/models/ci/pipeline.rb"]}}]
            is expected to be included
            correctly populates when:
          rule_set: [{:changes=>{:paths=>["spec/**/*.rb"]}}]
            is expected to be included
            correctly populates when:
          rule_set: [{:changes=>{:paths=>["*.yml"]}}]
            is expected to be included
            correctly populates when:
          rule_set: [{:changes=>{:paths=>[".*.yml"]}}]
            is expected to be included
            correctly populates when:
          rule_set: [{:changes=>{:paths=>["**/*"]}}]
            is expected to be included
            correctly populates when:
          rule_set: [{:changes=>{:paths=>["*/**/*.rb", "*.yml"]}}]
            is expected to be included
            correctly populates when:
          rule_set: [{:changes=>{:paths=>[".*.yml", "**/*"]}}]
            is expected to be included
            correctly populates when:
      with no matching rule
        rule_set: [{:if=>"$VARIABLE != null", :when=>"never"}]
          is expected not to be included
          correctly populates when:
        rule_set: [{:if=>"$VARIABLE != null", :when=>"never"}, {:if=>"$VARIABLE != null", :when=>"always"}]
          is expected not to be included
          correctly populates when:
        rule_set: [{:if=>"$VARIABLE == \"the wrong value\"", :when=>"never"}, {:if=>"$VARIABLE != null", :when=>"always"}]
          is expected not to be included
          correctly populates when:
        rule_set: [{:if=>"$VARIABLE != null", :when=>"always"}]
          is expected not to be included
          correctly populates when:
        rule_set: [{:if=>"$VARIABLE != null", :when=>"always"}, {:if=>"$VARIABLE != null", :when=>"never"}]
          is expected not to be included
          correctly populates when:
        rule_set: [{:if=>"$VARIABLE == \"the wrong value\"", :when=>"always"}, {:if=>"$VARIABLE != null", :when=>"never"}]
          is expected not to be included
          correctly populates when:
        rule_set: [{:if=>"$VARIABLE != null"}]
          is expected not to be included
          correctly populates when:
        rule_set: [{:if=>"$VARIABLE != null"}, {:if=>"$VARIABLE != null"}]
          is expected not to be included
          correctly populates when:
        rule_set: [{:if=>"$VARIABLE == \"the wrong value\""}, {:if=>"$VARIABLE != null"}]
          is expected not to be included
          correctly populates when:
      with a rule using CI_ENVIRONMENT_NAME variable
        when environment:name satisfies the rule
          is expected to be included
          correctly populates when:
        when environment:name does not satisfy rule
          is expected not to be included
          correctly populates when:
        when environment:name is not set
          is expected not to be included
          correctly populates when:
      with a rule using CI_ENVIRONMENT_ACTION variable
        when environment:action satisfies the rule
          is expected to be included
          correctly populates when:
        when environment:action does not satisfy rule
          is expected not to be included
          correctly populates when:
        when environment:action is not set
          is expected not to be included
          correctly populates when:
      with a rule using CI_ENVIRONMENT_TIER variable
        when environment:deployment_tier satisfies the rule
          is expected to be included
          correctly populates when:
        when environment:deployment_tier does not satisfy rule
          is expected not to be included
          correctly populates when:
        when environment:action is not set
          is expected not to be included
          correctly populates when:
      with a rule using CI_ENVIRONMENT_URL variable
        when environment:url satisfies the rule
          is expected to be included
          correctly populates when:
        when environment:url does not satisfy rule
          is expected not to be included
          correctly populates when:
        when environment:action is not set
          is expected not to be included
          correctly populates when:
      with no rules
        is expected not to be included
        correctly populates when:
      with invalid rules raising error
        is expected not to be included
        correctly populates when:
        returns an error
  applying needs: dependency
    when build job is not present in prior stages
      is included
      returns an error
      when the needed job is optional
        does not return an error
    when build job is part of prior stages
      is included
      does not have errors
    when build job is part of the same stage
      is included
      does not have errors
    when using 101 needs
      returns an error
      when ci_needs_size_limit is set to 100
        returns an error
      when ci_needs_size_limit is set to 0
        returns an error
  applying pipeline variables
    containing variable references
      does not have errors
    containing cyclic reference
      returns an error
      with job:rules:[if:]
        included? does not raise
        included? returns true
# [RSpecRunTime] RSpec elapsed time: 13 minutes 1.62 seconds. Current RSS: ~1291M. Threads: 4. load average: 1.26 1.16 0.96 1/282 8182
.


# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/pipeline/seed/build_spec.rb. It took 34.52 seconds. Expected to take 32.05 seconds.
# [RSpecRunTime] Starting example group spec/models/resource_state_event_spec.rb. Expected to take 26.78 seconds.

ResourceStateEvent
  does not allow STI
  behaves like a resource event
    importable
      is expected to respond to #importing?
# [RSpecRunTime] RSpec elapsed time: 13 minutes 4.04 seconds. Current RSS: ~1285M. Threads: 4. load average: 1.26 1.16 0.96 1/282 8183
.

    validations
      is expected not to allow :user to be ‹nil›
      when importing
        is expected to allow :user to be ‹nil›
# [RSpecRunTime] RSpec elapsed time: 13 minutes 5.61 seconds. Current RSS: ~1285M. Threads: 4. load average: 1.24 1.16 0.96 1/282 8184
.

    associations
      is expected to belong to user required: false
    .created_after
      returns the expected events
      returns no events if time is after last record time
    #synthetic_note_class
      must implement #synthetic_note_class method
  behaves like a resource event that responds to imported
    import source
      is expected to respond to #imported?
      is expected to respond to #imported_from
# [RSpecRunTime] RSpec elapsed time: 13 minutes 8.31 seconds. Current RSS: ~1286M. Threads: 4. load average: 1.24 1.16 0.96 1/282 8185
.

  behaves like a resource event for issues
    associations
      is expected to belong to issue required: false
# [RSpecRunTime] RSpec elapsed time: 13 minutes 10.73 seconds. Current RSS: ~1283M. Threads: 4. load average: 1.38 1.19 0.97 1/282 8186
.

    .by_issue
      returns the expected records for an issue with events
      returns the expected records for an issue with no events
    .by_issue_ids
      returns the expected events
    .by_created_at_earlier_or_equal_to
      returns the expected events
      returns the expected events
    #issuable
      returns the expected issuable
  behaves like a resource event for merge requests
    associations
      is expected to belong to merge_request required: false
# [RSpecRunTime] RSpec elapsed time: 13 minutes 15.65 seconds. Current RSS: ~1318M. Threads: 4. load average: 1.51 1.22 0.99 1/287 8358
.

    .by_merge_request
      returns the expected records for an issue with events
      returns the expected records for an issue with no events
    #issuable
      returns the expected issuable
    on callbacks
      does not trigger note created subscription
  behaves like a note for work item resource event
    builds synthetic note with correct synthetic_note_class
    on callbacks
      triggers note created subscription
  validations
    Issuable validation
      is valid if an issue is set
      is valid if a merge request is set
      is invalid if both issue and merge request are set
      is invalid if there is no issuable set
# [RSpecRunTime] RSpec elapsed time: 13 minutes 19.7 seconds. Current RSS: ~1307M. Threads: 4. load average: 1.47 1.22 0.99 1/286 8359
.

  callbacks
    #issue_usage_metrics
      does not track merge requests
      when an issue is closed
        tracks closed issues
        behaves like internal event tracking
          logs to Snowplow, Redis, and product analytics tooling
# [RSpecRunTime] RSpec elapsed time: 13 minutes 23.08 seconds. Current RSS: ~1299M. Threads: 4. load average: 1.47 1.22 0.99 1/287 8417
.

      when an issue is reopened
        tracks reopened issues
        behaves like internal event tracking
          logs to Snowplow, Redis, and product analytics tooling
# [RSpecRunTime] RSpec elapsed time: 13 minutes 25.09 seconds. Current RSS: ~1294M. Threads: 4. load average: 1.43 1.21 0.99 1/283 8418
.

  .merged_with_no_event_source
    returns expected events
# [RSpecRunTime] RSpec elapsed time: 13 minutes 26.8 seconds. Current RSS: ~1299M. Threads: 4. load average: 1.43 1.21 0.99 1/286 8476
.


# [RSpecRunTime] Finishing example group spec/models/resource_state_event_spec.rb. It took 25.17 seconds. Expected to take 26.78 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/tables_truncate_spec.rb. Expected to take 23.11 seconds.

Gitlab::Database::TablesTruncate
  when truncating gitlab_ci tables on the main database
    behaves like truncating legacy tables on a database
      when the truncated tables are not locked for writes
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
        raises an error that the tables are not locked for writes
# [RSpecRunTime] RSpec elapsed time: 13 minutes 28.41 seconds. Current RSS: ~1299M. Threads: 4. load average: 1.43 1.21 0.99 1/286 8477
.

      when the truncated tables are locked for writes
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
        truncates the legacy tables
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
        does not affect the other tables
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
        logs the sql statements to the logger
        when running in dry_run mode
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
          does not truncate the legacy tables if running in dry run mode
# [RSpecRunTime] RSpec elapsed time: 13 minutes 33.38 seconds. Current RSS: ~1287M. Threads: 4. load average: 1.39 1.21 0.99 1/283 8478
.

        when passing until_table parameter
          with a table that exists
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
            only truncates until the table specified
          with a table that does not exist
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
            raises an error if the specified table does not exist
        when one of the attached partitions happened to be locked for writes
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
          truncates the locked partition successfully (PENDING: No reason given)
        with geo configured
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
          does not truncate gitlab_geo tables (PENDING: No reason given)
  when truncating gitlab_main tables on the ci database
    behaves like truncating legacy tables on a database
      when the truncated tables are not locked for writes
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
        raises an error that the tables are not locked for writes
      when the truncated tables are locked for writes
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
        truncates the legacy tables
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
        does not affect the other tables
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
        logs the sql statements to the logger
        when running in dry_run mode
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
          does not truncate the legacy tables if running in dry run mode
# [RSpecRunTime] RSpec elapsed time: 13 minutes 41.56 seconds. Current RSS: ~1272M. Threads: 4. load average: 1.33 1.20 0.99 1/281 8479
.

        when passing until_table parameter
          with a table that exists
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
            only truncates until the table specified
# [RSpecRunTime] RSpec elapsed time: 13 minutes 43.61 seconds. Current RSS: ~1272M. Threads: 4. load average: 1.33 1.20 0.99 1/281 8480
.

          with a table that does not exist
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
            raises an error if the specified table does not exist
        when one of the attached partitions happened to be locked for writes
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
          truncates the locked partition successfully
        with geo configured
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
          does not truncate gitlab_geo tables (PENDING: No reason given)
  when running in a single database mode
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
    raises an error when truncating the main database that it is a single database setup (PENDING: Skipping because some of the extra databases [:ci] are setup)
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
    raises an error when truncating the ci database that it is a single database setup (PENDING: Skipping because some of the extra databases [:ci] are setup)
# [RSpecRunTime] RSpec elapsed time: 13 minutes 47.67 seconds. Current RSS: ~1273M. Threads: 4. load average: 1.31 1.20 0.99 1/281 8481
.

  #needs_truncation?
    when running in a single database mode
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
      example at ./spec/lib/gitlab/database/tables_truncate_spec.rb:361 (PENDING: Skipping because some of the extra databases [:ci] are setup)
    when running in a multiple database mode
      with main data in ci database
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
        is expected to eq true
      with no main data in ci datatabase
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
        is expected to eq false
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
        supresses some QueryAnalyzers
# [RSpecRunTime] RSpec elapsed time: 13 minutes 51.84 seconds. Current RSS: ~1272M. Threads: 4. load average: 1.28 1.20 0.99 1/281 8482
.

  when running with multiple shared databases
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
    raises an error when truncating the main database that it is a single database setup (PENDING: Skipping because database ci exists)
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

_test_gitlab_hook_logs has composite primary key. Composite primary key is ignored.
WARNING: Active Record does not support composite primary key.

gitlab_partitions_dynamic._test_gitlab_hook_logs_202201 has composite primary key. Composite primary key is ignored.
    raises an error when truncating the ci database that it is a single database setup (PENDING: Skipping because database ci exists)
# [RSpecRunTime] RSpec elapsed time: 13 minutes 53.46 seconds. Current RSS: ~1271M. Threads: 4. load average: 1.28 1.20 0.99 1/281 8483
.


# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/tables_truncate_spec.rb. It took 26.66 seconds. Expected to take 23.11 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/pipeline/seed/stage_spec.rb. Expected to take 19.58 seconds.

Gitlab::Ci::Pipeline::Seed::Stage
  #size
    returns a number of jobs in the stage
# [RSpecRunTime] RSpec elapsed time: 13 minutes 54.67 seconds. Current RSS: ~1284M. Threads: 4. load average: 1.26 1.19 0.99 1/281 8502
.

  #attributes
    returns hash attributes of a stage
# [RSpecRunTime] RSpec elapsed time: 13 minutes 55.81 seconds. Current RSS: ~1296M. Threads: 4. load average: 1.26 1.19 0.99 1/281 8521
.

  #included?
    when it contains builds seeds
      is expected to be included
# [RSpecRunTime] RSpec elapsed time: 13 minutes 57.05 seconds. Current RSS: ~1307M. Threads: 4. load average: 1.26 1.19 0.99 1/281 8540
.

    when it does not contain build seeds
      is expected not to be included
# [RSpecRunTime] RSpec elapsed time: 13 minutes 58.16 seconds. Current RSS: ~1308M. Threads: 4. load average: 1.26 1.19 0.99 1/281 8559
.

  #seeds
    returns build seeds
    returns build seeds including valid attributes
    filters seeds using only/except policies
    when a legacy trigger exists
      returns build seeds including legacy trigger
# [RSpecRunTime] RSpec elapsed time: 14 minutes 3.09 seconds. Current RSS: ~1317M. Threads: 4. load average: 1.24 1.19 0.99 1/281 8650
.

    when a ref is protected
      returns protected builds
# [RSpecRunTime] RSpec elapsed time: 14 minutes 4.28 seconds. Current RSS: ~1317M. Threads: 4. load average: 1.22 1.18 0.99 1/281 8669
.

    when a ref is not protected
      returns unprotected builds
# [RSpecRunTime] RSpec elapsed time: 14 minutes 5.44 seconds. Current RSS: ~1318M. Threads: 4. load average: 1.22 1.18 0.99 1/281 8688
.

  #seeds_names
    returns all job names
    returns a set
# [RSpecRunTime] RSpec elapsed time: 14 minutes 7.76 seconds. Current RSS: ~1318M. Threads: 4. load average: 1.22 1.18 0.99 1/281 8725
.

  #seeds_errors
    returns all errors from seeds
# [RSpecRunTime] RSpec elapsed time: 14 minutes 9.16 seconds. Current RSS: ~1319M. Threads: 4. load average: 1.20 1.18 0.99 1/280 8754
.

  #to_resource
    builds a valid stage object with all builds
    can not be persisted without explicit pipeline assignment
# [RSpecRunTime] RSpec elapsed time: 14 minutes 11.63 seconds. Current RSS: ~1318M. Threads: 4. load average: 1.20 1.18 0.99 1/280 8803
.


# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/pipeline/seed/stage_spec.rb. It took 18.17 seconds. Expected to take 19.58 seconds.
# [RSpecRunTime] Starting example group spec/services/deployments/update_environment_service_spec.rb. Expected to take 18.35 seconds.

Deployments::UpdateEnvironmentService
  #execute
    invalidates the environment etag cache
    creates ref
    updates merge request metrics
    returns the deployment
    returns the deployment when could not save the environment
    returns the deployment when environment is stopped
    when deployable is bridge job
      creates ref
# [RSpecRunTime] RSpec elapsed time: 14 minutes 15.05 seconds. Current RSS: ~1312M. Threads: 4. load average: 1.18 1.18 0.99 1/284 8911
.

    when start action is defined
      and environment is stopped
        makes environment available
    when external URL is specified and the tier is unset
      when external URL is valid
        succeeds to update the tier automatically
      when external URL is invalid
        fails to update the tier due to validation error
        tracks an exception
    when variables are used
      does not create a new environment
      updates external url
# [RSpecRunTime] RSpec elapsed time: 14 minutes 17.75 seconds. Current RSS: ~1304M. Threads: 4. load average: 1.18 1.18 0.99 1/284 9016
.

    when auto_stop_in are used
      renews auto stop at
      when value is a variable
        renews auto stop at with expanded variable value
    when deployment tier is specified
      when tier has already been set
        overwrites the guessed tier by the specified deployment tier
      when tier has not been set
        sets the specified deployment tier
        when deployment was created by an external CD system
          guesses the deployment tier
    when deployment tier is not specified
      guesses the deployment tier
    when cluster agent is specified
      when the agent does not exist
        does not assign a cluster agent
      when the agent exists
        and the user no longer exists
          does not assign a cluster agent
        and the user is not authorized
          does not assign a cluster agent
        and the user is authorized
          assigns the cluster agent to the environment
          when the agent path contains variables
            expands variables and assigns the cluster agent to the environment
# [RSpecRunTime] RSpec elapsed time: 14 minutes 22.77 seconds. Current RSS: ~1283M. Threads: 4. load average: 1.17 1.17 0.99 1/285 9207
.

  #expanded_environment_url
    when yaml environment uses $CI_COMMIT_REF_NAME
      is expected to eq "http://review/master"
    when yaml environment uses $CI_ENVIRONMENT_SLUG
      is expected to eq "http://review/prod-slug"
    when yaml environment uses yaml_variables containing symbol keys
      is expected to eq "http://review/host"
    when job variables are generated during runtime
      expands the environment URL from the dynamic variable
# [RSpecRunTime] RSpec elapsed time: 14 minutes 25.66 seconds. Current RSS: ~1278M. Threads: 4. load average: 1.16 1.17 0.99 1/285 9209
.

    when environment url uses a nested variable
      is expected to eq "http://appname-master.example.com"
    when yaml environment does not have url
      returns the external_url from persisted environment
  merge request metrics
    while updating the 'first_deployed_to_production_at' time
      for merge requests merged before the current deploy
        sets the time if the deploy's environment is 'production'
        does not raise errors if the merge request does not have a metrics record
        when job deploys to staging
          doesn't set the time if the deploy's environment is not 'production'
# [RSpecRunTime] RSpec elapsed time: 14 minutes 28.43 seconds. Current RSS: ~1276M. Threads: 4. load average: 1.16 1.17 0.99 1/286 9357
.

      for merge requests merged before the previous deploy
        if the 'first_deployed_to_production_at' time is already set
          does not overwrite the older 'first_deployed_to_production_at' time
        if the 'first_deployed_to_production_at' time is not already set
          does not overwrite the older 'first_deployed_to_production_at' time

# [RSpecRunTime] Finishing example group spec/services/deployments/update_environment_service_spec.rb. It took 18.5 seconds. Expected to take 18.35 seconds.
# [RSpecRunTime] Starting example group spec/helpers/issues_helper_spec.rb. Expected to take 16.81 seconds.

IssuesHelper
  #award_user_list
    returns a comma-separated list of the first X users
    displays the current user's name as 'You'
    truncates lists
    displays the current user in front of other users
  #award_state_class
    returns disabled string for unauthenticated user
    returns disabled for a user that does not have access to the awardable
    returns selected class for author
    is blank for a user that has access to the awardable
# [RSpecRunTime] RSpec elapsed time: 14 minutes 32.2 seconds. Current RSS: ~1276M. Threads: 4. load average: 1.22 1.19 1.00 1/286 9479
.

  awards_sort
    sorts a hash so thumbsup and thumbsdown are always on top
  #link_to_discussions_to_resolve
    passing only a merge request
      links just the merge request
      contains the reference to the merge request
# [RSpecRunTime] RSpec elapsed time: 14 minutes 37.36 seconds. Current RSS: ~1324M. Threads: 4. load average: 1.21 1.18 1.00 1/285 9594
.

    when passing a discussion
      links to the merge request with first note if a single discussion was passed
      contains both the reference to the merge request and a mention of the discussion
# [RSpecRunTime] RSpec elapsed time: 14 minutes 40.61 seconds. Current RSS: ~1357M. Threads: 4. load average: 1.19 1.18 1.00 1/285 9718
.

  #show_new_issue_link?
    is false when no project there is no project
    is true when there is a project and no logged in user
    is true when the current user does not have access to the project
  #show_moved_service_desk_issue_warning?
    is true when moved issue project has service desk disabled
    is false when moved issue project has service desk enabled
# [RSpecRunTime] RSpec elapsed time: 14 minutes 45.6 seconds. Current RSS: ~1363M. Threads: 4. load average: 1.17 1.18 1.00 1/284 9719
.

  #issue_header_actions_data
    returns expected result
  #project_issues_list_data
    when user is signed in
      behaves like issues list data
        returns expected result
    when user is anonymous
      behaves like issues list data
        returns expected result
    when restricted visibility levels is nil
      behaves like issues list data
        returns expected result
  #group_issues_list_data
    returns expected result
  #dashboard_issues_list_data
    returns expected result
  #issues_form_data
    returns expected result
  #issue_repositioning_disabled?
    for project
      is expected to eq false
      when block_issue_repositioning feature flag is enabled
        is expected to eq true
    for group
      is expected to eq false
      when block_issue_repositioning feature flag is enabled
        is expected to eq true
  #issue_hidden?
    when issue is hidden
Job arguments to ElasticAssociationIndexerWorker must be native JSON types, but :issues is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
      returns `true`
    when issue is not hidden
      returns `false`
  #has_issue_date_filter_feature?
    when namespace is a group project
      is expected to be truthy
      when feature flag is disabled
        is expected to be falsey
      when feature flag enabled for group
        is expected to be truthy
      when feature flag enabled for user
        is expected to be truthy
    when namespace is a group
      is expected to be truthy
      when feature flag is disabled
        is expected to be falsey
      when feature flag enabled for group
        is expected to be truthy
      when feature flag enabled for user
        is expected to be truthy
    when namespace is a user project
      is expected to be truthy
      when feature flag is disabled
        is expected to be falsey
      when feature flag enabled for user
        is expected to be truthy

# [RSpecRunTime] Finishing example group spec/helpers/issues_helper_spec.rb. It took 18.34 seconds. Expected to take 16.81 seconds.
# [RSpecRunTime] Starting example group spec/models/concerns/project_api_compatibility_spec.rb. Expected to take 16.03 seconds.

ProjectAPICompatibility
  does not allow STI
  converts build_git_strategy=fetch to build_allow_git_fetch=true
  converts build_git_strategy=clone to build_allow_git_fetch=false
  #auto_devops_enabled
    initial: :missing, final: nil
      sets the correct value
# [RSpecRunTime] RSpec elapsed time: 14 minutes 50.57 seconds. Current RSS: ~1336M. Threads: 4. load average: 1.16 1.17 1.00 1/281 9720
.

    initial: :missing, final: false
      sets the correct value
    initial: :missing, final: true
      sets the correct value
    initial: nil, final: nil
      sets the correct value
    initial: nil, final: false
      sets the correct value
    initial: nil, final: true
      sets the correct value
    initial: false, final: nil
      sets the correct value
    initial: false, final: false
      sets the correct value
    initial: false, final: true
      sets the correct value
    initial: true, final: nil
      sets the correct value
    initial: true, final: false
      sets the correct value
    initial: true, final: true
      sets the correct value
  #auto_devops_deploy_strategy
    initial: :missing, final: "continuous"
      sets the correct value
    initial: :missing, final: "manual"
      sets the correct value
    initial: :missing, final: "timed_incremental"
      sets the correct value
    initial: "continuous", final: "continuous"
      sets the correct value
    initial: "continuous", final: "manual"
      sets the correct value
    initial: "continuous", final: "timed_incremental"
      sets the correct value
    initial: "manual", final: "continuous"
      sets the correct value
    initial: "manual", final: "manual"
      sets the correct value
    initial: "manual", final: "timed_incremental"
      sets the correct value
    initial: "timed_incremental", final: "continuous"
      sets the correct value
    initial: "timed_incremental", final: "manual"
      sets the correct value
    initial: "timed_incremental", final: "timed_incremental"
      sets the correct value

# [RSpecRunTime] Finishing example group spec/models/concerns/project_api_compatibility_spec.rb. It took 17.58 seconds. Expected to take 16.03 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/import_export/attributes_permitter_spec.rb. Expected to take 14.89 seconds.

Gitlab::ImportExport::AttributesPermitter
  #permitted_attributes
    builds permitted attributes hash
  #permit
    only allows permitted attributes
  #permitted_attributes_for
    returns an array of permitted attributes for a relation
  #permitted_attributes_defined?
    relation_name: :user, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :author, permitted_attributes_defined: false
      is expected to eq false
    relation_name: :ci_cd_settings, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :project_badges, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :pipeline_schedules, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :error_tracking_setting, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :auto_devops, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :boards, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :custom_attributes, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :label, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :labels, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :protected_branches, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :protected_tags, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :create_access_levels, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :merge_access_levels, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :push_access_levels, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :releases, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :links, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :priorities, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :milestone, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :milestones, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :snippets, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :project_members, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :merge_request, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :merge_requests, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :award_emoji, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :commit_author, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :committer, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :events, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :label_links, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :merge_request_diff, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :merge_request_diff_commits, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :merge_request_diff_files, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :metrics, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :notes, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :push_event_payload, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :resource_label_events, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :suggestions, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :system_note_metadata, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :timelogs, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :container_expiration_policy, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :project_feature, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :service_desk_setting, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :external_pull_request, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :external_pull_requests, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :statuses, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :builds, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :generic_commit_statuses, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :bridges, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :ci_pipelines, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :stages, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :actions, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :design, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :designs, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :design_versions, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :issue_assignees, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :sentry_issue, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :zoom_meetings, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :issues, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :group_members, permitted_attributes_defined: true
      is expected to eq true
    relation_name: :project, permitted_attributes_defined: true
      is expected to eq true
  included_attributes for Project
    for user
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for user_contributions
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for author
      behaves like a permitted attribute
        is disabled
    for approvals
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for ci_cd_settings
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for project_badges
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for pipeline_schedules
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for error_tracking_setting
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for auto_devops
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for boards
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for lists
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for custom_attributes
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for label
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for labels
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for priorities
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for milestone
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for milestones
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for protected_branches
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for protected_tags
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for create_access_levels
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for merge_access_levels
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for push_access_levels
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for releases
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for links
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for container_expiration_policy
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for project_feature
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for service_desk_setting
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for snippets
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for project_members
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for merge_request
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for merge_requests
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for award_emoji
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for commit_author
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for committer
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for events
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for label_links
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for merge_request_diff
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for merge_request_diff_commits
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for merge_request_diff_files
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for metrics
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for notes
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for push_event_payload
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for resource_label_events
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for suggestions
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for system_note_metadata
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for timelogs
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for external_pull_request
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for external_pull_requests
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for statuses
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for builds
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for generic_commit_statuses
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for bridges
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for ci_pipelines
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for pipeline_metadata
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for stages
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for actions
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for design
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for designs
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for design_versions
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for issue_assignees
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for merge_request_assignees
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for merge_request_reviewers
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for sentry_issue
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for zoom_meetings
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for issues
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for group_members
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for project
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for resource_milestone_events
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for resource_state_events
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for work_item_type
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for note_diff_file
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for issuable_sla
      behaves like a permitted attribute
        is disabled
    for push_rule
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for unprotect_access_levels
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for deploy_access_levels
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for protected_environments
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for security_setting
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for resource_iteration_events
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for iteration
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for iterations_cadence
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for approval_rules
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for approval_project_rules_protected_branches
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation
    for approval_project_rules_users
      behaves like a permitted attribute
        contains only attributes that are defined as permitted in the import/export config
        does not contain attributes that would be cleaned with AttributeCleaner
        does not contain prohibited attributes that are not related to given relation

# [RSpecRunTime] Finishing example group spec/lib/gitlab/import_export/attributes_permitter_spec.rb. It took 15.01 seconds. Expected to take 14.89 seconds.
# [RSpecRunTime] Starting example group spec/policies/ci/runner_manager_policy_spec.rb. Expected to take 14.21 seconds.

Ci::RunnerManagerPolicy
  ability :read_runner_manager
    behaves like runner read policy
      without access
        behaves like does not allow reading runners/runner managers on any scope
          with instance runner
            is expected not to be allowed :read_runner_manager
            with shared runners disabled for groups and projects
              is expected not to be allowed :read_runner_manager
# [RSpecRunTime] RSpec elapsed time: 15 minutes 23.61 seconds. Current RSS: ~1348M. Threads: 4. load average: 1.16 1.17 1.00 1/279 9721
.

          with group runner
            is expected not to be allowed :read_runner_manager
            with group invited as maintainer to group containing runner
              is expected not to be allowed :read_runner_manager
            with sharing of group runners disabled
              is expected not to be allowed :read_runner_manager
          with project runner
            is expected not to be allowed :read_runner_manager
      with guest access
        behaves like does not allow reading runners/runner managers on any scope
          with instance runner
            is expected not to be allowed :read_runner_manager
            with shared runners disabled for groups and projects
              is expected not to be allowed :read_runner_manager
          with group runner
            is expected not to be allowed :read_runner_manager
            with group invited as maintainer to group containing runner
              is expected not to be allowed :read_runner_manager
            with sharing of group runners disabled
              is expected not to be allowed :read_runner_manager
          with project runner
            is expected not to be allowed :read_runner_manager
      with reporter access
        behaves like does not allow reading runners/runner managers on any scope
          with instance runner
            is expected not to be allowed :read_runner_manager
            with shared runners disabled for groups and projects
              is expected not to be allowed :read_runner_manager
          with group runner
            is expected not to be allowed :read_runner_manager
            with group invited as maintainer to group containing runner
              is expected not to be allowed :read_runner_manager
            with sharing of group runners disabled
              is expected not to be allowed :read_runner_manager
          with project runner
            is expected not to be allowed :read_runner_manager
      with developer access
        behaves like does not allow reading runners/runner managers on any scope
          with instance runner
            is expected not to be allowed :read_runner_manager
            with shared runners disabled for groups and projects
              is expected not to be allowed :read_runner_manager
          with group runner
            is expected not to be allowed :read_runner_manager
            with group invited as maintainer to group containing runner
              is expected not to be allowed :read_runner_manager
            with sharing of group runners disabled
              is expected not to be allowed :read_runner_manager
          with project runner
            is expected not to be allowed :read_runner_manager
      with maintainer access
        behaves like a policy allowing reading instance runner/runner manager depending on runner sharing
          with instance runner
            shared_runners_enabled_on_group: false, shared_runners_enabled_on_project: false, expect_can_read: false
              is expected not to be allowed :read_runner_manager
            shared_runners_enabled_on_group: false, shared_runners_enabled_on_project: true, expect_can_read: true
              is expected to be allowed :read_runner_manager
            shared_runners_enabled_on_group: true, shared_runners_enabled_on_project: false, expect_can_read: true
              is expected to be allowed :read_runner_manager
            shared_runners_enabled_on_group: true, shared_runners_enabled_on_project: true, expect_can_read: true
              is expected to be allowed :read_runner_manager
        behaves like a policy allowing reading group runner/runner manager depending on runner sharing
          with group runner
            is expected to be allowed :read_runner_manager
            with sharing of group runners disabled
              is expected to be allowed :read_runner_manager
            when user belongs to subgroup only
              with runner visible to group project
                is expected to be allowed :read_runner_manager
                with sharing of group runners disabled
                  is expected not to be allowed :read_runner_manager
              without projects in group
                is expected not to be allowed :read_runner_manager
            when user is not maintainer in associated group
              is expected not to be allowed :read_runner_manager
              when user is maintainer in a group invited to group as maintainer
                is expected to be allowed :read_runner_manager
              when user is a reporter in a group invited to group as maintainer
                is expected not to be allowed :read_runner_manager
          when runner is in subgroup
            is expected to be allowed :read_runner_manager
            with sharing of group runners disabled
              is expected not to be allowed :read_runner_manager
        with project runner
          is expected to be allowed :read_runner_manager
          when user is not maintainer in parent group
            is expected not to be allowed :read_runner_manager
            when user is maintainer in a group invited to project as maintainer
              is expected to be allowed :read_runner_manager
      with owner access
        behaves like a policy allowing reading instance runner/runner manager depending on runner sharing
          with instance runner
            shared_runners_enabled_on_group: false, shared_runners_enabled_on_project: false, expect_can_read: false
              is expected not to be allowed :read_runner_manager
            shared_runners_enabled_on_group: false, shared_runners_enabled_on_project: true, expect_can_read: true
              is expected to be allowed :read_runner_manager
            shared_runners_enabled_on_group: true, shared_runners_enabled_on_project: false, expect_can_read: true
              is expected to be allowed :read_runner_manager
            shared_runners_enabled_on_group: true, shared_runners_enabled_on_project: true, expect_can_read: true
              is expected to be allowed :read_runner_manager
        with group runner
          is expected to be allowed :read_runner_manager
          with sharing of group runners disabled
            is expected to be allowed :read_runner_manager
        with project runner
          is expected to be allowed :read_runner_manager

# [RSpecRunTime] Finishing example group spec/policies/ci/runner_manager_policy_spec.rb. It took 12.34 seconds. Expected to take 14.21 seconds.
# [RSpecRunTime] Starting example group spec/workers/remove_expired_group_links_worker_spec.rb. Expected to take 13.1 seconds.

RemoveExpiredGroupLinksWorker
  #perform
    ProjectGroupLinks
      removes expired group links
      leaves group links that expire in the future
      leaves group links that do not expire at all
      removes project authorization
# [RSpecRunTime] RSpec elapsed time: 15 minutes 44.63 seconds. Current RSS: ~1355M. Threads: 4. load average: 1.10 1.16 1.00 1/279 9722
.

    GroupGroupLinks
      expired GroupGroupLink exists
        calls Groups::GroupLinks::DestroyService
        with skip_group_share_unlink_auth_refresh feature flag disabled
          removes project authorization
# [RSpecRunTime] RSpec elapsed time: 15 minutes 46.68 seconds. Current RSS: ~1359M. Threads: 4. load average: 1.10 1.16 1.00 1/279 9723
.

        with skip_group_share_unlink_auth_refresh feature flag enabled
          does not remove project authorization
# [RSpecRunTime] RSpec elapsed time: 15 minutes 48.23 seconds. Current RSS: ~1360M. Threads: 4. load average: 1.10 1.16 1.00 1/279 9724
.

      expired GroupGroupLink does not exist
        does not call Groups::GroupLinks::DestroyService

# [RSpecRunTime] Finishing example group spec/workers/remove_expired_group_links_worker_spec.rb. It took 14.89 seconds. Expected to take 13.1 seconds.
# [RSpecRunTime] Starting example group spec/services/ci/stuck_builds/drop_scheduled_service_spec.rb. Expected to take 12.67 seconds.

Ci::StuckBuilds::DropScheduledService
  when job is scheduled
    for more than an hour ago
      behaves like job is dropped with failure reason
        changes status
        when job has data integrity problem
          drops the job and logs the reason
# [RSpecRunTime] RSpec elapsed time: 15 minutes 50.18 seconds. Current RSS: ~1354M. Threads: 4. load average: 1.09 1.15 1.00 1/279 9725
.

      behaves like when invalid dooms the job bypassing validations
        does not change status
    for less than 1 hour ago
      behaves like job is unchanged
        does not change status
  when job is success
    and scheduled for more than an hour ago
      behaves like job is unchanged
        does not change status
    and scheduled for less than 1 hour ago
      behaves like job is unchanged
        does not change status
  when job is skipped
    and scheduled for more than an hour ago
      behaves like job is unchanged
        does not change status
    and scheduled for less than 1 hour ago
      behaves like job is unchanged
        does not change status
  when job is failed
    and scheduled for more than an hour ago
      behaves like job is unchanged
        does not change status
    and scheduled for less than 1 hour ago
      behaves like job is unchanged
        does not change status
  when job is canceled
    and scheduled for more than an hour ago
      behaves like job is unchanged
        does not change status
    and scheduled for less than 1 hour ago
      behaves like job is unchanged
        does not change status
  when job is running
    and scheduled for more than an hour ago
      behaves like job is unchanged
        does not change status
    and scheduled for less than 1 hour ago
      behaves like job is unchanged
        does not change status
  when job is pending
    and scheduled for more than an hour ago
      behaves like job is unchanged
        does not change status
    and scheduled for less than 1 hour ago
      behaves like job is unchanged
        does not change status
  when there are no stale scheduled builds
    does not drop the stale scheduled build yet

# [RSpecRunTime] Finishing example group spec/services/ci/stuck_builds/drop_scheduled_service_spec.rb. It took 13.26 seconds. Expected to take 12.67 seconds.
# [RSpecRunTime] Starting example group spec/models/protectable_dropdown_spec.rb. Expected to take 11.9 seconds.

ProtectableDropdown
  does not allow STI
  initialize
    raises ArgumentError for invalid ref type
  #protectable_ref_names
    for branches
      is expected to include "feature"
      is expected not to include "master"
      behaves like protectable_ref_names
        when project repository is not empty
          includes elements matching a protected ref wildcard
# [RSpecRunTime] RSpec elapsed time: 16 minutes 5.12 seconds. Current RSS: ~1381M. Threads: 4. load average: 1.15 1.16 1.01 1/279 9792
.

        when project repository is empty
          returns empty list
    for tags
      is expected to include "v1.0.0"
      is expected not to include "v1.1.0"
      behaves like protectable_ref_names
        when project repository is not empty
          includes elements matching a protected ref wildcard
# [RSpecRunTime] RSpec elapsed time: 16 minutes 9.27 seconds. Current RSS: ~1391M. Threads: 4. load average: 1.22 1.18 1.01 1/279 9859
.

        when project repository is empty
          returns empty list
  #hash
    for branches
      is expected to include {:id => "feature", :text => "feature", :title => "feature"}
# [RSpecRunTime] RSpec elapsed time: 16 minutes 11.17 seconds. Current RSS: ~1389M. Threads: 4. load average: 1.22 1.18 1.01 4/279 9882
.

    for tags
      is expected to include {:id => "v1.0.0", :text => "v1.0.0", :title => "v1.0.0"}
# [RSpecRunTime] RSpec elapsed time: 16 minutes 12.32 seconds. Current RSS: ~1389M. Threads: 4. load average: 1.22 1.18 1.01 1/279 9905
.


# [RSpecRunTime] Finishing example group spec/models/protectable_dropdown_spec.rb. It took 10.78 seconds. Expected to take 11.9 seconds.
# [RSpecRunTime] Starting example group spec/models/protected_branch/push_access_level_spec.rb. Expected to take 11.19 seconds.

ProtectedBranch::PushAccessLevel
  does not allow STI
  behaves like protected branch access
    is expected to belong to protected_branch required: false
    behaves like protected ref access
      validations
        when role?
          is expected to validate that :access_level is either ‹30›, ‹40›, ‹60›, or ‹0›
          is expected to validate that :access_level cannot be empty/falsy
          is expected to validate that :access_level is case-sensitively unique within the scope of :protected_branch_id
# [RSpecRunTime] RSpec elapsed time: 16 minutes 13.54 seconds. Current RSS: ~1386M. Threads: 4. load average: 1.22 1.18 1.01 1/279 9906
.

        when not role?
          is expected not to validate that :access_level cannot be empty/falsy
          is expected not to validate that :access_level is either ‹30›, ‹40›, ‹60›, or ‹0›
          is expected not to validate that :access_level is case-sensitively unique within the scope of :protected_branch_id
      scopes
        ::for_role
          includes all role based access levels
      ::human_access_levels
        is expected to eq {30=>"Developers + Maintainers", 40=>"Maintainers", 60=>"Instance admins", 0=>"No one"}
      #check_access(user, current_project)
        when current_user is nil
          is expected to eq false
        when access_level is NO_ACCESS
          is expected to eq false
        when instance admin access is configured
          when current_user is a maintainer
            is expected to eq false
          when current_user is admin
            is expected to eq true
        when current_user can push_code to project
          and member access is high enough
            is expected to eq true
            when external authorization denies access
              is expected to eq false
          and member access is too low
            is expected to eq false
        when current_user cannot push_code to project
          is expected to eq false
    #protected_ref_project
      delegates to protected_branch.project
      does not error when protected_branch is nil
    #protected_branch_group
      looks for the group attached to protected_branch
  behaves like protected ref deploy_key access
    associations
      is expected to belong to deploy_key required: false
    validations
      when deploy_key?
        when deploy key has write access to the project
          and the deploy key's user is a project member
            is expected to be valid
          and the deploy key's user is not a project member
            is not valid
        when deploy key does not have write access to the project
          and the deploy key's user is a project member
            is not valid
          and the deploy key's user is not a project member
            is not valid
        when deploy_key_id does not exist
          is not valid
        when a deploy key already added for this protected ref
          is not valid
        when deploy key is not linked to the project
          is not valid
        when deploy key is not active for the project
          is not valid
    #check_access
      when this protected_branch_push_access_level is tied to a deploy key
        and user is not a project member
          does check membership
          is expected to eq false
          when user has inherited membership
            is expected to eq true
        when the user is a project maintainer
          when the deploy key is among the active keys for this project
            is expected to eq true
          when the deploy key is not among the active keys of this project
            is expected to eq false
          when user cannot access the project
            is expected to eq false
          when deploy key does not belong to the user
            is expected to eq false
        when user is nil
          is expected to eq false
    #type
      when deploy_key is present and deploy_key_id is nil
        is expected to eq :deploy_key
      when deploy_key_id is present and deploy_key is nil
        is expected to eq :deploy_key
    #humanize
      when deploy_key is present
        is expected to eq "title 9"
      when deploy_key_id is present and deploy_key is nil
        is expected to eq "Deploy key"
  behaves like protected ref access allowed_access_levels
    ::allowed_access_levels
      when running on Gitlab.com?
        is expected to contain exactly 30, 40, and 0
      when self hosted?
        is expected to contain exactly 30, 40, 60, and 0

# [RSpecRunTime] Finishing example group spec/models/protected_branch/push_access_level_spec.rb. It took 8.17 seconds. Expected to take 11.19 seconds.
# [RSpecRunTime] Starting example group spec/models/ci/build_report_result_spec.rb. Expected to take 10.72 seconds.

Ci::BuildReportResult
  does not allow STI
  behaves like cleanup by a loose foreign key
    cleans up (delete or nullify) the model
# [RSpecRunTime] RSpec elapsed time: 16 minutes 31.96 seconds. Current RSS: ~1361M. Threads: 4. load average: 1.15 1.16 1.01 1/280 9907
.

  associations
    is expected to belong to build required: false
    is expected to belong to project required: false
  validations
    is expected to validate that :project cannot be empty/falsy
    is expected to validate that :build cannot be empty/falsy
    when attributes are valid
      returns no errors
    when data is invalid
      returns errors
    when data tests is invalid
      returns errors
  #tests_name
    returns the suite name
  #tests_duration
    returns the suite duration
  #tests_success
    returns the success count
  #tests_failed
    returns the failed count
  #tests_errored
    returns the errored count
  #tests_skipped
    returns the skipped count
  partitioning
    with build
      copies the partition_id from build
      when it is already set
        does not change the partition_id value
# [RSpecRunTime] RSpec elapsed time: 16 minutes 33.6 seconds. Current RSS: ~1374M. Threads: 4. load average: 1.15 1.16 1.01 1/280 9908
.

    without build
      is expected to validate that :partition_id cannot be empty/falsy
      does not change the partition_id value

# [RSpecRunTime] Finishing example group spec/models/ci/build_report_result_spec.rb. It took 13.22 seconds. Expected to take 10.72 seconds.
# [RSpecRunTime] Starting example group spec/serializers/discussion_diff_file_entity_spec.rb. Expected to take 9.96 seconds.

DiscussionDiffFileEntity
  when there is no merge request
    behaves like diff file discussion entity
      behaves like diff file base entity
        exposes essential attributes
        when diff file does not have a blob and content sha
          exposes some attributes as nil
# [RSpecRunTime] RSpec elapsed time: 16 minutes 36.06 seconds. Current RSS: ~1392M. Threads: 4. load average: 1.14 1.16 1.01 1/281 9953
.

  when there is a merge request
    exposes additional attributes
    exposes no diff lines
    behaves like diff file discussion entity
      behaves like diff file base entity
        exposes essential attributes
        when diff file does not have a blob and content sha
          exposes some attributes as nil
# [RSpecRunTime] RSpec elapsed time: 16 minutes 43.61 seconds. Current RSS: ~1427M. Threads: 4. load average: 1.21 1.18 1.01 1/285 10202
.


# [RSpecRunTime] Finishing example group spec/serializers/discussion_diff_file_entity_spec.rb. It took 9.91 seconds. Expected to take 9.96 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/templates/Verify/load_performance_testing_gitlab_ci_yaml_spec.rb. Expected to take 9.91 seconds.

Verify/Load-Performance-Testing.gitlab-ci.yml
  the created pipeline
    has no errors
    on master
      behaves like load_performance job on tag or branch
        by default
# [RSpecRunTime] RSpec elapsed time: 16 minutes 47.26 seconds. Current RSS: ~1423M. Threads: 4. load average: 1.19 1.17 1.01 1/284 10253
.

    on another branch
      behaves like load_performance job on tag or branch
        by default
# [RSpecRunTime] RSpec elapsed time: 16 minutes 50.13 seconds. Current RSS: ~1407M. Threads: 4. load average: 1.34 1.20 1.02 1/284 10279
.

    on tag
      behaves like load_performance job on tag or branch
        by default
# [RSpecRunTime] RSpec elapsed time: 16 minutes 51.85 seconds. Current RSS: ~1403M. Threads: 4. load average: 1.34 1.20 1.02 1/284 10305
.

    on merge request
      has no jobs
# [RSpecRunTime] RSpec elapsed time: 16 minutes 53.95 seconds. Current RSS: ~1399M. Threads: 4. load average: 1.34 1.20 1.02 1/285 10367
.


# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/templates/Verify/load_performance_testing_gitlab_ci_yaml_spec.rb. It took 10.34 seconds. Expected to take 9.91 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/file_hook_spec.rb. Expected to take 9.43 seconds.

Gitlab::FileHook
  with file_hooks present
    .any?
      returns true
    .files?
      returns a list of file_hooks
  without any file_hooks
    .any?
      returns false
    .files
      returns an empty list
  .execute
    successful execution
      is expected to equal true
      is expected to be empty
      ensures file_hook received data via stdin
# [RSpecRunTime] RSpec elapsed time: 16 minutes 57.3 seconds. Current RSS: ~1396M. Threads: 4. load average: 1.31 1.20 1.02 1/286 10373
.

    non-executable
      is expected to equal false
      is expected to include "Permission denied"
    non-zero exit
      is expected to equal false
      is expected to be empty
# [RSpecRunTime] RSpec elapsed time: 16 minutes 59.5 seconds. Current RSS: ~1394M. Threads: 4. load average: 1.29 1.20 1.02 1/286 10378
.


# [RSpecRunTime] Finishing example group spec/lib/gitlab/file_hook_spec.rb. It took 5.55 seconds. Expected to take 9.43 seconds.
# [RSpecRunTime] Starting example group spec/services/merge_requests/merge_strategies/from_source_branch_spec.rb. Expected to take 8.87 seconds.

MergeRequests::MergeStrategies::FromSourceBranch
  #execute_git_merge!
    when fast-forward is required
      performs a fast-forward merge
# [RSpecRunTime] RSpec elapsed time: 17 minutes 1.62 seconds. Current RSS: ~1398M. Threads: 4. load average: 1.29 1.20 1.02 1/287 10436
.

    when a merge commit is required
      performs standard merge
# [RSpecRunTime] RSpec elapsed time: 17 minutes 3.5 seconds. Current RSS: ~1400M. Threads: 4. load average: 1.29 1.20 1.02 1/285 10493
.

  #validate!
    when source is missing
      raises source error when source is missing
# [RSpecRunTime] RSpec elapsed time: 17 minutes 5.44 seconds. Current RSS: ~1402M. Threads: 4. load average: 1.26 1.19 1.02 1/285 10550
.

    when merge request should be rebased
      raises needs rebase error
# [RSpecRunTime] RSpec elapsed time: 17 minutes 7.39 seconds. Current RSS: ~1407M. Threads: 4. load average: 1.26 1.19 1.02 1/285 10607
.

    when merge request should be squashed but is not
      raises squashing error
# [RSpecRunTime] RSpec elapsed time: 17 minutes 9.61 seconds. Current RSS: ~1410M. Threads: 4. load average: 1.24 1.19 1.02 1/285 10679
.


# [RSpecRunTime] Finishing example group spec/services/merge_requests/merge_strategies/from_source_branch_spec.rb. It took 10.1 seconds. Expected to take 8.87 seconds.
# [RSpecRunTime] Starting example group spec/models/jira_connect/public_key_spec.rb. Expected to take 8.42 seconds.

JiraConnect::PublicKey
  does not allow STI
  .create!
    only accepts valid public keys
    with OpenSSL::PKey::RSA object
      behaves like creates a jira connect public key
        generates a Uuid
        sets the key attribute
        persists the values
# [RSpecRunTime] RSpec elapsed time: 17 minutes 11.44 seconds. Current RSS: ~1403M. Threads: 4. load average: 1.24 1.19 1.02 1/285 10680
.

    with string public key
      behaves like creates a jira connect public key
        generates a Uuid
        sets the key attribute
        persists the values
# [RSpecRunTime] RSpec elapsed time: 17 minutes 14.4 seconds. Current RSS: ~1393M. Threads: 4. load average: 1.22 1.19 1.02 1/284 10681
.

  .find
    raises an error
    when the public key exists
      loads the public key
  #save!
    persists the values
    returns itself
# [RSpecRunTime] RSpec elapsed time: 17 minutes 16.23 seconds. Current RSS: ~1389M. Threads: 4. load average: 1.22 1.19 1.02 1/283 10682
.


# [RSpecRunTime] Finishing example group spec/models/jira_connect/public_key_spec.rb. It took 6.63 seconds. Expected to take 8.42 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/cache/helpers_spec.rb. Expected to take 8.12 seconds.

Gitlab::Cache::Helpers
  #render_cached
    single object
      when presenter is a serializer
        behaves like object cache helper
          is expected to be a kind of Gitlab::Json::PrecompiledJson
          uses the presenter
          is valid JSON
          fetches from the cache
          when a cache context is supplied
            uses the context to augment the cache key
# [RSpecRunTime] RSpec elapsed time: 17 minutes 18.52 seconds. Current RSS: ~1395M. Threads: 4. load average: 1.22 1.19 1.02 1/284 10743
.

          when expires_in is supplied
            sets the expiry when accessing the cache
          when a caller id is present
            increments the counter
      when presenter is a Grape::Entity
        behaves like object cache helper
          is expected to be a kind of Gitlab::Json::PrecompiledJson
          uses the presenter
          is valid JSON
          fetches from the cache
          when a cache context is supplied
            uses the context to augment the cache key
          when expires_in is supplied
            sets the expiry when accessing the cache
          when a caller id is present
            increments the counter
    collection of objects
      behaves like collection cache helper
        is expected to be a kind of Gitlab::Json::PrecompiledJson
        uses the presenter
        is valid JSON
        fetches from the cache
        when a cache context is supplied
          uses the context to augment the cache key
# [RSpecRunTime] RSpec elapsed time: 17 minutes 21.99 seconds. Current RSS: ~1423M. Threads: 4. load average: 1.20 1.18 1.02 1/285 10809
.

        expires_in is supplied
          sets the expiry when accessing the cache
        when a caller id is present
          when presentable has a group by clause
            returns the presentables
          when the presentables all miss
            increments the counters
          when the presents hit
            increments the counters
    when passed presenter is not a serializer or an entity
      throws an exception

# [RSpecRunTime] Finishing example group spec/lib/gitlab/cache/helpers_spec.rb. It took 8.6 seconds. Expected to take 8.12 seconds.
# [RSpecRunTime] Starting example group spec/lib/banzai/reference_parser/issue_parser_spec.rb. Expected to take 7.71 seconds.

Banzai::ReferenceParser::IssueParser
  #nodes_visible_to_user
    when the link has a data-issue attribute
      returns the nodes when the user can read the issue
      returns an empty Array when the user can not read the issue
      behaves like referenced feature visibility
        when feature is disabled
          does not create reference
        when feature is enabled only for team members
          does not create reference for non member
          creates reference for member
        when feature is enabled
          creates reference
      when the user cannot read cross project
        returns the nodes when the user can read the issue
        returns an empty Array when the user can not read the issue
        when the issue is not cross project
          does not check `can_read_reference` if the issue is not cross project
# [RSpecRunTime] RSpec elapsed time: 17 minutes 28.48 seconds. Current RSS: ~1428M. Threads: 4. load average: 1.19 1.18 1.02 1/283 10847
.

    when the link does not have a data-issue attribute
      returns an empty Array
  #referenced_by
    when the link has a data-issue attribute
      using an existing issue ID
        returns an Array of issues
        returns an empty Array when the list of nodes is empty
      when issue with given ID does not exist
        returns an empty Array
  #records_for_nodes
    returns a Hash containing the issues for a list of nodes
  when checking multiple issues on another project
    behaves like no N+1 queries
      avoids N+1 queries in #records_for_nodes
      behaves like no project N+1 queries
        avoids N+1 queries in #nodes_visible_to_user
# [RSpecRunTime] RSpec elapsed time: 17 minutes 33.32 seconds. Current RSS: ~1392M. Threads: 4. load average: 1.17 1.18 1.02 1/281 10848
.


# [RSpecRunTime] Finishing example group spec/lib/banzai/reference_parser/issue_parser_spec.rb. It took 8.48 seconds. Expected to take 7.71 seconds.
# [RSpecRunTime] Starting example group spec/services/ci/compare_test_reports_service_spec.rb. Expected to take 7.32 seconds.

Ci::CompareTestReportsService
  #execute
    when head pipeline has test reports
      returns status and data
# [RSpecRunTime] RSpec elapsed time: 17 minutes 35.01 seconds. Current RSS: ~1389M. Threads: 4. load average: 1.16 1.17 1.02 1/280 10870
.

    when base and head pipelines have test reports
      returns status and data
# [RSpecRunTime] RSpec elapsed time: 17 minutes 36.69 seconds. Current RSS: ~1395M. Threads: 4. load average: 1.16 1.17 1.02 1/280 10893
.

    when head pipeline has corrupted test reports
      returns a parsed TestReports success status and failure on the individual suite
# [RSpecRunTime] RSpec elapsed time: 17 minutes 38.05 seconds. Current RSS: ~1405M. Threads: 4. load average: 1.16 1.17 1.02 1/280 10914
.

    test failure history
      loads recent failures on limited test cases to avoid building up a huge DB query
# [RSpecRunTime] RSpec elapsed time: 17 minutes 39.83 seconds. Current RSS: ~1414M. Threads: 4. load average: 1.22 1.19 1.02 1/281 10943
.


# [RSpecRunTime] Finishing example group spec/services/ci/compare_test_reports_service_spec.rb. It took 6.51 seconds. Expected to take 7.32 seconds.
# [RSpecRunTime] Starting example group spec/services/merge_requests/add_context_service_spec.rb. Expected to take 7.04 seconds.

MergeRequests::AddContextService
  #execute
    when admin mode is enabled
      adds context commit
# [RSpecRunTime] RSpec elapsed time: 17 minutes 41.77 seconds. Current RSS: ~1415M. Threads: 4. load average: 1.22 1.19 1.02 1/283 11004
.

    when admin mode is disabled
      doesn't add context commit
# [RSpecRunTime] RSpec elapsed time: 17 minutes 43.54 seconds. Current RSS: ~1415M. Threads: 4. load average: 1.22 1.19 1.02 1/284 11062
.

    when user doesn't have permission to update merge request
      doesn't add context commit
# [RSpecRunTime] RSpec elapsed time: 17 minutes 45.59 seconds. Current RSS: ~1417M. Threads: 4. load average: 1.21 1.18 1.02 1/285 11120
.

    when the commits array is empty
      doesn't add context commit
# [RSpecRunTime] RSpec elapsed time: 17 minutes 47.35 seconds. Current RSS: ~1416M. Threads: 4. load average: 1.21 1.18 1.02 1/285 11177
.


# [RSpecRunTime] Finishing example group spec/services/merge_requests/add_context_service_spec.rb. It took 7.52 seconds. Expected to take 7.04 seconds.
# [RSpecRunTime] Starting example group spec/workers/ci/archive_traces_cron_worker_spec.rb. Expected to take 6.61 seconds.

Ci::ArchiveTracesCronWorker
  when a job succeeded
    batch_execute service
    behaves like archives trace
      is expected to be exist
# [RSpecRunTime] RSpec elapsed time: 17 minutes 49.31 seconds. Current RSS: ~1408M. Threads: 4. load average: 1.19 1.18 1.02 1/285 11178
.

    when the job finished recently
      behaves like does not archive trace
        is expected to be nil
    when a trace had already been archived
      continues to archive live traces
# [RSpecRunTime] RSpec elapsed time: 17 minutes 51.94 seconds. Current RSS: ~1394M. Threads: 4. load average: 1.19 1.18 1.02 1/284 11179
.

    when an unexpected exception happened during archiving
      puts a log
  when a job was cancelled
    behaves like archives trace
      is expected to be exist
  when a job is running
    behaves like does not archive trace
      is expected to be nil

# [RSpecRunTime] Finishing example group spec/workers/ci/archive_traces_cron_worker_spec.rb. It took 7.32 seconds. Expected to take 6.61 seconds.
# [RSpecRunTime] Starting example group spec/finders/sentry_issue_finder_spec.rb. Expected to take 6.19 seconds.

SentryIssueFinder
  #execute
    when the user is not part of the project
      is expected to be nil
# [RSpecRunTime] RSpec elapsed time: 17 minutes 56.23 seconds. Current RSS: ~1377M. Threads: 4. load average: 1.17 1.18 1.02 1/281 11198
.

    when the user is a project developer
      is expected to eq #<SentryIssue id: 2, issue_id: 136, sentry_issue_identifier: 10000002>
      when identifier is incorrect
        is expected to be nil
# [RSpecRunTime] RSpec elapsed time: 17 minutes 59.21 seconds. Current RSS: ~1391M. Threads: 4. load average: 1.16 1.17 1.02 1/279 11235
.

      when accessing another projects identifier
        is expected to be nil
# [RSpecRunTime] RSpec elapsed time: 18 minutes 1.48 seconds. Current RSS: ~1392M. Threads: 4. load average: 1.16 1.17 1.02 1/279 11254
.


# [RSpecRunTime] Finishing example group spec/finders/sentry_issue_finder_spec.rb. It took 6.8 seconds. Expected to take 6.19 seconds.
# [RSpecRunTime] Starting example group spec/services/tags/destroy_service_spec.rb. Expected to take 5.68 seconds.

Tags::DestroyService
  #execute(tag_name, skip_find: false)
    with tag named v1.1.0
      removes the tag
      calls the RefDeleteUnlockArtifactsWorker
      when skip_find is true
        does not verify the tag exists in the repository
# [RSpecRunTime] RSpec elapsed time: 18 minutes 5.48 seconds. Current RSS: ~1396M. Threads: 4. load average: 1.15 1.17 1.02 1/281 11330
.

    when there is an associated release on the tag
      destroys the release
# [RSpecRunTime] RSpec elapsed time: 18 minutes 7.35 seconds. Current RSS: ~1404M. Threads: 4. load average: 1.15 1.17 1.02 2/283 11366
.


# [RSpecRunTime] Finishing example group spec/services/tags/destroy_service_spec.rb. It took 5.87 seconds. Expected to take 5.68 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/gitaly_client/with_feature_flag_actors_spec.rb. Expected to take 5.55 seconds.

Gitlab::GitalyClient::WithFeatureFlagActors
  #user_actor
    when user is not available in ApplicationContext
      returns nil
    when user is available in ApplicationContext
      returns corresponding user record
    when user does not exist
      returns corresponding user record
  #repository, #project_actor, #group_actor
    when normal project repository
      behaves like Gitaly feature flag actors are inferred from repository
        captures correct actors
        does not issues SQL queries after the first invocation
      behaves like Gitaly feature flag actors are inferred from repository
        captures correct actors
        does not issues SQL queries after the first invocation
      behaves like Gitaly feature flag actors are inferred from repository
        captures correct actors
        does not issues SQL queries after the first invocation
    when project wiki repository
      behaves like Gitaly feature flag actors are inferred from repository
        captures correct actors
        does not issues SQL queries after the first invocation
      behaves like Gitaly feature flag actors are inferred from repository
        captures correct actors
        does not issues SQL queries after the first invocation
      behaves like Gitaly feature flag actors are inferred from repository
        captures correct actors
        does not issues SQL queries after the first invocation
    when repository of project in user namespace
      behaves like Gitaly feature flag actors are inferred from repository
        captures correct actors
        does not issues SQL queries after the first invocation
      behaves like Gitaly feature flag actors are inferred from repository
        captures correct actors
        does not issues SQL queries after the first invocation
      behaves like Gitaly feature flag actors are inferred from repository
        captures correct actors
        does not issues SQL queries after the first invocation
    when personal snippet
      behaves like Gitaly feature flag actors are inferred from repository
        captures correct actors
        does not issues SQL queries after the first invocation
      behaves like Gitaly feature flag actors are inferred from repository
        captures correct actors
        does not issues SQL queries after the first invocation
      behaves like Gitaly feature flag actors are inferred from repository
        captures correct actors
        does not issues SQL queries after the first invocation
    when project snippet
      behaves like Gitaly feature flag actors are inferred from repository
        captures correct actors
        does not issues SQL queries after the first invocation
      behaves like Gitaly feature flag actors are inferred from repository
        captures correct actors
        does not issues SQL queries after the first invocation
      behaves like Gitaly feature flag actors are inferred from repository
        captures correct actors
        does not issues SQL queries after the first invocation
    when project design
      behaves like Gitaly feature flag actors are inferred from repository
        captures correct actors
        does not issues SQL queries after the first invocation
      behaves like Gitaly feature flag actors are inferred from repository
        captures correct actors
        does not issues SQL queries after the first invocation
      behaves like Gitaly feature flag actors are inferred from repository
        captures correct actors
        does not issues SQL queries after the first invocation
  #gitaly_client_call
    triggers client call with feature flag actors
    supports client call with a block
    when call without repository_actor
      calls error tracking track_and_raise_for_dev_exception
    #gitaly_feature_flag_actors
      returns a hash with collected feature flag actors

# [RSpecRunTime] Finishing example group spec/lib/gitlab/gitaly_client/with_feature_flag_actors_spec.rb. It took 6.45 seconds. Expected to take 5.55 seconds.
# [RSpecRunTime] Starting example group spec/graphql/resolvers/group_issues_resolver_spec.rb. Expected to take 5.26 seconds.

Resolvers::GroupIssuesResolver
  #resolve
    finds all group issues
    finds all group and subgroup issues
    returns issues without the specified issue_type
    confidential issues
      when user is allowed to view confidential issues
        returns all viewable issues by default
        filtering for confidential issues
          returns only the non-confidential issues for the group when filter is set to false
          returns only the confidential issues for the group when filter is set to true
# [RSpecRunTime] RSpec elapsed time: 18 minutes 17.65 seconds. Current RSS: ~1368M. Threads: 4. load average: 1.12 1.16 1.02 1/281 11408
.

      when user is not allowed to see confidential issues
        returns all viewable issues by default
        filtering for confidential issues
          does not return the confidential issues when filter is set to false
          does not return the confidential issues when filter is set to true
# [RSpecRunTime] RSpec elapsed time: 18 minutes 18.76 seconds. Current RSS: ~1371M. Threads: 4. load average: 1.12 1.16 1.02 1/280 11409
.

    release_tag filter
      generates an error when trying to filter by negated release_tag

# [RSpecRunTime] Finishing example group spec/graphql/resolvers/group_issues_resolver_spec.rb. It took 5.01 seconds. Expected to take 5.26 seconds.
# [RSpecRunTime] Starting example group spec/policies/design_management/design_policy_spec.rb. Expected to take 5.14 seconds.

DesignManagement::DesignPolicy
  when DesignManagement is not enabled
    behaves like design abilities not available
      for owners
        is expected to be disallowed :read_design, :create_design, :destroy_design, :move_design, and :update_design
# [RSpecRunTime] RSpec elapsed time: 18 minutes 20.47 seconds. Current RSS: ~1370M. Threads: 4. load average: 1.19 1.18 1.03 3/281 11410
.

      for admins
        is expected to be disallowed :read_design, :create_design, :destroy_design, :move_design, and :update_design
      for maintainers
        is expected to be disallowed :read_design, :create_design, :destroy_design, :move_design, and :update_design
      for developers
        is expected to be disallowed :read_design, :create_design, :destroy_design, :move_design, and :update_design
      for reporters
        is expected to be disallowed :read_design, :create_design, :destroy_design, :move_design, and :update_design
      for guests
        is expected to be disallowed :read_design, :create_design, :destroy_design, :move_design, and :update_design
      for anonymous users
        is expected to be disallowed :read_design, :create_design, :destroy_design, :move_design, and :update_design
  when the feature is available
    behaves like design abilities available for members
      for owners
        is expected to be allowed :read_design, :create_design, :destroy_design, :move_design, and :update_design
      for admins
        when admin mode enabled
          is expected to be allowed :read_design, :create_design, :destroy_design, :move_design, and :update_design
        when admin mode disabled
          behaves like read-only design abilities
            is expected to be allowed :read_design
            is expected to be disallowed :create_design, :destroy_design, :move_design, and :update_design
      for maintainers
        is expected to be allowed :read_design, :create_design, :destroy_design, :move_design, and :update_design
      for developers
        is expected to be allowed :read_design, :create_design, :destroy_design, :move_design, and :update_design
      for reporters
        is expected to be allowed :read_design, :create_design, :destroy_design, :move_design, and :update_design
    for guests in private projects
      behaves like read-only design abilities
        is expected to be allowed :read_design
        is expected to be disallowed :create_design, :destroy_design, :move_design, and :update_design
    for anonymous users in public projects
      behaves like read-only design abilities
        is expected to be allowed :read_design
        is expected to be disallowed :create_design, :destroy_design, :move_design, and :update_design
    when the issue is confidential
      behaves like design abilities available for members
        for owners
          is expected to be allowed :read_design, :create_design, :destroy_design, :move_design, and :update_design
        for admins
          when admin mode enabled
            is expected to be allowed :read_design, :create_design, :destroy_design, :move_design, and :update_design
          when admin mode disabled
            behaves like read-only design abilities
              is expected to be allowed :read_design
              is expected to be disallowed :create_design, :destroy_design, :move_design, and :update_design
        for maintainers
          is expected to be allowed :read_design, :create_design, :destroy_design, :move_design, and :update_design
        for developers
          is expected to be allowed :read_design, :create_design, :destroy_design, :move_design, and :update_design
        for reporters
          is expected to be allowed :read_design, :create_design, :destroy_design, :move_design, and :update_design
      for guests
        is expected to be disallowed :read_design, :create_design, :destroy_design, :move_design, and :update_design
      for anonymous users
        is expected to be disallowed :read_design, :create_design, :destroy_design, :move_design, and :update_design
    when the project is archived
      behaves like read-only design abilities
        is expected to be allowed :read_design
        is expected to be disallowed :create_design, :destroy_design, :move_design, and :update_design

# [RSpecRunTime] Finishing example group spec/policies/design_management/design_policy_spec.rb. It took 5.29 seconds. Expected to take 5.14 seconds.
# [RSpecRunTime] Starting example group spec/workers/issue_due_scheduler_worker_spec.rb. Expected to take 4.88 seconds.

IssueDueSchedulerWorker
  #perform
    schedules one MailScheduler::IssueDueWorker per project with open issues due tomorrow
    does not schedule MailScheduler::IssueDueWorker for issues that have the work_item_type different of "issue"
# [RSpecRunTime] RSpec elapsed time: 18 minutes 28.55 seconds. Current RSS: ~1379M. Threads: 4. load average: 1.18 1.18 1.03 1/279 11411
.


# [RSpecRunTime] Finishing example group spec/workers/issue_due_scheduler_worker_spec.rb. It took 4.45 seconds. Expected to take 4.88 seconds.
# [RSpecRunTime] Starting example group spec/graphql/resolvers/clusters/agent_tokens_resolver_spec.rb. Expected to take 4.72 seconds.

Resolvers::Clusters::AgentTokensResolver
  is expected to eq #<Class:0x00007c7f36afd020>
  is expected to be truthy
  is expected to be empty
  #resolve
    returns active tokens associated with the agent, ordered by last_used_at
    user does not have permission
      is expected to be empty
# [RSpecRunTime] RSpec elapsed time: 18 minutes 33.1 seconds. Current RSS: ~1370M. Threads: 4. load average: 1.16 1.17 1.03 1/279 11412
.


# [RSpecRunTime] Finishing example group spec/graphql/resolvers/clusters/agent_tokens_resolver_spec.rb. It took 4.55 seconds. Expected to take 4.72 seconds.
# [RSpecRunTime] Starting example group spec/lib/api/entities/project_import_status_spec.rb. Expected to take 4.69 seconds.

API::Entities::ProjectImportStatus
  #as_json
    when no import state exists
      includes basic fields and no failures
    when import has not finished yet
      includes basic fields and no failures
    when import has finished with failed relations
      includes basic fields with failed relations
# [RSpecRunTime] RSpec elapsed time: 18 minutes 35.23 seconds. Current RSS: ~1364M. Threads: 4. load average: 1.15 1.17 1.03 1/279 11413
.

    when import has failed
      when user has access to read import status
        includes basic fields with import error
      when user does not have access to read import status
        includes basic fields with import error
    when importing from github
      exposes the import stats

# [RSpecRunTime] Finishing example group spec/lib/api/entities/project_import_status_spec.rb. It took 4.67 seconds. Expected to take 4.69 seconds.
# [RSpecRunTime] Starting example group spec/services/users/create_service_spec.rb. Expected to take 4.35 seconds.

Users::CreateService
  #execute
    with an admin user
      when required parameters are provided
        returns a persisted user
        persists the given attributes
        user is not confirmed if skip_confirmation param is not present
        logs the user creation
        executes system hooks
        does not send a notification email
        with user_detail created
          creates the user_detail record
# [RSpecRunTime] RSpec elapsed time: 18 minutes 39.87 seconds. Current RSS: ~1366M. Threads: 4. load average: 1.14 1.17 1.02 1/279 11414
.

        when the current_user is not persisted
          persists the given attributes and sets created_by_id to nil
      when force_random_password parameter is true
        generates random password
      when password_automatically_set parameter is true
        persists the given attributes
      when skip_confirmation parameter is true
        confirms the user
      when reset_password parameter is true
        resets password even if a password parameter is given
        sends a notification email
    with nil user
      persists the given attributes
      with user_detail created
        creates the user_detail record

# [RSpecRunTime] Finishing example group spec/services/users/create_service_spec.rb. It took 4.52 seconds. Expected to take 4.35 seconds.
# [RSpecRunTime] Starting example group spec/services/spam/spam_verdict_service_spec.rb. Expected to take 4.34 seconds.

Spam::SpamVerdictService
  #execute
    issue
      when issue is publicly visible
        behaves like execute spam verdict service
          if all services return nil
            renders ALLOW verdict
          if only one service returns a verdict
            and it is supported
              renders that verdict
            and it is unexpected
              allows
          if more than one service returns a verdict
            and they are supported
              renders the more restrictive verdict
            and one is supported
              renders the more restrictive verdict
            and none are supported
              renders the more restrictive verdict
          if allow_possible_spam application setting is true
            and a service returns a verdict that should be overridden
              overrides and renders the override verdict
            and a service returns a verdict that does not need to be overridden
              does not override and renders the original verdict
          if user is trusted to create possible spam
            and a service returns a verdict that should be overridden
              overrides and renders the override verdict
            and a service returns a verdict that does not need to be overridden
              does not override and renders the original verdict
          records metrics
            verdict: "allow", label: "ALLOW"
              records duration with labels
            verdict: "conditional_allow", label: "CONDITIONAL_ALLOW"
              records duration with labels
            verdict: "block", label: "BLOCK"
              records duration with labels
            verdict: "disallow", label: "DISALLOW"
              records duration with labels
            verdict: "noop", label: "NOOP"
              records duration with labels
      when issue is not publicly visible
        overrides and renders the override verdict
    snippet
      behaves like execute spam verdict service
        if all services return nil
          renders ALLOW verdict
        if only one service returns a verdict
          and it is supported
            renders that verdict
          and it is unexpected
            allows
        if more than one service returns a verdict
          and they are supported
            renders the more restrictive verdict
          and one is supported
            renders the more restrictive verdict
          and none are supported
            renders the more restrictive verdict
        if allow_possible_spam application setting is true
          and a service returns a verdict that should be overridden
            overrides and renders the override verdict
          and a service returns a verdict that does not need to be overridden
            does not override and renders the original verdict
        if user is trusted to create possible spam
          and a service returns a verdict that should be overridden
            overrides and renders the override verdict
          and a service returns a verdict that does not need to be overridden
            does not override and renders the original verdict
        records metrics
          verdict: "allow", label: "ALLOW"
            records duration with labels
          verdict: "conditional_allow", label: "CONDITIONAL_ALLOW"
            records duration with labels
          verdict: "block", label: "BLOCK"
            records duration with labels
          verdict: "disallow", label: "DISALLOW"
            records duration with labels
          verdict: "noop", label: "NOOP"
            records duration with labels
  #get_akismet_verdict
    issue
      behaves like akismet verdict
        if Akismet is enabled
          if Akismet considers it spam
            if reCAPTCHA is enabled
              returns conditionally allow verdict
            if reCAPTCHA is not enabled
              renders disallow verdict
          if Akismet does not consider it spam
            renders allow verdict
        if Akismet is not enabled
          renders allow verdict
    snippet
      behaves like akismet verdict
        if Akismet is enabled
          if Akismet considers it spam
            if reCAPTCHA is enabled
              returns conditionally allow verdict
            if reCAPTCHA is not enabled
              renders disallow verdict
          if Akismet does not consider it spam
            renders allow verdict
        if Akismet is not enabled
          renders allow verdict
  #get_spamcheck_verdict
    issue
      behaves like spamcheck verdict
        if a Spam Check endpoint enabled and set to a URL
          if the endpoint is accessible
            if the result is a NOOP verdict
              returns the verdict
            the result is a valid verdict
              the result was evaluated
                returns the verdict and updates the spam score
              the result was not evaluated
                returns the verdict and does not update the spam score
            when recaptcha is enabled
              verdict_value: 0, expected: "allow", verdict_score: 0.1
                returns expected spam constant and updates the spam score
              verdict_value: 1, expected: "conditional_allow", verdict_score: 0.5
                returns expected spam constant and updates the spam score
              verdict_value: 2, expected: "disallow", verdict_score: 0.8
                returns expected spam constant and updates the spam score
              verdict_value: 3, expected: "block", verdict_score: 0.9
                returns expected spam constant and updates the spam score
            when recaptcha is disabled
              verdict_value: 0, expected: "allow"
Job arguments to AntiAbuse::TrustScoreWorker must be native JSON types, but :spamcheck is a Symbol.
See https://github.com/sidekiq/sidekiq/wiki/Best-Practices
To disable this error, add `Sidekiq.strict_args!(false)` to your initializer.
                returns expected spam constant
              verdict_value: 1, expected: "conditional_allow"
                returns expected spam constant
              verdict_value: 2, expected: "disallow"
                returns expected spam constant
              verdict_value: 3, expected: "block"
                returns expected spam constant
            the requested is aborted
              returns nil
            if the endpoint times out
              returns nil
        if a Spam Check endpoint is not set
          returns nil
        if Spam Check endpoint is not enabled
          returns nil
    snippet
      behaves like spamcheck verdict
        if a Spam Check endpoint enabled and set to a URL
          if the endpoint is accessible
            if the result is a NOOP verdict
              returns the verdict
            the result is a valid verdict
              the result was evaluated
                returns the verdict and updates the spam score
              the result was not evaluated
                returns the verdict and does not update the spam score
            when recaptcha is enabled
              verdict_value: 0, expected: "allow", verdict_score: 0.1
                returns expected spam constant and updates the spam score
              verdict_value: 1, expected: "conditional_allow", verdict_score: 0.5
                returns expected spam constant and updates the spam score
              verdict_value: 2, expected: "disallow", verdict_score: 0.8
                returns expected spam constant and updates the spam score
              verdict_value: 3, expected: "block", verdict_score: 0.9
                returns expected spam constant and updates the spam score
            when recaptcha is disabled
              verdict_value: 0, expected: "allow"
                returns expected spam constant
              verdict_value: 1, expected: "conditional_allow"
                returns expected spam constant
              verdict_value: 2, expected: "disallow"
                returns expected spam constant
              verdict_value: 3, expected: "block"
                returns expected spam constant
            the requested is aborted
              returns nil
            if the endpoint times out
              returns nil
        if a Spam Check endpoint is not set
          returns nil
        if Spam Check endpoint is not enabled
          returns nil

# [RSpecRunTime] Finishing example group spec/services/spam/spam_verdict_service_spec.rb. It took 3.97 seconds. Expected to take 4.34 seconds.
# [RSpecRunTime] Starting example group spec/models/projects/data_transfer_spec.rb. Expected to take 3.99 seconds.

Projects::DataTransfer
  is expected to be valid
  does not allow STI
  .beginning_of_month
    is expected to eq 2022-05-01 00:00:00.000000000 +0000
  behaves like CounterAttribute
    defines a method to store counters
    repository_egress
      #increment_counter
        when attribute is a counter attribute
          amount: 10
            increments the counter in Redis and logs it
            does not increment the counter for the record
            schedules a worker to flush counter increments asynchronously
          amount: -3
            increments the counter in Redis and logs it
            does not increment the counter for the record
            schedules a worker to flush counter increments asynchronously
          #increment_amount
            increases the egress in cache
          #current_counter
            increases the amount in cache
          when increment amount is 0
            does nothing
      #bulk_increment_counter
        when attribute is a counter attribute
          increments the counter in Redis and logs each increment
          does not increment the counter for the record
          schedules a worker to flush counter increments asynchronously
          when feature flag split_log_bulk_increment_counter is disabled
            logs a single total increment
    artifacts_egress
      #increment_counter
        when attribute is a counter attribute
          amount: 10
            increments the counter in Redis and logs it
            does not increment the counter for the record
            schedules a worker to flush counter increments asynchronously
          amount: -3
            increments the counter in Redis and logs it
            does not increment the counter for the record
            schedules a worker to flush counter increments asynchronously
          #increment_amount
            increases the egress in cache
          #current_counter
            increases the amount in cache
          when increment amount is 0
            does nothing
      #bulk_increment_counter
        when attribute is a counter attribute
          increments the counter in Redis and logs each increment
          does not increment the counter for the record
          schedules a worker to flush counter increments asynchronously
          when feature flag split_log_bulk_increment_counter is disabled
            logs a single total increment
    packages_egress
      #increment_counter
        when attribute is a counter attribute
          amount: 10
            increments the counter in Redis and logs it
            does not increment the counter for the record
            schedules a worker to flush counter increments asynchronously
          amount: -3
            increments the counter in Redis and logs it
            does not increment the counter for the record
            schedules a worker to flush counter increments asynchronously
          #increment_amount
            increases the egress in cache
          #current_counter
            increases the amount in cache
          when increment amount is 0
            does nothing
      #bulk_increment_counter
        when attribute is a counter attribute
          increments the counter in Redis and logs each increment
          does not increment the counter for the record
          schedules a worker to flush counter increments asynchronously
          when feature flag split_log_bulk_increment_counter is disabled
            logs a single total increment
    registry_egress
      #increment_counter
        when attribute is a counter attribute
          amount: 10
            increments the counter in Redis and logs it
            does not increment the counter for the record
            schedules a worker to flush counter increments asynchronously
          amount: -3
            increments the counter in Redis and logs it
            does not increment the counter for the record
            schedules a worker to flush counter increments asynchronously
          #increment_amount
            increases the egress in cache
          #current_counter
            increases the amount in cache
          when increment amount is 0
            does nothing
      #bulk_increment_counter
        when attribute is a counter attribute
          increments the counter in Redis and logs each increment
          does not increment the counter for the record
          schedules a worker to flush counter increments asynchronously
          when feature flag split_log_bulk_increment_counter is disabled
            logs a single total increment
    #update_counters_with_lease
      updates counters of the record
      behaves like obtaining lease to update database
        when it is unable to obtain lock
          logs a warning
        when the execution raises error
          reraises error
  associations
    is expected to belong to project required: false
    is expected to belong to namespace required: false
  scopes
    .current_month
      returns data transfer for the current month
    .with_project_between_dates
      returns the correct number of results
    .with_namespace_between_dates
      returns the correct number of results
  unique index
    raises unique index violation
    when project was moved from one namespace to another
      creates a new record
    when a different project is created
      creates a new record

# [RSpecRunTime] Finishing example group spec/models/projects/data_transfer_spec.rb. It took 3.88 seconds. Expected to take 3.99 seconds.
# [RSpecRunTime] Starting example group spec/models/custom_emoji_spec.rb. Expected to take 3.98 seconds.

CustomEmoji
  does not allow STI
  Associations
    is expected to belong to namespace required: false inverse_of => custom_emoji
    is expected to belong to creator required: false inverse_of => created_custom_emoji
    is expected to have db column named file
    is expected to validate that :creator cannot be empty/falsy
    is expected to validate that the length of :name is at most 36
    is expected to validate that :name cannot be empty/falsy
    is expected to have db column named external
  exclusion of duplicated emoji
    disallows emoji names of built-in emoji
    disallows very long invalid emoji name without regular expression backtracking issues
    disallows duplicate custom emoji names within namespace
    disallows non http and https file value
# [RSpecRunTime] RSpec elapsed time: 18 minutes 51.86 seconds. Current RSS: ~1382M. Threads: 4. load average: 1.12 1.16 1.02 1/279 11415
.

  #for_resource
    is expected to eq [#<CustomEmoji id: 2, namespace_id: 1391, created_at: "2024-11-22 02:03:59.362018444 +0000", updated_...custom_emoji2", file: "https://gitlab.com/images/partyparrot.png", external: true, creator_id: 972>]
    when group is nil
      is expected to eq []
    when resource is a project
      is expected to eq []
  #for_namespaces
    is expected to eq [#<CustomEmoji id: 3, namespace_id: 1395, created_at: "2024-11-22 02:04:00.318933295 +0000", updated_...flying_parrot", file: "https://gitlab.com/images/partyparrot.png", external: true, creator_id: 974>]
    does not add sql injections in the query
    with subgroup
      is expected to eq [#<CustomEmoji id: 4, namespace_id: 1397, created_at: "2024-11-22 02:04:00.738564744 +0000", updated_...flying_parrot", file: "https://gitlab.com/images/partyparrot.png", external: true, creator_id: 975>]
  #url
    uses the asset proxy

# [RSpecRunTime] Finishing example group spec/models/custom_emoji_spec.rb. It took 3.48 seconds. Expected to take 3.98 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/import_export/command_line_util_spec.rb. Expected to take 3.73 seconds.

Gitlab::ImportExport::CommandLineUtil
  #download_or_copy_upload
    when the upload is local
      copies the file
    when the upload is remote
      downloads the file
  #download
    a non-localhost uri
      with ok status code
        gets the contents
        streams the contents via Gitlab::HTTP
        does not get the content over the size_limit
        gets the content within the size_limit
      with a redirect status code MOVED_PERMANENTLY
        logs the redirect
      with a redirect status code FOUND
        logs the redirect
      with a redirect status code SEE_OTHER
        logs the redirect
      with a redirect status code TEMPORARY_REDIRECT
        logs the redirect
      with an invalid status code ACCEPTED
        throws an error
      with an invalid status code UNAUTHORIZED
        throws an error
      with an invalid status code BAD_REQUEST
        throws an error
    a localhost uri
      throws a blocked url error
      for object_storage uri
        gets the content
  #gzip
    compresses specified file
    when exception occurs
      raises an exception
  #gunzip
    decompresses specified file
    when exception occurs
      raises an exception
  #tar_cf
    archives a folder without compression
    when something goes wrong
      raises an error
  #untar_zxf
    has the right mask for project.json
    has the right mask for uploads
    behaves like deletes symlinks
      deletes the symlinks
    behaves like handles shared hard links
      raises an exception and deletes the extraction dir
    behaves like deletes pipes
      deletes the pipes
  #untar_xf
    extracts archive without decompression
    behaves like deletes symlinks
      deletes the symlinks
    behaves like handles shared hard links
      raises an exception and deletes the extraction dir
    behaves like deletes pipes
      deletes the pipes
    when something goes wrong
      raises an error
      returns false and includes error status

# [RSpecRunTime] Finishing example group spec/lib/gitlab/import_export/command_line_util_spec.rb. It took 3.09 seconds. Expected to take 3.73 seconds.
# [RSpecRunTime] Starting example group spec/helpers/auth_helper_spec.rb. Expected to take 3.64 seconds.

AuthHelper
  #enabled_button_based_providers_for_signup
    when allow_single_sign_on is true
      returns ["github", "gitlab"]
    when allow_single_sign_on is false
      returns []
    when allow_single_sign_on is ["github"]
      returns ["github"]
    when allow_single_sign_on is []
      returns []
  #signup_button_based_providers_enabled?
    when omniauth is true and allow_single_sign_on is true
      returns true
    when omniauth is true and allow_single_sign_on is ["github"]
      returns true
    when omniauth is false and allow_single_sign_on is true
      returns false
    when omniauth is true and allow_single_sign_on is false
      returns false
    when omniauth is true and allow_single_sign_on is []
      returns false
  button_based_providers
    returns all enabled providers from devise
    does not return ldap provider
    returns empty array
  providers_for_base_controller
    returns all enabled providers from devise
    excludes ldap providers
  form_based_providers
    includes LDAP providers
    includes crowd provider
  form_based_auth_provider_has_active_class?
    selects main LDAP server
  any_form_based_providers_enabled?
    detects form-based providers
    ignores ldap providers when ldap web sign in is disabled
  enabled_button_based_providers
    all providers are enabled to sign in
      returns all the enabled providers from settings in expected order
      puts google and github in the beginning
    GitHub OAuth sign in is disabled from application setting
      doesn't return github as provider
  popular_enabled_button_based_providers
    returns the intersection set of popular & enabled providers
  button_based_providers_enabled?
    button based providers enabled
      returns true
    all the button based providers are disabled via application_setting
      returns false
  #link_provider_allowed?
    delegates to identity provider policy
  #unlink_provider_allowed?
    delegates to identity provider policy
  #provider_has_icon?
    returns true for defined providers
    returns false for undefined providers
    when provider is defined by config
      returns true
    when provider is not defined by config
      returns true
  #allow_admin_mode_password_authentication_for_web?
    is expected to equal true
    when password authentication for web is disabled
      is expected to equal false
    when current_user is an ldap user
      is expected to equal false
    when user got password automatically set
      is expected to equal false
  #auth_active?
    for atlassian_oauth2 provider
      returns true when present
      returns false when not present
    for other omniauth providers
      returns true when present
      returns false when not present
  #auth_app_owner_text
    when owner is a user
      behaves like generates text with the correct info
        includes the name of the application owner
    when owner is a group
      behaves like generates text with the correct info
        includes the name of the application owner
    when the user is missing
      returns nil
  #saml_providers
    when SAML is enabled without specifying a strategy class
      returns the saml provider
    when configuration specifies no provider
      returns an empty list
    when configuration specifies a provider with a SAML strategy_class
      returns the provider
    when configuration specifies two providers with a SAML strategy_class
      returns the provider
    when configuration specifies a provider with a non-SAML strategy_class
      returns an empty list
    when configuration specifies four providers but only two with SAML strategy_class
      returns the provider
  #delete_otp_authenticator_data
    when password is required
      returns data to delete the OTP authenticator
    when password is not required
      returns data to delete the OTP authenticator
  #delete_webauthn_device_data
    when password is required
      returns data to delete a WebAuthn device
    when password is not required
      returns data to delete a WebAuthn device
  #disable_two_factor_authentication_data
    when password is required
      returns data to disable two-factor authentication
    when password is not required
      returns data to disable two-factor authentication
  #codes_two_factor_authentication_data
    when password is required
      returns data to delete the OTP authenticator
    when password is not required
      returns data to delete the OTP authenticator

# [RSpecRunTime] Finishing example group spec/helpers/auth_helper_spec.rb. It took 3.25 seconds. Expected to take 3.64 seconds.
# [RSpecRunTime] Starting example group spec/models/concerns/batch_nullify_dependent_associations_spec.rb. Expected to take 3.52 seconds.

BatchNullifyDependentAssociations
  does not allow STI
  .dependent_associations_to_nullify
    returns only associations with `dependent: :nullify` associations
  #nullify_dependent_associations_in_batches
    nullifies multiple settings
    excludes associations
# [RSpecRunTime] RSpec elapsed time: 19 minutes 3.58 seconds. Current RSS: ~1377M. Threads: 4. load average: 1.26 1.19 1.03 1/279 11463
.


# [RSpecRunTime] Finishing example group spec/models/concerns/batch_nullify_dependent_associations_spec.rb. It took 3.63 seconds. Expected to take 3.52 seconds.
# [RSpecRunTime] Starting example group spec/graphql/mutations/customer_relations/contacts/create_spec.rb. Expected to take 3.39 seconds.

Mutations::CustomerRelations::Contacts::Create
  is expected to require graphql authorizations :admin_crm_contact
  #resolve
    when the user does not have permission
      raises an error
    when the user has permission
      creates contact with correct values
      when crm_enabled is false
        raises an error
      when the params are invalid
        returns the validation error
      when attaching to an crm_organization
        when all ok
          creates contact with correct values
        when crm_organization does not exist
          returns the relevant error
        when crm_organzation belongs to a different group
          returns the relevant error

# [RSpecRunTime] Finishing example group spec/graphql/mutations/customer_relations/contacts/create_spec.rb. It took 3.77 seconds. Expected to take 3.39 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/import/merge_request_creator_spec.rb. Expected to take 3.24 seconds.

Gitlab::Import::MergeRequestCreator
  #execute
    merge request already exists
      updates the data
# [RSpecRunTime] RSpec elapsed time: 19 minutes 9.47 seconds. Current RSS: ~1390M. Threads: 4. load average: 1.38 1.22 1.04 1/282 11533
.

    new merge request
      creates a new merge request
# [RSpecRunTime] RSpec elapsed time: 19 minutes 10.9 seconds. Current RSS: ~1402M. Threads: 4. load average: 1.38 1.22 1.04 1/283 11565
.


# [RSpecRunTime] Finishing example group spec/lib/gitlab/import/merge_request_creator_spec.rb. It took 3.55 seconds. Expected to take 3.24 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/github_import/push_placeholder_references_spec.rb. Expected to take 3.19 seconds.

Gitlab::GithubImport::PushPlaceholderReferences
  #push_with_composite_key
    pushes the reference with composite key
# [RSpecRunTime] RSpec elapsed time: 19 minutes 12.64 seconds. Current RSS: ~1407M. Threads: 4. load average: 1.38 1.22 1.04 1/283 11566
.

  #push_with_record
    pushes the reference using .from_record
  #push_refs_with_ids
    pushes the reference using .new

# [RSpecRunTime] Finishing example group spec/lib/gitlab/github_import/push_placeholder_references_spec.rb. It took 3.36 seconds. Expected to take 3.19 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/reindexing/index_selection_spec.rb. Expected to take 3.04 seconds.

Gitlab::Database::Reindexing::IndexSelection
  orders by highest relative bloat first
  excludes indexes with a relative bloat level below 20%
  excludes indexes smaller than 1 GiB ondisk size
  includes indexes larger than 100 GiB ondisk size
  with time frozen
    does not return indexes with reindex action in the last 10 days
# [RSpecRunTime] RSpec elapsed time: 19 minutes 16.04 seconds. Current RSS: ~1402M. Threads: 4. load average: 1.43 1.23 1.05 1/282 11567
.

  with restricted tables
    when executed on Fridays
      is expected not to include #<Gitlab::Database::PostgresIndex identifier: "public.some_index_74", indexrelid: 74, schema: "public...efinition: "CREATE INDEX public.some_index_74 ON ci_builds (ba...", ondisk_size_bytes: 107374182400>
    when executed on Saturdays
      is expected to include #<Gitlab::Database::PostgresIndex identifier: "public.some_index_85", indexrelid: 85, schema: "public...efinition: "CREATE INDEX public.some_index_85 ON ci_builds (ba...", ondisk_size_bytes: 107374182400>
    when executed on Sundays
      is expected not to include #<Gitlab::Database::PostgresIndex identifier: "public.some_index_96", indexrelid: 96, schema: "public...efinition: "CREATE INDEX public.some_index_96 ON ci_builds (ba...", ondisk_size_bytes: 107374182400>
    when executed on Mondays
      is expected not to include #<Gitlab::Database::PostgresIndex identifier: "public.some_index_107", indexrelid: 107, schema: "publ...efinition: "CREATE INDEX public.some_index_107 ON ci_builds (b...", ondisk_size_bytes: 107374182400>

# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/reindexing/index_selection_spec.rb. It took 2.73 seconds. Expected to take 3.04 seconds.
# [RSpecRunTime] Starting example group spec/services/incident_management/link_alerts/create_service_spec.rb. Expected to take 3.0 seconds.

IncidentManagement::LinkAlerts::CreateService
  #execute
    when current user is a guest
      responds with error
      does not link alerts to the incident
# [RSpecRunTime] RSpec elapsed time: 19 minutes 19.02 seconds. Current RSS: ~1382M. Threads: 4. load average: 1.43 1.23 1.05 1/282 11568
.

    when current user is a developer
      responds with success
      links alerts to the incident
      when linking an already linked alert
        does not change incident alerts list
      when linking an alert from another project
        links an external alert to the incident
    when current user does not have permission to read alerts on external project
      when linking alerts from current and external projects
        links only alerts the current user can read

# [RSpecRunTime] Finishing example group spec/services/incident_management/link_alerts/create_service_spec.rb. It took 3.34 seconds. Expected to take 3.0 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/cleanup/remote_uploads_spec.rb. Expected to take 2.86 seconds.

Gitlab::Cleanup::RemoteUploads
  when object_storage is enabled
    when dry_run is set to false
      moves files that are not in uploads table
# [RSpecRunTime] RSpec elapsed time: 19 minutes 21.95 seconds. Current RSS: ~1390M. Threads: 4. load average: 1.39 1.22 1.05 1/280 11569
.

    when dry_run is set to true
      does not move filese
# [RSpecRunTime] RSpec elapsed time: 19 minutes 23.4 seconds. Current RSS: ~1397M. Threads: 4. load average: 1.39 1.22 1.05 1/279 11570
.

  when object_storage is not enabled
    does not connect to any storage
  when a bucket prefix is configured
    does not connect to any storage

# [RSpecRunTime] Finishing example group spec/lib/gitlab/cleanup/remote_uploads_spec.rb. It took 3.14 seconds. Expected to take 2.86 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/auth/user_access_denied_reason_spec.rb. Expected to take 2.81 seconds.

Gitlab::Auth::UserAccessDeniedReason
  #rejection_message
    when a user is blocked
      is expected to match /blocked/
    a user did not accept the enforced terms
      is expected to match /must accept the Terms of Service/
      is expected to include "user680"
      is expected to include "http://localhost"
# [RSpecRunTime] RSpec elapsed time: 19 minutes 26.13 seconds. Current RSS: ~1439M. Threads: 4. load average: 1.36 1.22 1.05 1/279 11571
.

    when the user is internal
      is expected to match /This action cannot be performed by internal users/
    when the user is deactivated
      is expected to eq "Your account has been deactivated by your administrator. Please log back in from a web browser to reactivate your account at http://localhost"
    when the user is unconfirmed
      is expected to match /Your primary email address is not confirmed/
    when the user is blocked pending approval
      is expected to eq "Your account is pending approval from your administrator and hence blocked."
    when the user has expired password
      is expected to eq "Your password expired. Please access GitLab from a web browser to update your password."

# [RSpecRunTime] Finishing example group spec/lib/gitlab/auth/user_access_denied_reason_spec.rb. It took 3.3 seconds. Expected to take 2.81 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/postgres_hll/batch_distinct_counter_spec.rb. Expected to take 2.68 seconds.

Gitlab::Database::PostgresHll::BatchDistinctCounter
  unit test for different counting parameters
    #execute
      builds hll buckets
      defaults batch size to 10000
      when a transaction is open
        raises an error
# [RSpecRunTime] RSpec elapsed time: 19 minutes 29.69 seconds. Current RSS: ~1432M. Threads: 4. load average: 1.33 1.22 1.05 1/279 11572
.

      disallowed configurations
        raises WRONG_CONFIGURATION_ERROR if start is bigger than finish
        raises WRONG_CONFIGURATION_ERROR if data volume exceeds upper limit
        raises WRONG_CONFIGURATION_ERROR if batch size is less than min required

# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/postgres_hll/batch_distinct_counter_spec.rb. It took 3.04 seconds. Expected to take 2.68 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/analytics/cycle_analytics/stage_events/plan_stage_start_spec.rb. Expected to take 2.6 seconds.

Gitlab::Analytics::CycleAnalytics::StageEvents::PlanStageStart
  filters issues where first_associated_with_milestone_at or first_added_to_board_at is filled
  behaves like LEFT JOIN-able value stream analytics event
    can use the event as LEFT JOIN
    when looking at the record with data
      contains the timestamp expression
# [RSpecRunTime] RSpec elapsed time: 19 minutes 33.98 seconds. Current RSS: ~1410M. Threads: 4. load average: 1.33 1.22 1.05 1/279 11573
.

    when looking at the record without data
      returns nil for the timestamp expression
  behaves like value stream analytics event
    is expected to be a kind of String
    is expected to be a kind of Symbol
    is expected to include ApplicationRecord(abstract)
    is expected to respond to #timestamp_projection
    is expected to respond to #html_description
    is expected to be a kind of Array
    #apply_query_customization
      expects an ActiveRecord::Relation object as argument and returns a modified version of it
    #hash_code
      returns a hash that uniquely identifies an event
      does not differ when the same object is built with the same params

# [RSpecRunTime] Finishing example group spec/lib/gitlab/analytics/cycle_analytics/stage_events/plan_stage_start_spec.rb. It took 4.51 seconds. Expected to take 2.6 seconds.
# [RSpecRunTime] Starting example group spec/workers/invalid_gpg_signature_update_worker_spec.rb. Expected to take 2.48 seconds.

InvalidGpgSignatureUpdateWorker
  when GpgKey is found
    calls NotificationService.new.run
# [RSpecRunTime] RSpec elapsed time: 19 minutes 36.88 seconds. Current RSS: ~1394M. Threads: 4. load average: 1.31 1.21 1.05 1/279 11615
.

  when GpgKey is not found
    does not raise errors
    does not call NotificationService.new.run

# [RSpecRunTime] Finishing example group spec/workers/invalid_gpg_signature_update_worker_spec.rb. It took 2.63 seconds. Expected to take 2.48 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/sidekiq_migrate_jobs_spec.rb. Expected to take 2.43 seconds.

Gitlab::SidekiqMigrateJobs
  #migrate_set
    scheduled jobs
      behaves like processing a set
        when the set is empty
          returns the number of scanned and migrated jobs
        when the set is not empty
          returns the number of scanned and migrated jobs
        when there are no matching jobs
          does not change any queue names
        when there are matching jobs
          migrates only the workers matching the given worker from the set
          allows migrating multiple workers at once
          allows migrating multiple workers to the same queue
          does not try to migrate jobs that are removed from the set during the migration
          does not try to migrate unmatched jobs that are added to the set during the migration
          iterates through the entire set of jobs
          logs output at the start, finish, and every LOG_FREQUENCY jobs
    retried jobs
      behaves like processing a set
        when the set is empty
          returns the number of scanned and migrated jobs
        when the set is not empty
          returns the number of scanned and migrated jobs
        when there are no matching jobs
          does not change any queue names
        when there are matching jobs
          migrates only the workers matching the given worker from the set
          allows migrating multiple workers at once
          allows migrating multiple workers to the same queue
          does not try to migrate jobs that are removed from the set during the migration
          does not try to migrate unmatched jobs that are added to the set during the migration
          iterates through the entire set of jobs
          logs output at the start, finish, and every LOG_FREQUENCY jobs
  #migrate_queues
    with all workers mapped to default queue
      behaves like migrating queues
        migrates the jobs to the correct destination queue
    with custom mapping to different queues
      behaves like migrating queues
        migrates the jobs to the correct destination queue
    with illegal JSON payload
      behaves like migrating queues
        migrates the jobs to the correct destination queue
    when multiple workers are in the same queue
      when the queue exists in mappings
        behaves like migrating queues
          migrates the jobs to the correct destination queue
      when the queue doesnt exist in mappings
        behaves like migrating queues
          migrates the jobs to the correct destination queue

# [RSpecRunTime] Finishing example group spec/lib/gitlab/sidekiq_migrate_jobs_spec.rb. It took 1.7 seconds. Expected to take 2.43 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/config/external/file/remote_spec.rb. Expected to take 2.31 seconds.

Gitlab::Ci::Config::External::File::Remote
  #matching?
    when a remote is specified
      returns true
    with a missing remote
      returns false
    with a missing remote key
      returns false
  #valid?
    when is a valid remote url
      is expected to be truthy
    with an irregular url
      is expected to be falsy
    with a timeout
      is expected to be falsy
    when is not a yaml file
      is expected to be falsy
    with an internal url
      is expected to be falsy
  #content
    with a valid remote file
      returns the content of the file
    with a timeout
      is falsy
    with an invalid remote url
      is nil
    with an internal url
      is nil
  #preload_content
    when the parallel request queue is full
      waits for the queue
# [RSpecRunTime] RSpec elapsed time: 19 minutes 40.26 seconds. Current RSS: ~1381M. Threads: 5. load average: 1.28 1.21 1.05 1/281 11617
.

  #error_message
    when remote file location is not valid
      returns an error message describing invalid address
    when timeout error has been raised
      returns error message about a timeout
    when HTTP error has been raised
      returns error message about a HTTP error
    when response has 404 status
      returns error message about a timeout
    when the URL is blocked
      includes details about blocked URL
    when connection refused error has been raised
      returns details about connection failure
  #expand_context
    drops all parameters
  #metadata
    is expected to eq {:blob=>nil, :context_project=>nil, :context_sha=>"12345", :extra=>{}, :location=>"https://gitlab.com....yml", :raw=>"https://gitlab.com/gitlab-org/gitlab-foss/blob/1234/.[MASKED]xxx.yml", :type=>:remote}
  #to_hash
    with a valid remote file
      returns the content as a hash
    when it has `include` with rules:exists
      returns the content as a hash
    when interpolation has been used
      returns the content as a hash

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/config/external/file/remote_spec.rb. It took 2.44 seconds. Expected to take 2.31 seconds.
# [RSpecRunTime] Starting example group spec/workers/ci/catalog/resources/aggregate_last30_day_usage_worker_spec.rb. Expected to take 2.28 seconds.

Ci::Catalog::Resources::AggregateLast30DayUsageWorker
  is labeled as idempotent
  has the option to reschedule once if deduplicated and a TTL
  performs multiple times sequentially without raising an exception
  has the `until_executed` deduplicate strategy
  #perform
    aggregates and updates usage counts for all catalog resources
    logs the service response
# [RSpecRunTime] RSpec elapsed time: 19 minutes 43.42 seconds. Current RSS: ~1385M. Threads: 5. load average: 1.28 1.21 1.05 2/281 11618
.


# [RSpecRunTime] Finishing example group spec/workers/ci/catalog/resources/aggregate_last30_day_usage_worker_spec.rb. It took 2.31 seconds. Expected to take 2.28 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/templates/Diffblue_Cover_spec.rb. Expected to take 2.16 seconds.

Diffblue-Cover.gitlab-ci.yml
  the created pipeline
    creates diffblue-cover jobs
# [RSpecRunTime] RSpec elapsed time: 19 minutes 45.54 seconds. Current RSS: ~1396M. Threads: 5. load average: 1.26 1.21 1.05 1/285 11699
.


# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/templates/Diffblue_Cover_spec.rb. It took 2.12 seconds. Expected to take 2.16 seconds.
# [RSpecRunTime] Starting example group spec/models/concerns/after_commit_queue_spec.rb. Expected to take 2.14 seconds.

AfterCommitQueue
  does not allow STI
  #run_after_commit
    runs after record is saved
    runs after transaction is committed
  #run_after_commit_or_now
    runs immediately if not within a transction
    runs after transaction has completed
    multiple databases - Ci::ApplicationRecord models
      runs immediately if not within a transaction
      runs after transaction has completed

# [RSpecRunTime] Finishing example group spec/models/concerns/after_commit_queue_spec.rb. It took 1.53 seconds. Expected to take 2.14 seconds.
# [RSpecRunTime] Starting example group spec/workers/analytics/usage_trends/counter_job_worker_spec.rb. Expected to take 2.05 seconds.

Analytics::UsageTrends::CounterJobWorker
  is labeled as idempotent
  performs multiple times sequentially without raising an exception
  counts a scope and stores the result
  does not raise error when inserting duplicated measurement
  does not insert anything when BatchCount returns error
  when no records are in the database
    sets 0 as the count
  when the timeout elapses
    continues counting later when the timeout elapses
  when pipelines_succeeded identifier is passed
    counts successful pipelines
  when issues identifier is passed
    does not count group level work items

# [RSpecRunTime] Finishing example group spec/workers/analytics/usage_trends/counter_job_worker_spec.rb. It took 1.86 seconds. Expected to take 2.05 seconds.
# [RSpecRunTime] Starting example group spec/workers/update_project_statistics_worker_spec.rb. Expected to take 2.01 seconds.

UpdateProjectStatisticsWorker
  #perform
    when a lease could be obtained
      updates the project statistics
# [RSpecRunTime] RSpec elapsed time: 19 minutes 50.09 seconds. Current RSS: ~1385M. Threads: 5. load average: 1.24 1.20 1.05 1/284 11723
.

    when a lease could not be obtained
      does not update the project statistics
# [RSpecRunTime] RSpec elapsed time: 19 minutes 51.34 seconds. Current RSS: ~1395M. Threads: 5. load average: 1.24 1.20 1.05 1/284 11742
.


# [RSpecRunTime] Finishing example group spec/workers/update_project_statistics_worker_spec.rb. It took 2.41 seconds. Expected to take 2.01 seconds.
# [RSpecRunTime] Starting example group spec/services/ci/trigger_downstream_pipeline_service_spec.rb. Expected to take 1.97 seconds.

Ci::TriggerDownstreamPipelineService
  #execute
    when the bridge does not trigger a downstream pipeline
      returns a success response
# [RSpecRunTime] RSpec elapsed time: 19 minutes 52.43 seconds. Current RSS: ~1404M. Threads: 5. load average: 1.24 1.20 1.05 1/284 11761
.

    rate limiting
      when the limit is exceeded
        drops the bridge and does not schedule the downstream pipeline worker
        behaves like creates a log entry
          is expected to receive info(a hash including {:class => "Ci::TriggerDownstreamPipelineService", :project_id => 513, :current_user...:downstream_type => "multi-project", :message => "Activated downstream pipeline trigger rate limit"}) 1 time
        with a child pipeline
          drops the bridge and does not schedule the downstream pipeline worker
          behaves like creates a log entry
            is expected to receive info(a hash including {:class => "Ci::TriggerDownstreamPipelineService", :project_id => 513, :current_user...fault", :downstream_type => "child", :message => "Activated downstream pipeline trigger rate limit"}) 1 time
      when the limit is not exceeded
        schedules the downstream pipeline worker
        does not create a log entry

# [RSpecRunTime] Finishing example group spec/services/ci/trigger_downstream_pipeline_service_spec.rb. It took 2.27 seconds. Expected to take 1.97 seconds.
# [RSpecRunTime] Starting example group spec/services/achievements/award_service_spec.rb. Expected to take 1.88 seconds.

Achievements::AwardService
  #execute
    when user does not have permission
      returns an error
    when user has permission
      creates an achievement and sends an e-mail
      when the achievement is not persisted
        returns the correct error
      when the achievement does not exist
        returns the correct error
      when the recipient does not exist
        returns the correct error

# [RSpecRunTime] Finishing example group spec/services/achievements/award_service_spec.rb. It took 1.08 seconds. Expected to take 1.88 seconds.
# [RSpecRunTime] Starting example group spec/services/namespaces/update_denormalized_descendants_service_spec.rb. Expected to take 1.85 seconds.

Namespaces::UpdateDenormalizedDescendantsService
  updates an outdated cache
  when the namespace was removed in the meantime
    removes the cache record
# [RSpecRunTime] RSpec elapsed time: 19 minutes 56.1 seconds. Current RSS: ~1390M. Threads: 5. load average: 1.14 1.18 1.04 1/282 11787
.

  when passing in a namespace without cache
    does nothing
  when passing in a non existing namespace
    does nothing

# [RSpecRunTime] Finishing example group spec/services/namespaces/update_denormalized_descendants_service_spec.rb. It took 1.54 seconds. Expected to take 1.85 seconds.
# [RSpecRunTime] Starting example group spec/graphql/types/snippets/blob_type_spec.rb. Expected to take 1.8 seconds.

Types::Snippets::BlobType
  has the correct fields
  simpleViewer
    is expected to match (be non null)
    behaves like a field from the snippet blob presenter
      resolves using the presenter
# [RSpecRunTime] RSpec elapsed time: 19 minutes 57.4 seconds. Current RSS: ~1390M. Threads: 5. load average: 1.14 1.18 1.04 1/283 11816
.

  size
    is expected to match (be non null)
    behaves like a field from the snippet blob presenter
      resolves using the presenter
  binary
    is expected to match (be non null)
    behaves like a field from the snippet blob presenter
      resolves using the presenter
  rawPath
    is expected to match (be non null)
    behaves like a field from the snippet blob presenter
      resolves using the presenter
  rawPlainData
    is expected to match (be nullable)
    behaves like a field from the snippet blob presenter
      resolves using the presenter
  path
    is expected to match (be nullable)
    behaves like a field from the snippet blob presenter
      resolves using the presenter
  mode
    is expected to match (be nullable)
    behaves like a field from the snippet blob presenter
      resolves using the presenter
  renderedAsText
    is expected to match (be non null)
    behaves like a field from the snippet blob presenter
      resolves using the presenter
  richData
    is expected to match (be nullable)
    behaves like a field from the snippet blob presenter
      resolves using the presenter
  plainData
    is expected to match (be nullable)
    behaves like a field from the snippet blob presenter
      resolves using the presenter
  name
    is expected to match (be nullable)
    behaves like a field from the snippet blob presenter
      resolves using the presenter
  externalStorage
    is expected to match (be nullable)
    behaves like a field from the snippet blob presenter
      resolves using the presenter
  richViewer
    is expected to match (be nullable)
    behaves like a field from the snippet blob presenter
      resolves using the presenter

# [RSpecRunTime] Finishing example group spec/graphql/types/snippets/blob_type_spec.rb. It took 1.89 seconds. Expected to take 1.8 seconds.
# [RSpecRunTime] Starting example group spec/helpers/jira_connect_helper_spec.rb. Expected to take 1.72 seconds.

JiraConnectHelper
  #jira_connect_app_data
    user is not logged in
      includes Jira Connect app attributes
      passes group as "skip_groups" param
      assigns gitlab_user_path to nil
      assignes public_key_storage_enabled to false
      with oauth_metadata
        assigns oauth_metadata
        includes oauth_authorize_url with all params
        with self-managed instance
          points urls to the self-managed instance
          with relative_url_root
            points urls to the self-managed instance
      when public_key_storage is enabled
        assignes public_key_storage_enabled to true
    user is logged in
      assigns users_path to nil
      assigns gitlab_user_path correctly

# [RSpecRunTime] Finishing example group spec/helpers/jira_connect_helper_spec.rb. It took 1.21 seconds. Expected to take 1.72 seconds.
# [RSpecRunTime] Starting example group spec/finders/projects/topics_finder_spec.rb. Expected to take 1.72 seconds.

Projects::TopicsFinder
  #execute
    returns topics
    filter by name
      search: "topic", result: ["topicC", "topicA", "topicB"]
        returns filtered topics
# [RSpecRunTime] RSpec elapsed time: 20 minutes 1.03 seconds. Current RSS: ~1385M. Threads: 5. load average: 1.21 1.20 1.05 1/283 11817
.

      search: "pic", result: ["topicC", "topicA", "topicB"]
        returns filtered topics
      search: "B", result: []
        returns filtered topics
      search: "cB", result: []
        returns filtered topics
      search: "icB", result: ["topicB"]
        returns filtered topics
      search: "topicA", result: ["topicA"]
        returns filtered topics
      search: "topica", result: ["topicA"]
        returns filtered topics
    filter by without_projects
      returns topics without assigned projects
      returns topics without assigned projects

# [RSpecRunTime] Finishing example group spec/finders/projects/topics_finder_spec.rb. It took 2.05 seconds. Expected to take 1.72 seconds.
# [RSpecRunTime] Starting example group spec/routing/environments_spec.rb. Expected to take 1.65 seconds.

environments routing
  routing environment folders
    when using JSON format
      correctly matches environment name and JSON format
    when using HTML format
      correctly matches environment name and HTML format
    when using implicit format
      correctly matches environment name

# [RSpecRunTime] Finishing example group spec/routing/environments_spec.rb. It took 2.01 seconds. Expected to take 1.65 seconds.
# [RSpecRunTime] Starting example group spec/models/ci/catalog/resources/components/last_usage_spec.rb. Expected to take 1.6 seconds.

Ci::Catalog::Resources::Components::LastUsage
  is expected to belong to component_project class_name => Project required: false
  does not allow STI
  is expected to belong to component class_name => Ci::Catalog::Resources::Component required: false
  is expected to belong to catalog_resource class_name => Ci::Catalog::Resource required: false
  validations
    is expected to validate that :component cannot be empty/falsy
    is expected to validate that :last_used_date cannot be empty/falsy
    is expected to validate that :catalog_resource cannot be empty/falsy
    is expected to validate that :component_project cannot be empty/falsy
    is expected to validate that :used_by_project_id cannot be empty/falsy
    validates uniqueness of last_used_date
    validates uniqueness of the index
    .get_usage_for
      when no record exists
        initializes a new record
# [RSpecRunTime] RSpec elapsed time: 20 minutes 5.09 seconds. Current RSS: ~1376M. Threads: 5. load average: 1.19 1.19 1.05 1/282 11818
.

      when a record exists
        returns the existing record

# [RSpecRunTime] Finishing example group spec/models/ci/catalog/resources/components/last_usage_spec.rb. It took 1.76 seconds. Expected to take 1.6 seconds.
# [RSpecRunTime] Starting example group spec/services/virtual_registries/packages/maven/cached_responses/create_or_update_service_spec.rb. Expected to take 1.56 seconds.

VirtualRegistries::Packages::Maven::CachedResponses::CreateOrUpdateService
  #execute
    with a User
      behaves like returning a service response success response
        behaves like creating a new cached response
          returns a success service response
# [RSpecRunTime] RSpec elapsed time: 20 minutes 6.25 seconds. Current RSS: ~1373M. Threads: 5. load average: 1.19 1.19 1.05 1/282 11819
.

        in FIPS mode
          behaves like creating a new cached response
            returns a success service response
      with an existing cached response
        updates it
    with a DeployToken
      behaves like returning a service response success response
        behaves like creating a new cached response
          returns a success service response
        in FIPS mode
          behaves like creating a new cached response
            returns a success service response
    with no path
      is expected to eq #<ServiceResponse:0x00007c7f2b3b8ea0 @status=:error, @message="Parameter path not present", @payload={}, @http_status=nil, @reason=:path_not_present>
    with no file
      is expected to eq #<ServiceResponse:0x00007c7f2b3b8e50 @status=:error, @message="Parameter file not present", @payload={}, @http_status=nil, @reason=:file_not_present>
    with no upstream
      is expected to eq #<ServiceResponse:0x00007c7f2b3b8ef0 @status=:error, @message="Unauthorized", @payload={}, @http_status=nil, @reason=:unauthorized>
    with no user
      is expected to eq #<ServiceResponse:0x00007c7f2b3b8ef0 @status=:error, @message="Unauthorized", @payload={}, @http_status=nil, @reason=:unauthorized>

# [RSpecRunTime] Finishing example group spec/services/virtual_registries/packages/maven/cached_responses/create_or_update_service_spec.rb. It took 1.83 seconds. Expected to take 1.56 seconds.
# [RSpecRunTime] Starting example group spec/helpers/ci/secure_files_helper_spec.rb. Expected to take 1.52 seconds.

Ci::SecureFilesHelper
  #show_secure_files_setting
    when disabled at the instance level
      is expected to equal false
# [RSpecRunTime] RSpec elapsed time: 20 minutes 8.16 seconds. Current RSS: ~1369M. Threads: 5. load average: 1.19 1.19 1.05 1/281 11820
.

    authenticated user with admin permissions
      is expected to equal true
    authenticated user with read permissions
      is expected to equal true
    authenticated user with guest permissions
      is expected to equal false
    authenticated user with no permissions
      is expected to equal false
    unconfirmed user
      is expected to equal false
    unauthenticated user
      is expected to equal false

# [RSpecRunTime] Finishing example group spec/helpers/ci/secure_files_helper_spec.rb. It took 1.49 seconds. Expected to take 1.52 seconds.
# [RSpecRunTime] Starting example group spec/lib/api/entities/draft_note_spec.rb. Expected to take 1.46 seconds.

API::Entities::DraftNote
  exposes correct attributes

# [RSpecRunTime] Finishing example group spec/lib/api/entities/draft_note_spec.rb. It took 1.5 seconds. Expected to take 1.46 seconds.
# [RSpecRunTime] RSpec elapsed time: 20 minutes 10.04 seconds. Current RSS: ~1383M. Threads: 5. load average: 1.18 1.19 1.04 1/284 11880
.

# [RSpecRunTime] Starting example group spec/models/ci/tag_spec.rb. Expected to take 1.44 seconds.

Ci::Tag
  does not allow STI
  is expected to have many taggings class_name => Ci::Tagging
  .named_any
    is expected to contain exactly #<Ci::Tag id: 2, name: "awesome", taggings_count: 0> and #<Ci::Tag id: 3, name: "epic", taggings_count: 0>
  .find_or_create_with_like_by_name
    creates a tag
    returns the Tag record
    when tag already exists
      does not create new tag
      returns the Tag record
  .for_context
    returns the tags for the specified context
  #to_s
    is expected to eq "Awesome"
  .find_or_create_all_with_like_by_name
    creates a tag
    returns the Tag record
    with some tags already existing
      creates only the missing tag
      returns the Tag records
    with all tags already existing
      does not create new tags
      returns the Tag records
  .named_like
    is expected to contain exactly #<Ci::Tag id: 1, name: "Awesome", taggings_count: 0> and #<Ci::Tag id: 2, name: "awesome", taggings_count: 0>
  #==
    is equal to itself
    is equal to another tag when the name matches
    is equal the other when the class matches
  validations
    is expected to validate that :name cannot be empty/falsy
    is expected to validate that :name is unique
    is expected to validate that the length of :name is at most 255
  .named
    is expected to contain exactly #<Ci::Tag id: 1, name: "Awesome", taggings_count: 0>

# [RSpecRunTime] Finishing example group spec/models/ci/tag_spec.rb. It took 1.16 seconds. Expected to take 1.44 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/blame_spec.rb. Expected to take 1.38 seconds.

Gitlab::Blame
  #first_line
    is expected to eq 1
    with a range
      is expected to eq 2
# [RSpecRunTime] RSpec elapsed time: 20 minutes 12.31 seconds. Current RSS: ~1387M. Threads: 5. load average: 1.18 1.19 1.04 1/285 11902
.

  #groups
    groups lines properly
    with a range 1..5
      returns the correct lines
      with highlighted lines
        returns the correct lines
        when highlighed lines are misaligned
          returns the correct lines
    with a range 2..4
      returns the correct lines
      with highlighted lines
        returns the correct lines
    renamed file
      adds previous path

# [RSpecRunTime] Finishing example group spec/lib/gitlab/blame_spec.rb. It took 1.57 seconds. Expected to take 1.38 seconds.
# [RSpecRunTime] Starting example group spec/helpers/ci/status_helper_spec.rb. Expected to take 1.38 seconds.

Ci::StatusHelper
  #render_ci_icon
    has 'Pipeline' as the status type in the title
    has the success status icon
    when pipeline has commit path
      links to commit
      has 'Pipeline' as the status type in the title
      has the correct status icon
    when showing status text
      contains status text
    when tooltip_placement is provided
      has the provided tooltip placement
    when container is provided
      has the provided container in data
    ci icon appearance
      status: "success", icon: "status_success_borderless", variant: "success"
        uses the correct variant and icon for status
      status: "success-with-warnings", icon: "status_warning_borderless", variant: "warning"
        uses the correct variant and icon for status
      status: "pending", icon: "status_pending_borderless", variant: "warning"
        uses the correct variant and icon for status
      status: "waiting-for-resource", icon: "status_pending_borderless", variant: "warning"
        uses the correct variant and icon for status
      status: "failed", icon: "status_failed_borderless", variant: "danger"
        uses the correct variant and icon for status
      status: "running", icon: "status_running_borderless", variant: "info"
        uses the correct variant and icon for status
      status: "preparing", icon: "status_preparing_borderless", variant: "neutral"
        uses the correct variant and icon for status
      status: "canceled", icon: "status_canceled_borderless", variant: "neutral"
        uses the correct variant and icon for status
      status: "created", icon: "status_created_borderless", variant: "neutral"
        uses the correct variant and icon for status
      status: "scheduled", icon: "status_scheduled_borderless", variant: "neutral"
        uses the correct variant and icon for status
      status: "play", icon: "play", variant: "neutral"
        uses the correct variant and icon for status
      status: "skipped", icon: "status_skipped_borderless", variant: "neutral"
        uses the correct variant and icon for status
      status: "manual", icon: "status_manual_borderless", variant: "neutral"
        uses the correct variant and icon for status
      status: "other-status", icon: "status_canceled_borderless", variant: "neutral"
        uses the correct variant and icon for status

# [RSpecRunTime] Finishing example group spec/helpers/ci/status_helper_spec.rb. It took 1.23 seconds. Expected to take 1.38 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/seeders/ci/variables_group_seeder_spec.rb. Expected to take 1.32 seconds.

Gitlab::Seeders::Ci::VariablesGroupSeeder
  #seed
    creates group-level CI variables with default values
    creates group-level CI variables with custom arguments
    creates group-level CI variables with unique environment scopes
ERROR: Group name is invalid.
    skips seeding when group name is invalid
WARNING: Group CI Variable with key 'GROUP_VAR_17' already exists. Skipping to next CI variable...
    skips CI variable creation if CI variable already exists
# [RSpecRunTime] RSpec elapsed time: 20 minutes 15.27 seconds. Current RSS: ~1388M. Threads: 5. load average: 1.16 1.19 1.04 1/284 11924
.


# [RSpecRunTime] Finishing example group spec/lib/gitlab/seeders/ci/variables_group_seeder_spec.rb. It took 1.28 seconds. Expected to take 1.32 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/jira_import/issues_importer_spec.rb. Expected to take 1.3 seconds.

Gitlab::JiraImport::IssuesImporter
  #imported_items_cache_key
    is expected to eq "jira-importer/already-imported/530/issues"
    behaves like raise exception if not implemented
      is expected not to raise Exception
# [RSpecRunTime] RSpec elapsed time: 20 minutes 16.51 seconds. Current RSS: ~1392M. Threads: 5. load average: 1.16 1.19 1.04 1/284 11925
.

  #execute
    when no returned issues
      does not schedule any import jobs
    with results returned
      when single page of results is returned
        schedules 2 import jobs
      when importing some issue raises an exception
        schedules 2 import jobs
      when duplicate results are returned
        schedules 2 import jobs

# [RSpecRunTime] Finishing example group spec/lib/gitlab/jira_import/issues_importer_spec.rb. It took 1.42 seconds. Expected to take 1.3 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/load_balancing/sidekiq_client_middleware_spec.rb. Expected to take 1.26 seconds.

Gitlab::Database::LoadBalancing::SidekiqClientMiddleware
  #call
    when worker cannot be constantized
      does not pass database locations
      sets job data consistency
    when worker class does not include ApplicationWorker
      does not pass database locations
      sets job data consistency
    when job contains wrapped worker
      when wrapped worker does not include WorkerAttributes
        does not pass database locations
        sets job data consistency
      when wrapped worker includes WorkerAttributes
        when write was not performed
          sets job data consistency
          when replica hosts are available
            passes database_replica_location
          when no replica hosts are available
            passes primary_write_location
        when write was performed
          passes primary write location
          sets job data consistency
    database wal location was already provided
      when write was performed
        does not set database locations again
      when write was not performed
        does not set database locations again
    when worker data consistency is :always
      does not pass database locations
      sets job data consistency
    when worker data consistency is :delayed
      when write was not performed
        sets job data consistency
        when replica hosts are available
          passes database_replica_location
        when no replica hosts are available
          passes primary_write_location
      when write was performed
        passes primary write location
        sets job data consistency
    when worker data consistency is :sticky
      when write was not performed
        sets job data consistency
        when replica hosts are available
          passes database_replica_location
        when no replica hosts are available
          passes primary_write_location
      when write was performed
        passes primary write location
        sets job data consistency

# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/load_balancing/sidekiq_client_middleware_spec.rb. It took 1.11 seconds. Expected to take 1.26 seconds.
# [RSpecRunTime] Starting example group spec/lib/gitlab/analytics/usage_trends/workers_argument_builder_spec.rb. Expected to take 1.21 seconds.

Gitlab::Analytics::UsageTrends::WorkersArgumentBuilder
  when no measurement identifiers are given
    returns empty array
  when measurement identifiers are given
    returns worker arguments
    when bogus measurement identifiers are given
      skips bogus measurement identifiers
# [RSpecRunTime] RSpec elapsed time: 20 minutes 18.93 seconds. Current RSS: ~1383M. Threads: 5. load average: 1.16 1.19 1.04 1/291 11926
.

    when custom min and max queries are present
      uses custom min/max for ids

# [RSpecRunTime] Finishing example group spec/lib/gitlab/analytics/usage_trends/workers_argument_builder_spec.rb. It took 1.52 seconds. Expected to take 1.21 seconds.
# [RSpecRunTime] Starting example group spec/services/web_hooks/create_service_spec.rb. Expected to take 1.18 seconds.

WebHooks::CreateService
  #execute
    when creating a new hook
      creates a new hook
    when the URL is invalid
      returns an error response
    when the branch filter is invalid
      returns an error response
    when the project is not provided
      returns an error response for missing project

# [RSpecRunTime] Finishing example group spec/services/web_hooks/create_service_spec.rb. It took 1.25 seconds. Expected to take 1.18 seconds.
# [RSpecRunTime] Starting example group spec/serializers/feature_flag_entity_spec.rb. Expected to take 1.15 seconds.

FeatureFlagEntity
  has feature flag attributes

# [RSpecRunTime] Finishing example group spec/serializers/feature_flag_entity_spec.rb. It took 1.18 seconds. Expected to take 1.15 seconds.
# [RSpecRunTime] RSpec elapsed time: 20 minutes 21.83 seconds. Current RSS: ~1387M. Threads: 5. load average: 1.15 1.18 1.04 4/286 11927
.

# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/config/entry/rules/rule/changes_spec.rb. Expected to take 1.09 seconds.

Gitlab::Ci::Config::Entry::Rules::Rule::Changes
  .new
    when using a string array
      is expected to be valid
    when using an integer array
      is expected not to be valid
      returns errors
    when using a string
      is expected not to be valid
      reports an error about invalid policy
    when using a long array
      is expected not to be valid
      returns errors
    when clause is empty
      is expected to be valid
    when policy strategy does not match
      is expected not to be valid
      returns information about errors
    with paths
      when paths is an array of strings
        is expected to be valid
      when paths is not an array
        is expected not to be valid
        returns information about errors
      when paths is an array of integers
        is expected not to be valid
        returns information about errors
      when paths is an array of long strings
        is expected not to be valid
        returns information about errors
      when paths is nil
        is expected not to be valid
        returns information about errors
    with paths and compare_to
      is expected to be valid
      when compare_to is not a string
        is expected not to be valid
        returns information about errors
  #value
    when using a string array
      is expected to eq {:paths=>["app/", "lib/", "spec/", "other/*", "paths/**/*.rb"]}
    with paths
      is expected to eq {:paths=>["app/", "lib/"]}
    with paths and compare_to
      is expected to eq {:compare_to=>"branch1", :paths=>["app/", "lib/"]}

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/config/entry/rules/rule/changes_spec.rb. It took 0.85 second. Expected to take 1.09 seconds.
# [RSpecRunTime] Starting example group spec/services/ci/pipeline_triggers/destroy_service_spec.rb. Expected to take 1.06 seconds.

Ci::PipelineTriggers::DestroyService
  #execute
    when user does not have permission
      returns an error
    when user has permission
      deletes the pipeline trigger token
      when destroy fails
        returns ServiceResponse.error

# [RSpecRunTime] Finishing example group spec/services/ci/pipeline_triggers/destroy_service_spec.rb. It took 1.16 seconds. Expected to take 1.06 seconds.
# [RSpecRunTime] Starting example group spec/presenters/member_presenter_spec.rb. Expected to take 1.04 seconds.

MemberPresenter
  #valid_level_roles
    does not return levels lower than user highest membership in the hierarchy
    returns all roles for the root group
  #role_type
    returns 'default'
  #member_role_description
    returns the correct role description
  #last_owner?
    raises `NotImplementedError`

# [RSpecRunTime] Finishing example group spec/presenters/member_presenter_spec.rb. It took 0.9 second. Expected to take 1.04 seconds.
# [RSpecRunTime] Starting example group spec/models/error_tracking/error_event_spec.rb. Expected to take 0.99 second.

ErrorTracking::ErrorEvent
  does not allow STI
  relationships
    is expected to belong to error required: false
  validations
    is expected to validate that :description cannot be empty/falsy
    is expected to validate that the length of :description is at most 1024
    is expected to validate that :occurred_at cannot be empty/falsy
    is expected to validate that the length of :level is at most 255
    is expected to validate that the length of :environment is at most 255
  #stacktrace
    builds a stacktrace
  #to_sentry_error_event
    is expected to be a kind of Gitlab::ErrorTracking::ErrorEvent

# [RSpecRunTime] Finishing example group spec/models/error_tracking/error_event_spec.rb. It took 0.84 second. Expected to take 0.99 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/github_import/importer/attachments/notes_importer_spec.rb. Expected to take 0.97 second.

Gitlab::GithubImport::Importer::Attachments::NotesImporter
  #sidekiq_worker_class
    is expected to eq Gitlab::GithubImport::Attachments::ImportNoteWorker
  #collection_method
    is expected to eq :note_attachments
  #object_type
    is expected to eq :note_attachment
  #sequential_import
    selects only user notes, and selects only properties it needs
    executes importer only for the note with an attachment
    when note has already been processed
      does not select notes that were processed
      does not execute importer for the note with an attachment
  #id_for_already_imported_cache
    is expected to eq 1000000051

# [RSpecRunTime] Finishing example group spec/lib/gitlab/github_import/importer/attachments/notes_importer_spec.rb. It took 0.99 second. Expected to take 0.97 second.
# [RSpecRunTime] Starting example group spec/serializers/project_access_token_entity_spec.rb. Expected to take 0.94 second.

ProjectAccessTokenEntity
  when bot is a member of the project
    has the correct attributes
  when bot is unrelated to the project
    has the correct attributes

# [RSpecRunTime] Finishing example group spec/serializers/project_access_token_entity_spec.rb. It took 1.22 seconds. Expected to take 0.94 second.
# [RSpecRunTime] Starting example group spec/uploaders/lfs_object_uploader_spec.rb. Expected to take 0.9 second.

LfsObjectUploader
  behaves like builds correct paths
    #store_dir
      behaves like matches the method pattern
        is expected to match /\h{2}\/\h{2}/
    #cache_dir
      behaves like matches the method pattern
        is expected to match /\/lfs-objects\/tmp\/cache/
    #work_dir
      behaves like matches the method pattern
        is expected to match /\/lfs-objects\/tmp\/work/
    #upload_path
      behaves like matches the method pattern
        example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
    #relative_path
      is relative (PENDING: Path not set, skipping.)
    .absolute_path
      behaves like matches the method pattern
        example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
    .base_dir
      behaves like matches the method pattern
        example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
    path traversal exploits
      throws an exception
  object store is REMOTE
    behaves like builds correct paths
      #store_dir
        behaves like matches the method pattern
          is expected to match /\h{2}\/\h{2}/
      #cache_dir
        behaves like matches the method pattern
          example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
      #work_dir
        behaves like matches the method pattern
          example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
      #upload_path
        behaves like matches the method pattern
          example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
      #relative_path
        is relative (PENDING: Path not set, skipping.)
      .absolute_path
        behaves like matches the method pattern
          example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
      .base_dir
        behaves like matches the method pattern
          example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.)
      path traversal exploits
        throws an exception
  remote file
    with object storage enabled
      can store file remotely

# [RSpecRunTime] Finishing example group spec/uploaders/lfs_object_uploader_spec.rb. It took 0.83 second. Expected to take 0.9 second.
# [RSpecRunTime] Starting example group spec/graphql/mutations/customer_relations/organizations/create_spec.rb. Expected to take 0.87 second.

Mutations::CustomerRelations::Organizations::Create
  is expected to require graphql authorizations :admin_crm_organization
  create organizations mutation
    #resolve
      when the user does not have permission
        raises an error
      when the user has permission
        when the params are invalid
          returns the validation error
        when the user has permission to create an organization
          creates organization with correct values

# [RSpecRunTime] Finishing example group spec/graphql/mutations/customer_relations/organizations/create_spec.rb. It took 0.77 second. Expected to take 0.87 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_project_type_active_online_metric_spec.rb. Expected to take 0.83 second.

Gitlab::Usage::Metrics::Instrumentations::CountCiRunnersProjectTypeActiveOnlineMetric
  behaves like a correct instrumented metric value
    has correct value

# [RSpecRunTime] Finishing example group spec/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_project_type_active_online_metric_spec.rb. It took 0.54 second. Expected to take 0.83 second.
# [RSpecRunTime] Starting example group spec/services/snippets/schedule_bulk_repository_shard_moves_service_spec.rb. Expected to take 0.8 second.

Snippets::ScheduleBulkRepositoryShardMovesService
  behaves like moves repository shard in bulk
    #execute
      schedules container repository storage moves
      read-only repository
        does not get scheduled
    .enqueue
      defers to the worker

# [RSpecRunTime] Finishing example group spec/services/snippets/schedule_bulk_repository_shard_moves_service_spec.rb. It took 0.92 second. Expected to take 0.8 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/github_import/importer/attachments/releases_importer_spec.rb. Expected to take 0.77 second.

Gitlab::GithubImport::Importer::Attachments::ReleasesImporter
  #id_for_already_imported_cache
    is expected to eq 1000000056
  #sequential_import
    selects both releases, and selects only properties it needs
    executes importer only for the release with an attachment
    when release has already been processed
      does not select releases that were processed
      does not execute importer for the release with an attachment
  #object_type
    is expected to eq :release_attachment
  #collection_method
    is expected to eq :release_attachments
  #sidekiq_worker_class
    is expected to eq Gitlab::GithubImport::Attachments::ImportReleaseWorker

# [RSpecRunTime] Finishing example group spec/lib/gitlab/github_import/importer/attachments/releases_importer_spec.rb. It took 0.91 second. Expected to take 0.77 second.
# [RSpecRunTime] Starting example group spec/graphql/resolvers/group_milestones_resolver_spec.rb. Expected to take 0.75 second.

Resolvers::GroupMilestonesResolver
  #resolve
    calls MilestonesFinder#execute
    without parameters
      calls MilestonesFinder to retrieve all milestones
    with parameters
      timeframe argument
    by ids
      calls MilestonesFinder with correct parameters
    by sort
      calls MilestonesFinder with correct parameters
      uses offset-pagination when sorting by expired_last_due_date_asc
      uses offset-pagination when sorting by expired_last_due_date_desc
    by timeframe
      when timeframe start and end are present
        when start is after end
          raises error

# [RSpecRunTime] Finishing example group spec/graphql/resolvers/group_milestones_resolver_spec.rb. It took 0.75 second. Expected to take 0.75 second.
# [RSpecRunTime] Starting example group spec/rubocop/todo_dir_spec.rb. Expected to take 0.7 second.

RuboCop::TodoDir
  #read
    when file exists
      is expected to eq "a"
    when file is missing
      is expected to be nil
  #inspect
    with existing YAML file
      is expected to eq true
      moves YAML file to .inspect
    with missing YAML file
      is expected to eq false
  #write
    is expected to eq "/tmp/d20241122-351-x3yllp/r_spec/variable_instance.yml"
    writes content to YAML file
  #delete_inspected
    with YAML files
      is expected to eq 3
      deletes all .inspected YAML files
    with non-YAML files
      is expected to eq 0
      does not delete non-YAML files
    without files
      is expected to eq 0
  #initialize
    when passing inflector
      calls .underscore
  #list_inspect
    when file exists and is being inspected
      is expected to contain exactly "/tmp/d20241122-351-nam34h/r_spec/variable_instance.yml.inspect"
    when file exists but not being inspected
      is expected to be empty
    when file is missing
      is expected to be empty
  #inspect_all
    with YAML files
      is expected to eq 3
      moves all YAML files to .inspect
    with non-YAML files
      is expected to eq 0
      does not move non-YAML files
    without files
      is expected to eq 0

# [RSpecRunTime] Finishing example group spec/rubocop/todo_dir_spec.rb. It took 0.64 second. Expected to take 0.7 second.
# [RSpecRunTime] Starting example group spec/serializers/project_access_token_serializer_spec.rb. Expected to take 0.69 second.

ProjectAccessTokenSerializer
  #represent
    can render a single token
    can render a collection of tokens

# [RSpecRunTime] Finishing example group spec/serializers/project_access_token_serializer_spec.rb. It took 0.79 second. Expected to take 0.69 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/rack_attack_spec.rb. Expected to take 0.67 second.

Gitlab::RackAttack
  .configure
    extends the request class
    configures the throttle response
    configures the safelist
    configures throttles if no dry-run was configured
    configures tracks if dry-run was configured for all throttles
    configures tracks and throttles with a selected set of dry-runs
    enables dry-runs for `throttle_unauthenticated_api` and `throttle_unauthenticated_web` when selecting `throttle_unauthenticated`
    user allowlist
      is empty
      reflects GITLAB_THROTTLE_USER_ALLOWLIST
  .throttled_response_headers
    matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>1 hour, :limit=>3600, :epoch_time=>1609842570}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"60", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609844400", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 11:00:00 GMT", "Retry-After"=>"1830"}
      generates accurate throttled headers
    matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>1 hour, :limit=>3600, :epoch_time=>1609844399}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"60", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609844400", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 11:00:00 GMT", "Retry-After"=>"1"}
      generates accurate throttled headers
    matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>1 hour, :limit=>3600, :epoch_time=>1609840800}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"60", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609844400", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 11:00:00 GMT", "Retry-After"=>"3600"}
      generates accurate throttled headers
    matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>1 hour, :limit=>3600, :epoch_time=>1609889400}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"60", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609891200", "RateLimit-ResetTime"=>"Wed, 06 Jan 2021 00:00:00 GMT", "Retry-After"=>"1800"}
      generates accurate throttled headers
    matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>1 hour, :limit=>3400, :epoch_time=>1609842600}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"57", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609844400", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 11:00:00 GMT", "Retry-After"=>"1800"}
      generates accurate throttled headers
    matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>1 hour, :limit=>3700, :epoch_time=>1609842600}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"62", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609844400", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 11:00:00 GMT", "Retry-After"=>"1800"}
      generates accurate throttled headers
    matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>1 hour, :limit=>59, :epoch_time=>1609842600}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"1", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609844400", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 11:00:00 GMT", "Retry-After"=>"1800"}
      generates accurate throttled headers
    matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>1 hour, :limit=>61, :epoch_time=>1609842600}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"2", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609844400", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 11:00:00 GMT", "Retry-After"=>"1800"}
      generates accurate throttled headers
    matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>15 seconds, :limit=>10, :epoch_time=>1609842600}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"40", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609842615", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 10:30:15 GMT", "Retry-After"=>"15"}
      generates accurate throttled headers
    matched: "throttle_unauthenticated", match_data: {:discriminator=>"127.0.0.1", :count=>3700, :period=>27 seconds, :limit=>10, :epoch_time=>1609842600}, headers: {"RateLimit-Name"=>"throttle_unauthenticated", "RateLimit-Limit"=>"23", "RateLimit-Observed"=>"3700", "RateLimit-Remaining"=>"0", "RateLimit-Reset"=>"1609842627", "RateLimit-ResetTime"=>"Tue, 05 Jan 2021 10:30:27 GMT", "Retry-After"=>"27"}
      generates accurate throttled headers

# [RSpecRunTime] Finishing example group spec/lib/gitlab/rack_attack_spec.rb. It took 0.61 second. Expected to take 0.67 second.
# [RSpecRunTime] Starting example group spec/views/admin/application_settings/_package_registry.html.haml_spec.rb. Expected to take 0.63 second.

admin/application_settings/_package_registry
  with multiple plans
    displays the plan name when there is more than one plan
  skip nuget package metadata url validation
    renders nothing when saas
    renders the setting checkbox when self-managed
  package file size limits
    has fields for max package file sizes
    does not display the plan name when there is only one plan

# [RSpecRunTime] Finishing example group spec/views/admin/application_settings/_package_registry.html.haml_spec.rb. It took 0.53 second. Expected to take 0.63 second.
# [RSpecRunTime] Starting example group spec/support_specs/helpers/html_escaped_helpers_spec.rb. Expected to take 0.63 second.

HtmlEscapedHelpers
  #match_html_escaped_tags
    content: nil, expected_match: nil
      is expected to eq nil
    content: "", expected_match: nil
      is expected to eq nil
    content: "<a href", expected_match: nil
      is expected to eq nil
    content: "<span href", expected_match: nil
      is expected to eq nil
    content: "</a>", expected_match: nil
      is expected to eq nil
    content: "&lt;a href", expected_match: "&lt;a"
      is expected to eq "&lt;a"
    content: "&lt;span href", expected_match: "&lt;span"
      is expected to eq "&lt;span"
    content: "&lt; span", expected_match: "&lt; span"
      is expected to eq "&lt; span"
    content: "some text &lt;a href", expected_match: "&lt;a"
      is expected to eq "&lt;a"
    content: "some text \"&lt;a href", expected_match: "&lt;a"
      is expected to eq "&lt;a"
    content: "&lt;/a&glt;", expected_match: "&lt;/a"
      is expected to eq "&lt;/a"
    content: "&lt;/span&gt;", expected_match: "&lt;/span"
      is expected to eq "&lt;/span"
    content: "&lt; / span&gt;", expected_match: "&lt; / span"
      is expected to eq "&lt; / span"
    content: "title=\"&lt;a href", expected_match: nil
      is expected to eq nil
    content: "title=  \"&lt;a href", expected_match: nil
      is expected to eq nil
    content: "title=  '&lt;a href", expected_match: nil
      is expected to eq nil
    content: "title=  '&lt;/a", expected_match: nil
      is expected to eq nil
    content: "title=  '&lt;/span", expected_match: nil
      is expected to eq nil
    content: "title=\"foo\">&lt;a", expected_match: "&lt;a"
      is expected to eq "&lt;a"
    content: "title='foo'>\n&lt;a", expected_match: "&lt;a"
      is expected to eq "&lt;a"
  #ensure_no_html_escaped_tags!
    when content contains HTML escaped chars
      raises an exception
    when content does not contain HTML escaped tags
      does not raise anything

# [RSpecRunTime] Finishing example group spec/support_specs/helpers/html_escaped_helpers_spec.rb. It took 0.6 second. Expected to take 0.63 second.
# [RSpecRunTime] Starting example group spec/validators/ip_cidr_array_validator_spec.rb. Expected to take 0.59 second.

IpCidrArrayValidator
  cidr_array: [], validity: true, errors: {}
    is expected to eq true
    is expected to eq {}
  cidr_array: ["172.0.0.1/256", "invalid-CIDR"], validity: false, errors: {:cidr_array=>["IP '172.0.0.1/256' is not a valid CIDR: Invalid netmask 256", "IP 'invalid-CIDR' is not a valid CIDR: IP should be followed by a slash followed by an integer subnet mask (for example: '192.168.1.0/24')"]}
    is expected to eq false
    is expected to eq {:cidr_array=>["IP '172.0.0.1/256' is not a valid CIDR: Invalid netmask 256", "IP 'invalid-CIDR' is n... should be followed by a slash followed by an integer subnet mask (for example: '192.168.1.0/24')"]}
  cidr_array: ["172.0.0.1/24", "2001:db8::8:800:200c:417a/128"], validity: true, errors: {}
    is expected to eq true
    is expected to eq {}
  cidr_array: [nil], validity: true, errors: {}
    is expected to eq true
    is expected to eq {}
  cidr_array: [""], validity: true, errors: {}
    is expected to eq true
    is expected to eq {}
  cidr_array: "", validity: false, errors: {:cidr_array=>["must be an array of CIDR values"]}
    is expected to eq false
    is expected to eq {:cidr_array=>["must be an array of CIDR values"]}
  cidr_array: ["172.0.0.1/24", "invalid-CIDR"], validity: false, errors: {:cidr_array=>["IP 'invalid-CIDR' is not a valid CIDR: IP should be followed by a slash followed by an integer subnet mask (for example: '192.168.1.0/24')"]}
    is expected to eq false
    is expected to eq {:cidr_array=>["IP 'invalid-CIDR' is not a valid CIDR: IP should be followed by a slash followed by an integer subnet mask (for example: '192.168.1.0/24')"]}
  cidr_array: nil, validity: false, errors: {:cidr_array=>["must be an array of CIDR values"]}
    is expected to eq false
    is expected to eq {:cidr_array=>["must be an array of CIDR values"]}
  cidr_array: ["172.0.0.1/256"], validity: false, errors: {:cidr_array=>["IP '172.0.0.1/256' is not a valid CIDR: Invalid netmask 256"]}
    is expected to eq false
    is expected to eq {:cidr_array=>["IP '172.0.0.1/256' is not a valid CIDR: Invalid netmask 256"]}
  cidr_array: ["172.0.0.1/24", nil], validity: true, errors: {}
    is expected to eq true
    is expected to eq {}

# [RSpecRunTime] Finishing example group spec/validators/ip_cidr_array_validator_spec.rb. It took 0.55 second. Expected to take 0.59 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/partitioning/multiple_numeric_list_partition_spec.rb. Expected to take 0.59 second.

Gitlab::Database::Partitioning::MultipleNumericListPartition
  #hash
    is expected to be truthy
    is expected to be falsey
  #to_sql
    generates SQL
  #data_size
    returns the partition size
  #to_detach_sql
    generates SQL
  #before?
    when partition_id is before the max partition value
      is expected to be falsey
    when partition_id is after the max partition value
      is expected to be truthy
  #partition_name
    is the explicit name if provided
    defaults to the table name followed by the partition value
  sorting
    is incomparable if the tables do not match
    sorts by the value when the tables match
    sorts by numeric value rather than text value
    sorts with array values
  .from_sql
    with single partition values
      uses specified table name
      uses specified partition name
      parses the definition
    with multiple partition values
      uses specified table name
      uses specified partition name
      parses the definition

# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/partitioning/multiple_numeric_list_partition_spec.rb. It took 0.57 second. Expected to take 0.59 second.
# [RSpecRunTime] Starting example group spec/finders/ci/runner_managers_finder_spec.rb. Expected to take 0.56 second.

Ci::RunnerManagersFinder#execute
  filter by system_id
    is expected not to eq "r_9280677a63"
    when system_id matches runner_manager1's
      is expected to contain exactly #<Ci::RunnerManager id: 10, runner_id: 12, executor_type: nil, created_at: "2024-11-22 02:05:44.02660...xid: "r_d0a0bd233d", creation_state: "finished", runner_type: "instance_type", sharding_key_id: nil>
    when system_id matches runner_manager2's
      is expected to contain exactly #<Ci::RunnerManager id: 11, runner_id: 12, executor_type: nil, created_at: "2024-11-22 02:05:44.03356...xid: "r_9280677a63", creation_state: "finished", runner_type: "instance_type", sharding_key_id: nil>
    when system_id doesn't match
      is expected to be empty
  filter by status
    for offline
      is expected to contain exactly #<Ci::RunnerManager id: 12, runner_id: 12, executor_type: nil, created_at: "2024-11-22 02:05:44.00000...xid: "r_0c833f203e", creation_state: "finished", runner_type: "instance_type", sharding_key_id: nil> and #<Ci::RunnerManager id: 16, runner_id: 12, executor_type: nil, created_at: "2024-11-15 02:05:44.00000...xid: "r_10b5dd3c35", creation_state: "finished", runner_type: "instance_type", sharding_key_id: nil>
    for online
      is expected to contain exactly #<Ci::RunnerManager id: 13, runner_id: 12, executor_type: nil, created_at: "2024-11-22 02:05:44.00000...xid: "r_7c646e7458", creation_state: "finished", runner_type: "instance_type", sharding_key_id: nil>
    for stale
      is expected to contain exactly #<Ci::RunnerManager id: 15, runner_id: 12, executor_type: nil, created_at: "2024-11-15 02:05:44.00000..._xid: "r_f0658415dd", creation_state: "started", runner_type: "instance_type", sharding_key_id: nil> and #<Ci::RunnerManager id: 16, runner_id: 12, executor_type: nil, created_at: "2024-11-15 02:05:44.00000...xid: "r_10b5dd3c35", creation_state: "finished", runner_type: "instance_type", sharding_key_id: nil>
    for never_contacted
      is expected to contain exactly #<Ci::RunnerManager id: 14, runner_id: 12, executor_type: nil, created_at: "2024-11-22 02:05:44.00000..._xid: "r_f7360bfe01", creation_state: "started", runner_type: "instance_type", sharding_key_id: nil> and #<Ci::RunnerManager id: 15, runner_id: 12, executor_type: nil, created_at: "2024-11-15 02:05:44.00000..._xid: "r_f0658415dd", creation_state: "started", runner_type: "instance_type", sharding_key_id: nil>
    for invalid status
      returns all runner managers
  without any arguments
    returns all runner managers in id_desc order

# [RSpecRunTime] Finishing example group spec/finders/ci/runner_managers_finder_spec.rb. It took 0.45 second. Expected to take 0.56 second.
# [RSpecRunTime] Starting example group spec/models/organizations/organization_setting_spec.rb. Expected to take 0.54 second.

Organizations::OrganizationSetting
  does not allow STI
  .for
    without organization id
      is expected to be nil
    when organization has settings
      returns correct organization setting
    when organization does not have settings
      returns new settings record
  validations
    for json schema
      is expected to allow :settings to be ‹{restricted_visibility_levels: [], default_group_visibility: nil}›
      when trying to store an unsupported key
        is expected not to allow :settings to be ‹{restricted_visibility_levels: [0], unsupported_key: "some_value"}›
      when value
        setting_key: :restricted_visibility_levels, valid_value: [0], invalid_value: ["some_string"]
          for key 'restricted_visibility_levels' is invalid
            is expected not to allow :settings to be ‹{"restricted_visibility_levels" => [], restricted_visibility_levels: ["some_string"]}›
          for key 'restricted_visibility_levels' is valid
            is expected to allow :settings to be ‹{"restricted_visibility_levels" => [], restricted_visibility_levels: [0]}›
        setting_key: :default_group_visibility, valid_value: 0, invalid_value: "some_string"
          for key 'default_group_visibility' is invalid
            is expected not to allow :settings to be ‹{"restricted_visibility_levels" => [], default_group_visibility: "some_string"}›
          for key 'default_group_visibility' is valid
            is expected to allow :settings to be ‹{"restricted_visibility_levels" => [], default_group_visibility: 0}›
    when setting restricted_visibility_levels
      rejects invalid visibility levels
      accept one or more of Gitlab::VisibilityLevel constants
    when setting default_group_visibility
      allows nil
      allows valid visibility levels
      prevents setting default_group_visibility to a restricted visibility level
  associations
    is expected to belong to organization required: false

# [RSpecRunTime] Finishing example group spec/models/organizations/organization_setting_spec.rb. It took 0.56 second. Expected to take 0.54 second.
# [RSpecRunTime] Starting example group spec/initializers/rails_yaml_safe_load_spec.rb. Expected to take 0.52 second.

Rails YAML safe load
  with default permitted classes
    deserializes data
    with unpermitted classes
      throws an exception

# [RSpecRunTime] Finishing example group spec/initializers/rails_yaml_safe_load_spec.rb. It took 0.45 second. Expected to take 0.52 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/sidekiq_middleware/concurrency_limit/server_spec.rb. Expected to take 0.51 second.

Gitlab::SidekiqMiddleware::ConcurrencyLimit::Server
  #call
    when feature flag is disabled
      executes the job
      behaves like skip execution tracking
        is expected not to receive track_execution_end(*(any args)) 0 times
    when there are jobs in the queue
      defers the job
      when only the related_class is set in the context
        defers the job
      when concurrency_limit_resume setter is used
        executes the job if resumed
      when both related class and concurrency_limit_resume setter is used
        executes the job if resumed
    when sidekiq_workers are stubbed
      when under the limit
        executes the job
        tracks execution concurrency
        when limit is set to zero
          behaves like skip execution tracking
            is expected not to receive track_execution_end(*(any args)) 0 times
        when limit is not defined
          behaves like skip execution tracking
            is expected not to receive track_execution_end(*(any args)) 0 times
      when over the limit
        defers the job

# [RSpecRunTime] Finishing example group spec/lib/gitlab/sidekiq_middleware/concurrency_limit/server_spec.rb. It took 0.35 second. Expected to take 0.51 second.
# [RSpecRunTime] Starting example group spec/views/groups/show.html.haml_spec.rb. Expected to take 0.49 second.

groups/show
  group README
    with readme project
      renders #js-group-readme
      with private readme project
        does not render #js-group-readme
    without readme project
      does not render #js-group-readme

# [RSpecRunTime] Finishing example group spec/views/groups/show.html.haml_spec.rb. It took 0.41 second. Expected to take 0.49 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/experiment_feature_rollout_spec.rb. Expected to take 0.47 second.

Gitlab::ExperimentFeatureRollout
  #enabled?
    is expected not to be enabled
  #execute_assignment
    uses the default value as specified in the yaml
    returns an assigned name
    when there are no behaviors
      does not raise an error
    for even rollout to non-control
      rolls out relatively evenly to 2 behaviors
      rolls out relatively evenly to 3 behaviors
      when distribution is specified as an array
        rolls out with the expected distribution
      when distribution is specified as a hash
        rolls out with the expected distribution
  #flipper_id
    returns the expected flipper id if the experiment doesn't provide one
    lets the experiment provide a flipper id so it can override the default

# [RSpecRunTime] Finishing example group spec/lib/gitlab/experiment_feature_rollout_spec.rb. It took 0.38 second. Expected to take 0.47 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/pg_class_spec.rb. Expected to take 0.45 second.

Gitlab::Database::PgClass
  does not allow STI
  #cardinality_estimate
    when no information is available
      returns nil for the estimate
    with reltuples available
      returns the reltuples for the estimate
  .for_table
    returns PgClass for this table
    matches the relname

# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/pg_class_spec.rb. It took 0.32 second. Expected to take 0.45 second.
# [RSpecRunTime] Starting example group spec/lib/security/ci_configuration/sast_build_action_spec.rb. Expected to take 0.44 second.

Security::CiConfiguration::SastBuildAction
  with existing .gitlab-ci.yml
    sast has not been included
      template includes are array
        generates the correct YML
      template include is not an array
        generates the correct YML
        reports defaults have been overwritten
    sast template include is not an array
      generates the correct YML
    with default values
      generates the correct YML
      reports defaults have not been overwritten
      analyzer section
        generates the correct YML
        analyzers are disabled
          writes SAST_EXCLUDED_ANALYZERS
        all analyzers are enabled
          does not write SAST_EXCLUDED_ANALYZERS
    with update stage and SEARCH_MAX_DEPTH and set SECURE_ANALYZERS_PREFIX to default
      generates the correct YML
    with no existing variables
      generates the correct YML
    with no existing sast config
      generates the correct YML
    with no existing sast variables
      generates the correct YML
  with no .gitlab-ci.yml
    autodevops disabled
      with one empty parameter
        generates the correct YML
      with all parameters
        generates the correct YML
    with autodevops enabled
      generates the correct YML

# [RSpecRunTime] Finishing example group spec/lib/security/ci_configuration/sast_build_action_spec.rb. It took 0.46 second. Expected to take 0.44 second.
# [RSpecRunTime] Starting example group spec/services/users/dismiss_broadcast_message_service_spec.rb. Expected to take 0.41 second.

Users::DismissBroadcastMessageService
  #execute
    creates a new broadcast message dismissal
    returns a service response
    does not update an invalid record with expires_at time
    when dismissal already exists
      updates existing dismissal expires_at time

# [RSpecRunTime] Finishing example group spec/services/users/dismiss_broadcast_message_service_spec.rb. It took 0.44 second. Expected to take 0.41 second.
# [RSpecRunTime] Starting example group spec/models/concerns/ignorable_columns_spec.rb. Expected to take 0.4 second.

IgnorableColumns
  does not allow STI
  adds columns to ignored_columns
  adds columns to ignored_columns (array version)
  requires remove_after attribute to be set
  allows setting remove_never: true and not setting other remove options
  requires remove_after attribute to be set
  requires remove_with attribute to be set
  .ignored_columns_details
    defaults to empty Hash
    with single column
      behaves like storing removal information
        storing removal information
    with array column
      behaves like storing removal information
        storing removal information
    when called on a subclass without setting the ignored columns
      does not raise Deadlock error
  IgnorableColumns::ColumnIgnore
    #safe_to_remove?
      after remove_after date has passed
        returns true (safe to remove)
      before remove_after date has passed
        returns false (not safe to remove)
      with remove_never: true
        is false

# [RSpecRunTime] Finishing example group spec/models/concerns/ignorable_columns_spec.rb. It took 0.39 second. Expected to take 0.4 second.
# [RSpecRunTime] Starting example group spec/services/projects/count_service_spec.rb. Expected to take 0.37 second.

Projects::CountService
  .query
    raises NotImplementedError
  #relation_for_count
    calls the class method query with the project id
  #count
    returns the number of rows
    caches the number of rows
  #refresh_cache
    refreshes the cache
  #delete_cache
    removes the cache
  #cache_key_name
    raises NotImplementedError
  #cache_key
    returns the cache key as an Array

# [RSpecRunTime] Finishing example group spec/services/projects/count_service_spec.rb. It took 0.36 second. Expected to take 0.37 second.
# [RSpecRunTime] Starting example group spec/helpers/admin/background_migrations_helper_spec.rb. Expected to take 0.35 second.

Admin::BackgroundMigrationsHelper
  #batched_migration_status_badge_variant
    status_name: :active, variant: :info
      is expected to eq :info
    status_name: :paused, variant: :warning
      is expected to eq :warning
    status_name: :failed, variant: :danger
      is expected to eq :danger
    status_name: :finished, variant: :success
      is expected to eq :success
  #batched_migration_progress
    returns completion percentage
    when migration is finished
      returns 100 percent
    when total_tuple_count is nil
      returns nil
      when there are no completed rows
        returns 0 percent
    when completed rows are greater than total count
      returns 99 percent

# [RSpecRunTime] Finishing example group spec/helpers/admin/background_migrations_helper_spec.rb. It took 0.33 second. Expected to take 0.35 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/background_migration_spec.rb. Expected to take 0.34 second.

Gitlab::BackgroundMigration
  .queue
    returns background migration worker queue
  .steal
    when the queue contains unprocessed jobs
      uses the coordinator to steal jobs
      when a custom predicate is given
        steals jobs that match the predicate
        does not steal jobs that do not match the predicate
    when retry_dead_jobs is true
      steals from the dead and retry queue
  .perform
    uses the coordinator to perform a background migration
  .exists?
    uses the coordinator to find if a job exists
    uses the coordinator to find a job does not exist
  .remaining
    uses the coordinator to find the number of remaining jobs

# [RSpecRunTime] Finishing example group spec/lib/gitlab/background_migration_spec.rb. It took 0.3 second. Expected to take 0.34 second.
# [RSpecRunTime] Starting example group spec/rubocop/cop/migration/schedule_async_spec.rb. Expected to take 0.33 second.

RuboCop::Cop::Migration::ScheduleAsync
  in a migration
    in an old migration
      behaves like a disabled cop
        does not register any offenses
    that is recent
      BackgroundMigrationWorker.perform_async
        adds an offense when calling `BackgroundMigrationWorker.peform_async`
      CiDatabaseWorker.perform_async
        adds an offense when calling `CiDatabaseWorker.peform_async`
      BackgroundMigrationWorker.perform_in
        adds an offense
      CiDatabaseWorker.perform_in
        adds an offense
      BackgroundMigrationWorker.bulk_perform_async
        adds an offense
      CiDatabaseWorker.bulk_perform_async
        adds an offense
      BackgroundMigrationWorker.bulk_perform_in
        adds an offense
      CiDatabaseWorker.bulk_perform_in
        adds an offense
  outside of a migration
    behaves like a disabled cop
      does not register any offenses

# [RSpecRunTime] Finishing example group spec/rubocop/cop/migration/schedule_async_spec.rb. It took 0.38 second. Expected to take 0.33 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/favicon_spec.rb. Expected to take 0.32 second.

Gitlab::Favicon
  .main
    defaults to favicon.png
    has yellow favicon for canary
    uses the custom favicon if a favicon appearance is present
    asset host
      returns a relative url when the asset host is not configured
      returns a full url when the asset host is configured
  .ci_status_overlay
    returns the overlay for the status
  .mr_status_overlay
    returns the overlay for the status
  .available_status_names
    returns the available status names

# [RSpecRunTime] Finishing example group spec/lib/gitlab/favicon_spec.rb. It took 0.4 second. Expected to take 0.32 second.
# [RSpecRunTime] Starting example group spec/lib/grafana/time_window_spec.rb. Expected to take 0.3 second.

Grafana::TimeWindow
  #formatted
    is expected to eq {:end=>"2019-03-17T13:10:00Z", :start=>"2019-03-17T05:10:00Z"}
  #in_milliseconds
    is expected to eq {:from=>1552799400000, :to=>1552828200000}
    when non-unix parameters are provided
      is expected to eq {:from=>1552799400000, :to=>1552828200000}

# [RSpecRunTime] Finishing example group spec/lib/grafana/time_window_spec.rb. It took 0.1 second. Expected to take 0.3 second.
# [RSpecRunTime] Starting example group spec/lib/grafana/time_window_spec.rb. Expected to take 0.3 second.

Grafana::RangeWithDefaults
  #to_hash
    is expected to eq {:from=>#<Grafana::Timestamp:0x00007c7f3a527430 @time=2019-03-17 05:10:00 +0000>, :to=>#<Grafana::Timestamp:0x00007c7f3a527250 @time=2019-03-17 13:10:00 +0000>}
    when only "to" is provided
      has the expected properties
    when only "from" is provided
      has the expected properties
    when no parameters are provided
      has the expected properties

# [RSpecRunTime] Finishing example group spec/lib/grafana/time_window_spec.rb. It took 0.12 second. Expected to take 0.3 second.
# [RSpecRunTime] Starting example group spec/lib/grafana/time_window_spec.rb. Expected to take 0.3 second.

Grafana::Timestamp
  #formatted
    is expected to eq "2019-03-17T05:10:00Z"
  #to_ms
    is expected to eq 1552799400000
  .from_ms_since_epoch
    is expected to be a kind of Grafana::Timestamp
    when the input is not a unix-ish timestamp
      raises an error

# [RSpecRunTime] Finishing example group spec/lib/grafana/time_window_spec.rb. It took 0.14 second. Expected to take 0.3 second.
# [RSpecRunTime] Starting example group spec/support_specs/ability_check_spec.rb. Expected to take 0.3 second.

Support::AbilityCheck
  checking ability
    with valid direct ability
      policy ability is found
      with empty TODO yaml
        policy ability is found
      with non-Hash TODO yaml
        policy ability is found
    with unreachable ability
      policy ability is not found and emits a warning
      when ignored in TODO YAML
        policy ability is not found without warning
    with unknown ability
      policy ability is not found and emits a warning
    with delegated ability
      policy ability is found

# [RSpecRunTime] Finishing example group spec/support_specs/ability_check_spec.rb. It took 0.26 second. Expected to take 0.3 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/manifest_import/manifest_spec.rb. Expected to take 0.29 second.

Gitlab::ManifestImport::Manifest
  #valid?
    valid file
      is expected to equal true
    missing or invalid attributes
      is expected to equal false
      errors
        is expected to include "Make sure a <remote> tag is present and is valid."
        is expected to include "Make sure every <project> tag has name and path attributes."
  #projects
    is expected to eq 660
    is expected to eq "platform/build"
    is expected to eq "build/make"
    is expected to eq "https://android-review.googlesource.com/platform/build"

# [RSpecRunTime] Finishing example group spec/lib/gitlab/manifest_import/manifest_spec.rb. It took 0.27 second. Expected to take 0.29 second.
# [RSpecRunTime] Starting example group spec/services/dependency_proxy/head_manifest_service_spec.rb. Expected to take 0.27 second.

DependencyProxy::HeadManifestService
  remote request is successful
    is expected to eq :success
    is expected to eq "12345"
  remote request is not found
    is expected to eq :error
    is expected to eq 404
    is expected to eq "Not found"
  net timeout exception
    is expected to eq :error
    is expected to eq 599
    is expected to eq "execution expired"

# [RSpecRunTime] Finishing example group spec/services/dependency_proxy/head_manifest_service_spec.rb. It took 0.23 second. Expected to take 0.27 second.
# [RSpecRunTime] Starting example group spec/graphql/mutations/concerns/mutations/resolves_group_spec.rb. Expected to take 0.26 second.

Mutations::ResolvesGroup
  uses the GroupsResolver to resolve groups by path

# [RSpecRunTime] Finishing example group spec/graphql/mutations/concerns/mutations/resolves_group_spec.rb. It took 0.29 second. Expected to take 0.26 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/metrics/subscribers/action_cable_spec.rb. Expected to take 0.25 second.

Gitlab::Metrics::Subscribers::ActionCable
  #transmit
    for transmissions initiated by Channel instance
      tracks the event with "caller" set to "channel"
    for transmissions initiated by GraphQL event subscriber
      tracks the event with correct "caller" and "broadcasting"
      is indifferent to keys being symbols or strings in result payload
    when transmission is coming from unknown source
      tracks the event with "caller" set to "unknown"
  #broadcast
    when broadcast is for a GraphQL event
      tracks the event with broadcasting set to event topic
    when broadcast is for a GraphQL channel subscription
      strips out subscription ID from broadcasting
    when broadcast is something else
      tracks the event as "unknown"
  #transmit_subscription_confirmation
    tracks the subscription confirmation event
  #transmit_subscription_rejection
    tracks the subscription rejection event

# [RSpecRunTime] Finishing example group spec/lib/gitlab/metrics/subscribers/action_cable_spec.rb. It took 0.25 second. Expected to take 0.25 second.
# [RSpecRunTime] Starting example group spec/models/design_user_mention_spec.rb. Expected to take 0.24 second.

DesignUserMention
  does not allow STI
  associations
    is expected to belong to design required: false
    is expected to belong to note required: false
  behaves like has user mentions
    #has_mentions?
      when no mentions
        returns false
      when mentioned_users_ids not null
        returns true
      when mentioned projects
        returns true
      when mentioned groups
        returns true

# [RSpecRunTime] Finishing example group spec/models/design_user_mention_spec.rb. It took 0.21 second. Expected to take 0.24 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/load_balancing/service_discovery/sampler_spec.rb. Expected to take 0.23 second.

Gitlab::Database::LoadBalancing::ServiceDiscovery::Sampler
  #sample
    samples max_replica_pools addresses
    samples random ports across all hosts
    returns the same answer for the same input when called multiple times
    gives a consistent answer regardless of input ordering
    samples fairly across all hosts
    when input is an empty array
      returns an empty array
    when there are less replicas than max_replica_pools
      returns the same addresses
    when max_replica_pools is nil
      returns the same addresses

# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/load_balancing/service_discovery/sampler_spec.rb. It took 0.22 second. Expected to take 0.23 second.
# [RSpecRunTime] Starting example group spec/support_specs/helpers/active_record/query_recorder_spec.rb. Expected to take 0.23 second.

ActiveRecord::QueryRecorder
  includes duration information
  printing to the log
    prints SQL, duration and backtrace, all prefixed with QueryRecorder
  detecting the right number of calls and their origin
    detects two separate queries

# [RSpecRunTime] Finishing example group spec/support_specs/helpers/active_record/query_recorder_spec.rb. It took 0.16 second. Expected to take 0.23 second.
# [RSpecRunTime] Starting example group spec/lib/sidebars/concerns/super_sidebar_panel_spec.rb. Expected to take 0.22 second.

Sidebars::Concerns::SuperSidebarPanel
  #transform_old_menus
    converts "solo" top-level Menu entry to Menu Item
    drops "solo" top-level Menu entries, if they serialize to nil
    for Menus with Menu Items
      adds Menu Items to defined super_sidebar_parent
      replaces placeholder Menu Items in the defined super_sidebar_parent
      considers Menu Items uncategorized if super_sidebar_parent is nil
      considers Menu Items uncategorized if super_sidebar_parent cannot be found
      considers Menu Items deleted if super_sidebar_parent is Sidebars::NilMenuItem
  #pick_from_old_menus
    removes items with #pick_into_super_sidebar? from a list and adds them to the panel menus

# [RSpecRunTime] Finishing example group spec/lib/sidebars/concerns/super_sidebar_panel_spec.rb. It took 0.22 second. Expected to take 0.22 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/fp/rop_helpers_spec.rb. Expected to take 0.2 second.

Gitlab::Fp::RopHelpers
  .retrieve_single_public_singleton_method
    when there is exactly one public singleton method
      for a class
        behaves like a class or module with a single public singleton method
          returns the single public singleton method
      for a module
        behaves like a class or module with a single public singleton method
          returns the single public singleton method
    for invalid arguments
      when there is more than one public singleton method
        for a class
          behaves like a class or module without a single public singleton method
            raises an error
        for a module
          behaves like a class or module without a single public singleton method
            raises an error
      when there are no public singleton methods
        for a class
          behaves like a class or module without a single public singleton method
            raises an error
        for a module
          behaves like a class or module without a single public singleton method
            raises an error

# [RSpecRunTime] Finishing example group spec/lib/gitlab/fp/rop_helpers_spec.rb. It took 0.16 second. Expected to take 0.2 second.
# [RSpecRunTime] Starting example group spec/graphql/types/color_type_spec.rb. Expected to take 0.2 second.

Types::ColorType
  is expected to eq "Color"
  rejects nil
  coerces Color object into hex string
  coerces an named color into Color object
  rejects invalid input
  coerces an hex string into Color object
  coerces an named Color into hex string

# [RSpecRunTime] Finishing example group spec/graphql/types/color_type_spec.rb. It took 0.24 second. Expected to take 0.2 second.
# [RSpecRunTime] Starting example group spec/rubocop/check_graceful_task_spec.rb. Expected to take 0.19 second.

RuboCop::CheckGracefulTask
  #run
    without args
      behaves like rubocop scan
        invokes a RuboCop scan
      with adjusted rubocop status
        with sufficient environment variables
          notifies slack
          with when notification fails
            prints that notification failed
        with missing environment variables
          skips slack notification
    with args
      does not notify slack
      behaves like rubocop scan
        invokes a RuboCop scan

# [RSpecRunTime] Finishing example group spec/rubocop/check_graceful_task_spec.rb. It took 0.19 second. Expected to take 0.19 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/global_id/deprecations_spec.rb. Expected to take 0.19 second.

Gitlab::GlobalId::Deprecations
  .deprecated?
    returns a boolean to signal if model name has a deprecation
  .deprecation_for
    returns the deprecation for the model if it exists
  .deprecation_by
    returns the deprecation by the model if it exists
  .apply_to_graphql_name
    returns the corresponding graphql_name of the GID for the new model
    returns the same value if there is no deprecation

# [RSpecRunTime] Finishing example group spec/lib/gitlab/global_id/deprecations_spec.rb. It took 0.14 second. Expected to take 0.19 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/metrics/subscribers/ldap_spec.rb. Expected to take 0.17 second.

Gitlab::Metrics::Subscribers::Ldap
  .payload
    when SafeRequestStore is empty
      returns an empty array
    when LDAP recorded some values
      returns the populated payload
  #observe_event
    tracks LDAP request count
    tracks LDAP request duration
    stores per-request counters

# [RSpecRunTime] Finishing example group spec/lib/gitlab/metrics/subscribers/ldap_spec.rb. It took 0.16 second. Expected to take 0.17 second.
# [RSpecRunTime] Starting example group spec/services/deploy_keys/create_service_spec.rb. Expected to take 0.17 second.

DeployKeys::CreateService
  creates a deploy key

# [RSpecRunTime] Finishing example group spec/services/deploy_keys/create_service_spec.rb. It took 0.16 second. Expected to take 0.17 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/github_gists_import/importer/gists_importer_spec.rb. Expected to take 0.16 second.

Gitlab::GithubGistsImport::Importer::GistsImporter
  #execute
    when success
      spread parallel import
    when failure
      returns an error
    when rate limit reached
      returns an error

# [RSpecRunTime] Finishing example group spec/lib/gitlab/github_gists_import/importer/gists_importer_spec.rb. It took 0.15 second. Expected to take 0.16 second.
# [RSpecRunTime] Starting example group spec/helpers/artifacts_helper_spec.rb. Expected to take 0.16 second.

ArtifactsHelper
  #artifacts_app_data
    returns expected data
    can_destroy_artifacts
      returns false without permission
      returns true when user has permission

# [RSpecRunTime] Finishing example group spec/helpers/artifacts_helper_spec.rb. It took 0.14 second. Expected to take 0.16 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/graphql/type_name_deprecations_spec.rb. Expected to take 0.15 second.

Gitlab::Graphql::TypeNameDeprecations
  .deprecation_for
    returns the deprecation for the model if it exists
  .deprecated?
    returns a boolean to signal if model name has a deprecation
  .apply_to_graphql_name
    returns the corresponding graphql_name of the GID for the new model
    returns the same value if there is no deprecation
  .deprecation_by
    returns the deprecation by the model if it exists

# [RSpecRunTime] Finishing example group spec/lib/gitlab/graphql/type_name_deprecations_spec.rb. It took 0.14 second. Expected to take 0.15 second.
# [RSpecRunTime] Starting example group spec/lib/backup/tasks/task_spec.rb. Expected to take 0.15 second.

Backup::Tasks::Task
  with unimplemented methods
    .id
      raises an error
    #id
      raises an error
    #human_name
      raises an error
    #destination_path
      raises an error
    #target
      raises an error

# [RSpecRunTime] Finishing example group spec/lib/backup/tasks/task_spec.rb. It took 0.15 second. Expected to take 0.15 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/config/entry/validator_spec.rb. Expected to take 0.14 second.

Gitlab::Config::Entry::Validator
  delegated validator
    when node is valid
      validates attribute in node
      returns no errors
    when node is invalid
      validates attribute in node
      returns errors

# [RSpecRunTime] Finishing example group spec/lib/gitlab/config/entry/validator_spec.rb. It took 0.12 second. Expected to take 0.14 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/sentence_spec.rb. Expected to take 0.14 second.

Gitlab::Sentence
  .to_exclusive_sentence
    calls #to_sentence on the array
    joins arrays with two elements correctly
    joins arrays with more than two elements correctly
    localizes the connector words

# [RSpecRunTime] Finishing example group spec/lib/gitlab/sentence_spec.rb. It took 0.11 second. Expected to take 0.14 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/database/stat_activity_spec.rb. Expected to take 0.13 second.

Gitlab::Database::StatActivity
  .write
    initialises and calls instance method #write
  #write
    writes data into redis and prevents writes within the sampling window
    when data already exists in the redis hash
      appends to existing data
      drops data outside of window

# [RSpecRunTime] Finishing example group spec/lib/gitlab/database/stat_activity_spec.rb. It took 0.13 second. Expected to take 0.13 second.
# [RSpecRunTime] Starting example group spec/views/help/drawers.html.haml_spec.rb. Expected to take 0.12 second.

help/drawers
  Markdown rendering
    renders Markdown

# [RSpecRunTime] Finishing example group spec/views/help/drawers.html.haml_spec.rb. It took 0.06 second. Expected to take 0.12 second.
# [RSpecRunTime] Starting example group spec/lib/backup/restore/preconditions_spec.rb. Expected to take 0.12 second.

Backup::Restore::Preconditions
  #validate_backup_version!
    when version matches
      display a message and stop the process with exit 0
    when version mismatches
      display a message and stop the process with exit 1
  #ensure_supported_backup_version!
    when version matches
      does not raise error and terminate process
    when version mismatches
      display a message and stop the process with exit 1

# [RSpecRunTime] Finishing example group spec/lib/backup/restore/preconditions_spec.rb. It took 0.12 second. Expected to take 0.12 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/yaml_processor/dag_spec.rb. Expected to take 0.12 second.

Gitlab::Ci::YamlProcessor::Dag
  when it is a regular pipeline
    returns ordered jobs
  when there is a circular dependency
    raises TSort::Cyclic error
    when a job has a self-dependency
      raises TSort::Cyclic error
  when there are some missing jobs
    ignores the missing ones and returns in a valid order

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/yaml_processor/dag_spec.rb. It took 0.11 second. Expected to take 0.12 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/view/presenter/simple_spec.rb. Expected to take 0.11 second.

Gitlab::View::Presenter::Simple
  includes Gitlab::View::Presenter::Base
  #initialize
    takes arbitrary key/values and exposes them
    override the presentee attributes
  delegation
    does not forward missing methods to subject

# [RSpecRunTime] Finishing example group spec/lib/gitlab/view/presenter/simple_spec.rb. It took 0.11 second. Expected to take 0.11 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/sidekiq_middleware/pause_control/strategy_handler_spec.rb. Expected to take 0.11 second.

Gitlab::SidekiqMiddleware::PauseControl::StrategyHandler
  #perform
    calls perform on the strategy
    pauses job
  #schedule
    behaves like scheduling with pause control class
      calls schedule on the strategy

# [RSpecRunTime] Finishing example group spec/lib/gitlab/sidekiq_middleware/pause_control/strategy_handler_spec.rb. It took 0.11 second. Expected to take 0.11 second.
# [RSpecRunTime] Starting example group spec/lib/google_api/auth_spec.rb. Expected to take 0.1 second.

GoogleApi::Auth
  #authorize_url
    returns authorize_url
  #get_token
    returns token and expires_at
    expects the client to receive default options

# [RSpecRunTime] Finishing example group spec/lib/google_api/auth_spec.rb. It took 0.09 second. Expected to take 0.1 second.
# [RSpecRunTime] Starting example group spec/helpers/external_link_helper_spec.rb. Expected to take 0.1 second.

ExternalLinkHelper
  returns external link with icon
  allows options when creating external link with icon
  sanitizes and returns external link with icon

# [RSpecRunTime] Finishing example group spec/helpers/external_link_helper_spec.rb. It took 0.09 second. Expected to take 0.1 second.
# [RSpecRunTime] Starting example group spec/graphql/types/security/codequality_reports_comparer_type_spec.rb. Expected to take 0.1 second.

Types::Security::CodequalityReportsComparerType
  is expected to eq "CodequalityReportsComparer"
  has expected fields

# [RSpecRunTime] Finishing example group spec/graphql/types/security/codequality_reports_comparer_type_spec.rb. It took 0.06 second. Expected to take 0.1 second.
# [RSpecRunTime] Starting example group spec/serializers/ci/trigger_serializer_spec.rb. Expected to take 0.09 second.

Ci::TriggerSerializer
  #represent
    matches schema

# [RSpecRunTime] Finishing example group spec/serializers/ci/trigger_serializer_spec.rb. It took 0.08 second. Expected to take 0.09 second.
# [RSpecRunTime] Starting example group spec/lib/sidebars/organizations/menus/scope_menu_spec.rb. Expected to take 0.09 second.

Sidebars::Organizations::Menus::ScopeMenu
  behaves like serializable as super_sidebar_menu_args
    returns hash with provided attributes
    returns hash with an item_id

# [RSpecRunTime] Finishing example group spec/lib/sidebars/organizations/menus/scope_menu_spec.rb. It took 0.09 second. Expected to take 0.09 second.
# [RSpecRunTime] Starting example group spec/rubocop/cop/database/rescue_statement_timeout_spec.rb. Expected to take 0.08 second.

RuboCop::Cop::Database::RescueStatementTimeout
  does not flag a different exception
  flags the use of ActiveRecord::StatementTimeout

# [RSpecRunTime] Finishing example group spec/rubocop/cop/database/rescue_statement_timeout_spec.rb. It took 0.07 second. Expected to take 0.08 second.
# [RSpecRunTime] Starting example group spec/rubocop/cop/migration/refer_to_index_by_name_spec.rb. Expected to take 0.08 second.

RuboCop::Cop::Migration::ReferToIndexByName
  when in migration
    when existing indexes are referred to without an explicit name
      registers an offense
  when outside migration
    registers no offenses

# [RSpecRunTime] Finishing example group spec/rubocop/cop/migration/refer_to_index_by_name_spec.rb. It took 0.08 second. Expected to take 0.08 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/query_limiting/active_support_subscriber_spec.rb. Expected to take 0.08 second.

Gitlab::QueryLimiting::ActiveSupportSubscriber
  #sql
    increments the number of executed SQL queries
    when the query is actually a rails cache hit
      does not increment the number of executed SQL queries

# [RSpecRunTime] Finishing example group spec/lib/gitlab/query_limiting/active_support_subscriber_spec.rb. It took 0.07 second. Expected to take 0.08 second.
# [RSpecRunTime] Starting example group spec/services/import/gitlab_projects/file_acquisition_strategies/file_upload_spec.rb. Expected to take 0.07 second.

Import::GitlabProjects::FileAcquisitionStrategies::FileUpload
  validation
    validates presence of file
  #project_params
    returns the file to upload in the params

# [RSpecRunTime] Finishing example group spec/services/import/gitlab_projects/file_acquisition_strategies/file_upload_spec.rb. It took 0.12 second. Expected to take 0.07 second.
# [RSpecRunTime] Starting example group spec/sidekiq/cron/job_gem_dependency_spec.rb. Expected to take 0.07 second.

Sidekiq::Cron::Job
  cron jobs
    when Fugit depends on ZoTime or EoTime
      does not get any errors

# [RSpecRunTime] Finishing example group spec/sidekiq/cron/job_gem_dependency_spec.rb. It took 0.05 second. Expected to take 0.07 second.
# [RSpecRunTime] Starting example group spec/workers/file_hook_worker_spec.rb. Expected to take 0.07 second.

FileHookWorker
  #perform
    executes Gitlab::FileHook with expected values
    logs message in case of file_hook execution failure

# [RSpecRunTime] Finishing example group spec/workers/file_hook_worker_spec.rb. It took 0.07 second. Expected to take 0.07 second.
# [RSpecRunTime] Starting example group spec/graphql/types/current_user_type_spec.rb. Expected to take 0.07 second.

Types::CurrentUserType
  inherits authorization policies from the UserType superclass
  is expected to eq "CurrentUser"

# [RSpecRunTime] Finishing example group spec/graphql/types/current_user_type_spec.rb. It took 0.07 second. Expected to take 0.07 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/middleware/webhook_recursion_detection_spec.rb. Expected to take 0.07 second.

Gitlab::Middleware::WebhookRecursionDetection
  #call
    when the recursion detection header is present
      sets the request UUID from the header
    when recursion headers are not present
      works without errors

# [RSpecRunTime] Finishing example group spec/lib/gitlab/middleware/webhook_recursion_detection_spec.rb. It took 0.07 second. Expected to take 0.07 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/merge_requests/mergeability/redis_interface_spec.rb. Expected to take 0.07 second.

Gitlab::MergeRequests::Mergeability::RedisInterface
  #save_check
    saves the hash
  #retrieve_check
    returns the hash

# [RSpecRunTime] Finishing example group spec/lib/gitlab/merge_requests/mergeability/redis_interface_spec.rb. It took 0.07 second. Expected to take 0.07 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/diff/inline_diff_marker_spec.rb. Expected to take 0.06 second.

Gitlab::Diff::InlineDiffMarker
  #mark
    when the rich text is html safe
      marks the range
    when the text is not html safe
      marks the range

# [RSpecRunTime] Finishing example group spec/lib/gitlab/diff/inline_diff_marker_spec.rb. It took 0.07 second. Expected to take 0.06 second.
# [RSpecRunTime] Starting example group spec/graphql/types/ci/instance_variable_type_spec.rb. Expected to take 0.06 second.

Types::Ci::InstanceVariableType
  is expected to have graphql fields :environment_scope, :masked, :protected, and :description
  is expected to contain exactly Types::Ci::VariableInterface

# [RSpecRunTime] Finishing example group spec/graphql/types/ci/instance_variable_type_spec.rb. It took 0.08 second. Expected to take 0.06 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/sidekiq_middleware/instrumentation_logger_spec.rb. Expected to take 0.05 second.

Gitlab::SidekiqMiddleware::InstrumentationLogger
  #call
    merges all instrumentation data in the job

# [RSpecRunTime] Finishing example group spec/lib/gitlab/sidekiq_middleware/instrumentation_logger_spec.rb. It took 0.05 second. Expected to take 0.05 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/middleware/action_controller_static_context_spec.rb. Expected to take 0.05 second.

Gitlab::Middleware::ActionControllerStaticContext
  populates context with static controller attributes

# [RSpecRunTime] Finishing example group spec/lib/gitlab/middleware/action_controller_static_context_spec.rb. It took 0.04 second. Expected to take 0.05 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/ci/config/external/mapper/filter_spec.rb. Expected to take 0.04 second.

Gitlab::Ci::Config::External::Mapper::Filter
  #process
    filters locations according to rules

# [RSpecRunTime] Finishing example group spec/lib/gitlab/ci/config/external/mapper/filter_spec.rb. It took 0.05 second. Expected to take 0.04 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/usage/metrics/instrumentations/version_metric_spec.rb. Expected to take 0.04 second.

Gitlab::Usage::Metrics::Instrumentations::VersionMetric
  behaves like a correct instrumented metric value
    has correct value

# [RSpecRunTime] Finishing example group spec/lib/gitlab/usage/metrics/instrumentations/version_metric_spec.rb. It took 0.04 second. Expected to take 0.04 second.
# [RSpecRunTime] Starting example group spec/lib/bulk_imports/retry_pipeline_error_spec.rb. Expected to take 0.04 second.

BulkImports::RetryPipelineError
  #retry_delay
    returns retry_delay

# [RSpecRunTime] Finishing example group spec/lib/bulk_imports/retry_pipeline_error_spec.rb. It took 0.04 second. Expected to take 0.04 second.
# [RSpecRunTime] Starting example group spec/lib/gitlab/word_diff/segments/newline_spec.rb. Expected to take 0.04 second.

Gitlab::WordDiff::Segments::Newline
  #to_s
    is expected to eq ""

# [RSpecRunTime] Finishing example group spec/lib/gitlab/word_diff/segments/newline_spec.rb. It took 0.04 second. Expected to take 0.04 second.
# [RSpecRunTime] Starting example group spec/graphql/types/work_items/widgets/start_and_due_date_update_input_type_spec.rb. Expected to take 0.04 second.

Types::WorkItems::Widgets::StartAndDueDateUpdateInputType
  is expected to eq "WorkItemWidgetStartAndDueDateUpdateInput"

# [RSpecRunTime] Finishing example group spec/graphql/types/work_items/widgets/start_and_due_date_update_input_type_spec.rb. It took 0.04 second. Expected to take 0.04 second.
auto_explain log contains 1721 entries for main, writing to /builds/gitlab-org/gitlab/auto_explain/rspec-unit-pg14-19-44.351.main.ndjson.gz
took 19.77584987
auto_explain log contains 1722 entries for ci, writing to /builds/gitlab-org/gitlab/auto_explain/rspec-unit-pg14-19-44.351.ci.ndjson.gz
took 19.454982542
[TEST PROF INFO] EventProf results for sql.active_record

Total time: 05:26.988 of 20:42.074 (26.33%)
Total events: 194472

Top 5 slowest suites (by time):

MergeRequests...HandlerService (./spec/services/merge_requests/push_options_handler_service_spec.rb:5) – 01:07.860 (35358 / 236) of 05:17.597 (21.37%)
Members::Invi...bilityAssigner (./spec/models/members/members/invited_private_group_accessibility_assigner_spec.rb:5) – 01:01.377 (33193 / 89) of 02:50.904 (35.91%)
Clusters::Cluster (./spec/models/clusters/cluster_spec.rb:5) – 00:27.655 (14352 / 178) of 01:27.240 (31.7%)
Boards::Issues::MoveService (./spec/services/boards/issues/move_service_spec.rb:5) – 00:24.062 (15387 / 45) of 01:14.501 (32.3%)
EventCreateService (./spec/services/event_create_service_spec.rb:5) – 00:12.648 (8866 / 96) of 00:55.777 (22.68%)

Knapsack report was generated. Preview:
{
  "spec/services/merge_requests/push_options_handler_service_spec.rb": 317.59682652799995,
  "spec/models/members/members/invited_private_group_accessibility_assigner_spec.rb": 170.90380028200002,
  "spec/models/clusters/cluster_spec.rb": 87.23984624500008,
  "spec/services/boards/issues/move_service_spec.rb": 74.50056803199993,
  "spec/services/event_create_service_spec.rb": 55.777369707999924,
  "spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb": 33.89684565099992,
  "spec/lib/gitlab/ci/pipeline/seed/build_spec.rb": 34.51585311000008,
  "spec/models/resource_state_event_spec.rb": 25.173040312000012,
  "spec/lib/gitlab/database/tables_truncate_spec.rb": 26.663153761000103,
  "spec/lib/gitlab/ci/pipeline/seed/stage_spec.rb": 18.17352037700016,
  "spec/services/deployments/update_environment_service_spec.rb": 18.499609214999964,
  "spec/helpers/issues_helper_spec.rb": 18.33756249099997,
  "spec/models/concerns/project_api_compatibility_spec.rb": 17.574960250999993,
  "spec/lib/gitlab/import_export/attributes_permitter_spec.rb": 15.005109052999842,
  "spec/policies/ci/runner_manager_policy_spec.rb": 12.335646317000055,
  "spec/workers/remove_expired_group_links_worker_spec.rb": 14.888127726999983,
  "spec/services/ci/stuck_builds/drop_scheduled_service_spec.rb": 13.260872522,
  "spec/models/protectable_dropdown_spec.rb": 10.777476021999973,
  "spec/models/protected_branch/push_access_level_spec.rb": 8.168146149999984,
  "spec/models/ci/build_report_result_spec.rb": 13.218590494999944,
  "spec/serializers/discussion_diff_file_entity_spec.rb": 9.905891819999852,
  "spec/lib/gitlab/ci/templates/Verify/load_performance_testing_gitlab_ci_yaml_spec.rb": 10.336579554000082,
  "spec/lib/gitlab/file_hook_spec.rb": 5.553502918999811,
  "spec/services/merge_requests/merge_strategies/from_source_branch_spec.rb": 10.102843383000163,
  "spec/models/jira_connect/public_key_spec.rb": 6.626849442000093,
  "spec/lib/gitlab/cache/helpers_spec.rb": 8.60335546400006,
  "spec/lib/banzai/reference_parser/issue_parser_spec.rb": 8.479738619000045,
  "spec/services/ci/compare_test_reports_service_spec.rb": 6.513698586000146,
  "spec/services/merge_requests/add_context_service_spec.rb": 7.5158480909999525,
  "spec/workers/ci/archive_traces_cron_worker_spec.rb": 7.3232097589998375,
  "spec/finders/sentry_issue_finder_spec.rb": 6.7995208259999345,
  "spec/services/tags/destroy_service_spec.rb": 5.8741856289998395,
  "spec/lib/gitlab/gitaly_client/with_feature_flag_actors_spec.rb": 6.448714147999908,
  "spec/graphql/resolvers/group_issues_resolver_spec.rb": 5.01014371600013,
  "spec/policies/design_management/design_policy_spec.rb": 5.290797928999837,
  "spec/workers/issue_due_scheduler_worker_spec.rb": 4.444894120000072,
  "spec/graphql/resolvers/clusters/agent_tokens_resolver_spec.rb": 4.55041270300012,
  "spec/lib/api/entities/project_import_status_spec.rb": 4.670664234000014,
  "spec/services/users/create_service_spec.rb": 4.522543625000026,
  "spec/services/spam/spam_verdict_service_spec.rb": 3.9691020140001,
  "spec/models/projects/data_transfer_spec.rb": 3.876446071000146,
  "spec/models/custom_emoji_spec.rb": 3.476476479999974,
  "spec/lib/gitlab/import_export/command_line_util_spec.rb": 3.085253277999982,
  "spec/helpers/auth_helper_spec.rb": 3.2460296259998813,
  "spec/models/concerns/batch_nullify_dependent_associations_spec.rb": 3.625623078999979,
  "spec/graphql/mutations/customer_relations/contacts/create_spec.rb": 3.7693974689998413,
  "spec/lib/gitlab/import/merge_request_creator_spec.rb": 3.5483667440000772,
  "spec/lib/gitlab/github_import/push_placeholder_references_spec.rb": 3.3613782579998315,
  "spec/lib/gitlab/database/reindexing/index_selection_spec.rb": 2.733423863000098,
  "spec/services/incident_management/link_alerts/create_service_spec.rb": 3.341027560000157,
  "spec/lib/gitlab/cleanup/remote_uploads_spec.rb": 3.1365164540000023,
  "spec/lib/gitlab/auth/user_access_denied_reason_spec.rb": 3.3009994030001053,
  "spec/lib/gitlab/database/postgres_hll/batch_distinct_counter_spec.rb": 3.0415308199999345,
  "spec/lib/gitlab/analytics/cycle_analytics/stage_events/plan_stage_start_spec.rb": 4.514071804999958,
  "spec/workers/invalid_gpg_signature_update_worker_spec.rb": 2.628155371000048,
  "spec/lib/gitlab/sidekiq_migrate_jobs_spec.rb": 1.6984142979999888,
  "spec/lib/gitlab/ci/config/external/file/remote_spec.rb": 2.43964694400006,
  "spec/workers/ci/catalog/resources/aggregate_last30_day_usage_worker_spec.rb": 2.3128352839999025,
  "spec/lib/gitlab/ci/templates/Diffblue_Cover_spec.rb": 2.120673707000151,
  "spec/models/concerns/after_commit_queue_spec.rb": 1.524642940999911,
  "spec/workers/analytics/usage_trends/counter_job_worker_spec.rb": 1.8627672659999917,
  "spec/workers/update_project_statistics_worker_spec.rb": 2.413963816999967,
  "spec/services/ci/trigger_downstream_pipeline_service_spec.rb": 2.269707305999873,
  "spec/services/achievements/award_service_spec.rb": 1.0760165130000132,
  "spec/services/namespaces/update_denormalized_descendants_service_spec.rb": 1.539168109000002,
  "spec/graphql/types/snippets/blob_type_spec.rb": 1.8872453139999834,
  "spec/helpers/jira_connect_helper_spec.rb": 1.2121850330001962,
  "spec/finders/projects/topics_finder_spec.rb": 2.049464471999954,
  "spec/routing/environments_spec.rb": 2.013982905000148,
  "spec/models/ci/catalog/resources/components/last_usage_spec.rb": 1.7551744539998708,
  "spec/services/virtual_registries/packages/maven/cached_responses/create_or_update_service_spec.rb": 1.826902868000161,
  "spec/helpers/ci/secure_files_helper_spec.rb": 1.4887886730000446,
  "spec/lib/api/entities/draft_note_spec.rb": 1.4990401420000126,
  "spec/models/ci/tag_spec.rb": 1.1574401269999726,
  "spec/lib/gitlab/blame_spec.rb": 1.565099487999987,
  "spec/helpers/ci/status_helper_spec.rb": 1.2329058419998091,
  "spec/lib/gitlab/seeders/ci/variables_group_seeder_spec.rb": 1.2843374070000664,
  "spec/lib/gitlab/jira_import/issues_importer_spec.rb": 1.42408540800011,
  "spec/lib/gitlab/database/load_balancing/sidekiq_client_middleware_spec.rb": 1.1074035100000401,
  "spec/lib/gitlab/analytics/usage_trends/workers_argument_builder_spec.rb": 1.522073300999864,
  "spec/services/web_hooks/create_service_spec.rb": 1.249294129999953,
  "spec/serializers/feature_flag_entity_spec.rb": 1.1778096759999244,
  "spec/lib/gitlab/ci/config/entry/rules/rule/changes_spec.rb": 0.8501018090000798,
  "spec/services/ci/pipeline_triggers/destroy_service_spec.rb": 1.1562089670001114,
  "spec/presenters/member_presenter_spec.rb": 0.8949421859999802,
  "spec/models/error_tracking/error_event_spec.rb": 0.8439568590001727,
  "spec/lib/gitlab/github_import/importer/attachments/notes_importer_spec.rb": 0.9877393090000623,
  "spec/serializers/project_access_token_entity_spec.rb": 1.216413121999949,
  "spec/uploaders/lfs_object_uploader_spec.rb": 0.8326373419999982,
  "spec/graphql/mutations/customer_relations/organizations/create_spec.rb": 0.7696835919998648,
  "spec/lib/gitlab/usage/metrics/instrumentations/count_ci_runners_project_type_active_online_metric_spec.rb": 0.5391235319998486,
  "spec/services/snippets/schedule_bulk_repository_shard_moves_service_spec.rb": 0.9219928729999083,
  "spec/lib/gitlab/github_import/importer/attachments/releases_importer_spec.rb": 0.9049226159997943,
  "spec/graphql/resolvers/group_milestones_resolver_spec.rb": 0.7492035249999844,
  "spec/rubocop/todo_dir_spec.rb": 0.6395297789999859,
  "spec/serializers/project_access_token_serializer_spec.rb": 0.7846413610000127,
  "spec/lib/gitlab/rack_attack_spec.rb": 0.6119193219999488,
  "spec/views/admin/application_settings/_package_registry.html.haml_spec.rb": 0.5303443730001618,
  "spec/support_specs/helpers/html_escaped_helpers_spec.rb": 0.5966886050000539,
  "spec/validators/ip_cidr_array_validator_spec.rb": 0.5505331499998647,
  "spec/lib/gitlab/database/partitioning/multiple_numeric_list_partition_spec.rb": 0.5662975590000769,
  "spec/finders/ci/runner_managers_finder_spec.rb": 0.4484793040001023,
  "spec/models/organizations/organization_setting_spec.rb": 0.5624395679999452,
  "spec/initializers/rails_yaml_safe_load_spec.rb": 0.44521341400013625,
  "spec/lib/gitlab/sidekiq_middleware/concurrency_limit/server_spec.rb": 0.35140789599995514,
  "spec/views/groups/show.html.haml_spec.rb": 0.413988136999933,
  "spec/lib/gitlab/experiment_feature_rollout_spec.rb": 0.3761439219999829,
  "spec/lib/gitlab/database/pg_class_spec.rb": 0.32216726999990897,
  "spec/lib/security/ci_configuration/sast_build_action_spec.rb": 0.460050653000053,
  "spec/services/users/dismiss_broadcast_message_service_spec.rb": 0.4356877650000115,
  "spec/models/concerns/ignorable_columns_spec.rb": 0.3871436009999343,
  "spec/services/projects/count_service_spec.rb": 0.3605815639998582,
  "spec/helpers/admin/background_migrations_helper_spec.rb": 0.3271534890000112,
  "spec/lib/gitlab/background_migration_spec.rb": 0.2968713719999414,
  "spec/rubocop/cop/migration/schedule_async_spec.rb": 0.3827106220001042,
  "spec/lib/gitlab/favicon_spec.rb": 0.40174586900002396,
  "spec/lib/grafana/time_window_spec.rb": 0.3570768350000435,
  "spec/support_specs/ability_check_spec.rb": 0.25537006800004747,
  "spec/lib/gitlab/manifest_import/manifest_spec.rb": 0.2663870769999903,
  "spec/services/dependency_proxy/head_manifest_service_spec.rb": 0.23289838999994572,
  "spec/graphql/mutations/concerns/mutations/resolves_group_spec.rb": 0.28961243300000206,
  "spec/lib/gitlab/metrics/subscribers/action_cable_spec.rb": 0.24748722799995448,
  "spec/models/design_user_mention_spec.rb": 0.20841262400017513,
  "spec/lib/gitlab/database/load_balancing/service_discovery/sampler_spec.rb": 0.21802185199999258,
  "spec/support_specs/helpers/active_record/query_recorder_spec.rb": 0.16304752899986852,
  "spec/lib/sidebars/concerns/super_sidebar_panel_spec.rb": 0.22207922199982022,
  "spec/lib/gitlab/fp/rop_helpers_spec.rb": 0.16192434999993566,
  "spec/graphql/types/color_type_spec.rb": 0.23746006999999736,
  "spec/rubocop/check_graceful_task_spec.rb": 0.188674735999939,
  "spec/lib/gitlab/global_id/deprecations_spec.rb": 0.1418719019998207,
  "spec/lib/gitlab/metrics/subscribers/ldap_spec.rb": 0.15967807900005937,
  "spec/services/deploy_keys/create_service_spec.rb": 0.16159206900010759,
  "spec/lib/gitlab/github_gists_import/importer/gists_importer_spec.rb": 0.15412617000015416,
  "spec/helpers/artifacts_helper_spec.rb": 0.1441100719998758,
  "spec/lib/gitlab/graphql/type_name_deprecations_spec.rb": 0.14011193200008165,
  "spec/lib/backup/tasks/task_spec.rb": 0.14727372200013633,
  "spec/lib/gitlab/config/entry/validator_spec.rb": 0.12444717500011393,
  "spec/lib/gitlab/sentence_spec.rb": 0.11076700600006006,
  "spec/lib/gitlab/database/stat_activity_spec.rb": 0.12587143399991874,
  "spec/views/help/drawers.html.haml_spec.rb": 0.06177625200007242,
  "spec/lib/backup/restore/preconditions_spec.rb": 0.1187981249997847,
  "spec/lib/gitlab/ci/yaml_processor/dag_spec.rb": 0.11079980599993178,
  "spec/lib/gitlab/view/presenter/simple_spec.rb": 0.11116146600011234,
  "spec/lib/gitlab/sidekiq_middleware/pause_control/strategy_handler_spec.rb": 0.10906037700010529,
  "spec/lib/google_api/auth_spec.rb": 0.09443210900008125,
  "spec/helpers/external_link_helper_spec.rb": 0.09023130800005674,
  "spec/graphql/types/security/codequality_reports_comparer_type_spec.rb": 0.06087609200017141,
  "spec/serializers/ci/trigger_serializer_spec.rb": 0.08423483999990822,
  "spec/lib/sidebars/organizations/menus/scope_menu_spec.rb": 0.09034199899997475,
  "spec/rubocop/cop/database/rescue_statement_timeout_spec.rb": 0.06548352200002228,
  "spec/rubocop/cop/migration/refer_to_index_by_name_spec.rb": 0.0798820299999079,
  "spec/lib/gitlab/query_limiting/active_support_subscriber_spec.rb": 0.06724204199986161,
  "spec/services/import/gitlab_projects/file_acquisition_strategies/file_upload_spec.rb": 0.11905909500001144,
  "spec/sidekiq/cron/job_gem_dependency_spec.rb": 0.054463822999878175,
  "spec/workers/file_hook_worker_spec.rb": 0.06894781100004366,
  "spec/graphql/types/current_user_type_spec.rb": 0.0648169720000169,
  "spec/lib/gitlab/middleware/webhook_recursion_detection_spec.rb": 0.06913205099999686,
  "spec/lib/gitlab/merge_requests/mergeability/redis_interface_spec.rb": 0.07445673999995961,
  "spec/lib/gitlab/diff/inline_diff_marker_spec.rb": 0.0720210810000026,
  "spec/graphql/types/ci/instance_variable_type_spec.rb": 0.07690329999991263,
  "spec/lib/gitlab/sidekiq_middleware/instrumentation_logger_spec.rb": 0.053688464000060776,
  "spec/lib/gitlab/middleware/action_controller_static_context_spec.rb": 0.04458879399999205,
  "spec/lib/gitlab/ci/config/external/mapper/filter_spec.rb": 0.047681183999884524,
  "spec/lib/gitlab/usage/metrics/instrumentations/version_metric_spec.rb": 0.041950444000121934,
  "spec/lib/bulk_imports/retry_pipeline_error_spec.rb": 0.043846164000115095,
  "spec/lib/gitlab/word_diff/segments/newline_spec.rb": 0.04348234400004003,
  "spec/graphql/types/work_items/widgets/start_and_due_date_update_input_type_spec.rb": 0.0427373349998561
}

Knapsack global time execution for tests: 20m 41s

Pending: (Failures listed here are expected and do not affect your suite's status)

  1) Gitlab::Database::TablesTruncate when truncating gitlab_ci tables on the main database behaves like truncating legacy tables on a database when the truncated tables are locked for writes when one of the attached partitions happened to be locked for writes truncates the locked partition successfully
     # No reason given
     # ./spec/lib/gitlab/database/tables_truncate_spec.rb:252

  2) Gitlab::Database::TablesTruncate when truncating gitlab_ci tables on the main database behaves like truncating legacy tables on a database when the truncated tables are locked for writes with geo configured does not truncate gitlab_geo tables
     # No reason given
     # ./spec/lib/gitlab/database/tables_truncate_spec.rb:268

  3) Gitlab::Database::TablesTruncate when truncating gitlab_main tables on the ci database behaves like truncating legacy tables on a database when the truncated tables are locked for writes with geo configured does not truncate gitlab_geo tables
     # No reason given
     # ./spec/lib/gitlab/database/tables_truncate_spec.rb:268

  4) Gitlab::Database::TablesTruncate when running in a single database mode raises an error when truncating the main database that it is a single database setup
     # Skipping because some of the extra databases [:ci] are setup
     # ./spec/lib/gitlab/database/tables_truncate_spec.rb:338

  5) Gitlab::Database::TablesTruncate when running in a single database mode raises an error when truncating the ci database that it is a single database setup
     # Skipping because some of the extra databases [:ci] are setup
     # ./spec/lib/gitlab/database/tables_truncate_spec.rb:344

  6) Gitlab::Database::TablesTruncate#needs_truncation? when running in a single database mode 
     # Skipping because some of the extra databases [:ci] are setup
     # ./spec/lib/gitlab/database/tables_truncate_spec.rb:361

  7) Gitlab::Database::TablesTruncate when running with multiple shared databases raises an error when truncating the main database that it is a single database setup
     # Skipping because database ci exists
     # ./spec/lib/gitlab/database/tables_truncate_spec.rb:320

  8) Gitlab::Database::TablesTruncate when running with multiple shared databases raises an error when truncating the ci database that it is a single database setup
     # Skipping because database ci exists
     # ./spec/lib/gitlab/database/tables_truncate_spec.rb:326

  9) LfsObjectUploader behaves like builds correct paths #upload_path behaves like matches the method pattern 
     # No pattern provided, skipping.
     # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8

  10) LfsObjectUploader behaves like builds correct paths #relative_path is relative
     # Path not set, skipping.
     # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:40

  11) LfsObjectUploader behaves like builds correct paths .absolute_path behaves like matches the method pattern 
     # No pattern provided, skipping.
     # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8

  12) LfsObjectUploader behaves like builds correct paths .base_dir behaves like matches the method pattern 
     # No pattern provided, skipping.
     # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8

  13) LfsObjectUploader object store is REMOTE behaves like builds correct paths #cache_dir behaves like matches the method pattern 
     # No pattern provided, skipping.
     # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8

  14) LfsObjectUploader object store is REMOTE behaves like builds correct paths #work_dir behaves like matches the method pattern 
     # No pattern provided, skipping.
     # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8

  15) LfsObjectUploader object store is REMOTE behaves like builds correct paths #upload_path behaves like matches the method pattern 
     # No pattern provided, skipping.
     # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8

  16) LfsObjectUploader object store is REMOTE behaves like builds correct paths #relative_path is relative
     # Path not set, skipping.
     # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:40

  17) LfsObjectUploader object store is REMOTE behaves like builds correct paths .absolute_path behaves like matches the method pattern 
     # No pattern provided, skipping.
     # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8

  18) LfsObjectUploader object store is REMOTE behaves like builds correct paths .base_dir behaves like matches the method pattern 
     # No pattern provided, skipping.
     # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8

Finished in 21 minutes 29 seconds (files took 1 minute 23.3 seconds to load)
2932 examples, 0 failures, 18 pending

Randomized with seed 52

[TEST PROF INFO] Time spent in factories: 10:46.729 (49.74% of total time)
RSpec exited with 0.
No examples to retry, congrats!
section_end:1732241205:step_script
section_start:1732241205:after_script
Running after_script
Running after script...
$ source scripts/utils.sh
$ log_disk_usage
*******************************************************
This runner currently has 78G free disk space.
*******************************************************
section_start:1732241206:log_disk_usage[collapsed=true]
Disk usage detail
df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          95G   17G   78G  18% /
tmpfs            64M     0   64M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/sda1        95G   17G   78G  18% /cache
tmpfs           3.9G     0  3.9G   0% /sys/devices/virtual/dmi/id
du -h -d 1
7.4M	./workhorse
148K	./bin
1.2M	./.gitlab
194M	./.git
4.0K	./builds
17M	./coverage
28M	./lib
8.0K	./.vscode
564K	./storybook
26M	./log
1.9M	./data
12K	./deprecations
11M	./qa
3.1M	./.rubocop_todo
855M	./vendor
1.1G	./public
62M	./doc
484K	./danger
3.5M	./rspec
8.0K	./.bundle
556K	./tooling
146M	./ee
1.3M	./knapsack
300K	./patches
4.3M	./changelogs
20K	./haml_lint
28K	./metrics_server
108K	./keeps
188K	./shared
44K	./generator_templates
1.3M	./scripts
1.6G	./tmp
128M	./spec
20K	./file_hooks
16K	./sidekiq_cluster
17M	./gems
1.2M	./fixtures
968K	./rubocop
4.0K	./.go
34M	./db
596K	./auto_explain
12K	./.github
129M	./locale
20M	./config
86M	./app
20K	./.lefthook
4.4G	.
section_end:1732241206:log_disk_usage

$ bundle exec gem list gitlab_quality-test_tooling
gitlab_quality-test_tooling (2.1.0)
$ section_start "failed-test-issues" "Report test failures" # collapsed multi-line command
section_start:1732241208:failed-test-issues[collapsed=true]
Report test failures
Reporting tests in `rspec/rspec-8442485251.json` as issues in project `gitlab-org/gitlab` via the API at `https://gitlab.com/api/v4`.
=> Processing 2932 tests in rspec/rspec-8442485251.json
 => Reported 0 failed tests.
section_end:1732241210:failed-test-issues

$ section_start "flaky-test-issues" "Report test flakiness" # collapsed multi-line command
section_start:1732241210:flaky-test-issues[collapsed=true]
Report test flakiness
Not reporting test flakiness because 'rspec/rspec-retry-8442485251.json' is missing!
section_end:1732241210:flaky-test-issues

$ section_start "slow-test-issues" "Report test slowness" # collapsed multi-line command
section_start:1732241210:slow-test-issues[collapsed=true]
Report test slowness
Reporting tests in `rspec/rspec-*.json` as issues in project `gitlab-org/gitlab` via the API at `https://gitlab.com/api/v4`.
=> Processing 2932 tests in rspec/rspec-8442485251.json
 => Reported 0 slow tests.
section_end:1732241212:slow-test-issues

$ section_start "slow-test-merge-request-report-note" "Report test slowness in MR note" # collapsed multi-line command
section_start:1732241212:slow-test-merge-request-report-note[collapsed=true]
Report test slowness in MR note
Not reporting test slowness in MR note because $ADD_SLOW_TEST_NOTE_TO_MERGE_REQUEST != 'true'
section_end:1732241212:slow-test-merge-request-report-note

$ section_start "knapsack-report-issues" "Report test files close to timing out" # collapsed multi-line command
section_start:1732241212:knapsack-report-issues[collapsed=true]
Report test files close to timing out
Reporting spec file exceeding Knapsack expectaton issues in project `gitlab-org/gitlab` via the API at `https://gitlab.com/api/v4`.
=> Reporting 0 spec files exceeding Knapsack expectation.
section_end:1732241214:knapsack-report-issues

$ tooling/bin/push_job_metrics || true
[job-metrics] Pushing job metrics file for the CI/CD job.
[job-metrics] Pushed 4 CI job metric entries to InfluxDB.
section_end:1732241216:after_script
section_start:1732241216:archive_cache
Saving cache for successful job
Not uploading cache ruby-gems-debian-bookworm-ruby-3.2.5-gemfile-Gemfile-21 due to policy
section_end:1732241217:archive_cache
section_start:1732241217:upload_artifacts_on_success
Uploading artifacts for successful job
Uploading artifacts...
auto_explain/: found 3 matching artifact files and directories 
coverage/: found 5 matching artifact files and directories 
WARNING: crystalball/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 
deprecations/: found 3 matching artifact files and directories 
knapsack/: found 4 matching artifact files and directories 
rspec/: found 12 matching artifact files and directories 
WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 
log/*.log: found 15 matching artifact files and directories 
WARNING: Upload request redirected                  location=https://gitlab.com/api/v4/jobs/8442485251/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com
WARNING: Retrying...                                context=artifacts-uploader error=request redirected
Uploading artifacts as "archive" to coordinator... 201 Created  id=8442485251 responseStatus=201 Created token=glcbt-66
Uploading artifacts...
rspec/rspec-*.xml: found 1 matching artifact files and directories 
WARNING: Upload request redirected                  location=https://gitlab.com/api/v4/jobs/8442485251/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com
WARNING: Retrying...                                context=artifacts-uploader error=request redirected
Uploading artifacts as "junit" to coordinator... 201 Created  id=8442485251 responseStatus=201 Created token=glcbt-66
section_end:1732241223:upload_artifacts_on_success
section_start:1732241223:cleanup_file_variables
Cleaning up project directory and file based variables
section_end:1732241223:cleanup_file_variables
Job succeeded