rspec unit pg13 18/28
Passed Started
by
@dskim_gitlab
Sincheol (David) Kim
1Running with gitlab-runner 15.9.0~beta.212.g8ccc65e7 (8ccc65e7)2 on green-2.private.runners-manager.gitlab.com/gitlab.com/gitlab-org GaSD-S1F, system ID: s_5651e5b5643b3 feature flags: FF_NETWORK_PER_BUILD:true, FF_USE_FASTZIP:true, FF_USE_IMPROVED_URL_MASKING:true6Using Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 ...7Starting service registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 ...8Authenticating with credentials from job payload (GitLab Registry)9Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 ...10Using docker image sha256:b643610fd4d2fbdd55447ceb5a6cba0c3d1a26945817741d73e1b51a1ec07d01 for registry.gitlab.com/gitlab-org/gitlab-build-images:postgres-13-pgvector-0.4.1 with digest registry.gitlab.com/gitlab-org/gitlab-build-images@sha256:dfccb5b5ddadf4f1a3b9cb72cf21f5b99a28a55c217de34d9fa6b7a45a910031 ...11Starting service redis:6.2-alpine ...12Pulling docker image redis:6.2-alpine ...13Using docker image sha256:a9a47a706682d445577bb5da7328f0faaa0863a5742a315c829faa461dfc23ae for redis:6.2-alpine with digest redis@sha256:317575f05099ea47b1f2855b1bb6e068b52847bfa19b87014d88d57f82d4b8f0 ...14Waiting for services to be up and running (timeout 30 seconds)...15Authenticating with credentials from job payload (GitLab Registry)16Pulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 ...17Using docker image sha256:552b81110cdd830e05d17c8e7365f72e1dd96842217d7225636cb55a75777ea7 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13@sha256:a386dd1acb1341f710f3c3c320984f70512694bcfec8cb1c771365058ac7c475 ...19Running on runner-gasd-s1f-project-278964-concurrent-0 via runner-gasd-s1f-private-1682566231-e88827e3...21$ eval "$CI_PRE_CLONE_SCRIPT"22Fetching changes with git depth set to 20...23Initialized empty Git repository in /builds/gitlab-org/gitlab/.git/24Created fresh repository.25remote: Enumerating objects: 162343, done. 26remote: Counting objects: 100% (162343/162343), done. 27remote: Compressing objects: 100% (98373/98373), done. 28remote: Total 162343 (delta 79431), reused 115388 (delta 58038), pack-reused 0 29Receiving objects: 100% (162343/162343), 129.51 MiB | 30.53 MiB/s, done.30Resolving deltas: 100% (79431/79431), done.32 * [new ref] refs/pipelines/850455016 -> refs/pipelines/85045501633Checking out 997198e5 as detached HEAD (ref is refs/merge-requests/118423/merge)...34Skipping Git submodules setup35$ git remote set-url origin "${CI_REPOSITORY_URL}"37Checking cache for ruby-gems-debian-bullseye-ruby-3.0-16...38cache.zip is up to date 39Successfully extracted cache41Downloading artifacts for compile-test-assets (4187655852)...42Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4187655852 responseStatus=200 OK token=64_aSSWf43Downloading artifacts for detect-tests (4187655860)...44Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4187655860 responseStatus=200 OK token=64_aSSWf45Downloading artifacts for retrieve-tests-metadata (4187655863)...46Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4187655863 responseStatus=200 OK token=64_aSSWf47Downloading artifacts for setup-test-env (4187655855)...48Downloading artifacts from coordinator... ok host=storage.googleapis.com id=4187655855 responseStatus=200 OK token=64_aSSWf50Using docker image sha256:552b81110cdd830e05d17c8e7365f72e1dd96842217d7225636cb55a75777ea7 for registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13:rubygems-3.4-git-2.36-lfs-2.9-chrome-109-yarn-1.22-graphicsmagick-1.3.36 with digest registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-3.0.patched-golang-1.19-rust-1.65-node-16.14-postgresql-13@sha256:a386dd1acb1341f710f3c3c320984f70512694bcfec8cb1c771365058ac7c475 ...51$ echo $FOSS_ONLY52$ [ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb53$ export GOPATH=$CI_PROJECT_DIR/.go54$ mkdir -p $GOPATH55$ source scripts/utils.sh56$ source scripts/prepare_build.sh712Using decomposed database config (config/database.yml.decomposed-postgresql)713Geo DB won't be set up.714Embedding DB won't be set up.730$ source ./scripts/rspec_helpers.sh731$ run_timed_command "gem install knapsack --no-document"732$ gem install knapsack --no-document733Successfully installed knapsack-4.0.07341 gem installed735==> 'gem install knapsack --no-document' succeeded in 0 seconds.736$ echo -e "\e[0Ksection_start:`date +%s`:gitaly-test-spawn[collapsed=true]\r\e[0KStarting Gitaly"738$ section_start "gitaly-test-spawn" "Spawning Gitaly"; scripts/gitaly-test-spawn; section_end "gitaly-test-spawn"743$ echo -e "\e[0Ksection_end:`date +%s`:gitaly-test-spawn\r\e[0K"744$ rspec_paralellized_job "--tag ~quarantine --tag ~level:background_migration"745SKIP_FLAKY_TESTS_AUTOMATICALLY: false746RETRY_FAILED_TESTS_IN_NEW_PROCESS: true747KNAPSACK_GENERATE_REPORT: true748FLAKY_RSPEC_GENERATE_REPORT: true749KNAPSACK_TEST_FILE_PATTERN: spec/{bin,channels,components,config,contracts,db,dependencies,elastic,elastic_integration,experiments,factories,finders,frontend,graphql,haml_lint,helpers,initializers,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}{,/**/}*_spec.rb750KNAPSACK_LOG_LEVEL: debug751KNAPSACK_REPORT_PATH: knapsack/rspec_unit_pg13_18_28_report.json752FLAKY_RSPEC_SUITE_REPORT_PATH: rspec/flaky/report-suite.json753FLAKY_RSPEC_REPORT_PATH: rspec/flaky/all_rspec_unit_pg13_18_28_report.json754NEW_FLAKY_RSPEC_REPORT_PATH: rspec/flaky/new_rspec_unit_pg13_18_28_report.json755SKIPPED_FLAKY_TESTS_REPORT_PATH: rspec/flaky/skipped_flaky_tests_rspec_unit_pg13_18_28_report.txt756CRYSTALBALL: 757RSPEC_TESTS_MAPPING_ENABLED: 758RSPEC_TESTS_FILTER_FILE: 759Running command: bundle exec rspec -Ispec -rspec_helper --color --failure-exit-code 1 --error-exit-code 2 --format documentation --format RspecJunitFormatter --out rspec/junit_rspec.xml --tag ~quarantine --tag ~level:background_migration -- spec/services/ci/pipeline_processing/atomic_processing_service_spec.rb spec/models/deployment_spec.rb spec/lib/gitlab/metrics/subscribers/active_record_spec.rb spec/tasks/gitlab/usage_data_rake_spec.rb spec/models/design_management/design_spec.rb spec/services/members/update_service_spec.rb spec/lib/gitlab/background_migration/job_coordinator_spec.rb spec/lib/banzai/filter/references/commit_reference_filter_spec.rb spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb spec/lib/gitlab/background_migration/backfill_draft_status_on_merge_requests_spec.rb spec/lib/gitlab/auth/o_auth/user_spec.rb spec/lib/gitlab/background_migration/backfill_issue_search_data_spec.rb spec/models/integrations/field_spec.rb spec/lib/gitlab/background_migration/encrypt_integration_properties_spec.rb spec/lib/gitlab/path_regex_spec.rb spec/lib/gitlab/database/batch_count_spec.rb spec/services/merge_requests/add_todo_when_build_fails_service_spec.rb spec/finders/autocomplete/users_finder_spec.rb spec/lib/gitlab/checks/branch_check_spec.rb spec/services/resource_events/change_state_service_spec.rb spec/lib/gitlab/prometheus_client_spec.rb spec/services/git/tag_hooks_service_spec.rb spec/lib/gitlab/search/abuse_detection_spec.rb spec/models/projects/data_transfer_spec.rb spec/services/spam/spam_verdict_service_spec.rb spec/models/concerns/group_descendant_spec.rb spec/lib/gitlab/cycle_analytics/permissions_spec.rb spec/lib/gitlab/gfm/uploads_rewriter_spec.rb spec/lib/gitlab/slash_commands/command_spec.rb spec/lib/gitlab/ci/config/entry/variable_spec.rb spec/finders/starred_projects_finder_spec.rb spec/services/merge_requests/update_reviewers_service_spec.rb spec/graphql/mutations/releases/create_spec.rb spec/models/bulk_imports/entity_spec.rb spec/lib/banzai/filter/references/design_reference_filter_spec.rb spec/models/snippet_input_action_spec.rb spec/lib/gitlab/multi_collection_paginator_spec.rb spec/views/projects/edit.html.haml_spec.rb spec/lib/gitlab/ci/config/entry/release_spec.rb spec/services/merge_requests/export_csv_service_spec.rb spec/helpers/timeboxes_helper_spec.rb spec/lib/gitlab/changelog/config_spec.rb spec/lib/gitlab/background_migration/delete_orphaned_packages_dependencies_spec.rb spec/services/merge_requests/resolved_discussion_notification_service_spec.rb spec/serializers/stage_entity_spec.rb spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb spec/lib/gitlab/harbor/query_spec.rb spec/lib/gitlab/background_migration/populate_vulnerability_dismissal_fields_spec.rb spec/lib/gitlab/template_parser/ast_spec.rb spec/lib/sidebars/projects/menus/analytics_menu_spec.rb spec/lib/bulk_imports/projects/pipelines/design_bundle_pipeline_spec.rb spec/lib/gitlab/auth/ldap/config_spec.rb spec/services/environments/create_for_build_service_spec.rb spec/services/pages/migrate_legacy_storage_to_deployment_service_spec.rb spec/presenters/snippet_blob_presenter_spec.rb spec/lib/gitlab/slash_commands/issue_new_spec.rb spec/lib/gitlab/gitaly_client/conflicts_service_spec.rb spec/lib/api/support/git_access_actor_spec.rb spec/finders/packages/conan/package_finder_spec.rb spec/lib/gitlab/analytics/cycle_analytics/stage_events/code_stage_start_spec.rb spec/lib/gitlab/protocol_access_spec.rb spec/lib/sbom/package_url/encoder_spec.rb spec/config/inject_enterprise_edition_module_spec.rb spec/lib/gitlab/git/keep_around_spec.rb spec/models/deploy_keys_project_spec.rb spec/policies/base_policy_spec.rb spec/finders/user_finder_spec.rb spec/models/packages/npm/metadatum_spec.rb spec/lib/gitlab/ci/status/build/scheduled_spec.rb spec/services/bulk_imports/create_pipeline_trackers_service_spec.rb spec/services/jira_connect_subscriptions/create_service_spec.rb spec/scripts/changed-feature-flags_spec.rb spec/lib/banzai/reference_parser/external_issue_parser_spec.rb spec/views/shared/_label_row.html.haml_spec.rb spec/models/instance_configuration_spec.rb spec/db/production/settings_spec.rb spec/services/issue_links/destroy_service_spec.rb spec/services/merge_requests/migrate_external_diffs_service_spec.rb spec/finders/users_star_projects_finder_spec.rb spec/lib/api/entities/release_spec.rb spec/services/projects/move_project_authorizations_service_spec.rb spec/workers/ci/resource_groups/assign_resource_from_resource_group_worker_spec.rb spec/graphql/resolvers/concerns/resolves_groups_spec.rb spec/rack_servers/puma_spec.rb spec/serializers/build_action_entity_spec.rb spec/lib/banzai/filter/color_filter_spec.rb spec/lib/gitlab/ci/project_config_spec.rb spec/graphql/mutations/alert_management/http_integration/reset_token_spec.rb spec/views/notify/change_in_merge_request_draft_status_email.html.haml_spec.rb spec/lib/banzai/pipeline/description_pipeline_spec.rb spec/policies/terraform/state_version_policy_spec.rb spec/lib/gitlab/octokit/middleware_spec.rb spec/models/bulk_imports/file_transfer/group_config_spec.rb spec/lib/gitlab/auth/key_status_checker_spec.rb spec/lib/gitlab/graphql/markdown_field_spec.rb spec/graphql/types/color_type_spec.rb spec/models/namespaces/user_namespace_spec.rb spec/services/suggestions/outdate_service_spec.rb spec/views/projects/jobs/_generic_commit_status.html.haml_spec.rb spec/workers/web_hooks/log_destroy_worker_spec.rb spec/models/concerns/sensitive_serializable_hash_spec.rb spec/lib/gitlab/ci/config/entry/rules_spec.rb spec/tasks/gitlab/dependency_proxy/migrate_rake_spec.rb spec/models/concerns/exportable_spec.rb spec/lib/gitlab/ci/config/entry/files_spec.rb spec/lib/gitlab/ci/config/entry/workflow_spec.rb spec/lib/bitbucket_server/representation/comment_spec.rb spec/services/users/signup_service_spec.rb spec/graphql/mutations/groups/update_spec.rb spec/workers/loose_foreign_keys/cleanup_worker_spec.rb spec/services/ci/runners/process_runner_version_update_service_spec.rb spec/lib/gitlab/analytics/cycle_analytics/aggregated/base_query_builder_spec.rb spec/lib/gitlab/ci/status/success_warning_spec.rb spec/views/shared/projects/_list.html.haml_spec.rb spec/tasks/gitlab/lfs/migrate_rake_spec.rb spec/views/notify/autodevops_disabled_email.text.erb_spec.rb spec/services/packages/debian/find_or_create_package_service_spec.rb spec/services/packages/nuget/metadata_extraction_service_spec.rb spec/lib/gitlab/background_migration/disable_legacy_open_source_licence_for_recent_public_projects_spec.rb spec/helpers/projects/pipeline_helper_spec.rb spec/graphql/resolvers/ci/runner_platforms_resolver_spec.rb spec/rubocop/cop/rspec/factory_bot/inline_association_spec.rb spec/lib/bulk_imports/common/graphql/get_members_query_spec.rb spec/models/integrations/jira_tracker_data_spec.rb spec/graphql/resolvers/incident_management/timeline_event_tags_resolver_spec.rb spec/services/authorized_project_update/periodic_recalculate_service_spec.rb spec/services/protected_branches/update_service_spec.rb spec/lib/gitlab/ci/config/yaml/result_spec.rb spec/models/issue_email_participant_spec.rb spec/lib/gitlab/github_import/importer/lfs_object_importer_spec.rb spec/models/preloaders/environments/deployment_preloader_spec.rb spec/lib/gitlab/cross_project_access/check_info_spec.rb spec/services/ci/create_pipeline_service/limit_active_jobs_spec.rb spec/services/google_cloud/create_cloudsql_instance_service_spec.rb spec/models/webauthn_registration_spec.rb spec/workers/merge_requests/resolve_todos_after_approval_worker_spec.rb spec/services/lfs/push_service_spec.rb spec/finders/issuables/crm_contact_filter_spec.rb spec/lib/api/validations/validators/file_path_spec.rb spec/graphql/resolvers/alert_management/alert_resolver_spec.rb spec/rubocop/cop/qa/element_with_pattern_spec.rb spec/lib/gitlab/bullet/exclusions_spec.rb spec/workers/build_hooks_worker_spec.rb spec/lib/gitlab/database/load_balancing/host_list_spec.rb spec/workers/authorized_project_update/project_recalculate_per_user_worker_spec.rb spec/lib/gitlab/ci/pipeline/seed/pipeline_spec.rb spec/lib/gitlab/import_export/project/relation_saver_spec.rb spec/workers/onboarding/user_added_worker_spec.rb spec/graphql/types/customer_relations/organization_type_spec.rb spec/lib/gitlab/ci/templates/Terraform/module_base_gitlab_ci_yaml_spec.rb spec/services/ci/create_pipeline_service/pre_post_stages_spec.rb spec/views/dashboard/projects/_nav.html.haml_spec.rb spec/lib/gitlab/alert_management/fingerprint_spec.rb spec/views/groups/group_members/index.html.haml_spec.rb spec/lib/gitlab/search/abuse_validators/no_abusive_term_length_validator_spec.rb spec/lib/gitlab/ci/config/entry/inherit/variables_spec.rb spec/graphql/types/ci/test_case_type_spec.rb spec/lib/atlassian/jira_connect/serializers/author_entity_spec.rb spec/services/packages/maven/metadata/append_package_file_service_spec.rb spec/workers/personal_access_tokens/expiring_worker_spec.rb spec/lib/gitlab/dependency_linker/podspec_linker_spec.rb spec/graphql/resolvers/users/group_count_resolver_spec.rb spec/serializers/merge_request_for_pipeline_entity_spec.rb spec/workers/ci/build_schedule_worker_spec.rb spec/services/merge_requests/create_approval_event_service_spec.rb spec/services/projects/count_service_spec.rb spec/lib/api/ci/helpers/runner_helpers_spec.rb spec/models/integrations/chat_message/merge_message_spec.rb spec/services/cohorts_service_spec.rb spec/services/gpg_keys/destroy_service_spec.rb spec/models/releases/source_spec.rb spec/initializers/trusted_proxies_spec.rb spec/policies/identity_provider_policy_spec.rb spec/lib/gitlab/pagination/keyset_spec.rb spec/models/integrations/chat_message/base_message_spec.rb spec/lib/gitlab/metrics/memory_spec.rb spec/serializers/test_suite_comparer_entity_spec.rb spec/lib/gitlab/ci/templates/Terraform/base_gitlab_ci_yaml_spec.rb spec/models/ci/trigger_request_spec.rb spec/workers/ci/runners/stale_machines_cleanup_cron_worker_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/count_ml_candidates_metric_spec.rb spec/rubocop/cop/gitlab/service_response_spec.rb spec/views/devise/confirmations/almost_there.html.haml_spec.rb spec/lib/bulk_imports/common/pipelines/entity_finisher_spec.rb spec/lib/gitlab/git_access_design_spec.rb spec/graphql/types/ci/runner_type_spec.rb spec/services/ci/copy_cross_database_associations_service_spec.rb spec/helpers/explore_helper_spec.rb spec/rubocop/cop/gitlab/event_store_subscriber_spec.rb spec/lib/gitlab/usage/metrics/aggregates/sources/redis_hll_spec.rb spec/lib/gitlab/tracking/destinations/database_events_snowplow_spec.rb spec/lib/gitlab/cross_project_access/check_collection_spec.rb spec/lib/gitlab/lazy_spec.rb spec/helpers/calendar_helper_spec.rb spec/lib/gitlab/health_checks/gitaly_check_spec.rb spec/lib/gitlab/usage/metrics/instrumentations/installation_creation_date_metric_spec.rb spec/lib/gitlab/database/postgresql_adapter/type_map_cache_spec.rb spec/lib/pager_duty/webhook_payload_parser_spec.rb spec/lib/gitlab/ci/ansi2json/parser_spec.rb spec/initializers/google_api_client_spec.rb spec/serializers/analytics_merge_request_serializer_spec.rb spec/workers/gitlab/github_import/import_pull_request_review_worker_spec.rb spec/serializers/import/bitbucket_provider_repo_entity_spec.rb spec/presenters/packages/npm/package_presenter_spec.rb spec/lib/gitlab/audit/deploy_token_author_spec.rb spec/lib/gitlab/error_tracking/stack_trace_highlight_decorator_spec.rb spec/services/ci/runners/unregister_runner_service_spec.rb spec/models/diff_viewer/image_spec.rb spec/workers/users/create_statistics_worker_spec.rb spec/lib/gitlab/git/patches/patch_spec.rb spec/lib/gitlab/import_export/after_export_strategy_builder_spec.rb spec/graphql/types/packages/package_base_type_spec.rb spec/graphql/types/ci_configuration/sast/analyzers_entity_type_spec.rb spec/graphql/types/ci/job_artifact_type_spec.rb spec/models/packages/rubygems/metadatum_spec.rb spec/serializers/serverless/domain_entity_spec.rb spec/lib/gitlab/grape_logging/loggers/cloudflare_logger_spec.rb spec/graphql/types/ci_configuration/sast/type_spec.rb spec/lib/api/entities/group_detail_spec.rb spec/views/groups/settings/_remove.html.haml_spec.rb spec/graphql/types/work_items/widgets/labels_type_spec.rb spec/lib/banzai/filter/output_safety_spec.rb spec/graphql/types/ci/config/need_type_spec.rb spec/lib/gitlab/app_logger_spec.rb spec/lib/gitlab/gitaly_client/diff_stitcher_spec.rb spec/lib/serializers/unsafe_json_spec.rb spec/lib/sidebars/groups/super_sidebar_menus/monitor_menu_spec.rb spec/serializers/rollout_statuses/ingress_entity_spec.rb spec/serializers/admin/user_entity_spec.rb spec/graphql/types/merge_request_state_event_enum_spec.rb spec/services/authorized_project_update/project_access_changed_service_spec.rb spec/graphql/types/ci/variable_interface_spec.rb spec/graphql/types/permission_types/work_item_spec.rb spec/lib/gitlab/gitaly_client/blobs_stitcher_spec.rbKnapsack report generator started!760warning: parser/current is loading parser/ruby30, which recognizes 3.0.5-compliant syntax, but you are running 3.0.6.762Run options: exclude {:quarantine=>true, :level=>"background_migration"}763Test environment set up in 1.461239027 seconds764Ci::PipelineProcessing::AtomicProcessingService765 Pipeline Processing Service Tests With Yaml766 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build2_build1_rules_out_test_needs_build1_with_optional.yml"767 follows transitions768 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_fails.yml"769 follows transitions770 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_fails_deploy_is_delayed_and_needs_test.yml"771 follows transitions772 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_fails_deploy_is_manual_and_needs_test.yml"773 follows transitions774 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_fails_deploy_needs_test.yml"775 follows transitions776 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_fails_deploy_needs_test_when_always.yml"777 follows transitions778 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_fails_other_build_succeeds_deploy_needs_one_build_and_test.yml"779 follows transitions780 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_fails_other_build_succeeds_deploy_needs_one_build_and_test_when_always.yml"781 follows transitions782 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_fails_test_always.yml"783 follows transitions784 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_fails_test_fails_with_allow_failure.yml"785 follows transitions786 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_fails_test_on_failure.yml"787 follows transitions788 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_fails_test_on_failure_deploy_needs_test.yml"789 follows transitions790 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_fails_with_allow_failure_test_on_failure.yml"791 follows transitions792 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_rules_out_test_needs_build_with_optional.yml"793 follows transitions794 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_succeds_test_manual_allow_failure_true_deploy_needs_both.yml"795 follows transitions796 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_succeds_test_manual_allow_failure_true_deploy_needs_test.yml"797 follows transitions798 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_succeeds_test_on_failure.yml"799 follows transitions800 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_succeeds_test_on_failure_deploy_needs_test.yml"801 follows transitions802 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_test_manual_review_deploy.yml"803 follows transitions804 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_build_test_two_manual_review_test_staging_production.yml"805 follows transitions806 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_builds_succeed_test_on_failure_deploy_needs_one_build_and_test.yml"807 follows transitions808 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_builds_succeed_test_on_failure_deploy_needs_one_build_and_test_when_always.yml"809 follows transitions810 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_deploy_needs_empty.yml"811 follows transitions812 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_same_stage_with_fail_and_retry_1.yml"813 follows transitions814 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_same_stage_with_fail_and_retry_2.yml"815 follows transitions816 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_same_stage_with_subsequent_manual_jobs.yml"817 follows transitions818 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_same_stages.yml"819 follows transitions820 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_fails_with_allow_failure.yml"821 follows transitions822 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_manual_allow_failure_false.yml"823 follows transitions824 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_manual_allow_failure_false_deploy_always.yml"825 follows transitions826 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_manual_allow_failure_false_deploy_on_failure.yml"827 follows transitions828 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_manual_allow_failure_false_other_test_succeeds_deploy_needs_both.yml"829 follows transitions830 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_manual_allow_failure_true_deploy_always.yml"831 follows transitions832 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_manual_allow_failure_true_deploy_on_failure.yml"833 follows transitions834 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_manual_allow_failure_true_fails.yml"835 follows transitions836 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_manual_allow_failure_true_other_test_succeeds_deploy_needs_both.yml"837 follows transitions838 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_manual_allow_failure_true_succeeds.yml"839 follows transitions840 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_manual_post_test_needs_deploy_is_stage.yml"841 follows transitions842 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_manual_same_and_different_stage_needs.yml"843 follows transitions844 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_manual_same_stage_needs.yml"845 follows transitions846 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/dag_test_on_failure_no_needs.yml"847 follows transitions848 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_build_fails.yml"849 follows transitions850 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_build_fails_test_on_failure.yml"851 follows transitions852 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_build_fails_with_allow_failure_test_on_failure.yml"853 follows transitions854 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_build_succeeds_test_manual_allow_failure_true.yml"855 follows transitions856 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_build_succeeds_test_on_failure.yml"857 follows transitions858 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_build_test_manual_review_deploy.yml"859 follows transitions860 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_one_test_succeeds_one_manual_test_fails_and_retry_manual_build.yml"861 follows transitions862 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_one_test_succeeds_one_manual_test_fails_and_retry_pipeline.yml"863 follows transitions864 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_test_manual_allow_failure_false.yml"865 follows transitions866 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_test_manual_allow_failure_true.yml"867 follows transitions868 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_test_manual_allow_failure_true_deploy_always.yml"869 follows transitions870 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_test_manual_allow_failure_true_deploy_on_failure.yml"871 follows transitions872 test_file_path: "/builds/gitlab-org/gitlab/spec/services/ci/pipeline_processing/test_cases/stage_test_on_failure_no_prev_stage.yml"873 follows transitions874 Pipeline Processing Service875 when simple pipeline is defined876 processes a pipeline877 does not process pipeline if existing stage is running878 custom stage with first job allowed to fail879 automatically triggers a next stage when build finishes880 when optional manual actions are defined881 when builds are successful882 properly processes the pipeline883 when test job fails884 properly processes the pipeline885 when test and test_failure jobs fail886 properly processes the pipeline887 when deploy job fails888 properly processes the pipeline889 when build is canceled in the second stage890 does not schedule builds after build has been canceled891 when listing optional manual actions892 returns only for skipped builds893 when delayed jobs are defined894 when the scene is timed incremental rollout895 when builds are successful896 properly processes the pipeline897 when build job fails898 properly processes the pipeline899 when rollout 10% is unscheduled900 properly processes the pipeline901 when user plays rollout 10%902 schedules rollout100%903 when rollout 10% fails904 properly processes the pipeline905 when user retries rollout 10%906 does not schedule rollout10% again907 when rollout 10% is played immidiately908 properly processes the pipeline909 when only one scheduled job exists in a pipeline910 properly processes the pipeline911 when there are two delayed jobs in a stage912 blocks the stage until all scheduled jobs finished913 when a delayed job is allowed to fail914 blocks the stage and continues after it failed915 when an exception is raised during a persistent ref creation916 process the pipeline917 when there are manual action in earlier stages918 when first stage has only optional manual actions919 starts from the second stage920 when second stage has only optional manual actions921 skips second stage and continues on third stage922 when there are only manual actions in stages923 processes all jobs until blocking actions encountered924 when there is only one manual action925 skips the pipeline926 when the action was played927 queues the action and pipeline928 when blocking manual actions are defined929 when first stage succeeds930 blocks pipeline on stage with first manual action931 when first stage fails932 does not take blocking action into account933 when pipeline is promoted sequentially up to the end934 properly processes entire pipeline935 when second stage has only on_failure jobs936 skips second stage and continues on third stage937 when failed build in the middle stage is retried938 when failed build is the only unsuccessful build in the stage939 does trigger builds in the next stage940 when builds with auto-retries are configured941 automatically retries builds in a valid order942 when pipeline with needs is created943 when linux:* finishes first it runs it out of order944 when one of the jobs is run on a failure945 when another job in build phase fails first946 does skip linux:notify947 when linux:build job fails first948 does run linux:notify949 when there is a job scheduled with dag but no need (needs: [])950 runs deploy_pages without waiting prior stages951 when a needed job is skipped952 skips the jobs depending on it953 when a needed job is manual954 makes deploy DAG to be skipped955 when a bridge job has parallel:matrix config956 creates pipeline with bridges, then passes the matrix variables to downstream jobs957 when a bridge job has invalid downstream project958 creates a pipeline, then fails the bridge job959 when the dependency is stage-independent960 processes subsequent jobs in the correct order when playing first job961Deployment962 is expected to belong to project required: true963 is expected to belong to environment required: true964 is expected to belong to cluster class_name => Clusters::Cluster required: false965 is expected to belong to user required: false966 is expected to belong to deployable required: false967 is expected to have one deployment_cluster968 is expected to have many deployment_merge_requests969 is expected to have many merge_requests through deployment_merge_requests970 is expected to delegate #environment_name to the #environment object as #name971 is expected to delegate #commit to the #project object972 is expected to delegate #commit_title to the #commit object as #try973 is expected to delegate #kubernetes_namespace to the #deployment_cluster object974 is expected to validate that :ref cannot be empty/falsy975 is expected to validate that :sha cannot be empty/falsy976 behaves like having unique enum values977 has unique values in "status"978 #manual_actions979 delegates to environment_manual_actions980 #scheduled_actions981 delegates to environment_scheduled_actions982 modules983 behaves like AtomicInternalId984 .has_internal_id985 Module inclusion986 is expected to includes the AtomicInternalId module987 Validation988 when presence validation is required989 when creating an object990 raises an error if the internal id is blank991 when updating an object992 raises an error if the internal id is blank993 when presence validation is not required994 when creating an object995 does not raise an error if the internal id is blank (PENDING: No reason given)996 when updating an object997 does not raise an error if the internal id is blank (PENDING: No reason given)998 Creating an instance999 saves a new instance properly1000 internal id generation1001 calls InternalId.generate_next and sets internal id attribute1002 does not overwrite an existing internal id1003 when the instance has an internal ID set1004 calls InternalId.update_last_value and sets the `last_value` to that of the instance1005 unsetting the instance internal id on rollback1006 when the internal id has been changed1007 when the internal id is automatically set1008 clears it on the instance1009 when the internal id is manually set1010 does not clear it on the instance1011 when the internal id has not been changed1012 preserves the value on the instance1013 supply of internal ids1014 provides a persistent supply of IID values, sensitive to the current state1015 #reset_scope_internal_id_attribute1016 rewinds the allocated IID1017 allocates the same IID1018 .stoppable1019 when deployment is stoppable1020 is expected to eq [#<Deployment id: 11, iid: 1, project_id: 60, environment_id: 4, ref: "master", tag: false, sha: "b83...ed_at: "2023-04-27 06:04:21.647424226 +0000", cluster_id: nil, deployable_id: 346, archived: false>]1021 when deployment is not stoppable1022 is expected to be empty1023 .for_iid1024 finds the deployment1025 when iid does not match1026 does not find the deployment1027 .for_environment_name1028 when deployment belongs to the environment1029 is expected to eq [#<Deployment id: 14, iid: 1, project_id: 64, environment_id: 7, ref: "master", tag: false, sha: "b83...op: nil, status: "created", finished_at: nil, cluster_id: nil, deployable_id: 349, archived: false>]1030 when deployment belongs to the same project but different environment name1031 is expected to be empty1032 when deployment belongs to the same environment name but different project1033 is expected to be empty1034 .success1035 when deployment status is success1036 is expected to eq [#<Deployment id: 17, iid: 1, project_id: 66, environment_id: 10, ref: "master", tag: false, sha: "b8...ed_at: "2023-04-27 06:04:27.723948376 +0000", cluster_id: nil, deployable_id: 352, archived: false>]1037 when deployment status is created1038 is expected to be empty1039 when deployment status is running1040 is expected to be empty1041 state machine1042 when deployment runs1043 starts running1044 executes Deployments::HooksWorker asynchronously1045 does not execute Deployments::DropOlderDeploymentsWorker1046 when deployment succeeded1047 has correct status1048 executes Deployments::UpdateEnvironmentWorker asynchronously1049 executes Deployments::HooksWorker asynchronously1050 when deployment failed1051 has correct status1052 does not execute Deployments::LinkMergeRequestWorker1053 executes Deployments::HooksWorker asynchronously1054 when deployment was canceled1055 has correct status1056 does not execute Deployments::LinkMergeRequestWorker1057 executes Deployments::HooksWorker asynchronously1058 when deployment was skipped1059 has correct status1060 does not execute Deployments::LinkMergeRequestWorker asynchronously1061 does not execute Deployments::HooksWorker1062 when deployment is blocked1063 has correct status1064 does not execute Deployments::LinkMergeRequestWorker asynchronously1065 does not execute Deployments::HooksWorker1066 synching status to Jira1067 when Jira Connect subscription does not exist1068 does not call the worker1069 when Jira Connect subscription exists1070 calls the worker on creation1071 does not call the worker for skipped deployments1072 when we call pipeline.run!1073 triggers a Jira synch worker1074 when we call pipeline.succeed!1075 triggers a Jira synch worker1076 when we call pipeline.drop!1077 triggers a Jira synch worker1078 when we call pipeline.cancel!1079 triggers a Jira synch worker1080 #older_than_last_successful_deployment?1081 when deployment is current deployment1082 is expected to be falsey1083 when deployment is behind current deployment1084 is expected to be truthy1085 when deployment is the same sha as the current deployment1086 is expected to be falsey1087 when environment is undefined1088 is expected to be falsey1089 #success?1090 when deployment status is success1091 is expected to be truthy1092 when deployment status is failed1093 is expected to be falsy1094 #status_name1095 when deployment status is success1096 is expected to eq :success1097 when deployment status is failed1098 is expected to eq :failed1099 #deployed_at1100 when deployment status is created1101 is expected to be nil1102 when deployment status is success1103 is expected to eq 2023-04-27 06:05:06.400215313 +00001104 when deployment status is running1105 is expected to be nil1106 .archivables_in1107 when there are no archivable deployments in the project1108 returns nothing1109 when there are archivable deployments in the project1110 returns all archivable deployments1111 with limit1112 takes the limit into account1113 scopes1114 last_for_environment1115 retrieves last deployments for environments1116 active1117 retrieves the active deployments1118 older_than1119 retrives the correct older deployments1120 .finished_before1121 filters deployments by finished_at1122 .finished_after1123 filters deployments by finished_at1124 .ordered1125 sorts by finished at1126 .ordered_as_upcoming1127 sorts by ID DESC1128 visible1129 retrieves the visible deployments1130 has a corresponding database index1131 upcoming1132 retrieves the upcoming deployments1133 last_deployment_group_for_environment1134 when there are no deployments and builds1135 is expected to eq #<ActiveRecord::Relation []>1136 when there are no successful builds1137 is expected to eq #<ActiveRecord::Relation []>1138 when there are deployments for multiple pipelines1139 returns the successful deployment jobs for the last deployment pipeline1140 when there are many environments1141 batch loads for environments1142 When last deployment for environment is a retried build1143 is expected not to be nil1144 latest_for_sha1145 finds the latest deployment with sha1146 when sha is old1147 finds the latest deployment with sha1148 when sha is nil1149 returns nothing1150 #includes_commit?1151 when there is no project commit1152 returns false1153 when they share the same tree branch1154 returns true1155 when the SHA for the deployment does not exist in the repo1156 returns false1157 #stop_action1158 when no other actions1159 is expected to be nil1160 with other actions1161 when matching action is defined1162 is expected to be nil1163 when no matching action is defined1164 is expected to eq #<Ci::Build status: "manual", finished_at: nil, created_at: "2023-04-27 08:50:29.000000000 +0000", up...rocessed: false, scheduling_type: "stage", id: 456, stage_id: 366, partition_id: 100, tag_list: nil>1165 #deployed_by1166 returns the deployment user if there is no deployable1167 returns the deployment user if the deployable have no user1168 returns the deployable user if there is one1169 #triggered_by?1170 is expected to eq true1171 when deployment triggerer is different1172 is expected to eq false1173 .find_successful_deployment!1174 returns a successful deployment1175 raises when no deployment is found1176 .builds1177 retrieves builds for the deployments1178 does not fetch the null deployable_ids1179 #build1180 retrieves build for the deployment1181 returns nil when the associated build is not found1182 #previous_deployment1183 pointer: "production_deployment_1", expected_previous_deployment: nil1184 returns the previous deployment1185 pointer: "production_deployment_2", expected_previous_deployment: "production_deployment_1"1186 returns the previous deployment1187 pointer: "production_deployment_3", expected_previous_deployment: "production_deployment_2"1188 returns the previous deployment1189 pointer: "production_deployment_4", expected_previous_deployment: "production_deployment_2"1190 returns the previous deployment1191 pointer: "staging_deployment_1", expected_previous_deployment: nil1192 returns the previous deployment1193 pointer: "staging_deployment_2", expected_previous_deployment: nil1194 returns the previous deployment1195 pointer: "production_deployment_5", expected_previous_deployment: "production_deployment_2"1196 returns the previous deployment1197 pointer: "staging_deployment_3", expected_previous_deployment: "staging_deployment_2"1198 returns the previous deployment1199 #link_merge_requests1200 links merge requests with a deployment1201 ignores already linked merge requests1202 #create_ref1203 creates a ref using the sha1204 #playable_build1205 when there is a deployable build1206 when the deployable build is playable1207 returns that build1208 when the deployable build is not playable1209 returns nil1210 when there is no deployable build1211 returns nil1212 #update_status1213 changes the status1214 schedules workers when finishing a deploy1215 updates finished_at when transitioning to a finished status1216 tracks an exception if an invalid argument1217 tracks an exception if an invalid status transition is detected1218 is expected to eq false1219 is expected to eq false1220 mapping status to event1221 status: "running", method: :run!1222 calls the correct method for the given status1223 status: "success", method: :succeed!1224 calls the correct method for the given status1225 status: "failed", method: :drop!1226 calls the correct method for the given status1227 status: "canceled", method: :cancel!1228 calls the correct method for the given status1229 status: "skipped", method: :skip!1230 calls the correct method for the given status1231 status: "blocked", method: :block!1232 calls the correct method for the given status1233 for created status update1234 calls the correct method1235 #sync_status_with1236 with created deployment1237 with created build1238 behaves like ignoring build1239 does not change deployment status1240 with running build1241 behaves like synchronizing deployment1242 changes deployment status1243 with finished build1244 behaves like synchronizing deployment1245 changes deployment status1246 with unrelated build1247 behaves like ignoring build1248 does not change deployment status1249 with running deployment1250 with created build1251 behaves like gracefully handling error1252 tracks an exception1253 with running build1254 behaves like ignoring build1255 does not change deployment status1256 with finished build1257 behaves like synchronizing deployment1258 changes deployment status1259 with unrelated build1260 behaves like ignoring build1261 does not change deployment status1262 with finished deployment1263 with created build1264 behaves like gracefully handling error1265 tracks an exception1266 with running build1267 behaves like gracefully handling error1268 tracks an exception1269 with finished build1270 behaves like ignoring build1271 does not change deployment status1272 with failed build1273 behaves like synchronizing deployment1274 changes deployment status1275 with unrelated build1276 behaves like ignoring build1277 does not change deployment status1278 #tags1279 will return tags related to this deployment1280 #valid_sha1281 does not add errors for a valid SHA1282 adds an error for an invalid SHA1283 #valid_ref1284 does not add errors for a valid ref1285 adds an error for an invalid ref1286 #tier_in_yaml1287 when deployable is nil1288 returns nil1289 when deployable is present1290 when tier is specified1291 returns the tier1292 when tier is not specified1293 returns nil1294 .fast_destroy_all1295 cleans path_refs for destroyed environments1296 #update_merge_request_metrics!1297 with production environment1298 updates merge request metrics for production-grade environment1299 with staging environment1300 updates merge request metrics for production-grade environment1301 loose foreign key on deployments.cluster_id1302 behaves like cleanup by a loose foreign key1303 cleans up (delete or nullify) the model1304Gitlab::Metrics::Subscribers::ActiveRecord1305 .load_balancing_metric_counter_keys1306 multiple databases1307 has expected keys1308 single database1309 has expected keys (PENDING: Skipping because some of the extra databases [:ci, :main_clusterwide] are setup)1310 does not have ci keys (PENDING: Skipping because some of the extra databases [:ci, :main_clusterwide] are setup)1311 .load_balancing_metric_duration_keys1312 multiple databases1313 has expected keys1314 single database1315 has expected keys (PENDING: Skipping because some of the extra databases [:ci, :main_clusterwide] are setup)1316 does not have ci keys (PENDING: Skipping because some of the extra databases [:ci, :main_clusterwide] are setup)1317 #transaction1318 when both web and background transaction are available1319 captures the metrics for web only1320 when web transaction is available1321 captures the metrics for web only1322 when background transaction is available1323 captures the metrics for web only1324 #sql1325 without Marginalia comments1326 behaves like track generic sql events1327 name: "SQL", sql_query: "SELECT * FROM users WHERE id = 10", record_query: true, record_write_query: false, record_cached_query: false1328 marks the current thread as using the database1329 behaves like record ActiveRecord metrics1330 when both web and background transaction are available1331 captures the metrics for web only1332 behaves like record ActiveRecord metrics in a metrics transaction1333 increments only db counters1334 observes sql_duration metric1335 when web transaction is available1336 behaves like record ActiveRecord metrics in a metrics transaction1337 increments only db counters1338 observes sql_duration metric1339 when background transaction is available1340 behaves like record ActiveRecord metrics in a metrics transaction1341 increments only db counters1342 observes sql_duration metric1343 behaves like store ActiveRecord info in RequestStore1344 prevents db counters from leaking to the next transaction1345 name: "SQL", sql_query: "WITH active_milestones AS (SELECT COUNT(*), state FROM milestones GROUP BY state) SELECT * FROM active_milestones", record_query: true, record_write_query: false, record_cached_query: false1346 marks the current thread as using the database1347 behaves like record ActiveRecord metrics1348 when both web and background transaction are available1349 captures the metrics for web only1350 behaves like record ActiveRecord metrics in a metrics transaction1351 increments only db counters1352 observes sql_duration metric1353 when web transaction is available1354 behaves like record ActiveRecord metrics in a metrics transaction1355 increments only db counters1356 observes sql_duration metric1357 when background transaction is available1358 behaves like record ActiveRecord metrics in a metrics transaction1359 increments only db counters1360 observes sql_duration metric1361 behaves like store ActiveRecord info in RequestStore1362 prevents db counters from leaking to the next transaction1363 name: "SQL", sql_query: "SELECT * FROM users WHERE id = 10 FOR UPDATE", record_query: true, record_write_query: true, record_cached_query: false1364 marks the current thread as using the database1365 behaves like record ActiveRecord metrics1366 when both web and background transaction are available1367 captures the metrics for web only1368 behaves like record ActiveRecord metrics in a metrics transaction1369 increments only db counters1370 observes sql_duration metric1371 when web transaction is available1372 behaves like record ActiveRecord metrics in a metrics transaction1373 increments only db counters1374 observes sql_duration metric1375 when background transaction is available1376 behaves like record ActiveRecord metrics in a metrics transaction1377 increments only db counters1378 observes sql_duration metric1379 behaves like store ActiveRecord info in RequestStore1380 prevents db counters from leaking to the next transaction1381 name: "SQL", sql_query: "WITH archived_rows AS (SELECT * FROM users WHERE archived = true) INSERT INTO products_log SELECT * FROM archived_rows", record_query: true, record_write_query: true, record_cached_query: false1382 marks the current thread as using the database1383 behaves like record ActiveRecord metrics1384 when both web and background transaction are available1385 captures the metrics for web only1386 behaves like record ActiveRecord metrics in a metrics transaction1387 increments only db counters1388 observes sql_duration metric1389 when web transaction is available1390 behaves like record ActiveRecord metrics in a metrics transaction1391 increments only db counters1392 observes sql_duration metric1393 when background transaction is available1394 behaves like record ActiveRecord metrics in a metrics transaction1395 increments only db counters1396 observes sql_duration metric1397 behaves like store ActiveRecord info in RequestStore1398 prevents db counters from leaking to the next transaction1399 name: "SQL", sql_query: "DELETE FROM users where id = 10", record_query: true, record_write_query: true, record_cached_query: false1400 marks the current thread as using the database1401 behaves like record ActiveRecord metrics1402 when both web and background transaction are available1403 captures the metrics for web only1404 behaves like record ActiveRecord metrics in a metrics transaction1405 increments only db counters1406 observes sql_duration metric1407 when web transaction is available1408 behaves like record ActiveRecord metrics in a metrics transaction1409 increments only db counters1410 observes sql_duration metric1411 when background transaction is available1412 behaves like record ActiveRecord metrics in a metrics transaction1413 increments only db counters1414 observes sql_duration metric1415 behaves like store ActiveRecord info in RequestStore1416 prevents db counters from leaking to the next transaction1417 name: "SQL", sql_query: "INSERT INTO project_ci_cd_settings (project_id) SELECT id FROM projects", record_query: true, record_write_query: true, record_cached_query: false1418 marks the current thread as using the database1419 behaves like record ActiveRecord metrics1420 when both web and background transaction are available1421 captures the metrics for web only1422 behaves like record ActiveRecord metrics in a metrics transaction1423 increments only db counters1424 observes sql_duration metric1425 when web transaction is available1426 behaves like record ActiveRecord metrics in a metrics transaction1427 increments only db counters1428 observes sql_duration metric1429 when background transaction is available1430 behaves like record ActiveRecord metrics in a metrics transaction1431 increments only db counters1432 observes sql_duration metric1433 behaves like store ActiveRecord info in RequestStore1434 prevents db counters from leaking to the next transaction1435 name: "SQL", sql_query: "UPDATE users SET admin = true WHERE id = 10", record_query: true, record_write_query: true, record_cached_query: false1436 marks the current thread as using the database1437 behaves like record ActiveRecord metrics1438 when both web and background transaction are available1439 captures the metrics for web only1440 behaves like record ActiveRecord metrics in a metrics transaction1441 increments only db counters1442 observes sql_duration metric1443 when web transaction is available1444 behaves like record ActiveRecord metrics in a metrics transaction1445 increments only db counters1446 observes sql_duration metric1447 when background transaction is available1448 behaves like record ActiveRecord metrics in a metrics transaction1449 increments only db counters1450 observes sql_duration metric1451 behaves like store ActiveRecord info in RequestStore1452 prevents db counters from leaking to the next transaction1453 name: "CACHE", sql_query: "SELECT * FROM users WHERE id = 10", record_query: true, record_write_query: false, record_cached_query: true1454 marks the current thread as using the database1455 behaves like record ActiveRecord metrics1456 when both web and background transaction are available1457 captures the metrics for web only1458 behaves like record ActiveRecord metrics in a metrics transaction1459 increments only db counters1460 observes sql_duration metric1461 when web transaction is available1462 behaves like record ActiveRecord metrics in a metrics transaction1463 increments only db counters1464 observes sql_duration metric1465 when background transaction is available1466 behaves like record ActiveRecord metrics in a metrics transaction1467 increments only db counters1468 observes sql_duration metric1469 behaves like store ActiveRecord info in RequestStore1470 prevents db counters from leaking to the next transaction1471 name: "SCHEMA", sql_query: "SELECT attr.attname FROM pg_attribute attr INNER JOIN pg_constraint cons ON attr.attrelid = cons.conrelid AND attr.attnum = any(cons.conkey) WHERE cons.contype = 'p' AND cons.conrelid = '\"projects\"'::regclass", record_query: false, record_write_query: false, record_cached_query: false1472 marks the current thread as using the database1473 behaves like record ActiveRecord metrics1474 when both web and background transaction are available1475 captures the metrics for web only1476 behaves like record ActiveRecord metrics in a metrics transaction1477 increments only db counters1478 observes sql_duration metric1479 when web transaction is available1480 behaves like record ActiveRecord metrics in a metrics transaction1481 increments only db counters1482 observes sql_duration metric1483 when background transaction is available1484 behaves like record ActiveRecord metrics in a metrics transaction1485 increments only db counters1486 observes sql_duration metric1487 behaves like store ActiveRecord info in RequestStore1488 prevents db counters from leaking to the next transaction1489 name: "TRANSACTION", sql_query: "BEGIN", record_query: false, record_write_query: false, record_cached_query: false1490 marks the current thread as using the database1491 behaves like record ActiveRecord metrics1492 when both web and background transaction are available1493 captures the metrics for web only1494 behaves like record ActiveRecord metrics in a metrics transaction1495 increments only db counters1496 observes sql_duration metric1497 when web transaction is available1498 behaves like record ActiveRecord metrics in a metrics transaction1499 increments only db counters1500 observes sql_duration metric1501 when background transaction is available1502 behaves like record ActiveRecord metrics in a metrics transaction1503 increments only db counters1504 observes sql_duration metric1505 behaves like store ActiveRecord info in RequestStore1506 prevents db counters from leaking to the next transaction1507 name: "TRANSACTION", sql_query: "COMMIT", record_query: false, record_write_query: false, record_cached_query: false1508 marks the current thread as using the database1509 behaves like record ActiveRecord metrics1510 when both web and background transaction are available1511 captures the metrics for web only1512 behaves like record ActiveRecord metrics in a metrics transaction1513 increments only db counters1514 observes sql_duration metric1515 when web transaction is available1516 behaves like record ActiveRecord metrics in a metrics transaction1517 increments only db counters1518 observes sql_duration metric1519 when background transaction is available1520 behaves like record ActiveRecord metrics in a metrics transaction1521 increments only db counters1522 observes sql_duration metric1523 behaves like store ActiveRecord info in RequestStore1524 prevents db counters from leaking to the next transaction1525 name: "TRANSACTION", sql_query: "ROLLBACK", record_query: false, record_write_query: false, record_cached_query: false1526 marks the current thread as using the database1527 behaves like record ActiveRecord metrics1528 when both web and background transaction are available1529 captures the metrics for web only1530 behaves like record ActiveRecord metrics in a metrics transaction1531 increments only db counters1532 observes sql_duration metric1533 when web transaction is available1534 behaves like record ActiveRecord metrics in a metrics transaction1535 increments only db counters1536 observes sql_duration metric1537 when background transaction is available1538 behaves like record ActiveRecord metrics in a metrics transaction1539 increments only db counters1540 observes sql_duration metric1541 behaves like store ActiveRecord info in RequestStore1542 prevents db counters from leaking to the next transaction1543 with Marginalia comments1544 behaves like track generic sql events1545 name: "SQL", sql_query: "SELECT * FROM users WHERE id = 10", record_query: true, record_write_query: false, record_cached_query: false1546 marks the current thread as using the database1547 behaves like record ActiveRecord metrics1548 when both web and background transaction are available1549 captures the metrics for web only1550 behaves like record ActiveRecord metrics in a metrics transaction1551 increments only db counters1552 observes sql_duration metric1553 when web transaction is available1554 behaves like record ActiveRecord metrics in a metrics transaction1555 increments only db counters1556 observes sql_duration metric1557 when background transaction is available1558 behaves like record ActiveRecord metrics in a metrics transaction1559 increments only db counters1560 observes sql_duration metric1561 behaves like store ActiveRecord info in RequestStore1562 prevents db counters from leaking to the next transaction1563 name: "SQL", sql_query: "WITH active_milestones AS (SELECT COUNT(*), state FROM milestones GROUP BY state) SELECT * FROM active_milestones", record_query: true, record_write_query: false, record_cached_query: false1564 marks the current thread as using the database1565 behaves like record ActiveRecord metrics1566 when both web and background transaction are available1567 captures the metrics for web only1568 behaves like record ActiveRecord metrics in a metrics transaction1569 increments only db counters1570 observes sql_duration metric1571 when web transaction is available1572 behaves like record ActiveRecord metrics in a metrics transaction1573 increments only db counters1574 observes sql_duration metric1575 when background transaction is available1576 behaves like record ActiveRecord metrics in a metrics transaction1577 increments only db counters1578 observes sql_duration metric1579 behaves like store ActiveRecord info in RequestStore1580 prevents db counters from leaking to the next transaction1581 name: "SQL", sql_query: "SELECT * FROM users WHERE id = 10 FOR UPDATE", record_query: true, record_write_query: true, record_cached_query: false1582 marks the current thread as using the database1583 behaves like record ActiveRecord metrics1584 when both web and background transaction are available1585 captures the metrics for web only1586 behaves like record ActiveRecord metrics in a metrics transaction1587 increments only db counters1588 observes sql_duration metric1589 when web transaction is available1590 behaves like record ActiveRecord metrics in a metrics transaction1591 increments only db counters1592 observes sql_duration metric1593 when background transaction is available1594 behaves like record ActiveRecord metrics in a metrics transaction1595 increments only db counters1596 observes sql_duration metric1597 behaves like store ActiveRecord info in RequestStore1598 prevents db counters from leaking to the next transaction1599 name: "SQL", sql_query: "WITH archived_rows AS (SELECT * FROM users WHERE archived = true) INSERT INTO products_log SELECT * FROM archived_rows", record_query: true, record_write_query: true, record_cached_query: false1600 marks the current thread as using the database1601 behaves like record ActiveRecord metrics1602 when both web and background transaction are available1603 captures the metrics for web only1604 behaves like record ActiveRecord metrics in a metrics transaction1605 increments only db counters1606 observes sql_duration metric1607 when web transaction is available1608 behaves like record ActiveRecord metrics in a metrics transaction1609 increments only db counters1610 observes sql_duration metric1611 when background transaction is available1612 behaves like record ActiveRecord metrics in a metrics transaction1613 increments only db counters1614 observes sql_duration metric1615 behaves like store ActiveRecord info in RequestStore1616 prevents db counters from leaking to the next transaction1617 name: "SQL", sql_query: "DELETE FROM users where id = 10", record_query: true, record_write_query: true, record_cached_query: false1618 marks the current thread as using the database1619 behaves like record ActiveRecord metrics1620 when both web and background transaction are available1621 captures the metrics for web only1622 behaves like record ActiveRecord metrics in a metrics transaction1623 increments only db counters1624 observes sql_duration metric1625 when web transaction is available1626 behaves like record ActiveRecord metrics in a metrics transaction1627 increments only db counters1628 observes sql_duration metric1629 when background transaction is available1630 behaves like record ActiveRecord metrics in a metrics transaction1631 increments only db counters1632 observes sql_duration metric1633 behaves like store ActiveRecord info in RequestStore1634 prevents db counters from leaking to the next transaction1635 name: "SQL", sql_query: "INSERT INTO project_ci_cd_settings (project_id) SELECT id FROM projects", record_query: true, record_write_query: true, record_cached_query: false1636 marks the current thread as using the database1637 behaves like record ActiveRecord metrics1638 when both web and background transaction are available1639 captures the metrics for web only1640 behaves like record ActiveRecord metrics in a metrics transaction1641 increments only db counters1642 observes sql_duration metric1643 when web transaction is available1644 behaves like record ActiveRecord metrics in a metrics transaction1645 increments only db counters1646 observes sql_duration metric1647 when background transaction is available1648 behaves like record ActiveRecord metrics in a metrics transaction1649 increments only db counters1650 observes sql_duration metric1651 behaves like store ActiveRecord info in RequestStore1652 prevents db counters from leaking to the next transaction1653 name: "SQL", sql_query: "UPDATE users SET admin = true WHERE id = 10", record_query: true, record_write_query: true, record_cached_query: false1654 marks the current thread as using the database1655 behaves like record ActiveRecord metrics1656 when both web and background transaction are available1657 captures the metrics for web only1658 behaves like record ActiveRecord metrics in a metrics transaction1659 increments only db counters1660 observes sql_duration metric1661 when web transaction is available1662 behaves like record ActiveRecord metrics in a metrics transaction1663 increments only db counters1664 observes sql_duration metric1665 when background transaction is available1666 behaves like record ActiveRecord metrics in a metrics transaction1667 increments only db counters1668 observes sql_duration metric1669 behaves like store ActiveRecord info in RequestStore1670 prevents db counters from leaking to the next transaction1671 name: "CACHE", sql_query: "SELECT * FROM users WHERE id = 10", record_query: true, record_write_query: false, record_cached_query: true1672 marks the current thread as using the database1673 behaves like record ActiveRecord metrics1674 when both web and background transaction are available1675 captures the metrics for web only1676 behaves like record ActiveRecord metrics in a metrics transaction1677 increments only db counters1678 observes sql_duration metric1679 when web transaction is available1680 behaves like record ActiveRecord metrics in a metrics transaction1681 increments only db counters1682 observes sql_duration metric1683 when background transaction is available1684 behaves like record ActiveRecord metrics in a metrics transaction1685 increments only db counters1686 observes sql_duration metric1687 behaves like store ActiveRecord info in RequestStore1688 prevents db counters from leaking to the next transaction1689 name: "SCHEMA", sql_query: "SELECT attr.attname FROM pg_attribute attr INNER JOIN pg_constraint cons ON attr.attrelid = cons.conrelid AND attr.attnum = any(cons.conkey) WHERE cons.contype = 'p' AND cons.conrelid = '\"projects\"'::regclass", record_query: false, record_write_query: false, record_cached_query: false1690 marks the current thread as using the database1691 behaves like record ActiveRecord metrics1692 when both web and background transaction are available1693 captures the metrics for web only1694 behaves like record ActiveRecord metrics in a metrics transaction1695 increments only db counters1696 observes sql_duration metric1697 when web transaction is available1698 behaves like record ActiveRecord metrics in a metrics transaction1699 increments only db counters1700 observes sql_duration metric1701 when background transaction is available1702 behaves like record ActiveRecord metrics in a metrics transaction1703 increments only db counters1704 observes sql_duration metric1705 behaves like store ActiveRecord info in RequestStore1706 prevents db counters from leaking to the next transaction1707 name: "TRANSACTION", sql_query: "BEGIN", record_query: false, record_write_query: false, record_cached_query: false1708 marks the current thread as using the database1709 behaves like record ActiveRecord metrics1710 when both web and background transaction are available1711 captures the metrics for web only1712 behaves like record ActiveRecord metrics in a metrics transaction1713 increments only db counters1714 observes sql_duration metric1715 when web transaction is available1716 behaves like record ActiveRecord metrics in a metrics transaction1717 increments only db counters1718 observes sql_duration metric1719 when background transaction is available1720 behaves like record ActiveRecord metrics in a metrics transaction1721 increments only db counters1722 observes sql_duration metric1723 behaves like store ActiveRecord info in RequestStore1724 prevents db counters from leaking to the next transaction1725 name: "TRANSACTION", sql_query: "COMMIT", record_query: false, record_write_query: false, record_cached_query: false1726 marks the current thread as using the database1727 behaves like record ActiveRecord metrics1728 when both web and background transaction are available1729 captures the metrics for web only1730 behaves like record ActiveRecord metrics in a metrics transaction1731 increments only db counters1732 observes sql_duration metric1733 when web transaction is available1734 behaves like record ActiveRecord metrics in a metrics transaction1735 increments only db counters1736 observes sql_duration metric1737 when background transaction is available1738 behaves like record ActiveRecord metrics in a metrics transaction1739 increments only db counters1740 observes sql_duration metric1741 behaves like store ActiveRecord info in RequestStore1742 prevents db counters from leaking to the next transaction1743 name: "TRANSACTION", sql_query: "ROLLBACK", record_query: false, record_write_query: false, record_cached_query: false1744 marks the current thread as using the database1745 behaves like record ActiveRecord metrics1746 when both web and background transaction are available1747 captures the metrics for web only1748 behaves like record ActiveRecord metrics in a metrics transaction1749 increments only db counters1750 observes sql_duration metric1751 when web transaction is available1752 behaves like record ActiveRecord metrics in a metrics transaction1753 increments only db counters1754 observes sql_duration metric1755 when background transaction is available1756 behaves like record ActiveRecord metrics in a metrics transaction1757 increments only db counters1758 observes sql_duration metric1759 behaves like store ActiveRecord info in RequestStore1760 prevents db counters from leaking to the next transaction1761 Database Load Balancing enabled1762 without Marginalia comments1763 behaves like track sql events for each role1764 name: "SQL", sql_query: "SELECT * FROM users WHERE id = 10", record_query: true, record_write_query: false, record_cached_query: false, record_wal_query: false1765 query using a connection to a replica1766 queries connection db role1767 behaves like record ActiveRecord metrics1768 when both web and background transaction are available1769 captures the metrics for web only1770 behaves like record ActiveRecord metrics in a metrics transaction1771 increments only db counters1772 observes sql_duration metric1773 when web transaction is available1774 behaves like record ActiveRecord metrics in a metrics transaction1775 increments only db counters1776 observes sql_duration metric1777 when background transaction is available1778 behaves like record ActiveRecord metrics in a metrics transaction1779 increments only db counters1780 observes sql_duration metric1781 behaves like store ActiveRecord info in RequestStore1782 prevents db counters from leaking to the next transaction1783 query using a connection to a primary1784 queries connection db role1785 behaves like record ActiveRecord metrics1786 when both web and background transaction are available1787 captures the metrics for web only1788 behaves like record ActiveRecord metrics in a metrics transaction1789 increments only db counters1790 observes sql_duration metric1791 when web transaction is available1792 behaves like record ActiveRecord metrics in a metrics transaction1793 increments only db counters1794 observes sql_duration metric1795 when background transaction is available1796 behaves like record ActiveRecord metrics in a metrics transaction1797 increments only db counters1798 observes sql_duration metric1799 behaves like store ActiveRecord info in RequestStore1800 prevents db counters from leaking to the next transaction1801 query using a connection to an unknown source1802 does not record DB role metrics1803 does not store DB roles into into RequestStore1804 name: "SQL", sql_query: "WITH active_milestones AS (SELECT COUNT(*), state FROM milestones GROUP BY state) SELECT * FROM active_milestones", record_query: true, record_write_query: false, record_cached_query: false, record_wal_query: false1805 query using a connection to a replica1806 queries connection db role1807 behaves like record ActiveRecord metrics1808 when both web and background transaction are available1809 captures the metrics for web only1810 behaves like record ActiveRecord metrics in a metrics transaction1811 increments only db counters1812 observes sql_duration metric1813 when web transaction is available1814 behaves like record ActiveRecord metrics in a metrics transaction1815 increments only db counters1816 observes sql_duration metric1817 when background transaction is available1818 behaves like record ActiveRecord metrics in a metrics transaction1819 increments only db counters1820 observes sql_duration metric1821 behaves like store ActiveRecord info in RequestStore1822 prevents db counters from leaking to the next transaction1823 query using a connection to a primary1824 queries connection db role1825 behaves like record ActiveRecord metrics1826 when both web and background transaction are available1827 captures the metrics for web only1828 behaves like record ActiveRecord metrics in a metrics transaction1829 increments only db counters1830 observes sql_duration metric1831 when web transaction is available1832 behaves like record ActiveRecord metrics in a metrics transaction1833 increments only db counters1834 observes sql_duration metric1835 when background transaction is available1836 behaves like record ActiveRecord metrics in a metrics transaction1837 increments only db counters1838 observes sql_duration metric1839 behaves like store ActiveRecord info in RequestStore1840 prevents db counters from leaking to the next transaction1841 query using a connection to an unknown source1842 does not record DB role metrics1843 does not store DB roles into into RequestStore1844 name: "SQL", sql_query: "SELECT * FROM users WHERE id = 10 FOR UPDATE", record_query: true, record_write_query: true, record_cached_query: false, record_wal_query: false1845 query using a connection to a replica1846 queries connection db role1847 behaves like record ActiveRecord metrics1848 when both web and background transaction are available1849 captures the metrics for web only1850 behaves like record ActiveRecord metrics in a metrics transaction1851 increments only db counters1852 observes sql_duration metric1853 when web transaction is available1854 behaves like record ActiveRecord metrics in a metrics transaction1855 increments only db counters1856 observes sql_duration metric1857 when background transaction is available1858 behaves like record ActiveRecord metrics in a metrics transaction1859 increments only db counters1860 observes sql_duration metric1861 behaves like store ActiveRecord info in RequestStore1862 prevents db counters from leaking to the next transaction1863 query using a connection to a primary1864 queries connection db role1865 behaves like record ActiveRecord metrics1866 when both web and background transaction are available1867 captures the metrics for web only1868 behaves like record ActiveRecord metrics in a metrics transaction1869 increments only db counters1870 observes sql_duration metric1871 when web transaction is available1872 behaves like record ActiveRecord metrics in a metrics transaction1873 increments only db counters1874 observes sql_duration metric1875 when background transaction is available1876 behaves like record ActiveRecord metrics in a metrics transaction1877 increments only db counters1878 observes sql_duration metric1879 behaves like store ActiveRecord info in RequestStore1880 prevents db counters from leaking to the next transaction1881 query using a connection to an unknown source1882 does not record DB role metrics1883 does not store DB roles into into RequestStore1884 name: "SQL", sql_query: "WITH archived_rows AS (SELECT * FROM users WHERE archived = true) INSERT INTO products_log SELECT * FROM archived_rows", record_query: true, record_write_query: true, record_cached_query: false, record_wal_query: false1885 query using a connection to a replica1886 queries connection db role1887 behaves like record ActiveRecord metrics1888 when both web and background transaction are available1889 captures the metrics for web only1890 behaves like record ActiveRecord metrics in a metrics transaction1891 increments only db counters1892 observes sql_duration metric1893 when web transaction is available1894 behaves like record ActiveRecord metrics in a metrics transaction1895 increments only db counters1896 observes sql_duration metric1897 when background transaction is available1898 behaves like record ActiveRecord metrics in a metrics transaction1899 increments only db counters1900 observes sql_duration metric1901 behaves like store ActiveRecord info in RequestStore1902 prevents db counters from leaking to the next transaction1903 query using a connection to a primary1904 queries connection db role1905 behaves like record ActiveRecord metrics1906 when both web and background transaction are available1907 captures the metrics for web only1908 behaves like record ActiveRecord metrics in a metrics transaction1909 increments only db counters1910 observes sql_duration metric1911 when web transaction is available1912 behaves like record ActiveRecord metrics in a metrics transaction1913 increments only db counters1914 observes sql_duration metric1915 when background transaction is available1916 behaves like record ActiveRecord metrics in a metrics transaction1917 increments only db counters1918 observes sql_duration metric1919 behaves like store ActiveRecord info in RequestStore1920 prevents db counters from leaking to the next transaction1921 query using a connection to an unknown source1922 does not record DB role metrics1923 does not store DB roles into into RequestStore1924 name: "SQL", sql_query: "DELETE FROM users where id = 10", record_query: true, record_write_query: true, record_cached_query: false, record_wal_query: false1925 query using a connection to a replica1926 queries connection db role1927 behaves like record ActiveRecord metrics1928 when both web and background transaction are available1929 captures the metrics for web only1930 behaves like record ActiveRecord metrics in a metrics transaction1931 increments only db counters1932 observes sql_duration metric1933 when web transaction is available1934 behaves like record ActiveRecord metrics in a metrics transaction1935 increments only db counters1936 observes sql_duration metric1937 when background transaction is available1938 behaves like record ActiveRecord metrics in a metrics transaction1939 increments only db counters1940 observes sql_duration metric1941 behaves like store ActiveRecord info in RequestStore1942 prevents db counters from leaking to the next transaction1943 query using a connection to a primary1944 queries connection db role1945 behaves like record ActiveRecord metrics1946 when both web and background transaction are available1947 captures the metrics for web only1948 behaves like record ActiveRecord metrics in a metrics transaction1949 increments only db counters1950 observes sql_duration metric1951 when web transaction is available1952 behaves like record ActiveRecord metrics in a metrics transaction1953 increments only db counters1954 observes sql_duration metric1955 when background transaction is available1956 behaves like record ActiveRecord metrics in a metrics transaction1957 increments only db counters1958 observes sql_duration metric1959 behaves like store ActiveRecord info in RequestStore1960 prevents db counters from leaking to the next transaction1961 query using a connection to an unknown source1962 does not record DB role metrics1963 does not store DB roles into into RequestStore1964 name: "SQL", sql_query: "INSERT INTO project_ci_cd_settings (project_id) SELECT id FROM projects", record_query: true, record_write_query: true, record_cached_query: false, record_wal_query: false1965 query using a connection to a replica1966 queries connection db role1967 behaves like record ActiveRecord metrics1968 when both web and background transaction are available1969 captures the metrics for web only1970 behaves like record ActiveRecord metrics in a metrics transaction1971 increments only db counters1972 observes sql_duration metric1973 when web transaction is available1974 behaves like record ActiveRecord metrics in a metrics transaction1975 increments only db counters1976 observes sql_duration metric1977 when background transaction is available1978 behaves like record ActiveRecord metrics in a metrics transaction1979 increments only db counters1980 observes sql_duration metric1981 behaves like store ActiveRecord info in RequestStore1982 prevents db counters from leaking to the next transaction1983 query using a connection to a primary1984 queries connection db role1985 behaves like record ActiveRecord metrics1986 when both web and background transaction are available1987 captures the metrics for web only1988 behaves like record ActiveRecord metrics in a metrics transaction1989 increments only db counters1990 observes sql_duration metric1991 when web transaction is available1992 behaves like record ActiveRecord metrics in a metrics transaction1993 increments only db counters1994 observes sql_duration metric1995 when background transaction is available1996 behaves like record ActiveRecord metrics in a metrics transaction1997 increments only db counters1998 observes sql_duration metric1999 behaves like store ActiveRecord info in RequestStore2000 prevents db counters from leaking to the next transaction2001 query using a connection to an unknown source2002 does not record DB role metrics2003 does not store DB roles into into RequestStore2004 name: "SQL", sql_query: "UPDATE users SET admin = true WHERE id = 10", record_query: true, record_write_query: true, record_cached_query: false, record_wal_query: false2005 query using a connection to a replica2006 queries connection db role2007 behaves like record ActiveRecord metrics2008 when both web and background transaction are available2009 captures the metrics for web only2010 behaves like record ActiveRecord metrics in a metrics transaction2011 increments only db counters2012 observes sql_duration metric2013 when web transaction is available2014 behaves like record ActiveRecord metrics in a metrics transaction2015 increments only db counters2016 observes sql_duration metric2017 when background transaction is available2018 behaves like record ActiveRecord metrics in a metrics transaction2019 increments only db counters2020 observes sql_duration metric2021 behaves like store ActiveRecord info in RequestStore2022 prevents db counters from leaking to the next transaction2023 query using a connection to a primary2024 queries connection db role2025 behaves like record ActiveRecord metrics2026 when both web and background transaction are available2027 captures the metrics for web only2028 behaves like record ActiveRecord metrics in a metrics transaction2029 increments only db counters2030 observes sql_duration metric2031 when web transaction is available2032 behaves like record ActiveRecord metrics in a metrics transaction2033 increments only db counters2034 observes sql_duration metric2035 when background transaction is available2036 behaves like record ActiveRecord metrics in a metrics transaction2037 increments only db counters2038 observes sql_duration metric2039 behaves like store ActiveRecord info in RequestStore2040 prevents db counters from leaking to the next transaction2041 query using a connection to an unknown source2042 does not record DB role metrics2043 does not store DB roles into into RequestStore2044 name: "SQL", sql_query: "SELECT pg_current_wal_insert_lsn()::text AS location", record_query: true, record_write_query: false, record_cached_query: false, record_wal_query: true2045 query using a connection to a replica2046 queries connection db role2047 behaves like record ActiveRecord metrics2048 when both web and background transaction are available2049 captures the metrics for web only2050 behaves like record ActiveRecord metrics in a metrics transaction2051 increments only db counters2052 observes sql_duration metric2053 when web transaction is available2054 behaves like record ActiveRecord metrics in a metrics transaction2055 increments only db counters2056 observes sql_duration metric2057 when background transaction is available2058 behaves like record ActiveRecord metrics in a metrics transaction2059 increments only db counters2060 observes sql_duration metric2061 behaves like store ActiveRecord info in RequestStore2062 prevents db counters from leaking to the next transaction2063 query using a connection to a primary2064 queries connection db role2065 behaves like record ActiveRecord metrics2066 when both web and background transaction are available2067 captures the metrics for web only2068 behaves like record ActiveRecord metrics in a metrics transaction2069 increments only db counters2070 observes sql_duration metric2071 when web transaction is available2072 behaves like record ActiveRecord metrics in a metrics transaction2073 increments only db counters2074 observes sql_duration metric2075 when background transaction is available2076 behaves like record ActiveRecord metrics in a metrics transaction2077 increments only db counters2078 observes sql_duration metric2079 behaves like store ActiveRecord info in RequestStore2080 prevents db counters from leaking to the next transaction2081 query using a connection to an unknown source2082 does not record DB role metrics2083 does not store DB roles into into RequestStore2084 name: "SQL", sql_query: "SELECT pg_last_wal_replay_lsn()::text AS location", record_query: true, record_write_query: false, record_cached_query: false, record_wal_query: true2085 query using a connection to a replica2086 queries connection db role2087 behaves like record ActiveRecord metrics2088 when both web and background transaction are available2089 captures the metrics for web only2090 behaves like record ActiveRecord metrics in a metrics transaction2091 increments only db counters2092 observes sql_duration metric2093 when web transaction is available2094 behaves like record ActiveRecord metrics in a metrics transaction2095 increments only db counters2096 observes sql_duration metric2097 when background transaction is available2098 behaves like record ActiveRecord metrics in a metrics transaction2099 increments only db counters2100 observes sql_duration metric2101 behaves like store ActiveRecord info in RequestStore2102 prevents db counters from leaking to the next transaction2103 query using a connection to a primary2104 queries connection db role2105 behaves like record ActiveRecord metrics2106 when both web and background transaction are available2107 captures the metrics for web only2108 behaves like record ActiveRecord metrics in a metrics transaction2109 increments only db counters2110 observes sql_duration metric2111 when web transaction is available2112 behaves like record ActiveRecord metrics in a metrics transaction2113 increments only db counters2114 observes sql_duration metric2115 when background transaction is available2116 behaves like record ActiveRecord metrics in a metrics transaction2117 increments only db counters2118 observes sql_duration metric2119 behaves like store ActiveRecord info in RequestStore2120 prevents db counters from leaking to the next transaction2121 query using a connection to an unknown source2122 does not record DB role metrics2123 does not store DB roles into into RequestStore2124 name: "CACHE", sql_query: "SELECT pg_current_wal_insert_lsn()::text AS location", record_query: true, record_write_query: false, record_cached_query: true, record_wal_query: true2125 query using a connection to a replica2126 queries connection db role2127 behaves like record ActiveRecord metrics2128 when both web and background transaction are available2129 captures the metrics for web only2130 behaves like record ActiveRecord metrics in a metrics transaction2131 increments only db counters2132 observes sql_duration metric2133 when web transaction is available2134 behaves like record ActiveRecord metrics in a metrics transaction2135 increments only db counters2136 observes sql_duration metric2137 when background transaction is available2138 behaves like record ActiveRecord metrics in a metrics transaction2139 increments only db counters2140 observes sql_duration metric2141 behaves like store ActiveRecord info in RequestStore2142 prevents db counters from leaking to the next transaction2143 query using a connection to a primary2144 queries connection db role2145 behaves like record ActiveRecord metrics2146 when both web and background transaction are available2147 captures the metrics for web only2148 behaves like record ActiveRecord metrics in a metrics transaction2149 increments only db counters2150 observes sql_duration metric2151 when web transaction is available2152 behaves like record ActiveRecord metrics in a metrics transaction2153 increments only db counters2154 observes sql_duration metric2155 when background transaction is available2156 behaves like record ActiveRecord metrics in a metrics transaction2157 increments only db counters2158 observes sql_duration metric2159 behaves like store ActiveRecord info in RequestStore2160 prevents db counters from leaking to the next transaction2161 query using a connection to an unknown source2162 does not record DB role metrics2163 does not store DB roles into into RequestStore2164 name: "CACHE", sql_query: "SELECT pg_last_wal_replay_lsn()::text AS location", record_query: true, record_write_query: false, record_cached_query: true, record_wal_query: true2165 query using a connection to a replica2166 queries connection db role2167 behaves like record ActiveRecord metrics2168 when both web and background transaction are available2169 captures the metrics for web only2170 behaves like record ActiveRecord metrics in a metrics transaction2171 increments only db counters2172 observes sql_duration metric2173 when web transaction is available2174 behaves like record ActiveRecord metrics in a metrics transaction2175 increments only db counters2176 observes sql_duration metric2177 when background transaction is available2178 behaves like record ActiveRecord metrics in a metrics transaction2179 increments only db counters2180 observes sql_duration metric2181 behaves like store ActiveRecord info in RequestStore2182 prevents db counters from leaking to the next transaction2183 query using a connection to a primary2184 queries connection db role2185 behaves like record ActiveRecord metrics2186 when both web and background transaction are available2187 captures the metrics for web only2188 behaves like record ActiveRecord metrics in a metrics transaction2189 increments only db counters2190 observes sql_duration metric2191 when web transaction is available2192 behaves like record ActiveRecord metrics in a metrics transaction2193 increments only db counters2194 observes sql_duration metric2195 when background transaction is available2196 behaves like record ActiveRecord metrics in a metrics transaction2197 increments only db counters2198 observes sql_duration metric2199 behaves like store ActiveRecord info in RequestStore2200 prevents db counters from leaking to the next transaction2201 query using a connection to an unknown source2202 does not record DB role metrics2203 does not store DB roles into into RequestStore2204 name: "CACHE", sql_query: "SELECT * FROM users WHERE id = 10", record_query: true, record_write_query: false, record_cached_query: true, record_wal_query: false2205 query using a connection to a replica2206 queries connection db role2207 behaves like record ActiveRecord metrics2208 when both web and background transaction are available2209 captures the metrics for web only2210 behaves like record ActiveRecord metrics in a metrics transaction2211 increments only db counters2212 observes sql_duration metric2213 when web transaction is available2214 behaves like record ActiveRecord metrics in a metrics transaction2215 increments only db counters2216 observes sql_duration metric2217 when background transaction is available2218 behaves like record ActiveRecord metrics in a metrics transaction2219 increments only db counters2220 observes sql_duration metric2221 behaves like store ActiveRecord info in RequestStore2222 prevents db counters from leaking to the next transaction2223 query using a connection to a primary2224 queries connection db role2225 behaves like record ActiveRecord metrics2226 when both web and background transaction are available2227 captures the metrics for web only2228 behaves like record ActiveRecord metrics in a metrics transaction2229 increments only db counters2230 observes sql_duration metric2231 when web transaction is available2232 behaves like record ActiveRecord metrics in a metrics transaction2233 increments only db counters2234 observes sql_duration metric2235 when background transaction is available2236 behaves like record ActiveRecord metrics in a metrics transaction2237 increments only db counters2238 observes sql_duration metric2239 behaves like store ActiveRecord info in RequestStore2240 prevents db counters from leaking to the next transaction2241 query using a connection to an unknown source2242 does not record DB role metrics2243 does not store DB roles into into RequestStore2244 name: "SCHEMA", sql_query: "SELECT attr.attname FROM pg_attribute attr INNER JOIN pg_constraint cons ON attr.attrelid = cons.conrelid AND attr.attnum = any(cons.conkey) WHERE cons.contype = 'p' AND cons.conrelid = '\"projects\"'::regclass", record_query: false, record_write_query: false, record_cached_query: false, record_wal_query: false2245 query using a connection to a replica2246 queries connection db role2247 behaves like record ActiveRecord metrics2248 when both web and background transaction are available2249 captures the metrics for web only2250 behaves like record ActiveRecord metrics in a metrics transaction2251 increments only db counters2252 observes sql_duration metric2253 when web transaction is available2254 behaves like record ActiveRecord metrics in a metrics transaction2255 increments only db counters2256 observes sql_duration metric2257 when background transaction is available2258 behaves like record ActiveRecord metrics in a metrics transaction2259 increments only db counters2260 observes sql_duration metric2261 behaves like store ActiveRecord info in RequestStore2262 prevents db counters from leaking to the next transaction2263 query using a connection to a primary2264 queries connection db role2265 behaves like record ActiveRecord metrics2266 when both web and background transaction are available2267 captures the metrics for web only2268 behaves like record ActiveRecord metrics in a metrics transaction2269 increments only db counters2270 observes sql_duration metric2271 when web transaction is available2272 behaves like record ActiveRecord metrics in a metrics transaction2273 increments only db counters2274 observes sql_duration metric2275 when background transaction is available2276 behaves like record ActiveRecord metrics in a metrics transaction2277 increments only db counters2278 observes sql_duration metric2279 behaves like store ActiveRecord info in RequestStore2280 prevents db counters from leaking to the next transaction2281 query using a connection to an unknown source2282 does not record DB role metrics2283 does not store DB roles into into RequestStore2284 name: "TRANSACTION", sql_query: "BEGIN", record_query: false, record_write_query: false, record_cached_query: false, record_wal_query: false2285 query using a connection to a replica2286 queries connection db role2287 behaves like record ActiveRecord metrics2288 when both web and background transaction are available2289 captures the metrics for web only2290 behaves like record ActiveRecord metrics in a metrics transaction2291 increments only db counters2292 observes sql_duration metric2293 when web transaction is available2294 behaves like record ActiveRecord metrics in a metrics transaction2295 increments only db counters2296 observes sql_duration metric2297 when background transaction is available2298 behaves like record ActiveRecord metrics in a metrics transaction2299 increments only db counters2300 observes sql_duration metric2301 behaves like store ActiveRecord info in RequestStore2302 prevents db counters from leaking to the next transaction2303 query using a connection to a primary2304 queries connection db role2305 behaves like record ActiveRecord metrics2306 when both web and background transaction are available2307 captures the metrics for web only2308 behaves like record ActiveRecord metrics in a metrics transaction2309 increments only db counters2310 observes sql_duration metric2311 when web transaction is available2312 behaves like record ActiveRecord metrics in a metrics transaction2313 increments only db counters2314 observes sql_duration metric2315 when background transaction is available2316 behaves like record ActiveRecord metrics in a metrics transaction2317 increments only db counters2318 observes sql_duration metric2319 behaves like store ActiveRecord info in RequestStore2320 prevents db counters from leaking to the next transaction2321 query using a connection to an unknown source2322 does not record DB role metrics2323 does not store DB roles into into RequestStore2324 name: "TRANSACTION", sql_query: "COMMIT", record_query: false, record_write_query: false, record_cached_query: false, record_wal_query: false2325 query using a connection to a replica2326 queries connection db role2327 behaves like record ActiveRecord metrics2328 when both web and background transaction are available2329 captures the metrics for web only2330 behaves like record ActiveRecord metrics in a metrics transaction2331 increments only db counters2332 observes sql_duration metric2333 when web transaction is available2334 behaves like record ActiveRecord metrics in a metrics transaction2335 increments only db counters2336 observes sql_duration metric2337 when background transaction is available2338 behaves like record ActiveRecord metrics in a metrics transaction2339 increments only db counters2340 observes sql_duration metric2341 behaves like store ActiveRecord info in RequestStore2342 prevents db counters from leaking to the next transaction2343 query using a connection to a primary2344 queries connection db role2345 behaves like record ActiveRecord metrics2346 when both web and background transaction are available2347 captures the metrics for web only2348 behaves like record ActiveRecord metrics in a metrics transaction2349 increments only db counters2350 observes sql_duration metric2351 when web transaction is available2352 behaves like record ActiveRecord metrics in a metrics transaction2353 increments only db counters2354 observes sql_duration metric2355 when background transaction is available2356 behaves like record ActiveRecord metrics in a metrics transaction2357 increments only db counters2358 observes sql_duration metric2359 behaves like store ActiveRecord info in RequestStore2360 prevents db counters from leaking to the next transaction2361 query using a connection to an unknown source2362 does not record DB role metrics2363 does not store DB roles into into RequestStore2364 name: "TRANSACTION", sql_query: "ROLLBACK", record_query: false, record_write_query: false, record_cached_query: false, record_wal_query: false2365 query using a connection to a replica2366 queries connection db role2367 behaves like record ActiveRecord metrics2368 when both web and background transaction are available2369 captures the metrics for web only2370 behaves like record ActiveRecord metrics in a metrics transaction2371 increments only db counters2372 observes sql_duration metric2373 when web transaction is available2374 behaves like record ActiveRecord metrics in a metrics transaction2375 increments only db counters2376 observes sql_duration metric2377 when background transaction is available2378 behaves like record ActiveRecord metrics in a metrics transaction2379 increments only db counters2380 observes sql_duration metric2381 behaves like store ActiveRecord info in RequestStore2382 prevents db counters from leaking to the next transaction2383 query using a connection to a primary2384 queries connection db role2385 behaves like record ActiveRecord metrics2386 when both web and background transaction are available2387 captures the metrics for web only2388 behaves like record ActiveRecord metrics in a metrics transaction2389 increments only db counters2390 observes sql_duration metric2391 when web transaction is available2392 behaves like record ActiveRecord metrics in a metrics transaction2393 increments only db counters2394 observes sql_duration metric2395 when background transaction is available2396 behaves like record ActiveRecord metrics in a metrics transaction2397 increments only db counters2398 observes sql_duration metric2399 behaves like store ActiveRecord info in RequestStore2400 prevents db counters from leaking to the next transaction2401 query using a connection to an unknown source2402 does not record DB role metrics2403 does not store DB roles into into RequestStore2404 with Marginalia comments2405 behaves like track sql events for each role2406 name: "SQL", sql_query: "SELECT * FROM users WHERE id = 10", record_query: true, record_write_query: false, record_cached_query: false, record_wal_query: false2407 query using a connection to a replica2408 queries connection db role2409 behaves like record ActiveRecord metrics2410 when both web and background transaction are available2411 captures the metrics for web only2412 behaves like record ActiveRecord metrics in a metrics transaction2413 increments only db counters2414 observes sql_duration metric2415 when web transaction is available2416 behaves like record ActiveRecord metrics in a metrics transaction2417 increments only db counters2418 observes sql_duration metric2419 when background transaction is available2420 behaves like record ActiveRecord metrics in a metrics transaction2421 increments only db counters2422 observes sql_duration metric2423 behaves like store ActiveRecord info in RequestStore2424 prevents db counters from leaking to the next transaction2425 query using a connection to a primary2426 queries connection db role2427 behaves like record ActiveRecord metrics2428 when both web and background transaction are available2429 captures the metrics for web only2430 behaves like record ActiveRecord metrics in a metrics transaction2431 increments only db counters2432 observes sql_duration metric2433 when web transaction is available2434 behaves like record ActiveRecord metrics in a metrics transaction2435 increments only db counters2436 observes sql_duration metric2437 when background transaction is available2438 behaves like record ActiveRecord metrics in a metrics transaction2439 increments only db counters2440 observes sql_duration metric2441 behaves like store ActiveRecord info in RequestStore2442 prevents db counters from leaking to the next transaction2443 query using a connection to an unknown source2444 does not record DB role metrics2445 does not store DB roles into into RequestStore2446 name: "SQL", sql_query: "WITH active_milestones AS (SELECT COUNT(*), state FROM milestones GROUP BY state) SELECT * FROM active_milestones", record_query: true, record_write_query: false, record_cached_query: false, record_wal_query: false2447 query using a connection to a replica2448 queries connection db role2449 behaves like record ActiveRecord metrics2450 when both web and background transaction are available2451 captures the metrics for web only2452 behaves like record ActiveRecord metrics in a metrics transaction2453 increments only db counters2454 observes sql_duration metric2455 when web transaction is available2456 behaves like record ActiveRecord metrics in a metrics transaction2457 increments only db counters2458 observes sql_duration metric2459 when background transaction is available2460 behaves like record ActiveRecord metrics in a metrics transaction2461 increments only db counters2462 observes sql_duration metric2463 behaves like store ActiveRecord info in RequestStore2464 prevents db counters from leaking to the next transaction2465 query using a connection to a primary2466 queries connection db role2467 behaves like record ActiveRecord metrics2468 when both web and background transaction are available2469 captures the metrics for web only2470 behaves like record ActiveRecord metrics in a metrics transaction2471 increments only db counters2472 observes sql_duration metric2473 when web transaction is available2474 behaves like record ActiveRecord metrics in a metrics transaction2475 increments only db counters2476 observes sql_duration metric2477 when background transaction is available2478 behaves like record ActiveRecord metrics in a metrics transaction2479 increments only db counters2480 observes sql_duration metric2481 behaves like store ActiveRecord info in RequestStore2482 prevents db counters from leaking to the next transaction2483 query using a connection to an unknown source2484 does not record DB role metrics2485 does not store DB roles into into RequestStore2486 name: "SQL", sql_query: "SELECT * FROM users WHERE id = 10 FOR UPDATE", record_query: true, record_write_query: true, record_cached_query: false, record_wal_query: false2487 query using a connection to a replica2488 queries connection db role2489 behaves like record ActiveRecord metrics2490 when both web and background transaction are available2491 captures the metrics for web only2492 behaves like record ActiveRecord metrics in a metrics transaction2493 increments only db counters2494 observes sql_duration metric2495 when web transaction is available2496 behaves like record ActiveRecord metrics in a metrics transaction2497 increments only db counters2498 observes sql_duration metric2499 when background transaction is available2500 behaves like record ActiveRecord metrics in a metrics transaction2501 increments only db counters2502 observes sql_duration metric2503 behaves like store ActiveRecord info in RequestStore2504 prevents db counters from leaking to the next transaction2505 query using a connection to a primary2506 queries connection db role2507 behaves like record ActiveRecord metrics2508 when both web and background transaction are available2509 captures the metrics for web only2510 behaves like record ActiveRecord metrics in a metrics transaction2511 increments only db counters2512 observes sql_duration metric2513 when web transaction is available2514 behaves like record ActiveRecord metrics in a metrics transaction2515 increments only db counters2516 observes sql_duration metric2517 when background transaction is available2518 behaves like record ActiveRecord metrics in a metrics transaction2519 increments only db counters2520 observes sql_duration metric2521 behaves like store ActiveRecord info in RequestStore2522 prevents db counters from leaking to the next transaction2523 query using a connection to an unknown source2524 does not record DB role metrics2525 does not store DB roles into into RequestStore2526 name: "SQL", sql_query: "WITH archived_rows AS (SELECT * FROM users WHERE archived = true) INSERT INTO products_log SELECT * FROM archived_rows", record_query: true, record_write_query: true, record_cached_query: false, record_wal_query: false2527 query using a connection to a replica2528 queries connection db role2529 behaves like record ActiveRecord metrics2530 when both web and background transaction are available2531 captures the metrics for web only2532 behaves like record ActiveRecord metrics in a metrics transaction2533 increments only db counters2534 observes sql_duration metric2535 when web transaction is available2536 behaves like record ActiveRecord metrics in a metrics transaction2537 increments only db counters2538 observes sql_duration metric2539 when background transaction is available2540 behaves like record ActiveRecord metrics in a metrics transaction2541 increments only db counters2542 observes sql_duration metric2543 behaves like store ActiveRecord info in RequestStore2544 prevents db counters from leaking to the next transaction2545 query using a connection to a primary2546 queries connection db role2547 behaves like record ActiveRecord metrics2548 when both web and background transaction are available2549 captures the metrics for web only2550 behaves like record ActiveRecord metrics in a metrics transaction2551 increments only db counters2552 observes sql_duration metric2553 when web transaction is available2554 behaves like record ActiveRecord metrics in a metrics transaction2555 increments only db counters2556 observes sql_duration metric2557 when background transaction is available2558 behaves like record ActiveRecord metrics in a metrics transaction2559 increments only db counters2560 observes sql_duration metric2561 behaves like store ActiveRecord info in RequestStore2562 prevents db counters from leaking to the next transaction2563 query using a connection to an unknown source2564 does not record DB role metrics2565 does not store DB roles into into RequestStore2566 name: "SQL", sql_query: "DELETE FROM users where id = 10", record_query: true, record_write_query: true, record_cached_query: false, record_wal_query: false2567 query using a connection to a replica2568 queries connection db role2569 behaves like record ActiveRecord metrics2570 when both web and background transaction are available2571 captures the metrics for web only2572 behaves like record ActiveRecord metrics in a metrics transaction2573 increments only db counters2574 observes sql_duration metric2575 when web transaction is available2576 behaves like record ActiveRecord metrics in a metrics transaction2577 increments only db counters2578 observes sql_duration metric2579 when background transaction is available2580 behaves like record ActiveRecord metrics in a metrics transaction2581 increments only db counters2582 observes sql_duration metric2583 behaves like store ActiveRecord info in RequestStore2584 prevents db counters from leaking to the next transaction2585 query using a connection to a primary2586 queries connection db role2587 behaves like record ActiveRecord metrics2588 when both web and background transaction are available2589 captures the metrics for web only2590 behaves like record ActiveRecord metrics in a metrics transaction2591 increments only db counters2592 observes sql_duration metric2593 when web transaction is available2594 behaves like record ActiveRecord metrics in a metrics transaction2595 increments only db counters2596 observes sql_duration metric2597 when background transaction is available2598 behaves like record ActiveRecord metrics in a metrics transaction2599 increments only db counters2600 observes sql_duration metric2601 behaves like store ActiveRecord info in RequestStore2602 prevents db counters from leaking to the next transaction2603 query using a connection to an unknown source2604 does not record DB role metrics2605 does not store DB roles into into RequestStore2606 name: "SQL", sql_query: "INSERT INTO project_ci_cd_settings (project_id) SELECT id FROM projects", record_query: true, record_write_query: true, record_cached_query: false, record_wal_query: false2607 query using a connection to a replica2608 queries connection db role2609 behaves like record ActiveRecord metrics2610 when both web and background transaction are available2611 captures the metrics for web only2612 behaves like record ActiveRecord metrics in a metrics transaction2613 increments only db counters2614 observes sql_duration metric2615 when web transaction is available2616 behaves like record ActiveRecord metrics in a metrics transaction2617 increments only db counters2618 observes sql_duration metric2619 when background transaction is available2620 behaves like record ActiveRecord metrics in a metrics transaction2621 increments only db counters2622 observes sql_duration metric2623 behaves like store ActiveRecord info in RequestStore2624 prevents db counters from leaking to the next transaction2625 query using a connection to a primary2626 queries connection db role2627 behaves like record ActiveRecord metrics2628 when both web and background transaction are available2629 captures the metrics for web only2630 behaves like record ActiveRecord metrics in a metrics transaction2631 increments only db counters2632 observes sql_duration metric2633 when web transaction is available2634 behaves like record ActiveRecord metrics in a metrics transaction2635 increments only db counters2636 observes sql_duration metric2637 when background transaction is available2638 behaves like record ActiveRecord metrics in a metrics transaction2639 increments only db counters2640 observes sql_duration metric2641 behaves like store ActiveRecord info in RequestStore2642 prevents db counters from leaking to the next transaction2643 query using a connection to an unknown source2644 does not record DB role metrics2645 does not store DB roles into into RequestStore2646 name: "SQL", sql_query: "UPDATE users SET admin = true WHERE id = 10", record_query: true, record_write_query: true, record_cached_query: false, record_wal_query: false2647 query using a connection to a replica2648 queries connection db role2649 behaves like record ActiveRecord metrics2650 when both web and background transaction are available2651 captures the metrics for web only2652 behaves like record ActiveRecord metrics in a metrics transaction2653 increments only db counters2654 observes sql_duration metric2655 when web transaction is available2656 behaves like record ActiveRecord metrics in a metrics transaction2657 increments only db counters2658 observes sql_duration metric2659 when background transaction is available2660 behaves like record ActiveRecord metrics in a metrics transaction2661 increments only db counters2662 observes sql_duration metric2663 behaves like store ActiveRecord info in RequestStore2664 prevents db counters from leaking to the next transaction2665 query using a connection to a primary2666 queries connection db role2667 behaves like record ActiveRecord metrics2668 when both web and background transaction are available2669 captures the metrics for web only2670 behaves like record ActiveRecord metrics in a metrics transaction2671 increments only db counters2672 observes sql_duration metric2673 when web transaction is available2674 behaves like record ActiveRecord metrics in a metrics transaction2675 increments only db counters2676 observes sql_duration metric2677 when background transaction is available2678 behaves like record ActiveRecord metrics in a metrics transaction2679 increments only db counters2680 observes sql_duration metric2681 behaves like store ActiveRecord info in RequestStore2682 prevents db counters from leaking to the next transaction2683 query using a connection to an unknown source2684 does not record DB role metrics2685 does not store DB roles into into RequestStore2686 name: "SQL", sql_query: "SELECT pg_current_wal_insert_lsn()::text AS location", record_query: true, record_write_query: false, record_cached_query: false, record_wal_query: true2687 query using a connection to a replica2688 queries connection db role2689 behaves like record ActiveRecord metrics2690 when both web and background transaction are available2691 captures the metrics for web only2692 behaves like record ActiveRecord metrics in a metrics transaction2693 increments only db counters2694 observes sql_duration metric2695 when web transaction is available2696 behaves like record ActiveRecord metrics in a metrics transaction2697 increments only db counters2698 observes sql_duration metric2699 when background transaction is available2700 behaves like record ActiveRecord metrics in a metrics transaction2701 increments only db counters2702 observes sql_duration metric2703 behaves like store ActiveRecord info in RequestStore2704 prevents db counters from leaking to the next transaction2705 query using a connection to a primary2706 queries connection db role2707 behaves like record ActiveRecord metrics2708 when both web and background transaction are available2709 captures the metrics for web only2710 behaves like record ActiveRecord metrics in a metrics transaction2711 increments only db counters2712 observes sql_duration metric2713 when web transaction is available2714 behaves like record ActiveRecord metrics in a metrics transaction2715 increments only db counters2716 observes sql_duration metric2717 when background transaction is available2718 behaves like record ActiveRecord metrics in a metrics transaction2719 increments only db counters2720 observes sql_duration metric2721 behaves like store ActiveRecord info in RequestStore2722 prevents db counters from leaking to the next transaction2723 query using a connection to an unknown source2724 does not record DB role metrics2725 does not store DB roles into into RequestStore2726 name: "SQL", sql_query: "SELECT pg_last_wal_replay_lsn()::text AS location", record_query: true, record_write_query: false, record_cached_query: false, record_wal_query: true2727 query using a connection to a replica2728 queries connection db role2729 behaves like record ActiveRecord metrics2730 when both web and background transaction are available2731 captures the metrics for web only2732 behaves like record ActiveRecord metrics in a metrics transaction2733 increments only db counters2734 observes sql_duration metric2735 when web transaction is available2736 behaves like record ActiveRecord metrics in a metrics transaction2737 increments only db counters2738 observes sql_duration metric2739 when background transaction is available2740 behaves like record ActiveRecord metrics in a metrics transaction2741 increments only db counters2742 observes sql_duration metric2743 behaves like store ActiveRecord info in RequestStore2744 prevents db counters from leaking to the next transaction2745 query using a connection to a primary2746 queries connection db role2747 behaves like record ActiveRecord metrics2748 when both web and background transaction are available2749 captures the metrics for web only2750 behaves like record ActiveRecord metrics in a metrics transaction2751 increments only db counters2752 observes sql_duration metric2753 when web transaction is available2754 behaves like record ActiveRecord metrics in a metrics transaction2755 increments only db counters2756 observes sql_duration metric2757 when background transaction is available2758 behaves like record ActiveRecord metrics in a metrics transaction2759 increments only db counters2760 observes sql_duration metric2761 behaves like store ActiveRecord info in RequestStore2762 prevents db counters from leaking to the next transaction2763 query using a connection to an unknown source2764 does not record DB role metrics2765 does not store DB roles into into RequestStore2766 name: "CACHE", sql_query: "SELECT pg_current_wal_insert_lsn()::text AS location", record_query: true, record_write_query: false, record_cached_query: true, record_wal_query: true2767 query using a connection to a replica2768 queries connection db role2769 behaves like record ActiveRecord metrics2770 when both web and background transaction are available2771 captures the metrics for web only2772 behaves like record ActiveRecord metrics in a metrics transaction2773 increments only db counters2774 observes sql_duration metric2775 when web transaction is available2776 behaves like record ActiveRecord metrics in a metrics transaction2777 increments only db counters2778 observes sql_duration metric2779 when background transaction is available2780 behaves like record ActiveRecord metrics in a metrics transaction2781 increments only db counters2782 observes sql_duration metric2783 behaves like store ActiveRecord info in RequestStore2784 prevents db counters from leaking to the next transaction2785 query using a connection to a primary2786 queries connection db role2787 behaves like record ActiveRecord metrics2788 when both web and background transaction are available2789 captures the metrics for web only2790 behaves like record ActiveRecord metrics in a metrics transaction2791 increments only db counters2792 observes sql_duration metric2793 when web transaction is available2794 behaves like record ActiveRecord metrics in a metrics transaction2795 increments only db counters2796 observes sql_duration metric2797 when background transaction is available2798 behaves like record ActiveRecord metrics in a metrics transaction2799 increments only db counters2800 observes sql_duration metric2801 behaves like store ActiveRecord info in RequestStore2802 prevents db counters from leaking to the next transaction2803 query using a connection to an unknown source2804 does not record DB role metrics2805 does not store DB roles into into RequestStore2806 name: "CACHE", sql_query: "SELECT pg_last_wal_replay_lsn()::text AS location", record_query: true, record_write_query: false, record_cached_query: true, record_wal_query: true2807 query using a connection to a replica2808 queries connection db role2809 behaves like record ActiveRecord metrics2810 when both web and background transaction are available2811 captures the metrics for web only2812 behaves like record ActiveRecord metrics in a metrics transaction2813 increments only db counters2814 observes sql_duration metric2815 when web transaction is available2816 behaves like record ActiveRecord metrics in a metrics transaction2817 increments only db counters2818 observes sql_duration metric2819 when background transaction is available2820 behaves like record ActiveRecord metrics in a metrics transaction2821 increments only db counters2822 observes sql_duration metric2823 behaves like store ActiveRecord info in RequestStore2824 prevents db counters from leaking to the next transaction2825 query using a connection to a primary2826 queries connection db role2827 behaves like record ActiveRecord metrics2828 when both web and background transaction are available2829 captures the metrics for web only2830 behaves like record ActiveRecord metrics in a metrics transaction2831 increments only db counters2832 observes sql_duration metric2833 when web transaction is available2834 behaves like record ActiveRecord metrics in a metrics transaction2835 increments only db counters2836 observes sql_duration metric2837 when background transaction is available2838 behaves like record ActiveRecord metrics in a metrics transaction2839 increments only db counters2840 observes sql_duration metric2841 behaves like store ActiveRecord info in RequestStore2842 prevents db counters from leaking to the next transaction2843 query using a connection to an unknown source2844 does not record DB role metrics2845 does not store DB roles into into RequestStore2846 name: "CACHE", sql_query: "SELECT * FROM users WHERE id = 10", record_query: true, record_write_query: false, record_cached_query: true, record_wal_query: false2847 query using a connection to a replica2848 queries connection db role2849 behaves like record ActiveRecord metrics2850 when both web and background transaction are available2851 captures the metrics for web only2852 behaves like record ActiveRecord metrics in a metrics transaction2853 increments only db counters2854 observes sql_duration metric2855 when web transaction is available2856 behaves like record ActiveRecord metrics in a metrics transaction2857 increments only db counters2858 observes sql_duration metric2859 when background transaction is available2860 behaves like record ActiveRecord metrics in a metrics transaction2861 increments only db counters2862 observes sql_duration metric2863 behaves like store ActiveRecord info in RequestStore2864 prevents db counters from leaking to the next transaction2865 query using a connection to a primary2866 queries connection db role2867 behaves like record ActiveRecord metrics2868 when both web and background transaction are available2869 captures the metrics for web only2870 behaves like record ActiveRecord metrics in a metrics transaction2871 increments only db counters2872 observes sql_duration metric2873 when web transaction is available2874 behaves like record ActiveRecord metrics in a metrics transaction2875 increments only db counters2876 observes sql_duration metric2877 when background transaction is available2878 behaves like record ActiveRecord metrics in a metrics transaction2879 increments only db counters2880 observes sql_duration metric2881 behaves like store ActiveRecord info in RequestStore2882 prevents db counters from leaking to the next transaction2883 query using a connection to an unknown source2884 does not record DB role metrics2885 does not store DB roles into into RequestStore2886 name: "SCHEMA", sql_query: "SELECT attr.attname FROM pg_attribute attr INNER JOIN pg_constraint cons ON attr.attrelid = cons.conrelid AND attr.attnum = any(cons.conkey) WHERE cons.contype = 'p' AND cons.conrelid = '\"projects\"'::regclass", record_query: false, record_write_query: false, record_cached_query: false, record_wal_query: false2887 query using a connection to a replica2888 queries connection db role2889 behaves like record ActiveRecord metrics2890 when both web and background transaction are available2891 captures the metrics for web only2892 behaves like record ActiveRecord metrics in a metrics transaction2893 increments only db counters2894 observes sql_duration metric2895 when web transaction is available2896 behaves like record ActiveRecord metrics in a metrics transaction2897 increments only db counters2898 observes sql_duration metric2899 when background transaction is available2900 behaves like record ActiveRecord metrics in a metrics transaction2901 increments only db counters2902 observes sql_duration metric2903 behaves like store ActiveRecord info in RequestStore2904 prevents db counters from leaking to the next transaction2905 query using a connection to a primary2906 queries connection db role2907 behaves like record ActiveRecord metrics2908 when both web and background transaction are available2909 captures the metrics for web only2910 behaves like record ActiveRecord metrics in a metrics transaction2911 increments only db counters2912 observes sql_duration metric2913 when web transaction is available2914 behaves like record ActiveRecord metrics in a metrics transaction2915 increments only db counters2916 observes sql_duration metric2917 when background transaction is available2918 behaves like record ActiveRecord metrics in a metrics transaction2919 increments only db counters2920 observes sql_duration metric2921 behaves like store ActiveRecord info in RequestStore2922 prevents db counters from leaking to the next transaction2923 query using a connection to an unknown source2924 does not record DB role metrics2925 does not store DB roles into into RequestStore2926 name: "TRANSACTION", sql_query: "BEGIN", record_query: false, record_write_query: false, record_cached_query: false, record_wal_query: false2927 query using a connection to a replica2928 queries connection db role2929 behaves like record ActiveRecord metrics2930 when both web and background transaction are available2931 captures the metrics for web only2932 behaves like record ActiveRecord metrics in a metrics transaction2933 increments only db counters2934 observes sql_duration metric2935 when web transaction is available2936 behaves like record ActiveRecord metrics in a metrics transaction2937 increments only db counters2938 observes sql_duration metric2939 when background transaction is available2940 behaves like record ActiveRecord metrics in a metrics transaction2941 increments only db counters2942 observes sql_duration metric2943 behaves like store ActiveRecord info in RequestStore2944 prevents db counters from leaking to the next transaction2945 query using a connection to a primary2946 queries connection db role2947 behaves like record ActiveRecord metrics2948 when both web and background transaction are available2949 captures the metrics for web only2950 behaves like record ActiveRecord metrics in a metrics transaction2951 increments only db counters2952 observes sql_duration metric2953 when web transaction is available2954 behaves like record ActiveRecord metrics in a metrics transaction2955 increments only db counters2956 observes sql_duration metric2957 when background transaction is available2958 behaves like record ActiveRecord metrics in a metrics transaction2959 increments only db counters2960 observes sql_duration metric2961 behaves like store ActiveRecord info in RequestStore2962 prevents db counters from leaking to the next transaction2963 query using a connection to an unknown source2964 does not record DB role metrics2965 does not store DB roles into into RequestStore2966 name: "TRANSACTION", sql_query: "COMMIT", record_query: false, record_write_query: false, record_cached_query: false, record_wal_query: false2967 query using a connection to a replica2968 queries connection db role2969 behaves like record ActiveRecord metrics2970 when both web and background transaction are available2971 captures the metrics for web only2972 behaves like record ActiveRecord metrics in a metrics transaction2973 increments only db counters2974 observes sql_duration metric2975 when web transaction is available2976 behaves like record ActiveRecord metrics in a metrics transaction2977 increments only db counters2978 observes sql_duration metric2979 when background transaction is available2980 behaves like record ActiveRecord metrics in a metrics transaction2981 increments only db counters2982 observes sql_duration metric2983 behaves like store ActiveRecord info in RequestStore2984 prevents db counters from leaking to the next transaction2985 query using a connection to a primary2986 queries connection db role2987 behaves like record ActiveRecord metrics2988 when both web and background transaction are available2989 captures the metrics for web only2990 behaves like record ActiveRecord metrics in a metrics transaction2991 increments only db counters2992 observes sql_duration metric2993 when web transaction is available2994 behaves like record ActiveRecord metrics in a metrics transaction2995 increments only db counters2996 observes sql_duration metric2997 when background transaction is available2998 behaves like record ActiveRecord metrics in a metrics transaction2999 increments only db counters3000 observes sql_duration metric3001 behaves like store ActiveRecord info in RequestStore3002 prevents db counters from leaking to the next transaction3003 query using a connection to an unknown source3004 does not record DB role metrics3005 does not store DB roles into into RequestStore3006 name: "TRANSACTION", sql_query: "ROLLBACK", record_query: false, record_write_query: false, record_cached_query: false, record_wal_query: false3007 query using a connection to a replica3008 queries connection db role3009 behaves like record ActiveRecord metrics3010 when both web and background transaction are available3011 captures the metrics for web only3012 behaves like record ActiveRecord metrics in a metrics transaction3013 increments only db counters3014 observes sql_duration metric3015 when web transaction is available3016 behaves like record ActiveRecord metrics in a metrics transaction3017 increments only db counters3018 observes sql_duration metric3019 when background transaction is available3020 behaves like record ActiveRecord metrics in a metrics transaction3021 increments only db counters3022 observes sql_duration metric3023 behaves like store ActiveRecord info in RequestStore3024 prevents db counters from leaking to the next transaction3025 query using a connection to a primary3026 queries connection db role3027 behaves like record ActiveRecord metrics3028 when both web and background transaction are available3029 captures the metrics for web only3030 behaves like record ActiveRecord metrics in a metrics transaction3031 increments only db counters3032 observes sql_duration metric3033 when web transaction is available3034 behaves like record ActiveRecord metrics in a metrics transaction3035 increments only db counters3036 observes sql_duration metric3037 when background transaction is available3038 behaves like record ActiveRecord metrics in a metrics transaction3039 increments only db counters3040 observes sql_duration metric3041 behaves like store ActiveRecord info in RequestStore3042 prevents db counters from leaking to the next transaction3043 query using a connection to an unknown source3044 does not record DB role metrics3045 does not store DB roles into into RequestStore3046gitlab:usage data take tasks3047 dump_sql_in_yaml3048 dumps SQL queries in yaml format3049 dump_sql_in_json3050 dumps SQL queries in json format3051 dump_non_sql_in_json3052 dumps non SQL data in json format3053 generate_sql_metrics_fixture3054 generates fixture file correctly3055 generate_and_send3056 generates and sends Service Ping payload3057DesignManagement::Design3058 behaves like AtomicInternalId3059 .has_internal_id3060 Module inclusion3061 is expected to includes the AtomicInternalId module3062 Validation3063 when presence validation is required3064 when creating an object3065 raises an error if the internal id is blank3066 when updating an object3067 raises an error if the internal id is blank3068 when presence validation is not required3069 when creating an object3070 does not raise an error if the internal id is blank (PENDING: No reason given)3071 when updating an object3072 does not raise an error if the internal id is blank (PENDING: No reason given)3073 Creating an instance3074 saves a new instance properly3075 internal id generation3076 calls InternalId.generate_next and sets internal id attribute3077 does not overwrite an existing internal id3078 when the instance has an internal ID set3079 calls InternalId.update_last_value and sets the `last_value` to that of the instance3080 unsetting the instance internal id on rollback3081 when the internal id has been changed3082 when the internal id is automatically set3083 clears it on the instance3084 when the internal id is manually set3085 does not clear it on the instance3086 when the internal id has not been changed3087 preserves the value on the instance3088 supply of internal ids3089 provides a persistent supply of IID values, sensitive to the current state3090 #reset_scope_internal_id_attribute3091 rewinds the allocated IID3092 allocates the same IID3093 behaves like a class that supports relative positioning3094 #scoped_items3095 includes all items with the same scope3096 #relative_siblings3097 includes all items with the same scope, except self3098 .move_nulls_to_end3099 moves items with null relative_position to the end3100 preserves relative position3101 moves the item near the start position when there are no existing positions3102 does not perform any moves if all items have their relative_position set3103 manages to move nulls to the end even if there is a sequence at the end3104 manages to move nulls to the end even if there is not enough space3105 manages to move nulls to the end, stacking if we cannot create enough space3106 manages to move nulls found in the relative scope3107 can move many nulls3108 does not have an N+1 issue3109 .move_nulls_to_start3110 moves items with null relative_position to the start3111 moves the item near the start position when there are no existing positions3112 preserves relative position3113 does not perform any moves if all items have their relative_position set3114 manages to move nulls to the start even if there is not enough space3115 manages to move nulls to the end, stacking if we cannot create enough space3116 #move_before3117 moves item before3118 can move the item before an item at the start3119 can move the item before an item at MIN_POSITION3120 can move the item before an item bunched up at MIN_POSITION3121 when there is no space3122 moves items correctly3123 leap-frogging to the left3124 can leap-frog STEPS times before needing to rebalance3125 there is no space to the left after moving STEPS times3126 rebalances to the right3127 #move_after3128 moves item after3129 can move the item after an item bunched up at MAX_POSITION3130 when there is no space3131 can move the item after an item at MAX_POSITION3132 moves items correctly3133 leap-frogging3134 rebalances after STEPS jumps3135 #move_to_start3136 places items at most IDEAL_DISTANCE from the start when the range is open3137 moves item to the end3138 positions the item at MIN_POSITION when there is only one space left3139 rebalances when there is already an item at the MIN_POSITION3140 deals with a run of elements at the start3141 #move_to_end3142 places items at most IDEAL_DISTANCE from the start when the range is open3143 moves item to the end3144 positions the item at MAX_POSITION when there is only one space left3145 rebalances when there is already an item at the MAX_POSITION3146 deals with a run of elements at the end3147 #move_between3148 positions item between two other3149 positions item between on top3150 positions item between to end3151 positions items even when after and before positions are the same3152 positions item in the middle of other two if distance is big enough3153 positions item closer to the middle if we are at the very top3154 positions item closer to the middle if we are at the very bottom3155 positions item in the middle of other two3156 positions item right if we pass non-sequential parameters3157 avoids N+1 queries when rebalancing other items3158 the two items are next to each other3159 behaves like moves item between3160 moves the middle item to between left and right3161 there is no space3162 behaves like moves item between3163 moves the middle item to between left and right3164 there is a bunch of items3165 handles bunches correctly3166 behaves like moves item between3167 moves the middle item to between left and right3168 relations3169 is expected to belong to project required: false3170 is expected to belong to issue required: false3171 is expected to have many actions3172 is expected to have many versions3173 is expected to have many authors3174 is expected to have many notes dependent => delete_all3175 is expected to have many user_mentions3176 #authors3177 returns unique version authors3178 validations3179 is expected to be valid3180 is expected to validate that :project cannot be empty/falsy3181 is expected to validate that :issue cannot be empty/falsy3182 is expected to validate that :filename cannot be empty/falsy3183 is expected to validate that the length of :filename is at most 2553184 is expected to validate that the length of :description is at most 10000003185 is expected to validate that :filename is case-sensitively unique within the scope of :issue_id3186 validates that the extension is an image3187 validating files with .svg extension3188 allows .svg files when feature flag is enabled3189 does not allow .svg files when feature flag is disabled3190 scopes3191 .visible_at_version3192 at oldest version3193 finds the first design only3194 at version 23195 finds the first and second designs3196 at latest version3197 finds designs3198 when the argument is nil3199 finds all undeleted designs3200 one of the designs was deleted before the given version3201 is not returned3202 a re-created history3203 is returned, though other deleted events are not3204 dead or alive3205 can establish the history at any point3206 .ordered3207 sorts by relative position and ID in ascending order3208 .in_creation_order3209 sorts by ID in ascending order3210 .with_filename3211 returns correct design when passed a single filename3212 returns correct designs when passed an Array of filenames3213 .on_issue3214 returns correct designs when passed a single issue3215 returns correct designs when passed an Array of issues3216 .current3217 returns just the undeleted designs3218 .build_full_path3219 builds the full path for a design3220 #visible_in?3221 tells us when a design is visible3222 #to_ability_name3223 is expected to eq "design"3224 #status3225 the design is new3226 is expected to have attributes {:status => :new}3227 the design is current3228 is expected to have attributes {:status => :current}3229 the design has been deleted3230 is expected to have attributes {:status => :deleted}3231 #deleted?3232 the design is new3233 is falsy3234 the design is current3235 is falsy3236 the design has been deleted3237 is truthy3238 the design has been deleted, but was then re-created3239 is falsy3240 #participants3241 is expected to be empty3242 when participants can read the project3243 is expected to contain exactly #<User id:261 @user10>, #<User id:262 @user11>, and #<User id:263 @user12>3244 #new_design?3245 is false when there are versions3246 is true when there are no versions3247 is false for deleted designs3248 does not cause extra queries when actions are loaded3249 implicitly caches values3250 queries again when the clear_version_cache trigger has been called3251 causes a single query when there versions are not loaded3252 #full_path3253 builds the full path for a design3254 #diff_refs3255 has no diff ref if new3256 there are several versions3257 builds diff refs based on the first commit and it's for the design3258 there is just one version3259 builds diff refs based on the empty tree if there was only one version3260 #repository3261 is a design repository3262 #note_etag_key3263 returns a correct etag key3264 #user_notes_count3265 returns a count of user-generated notes3266 #after_note_changed3267 calls #delete_cache on DesignUserNotesCountService for non-system notes3268 .for_reference3269 avoids extra queries when calling to_reference3270 #to_reference3271 when nil argument3272 uses the simple format3273 when full is true3274 returns complete path to the issue3275 when full is false3276 returns complete path to the issue3277 when same project argument3278 returns bare reference3279 reference_pattern3280 is nil3281 link_reference_pattern3282 is not nil3283 does not match the designs tab3284 intentionally ignores filenames with any special character3285 ext: "png"3286 matches the URL3287 the file is all upper case3288 extracts the encoded filename3289 ext: "PNG"3290 matches the URL3291 the file is all upper case3292 extracts the encoded filename3293 ext: "jpg"3294 matches the URL3295 the file is all upper case3296 extracts the encoded filename3297 ext: "JPG"3298 matches the URL3299 the file is all upper case3300 extracts the encoded filename3301 ext: "jpeg"3302 matches the URL3303 the file is all upper case3304 extracts the encoded filename3305 ext: "JPEG"3306 matches the URL3307 the file is all upper case3308 extracts the encoded filename3309 ext: "gif"3310 matches the URL3311 the file is all upper case3312 extracts the encoded filename3313 ext: "GIF"3314 matches the URL3315 the file is all upper case3316 extracts the encoded filename3317 ext: "bmp"3318 matches the URL3319 the file is all upper case3320 extracts the encoded filename3321 ext: "BMP"3322 matches the URL3323 the file is all upper case3324 extracts the encoded filename3325 ext: "tiff"3326 matches the URL3327 the file is all upper case3328 extracts the encoded filename3329 ext: "TIFF"3330 matches the URL3331 the file is all upper case3332 extracts the encoded filename3333 ext: "ico"3334 matches the URL3335 the file is all upper case3336 extracts the encoded filename3337 ext: "ICO"3338 matches the URL3339 the file is all upper case3340 extracts the encoded filename3341 ext: "webp"3342 matches the URL3343 the file is all upper case3344 extracts the encoded filename3345 ext: "WEBP"3346 matches the URL3347 the file is all upper case3348 extracts the encoded filename3349 ext: "svg"3350 matches the URL3351 the file is all upper case3352 extracts the encoded filename3353 ext: "SVG"3354 matches the URL3355 the file is all upper case3356 extracts the encoded filename3357 .by_issue_id_and_filename3358 behaves like a where_composite scope3359 we pass an empty array3360 returns a null relation3361 we pass nil3362 returns a null relation3363 we pass a singleton composite id3364 finds the first result3365 we pass group of ids3366 finds all the results3367 performance3368 is not O(N)3369Members::UpdateService3370 # order random3371 behaves like updating a group3372 behaves like a service updating members3373 updates the members3374 returns success status3375 invokes after_execute with correct args3376 authorization update callback is triggered3377 does not enqueues todos for deletion3378 when members are downgraded to guest3379 with Gitlab::Access::GUEST level as a string3380 behaves like schedules to delete confidential todos3381 is expected to all equal 103382 with Gitlab::Access::GUEST level as an integer3383 behaves like schedules to delete confidential todos3384 is expected to all equal 103385 when access_level is invalid3386 raises an error3387 when members update results in no change3388 does not invoke update! and post_update3389 authorization update callback is not triggered3390 when member update results in an error3391 behaves like a service returning an error3392 behaves like returns error status when params are invalid3393 is expected to eq :error3394 when a member update results in invalid record3395 returns the error3396 rollbacks back the entire update3397 when group members expiration date is updated3398 emails the users that their group membership expiry has changed3399 behaves like current user cannot update the given members3400 behaves like a service raising Gitlab::Access::AccessDeniedError3401 raises Gitlab::Access::AccessDeniedError3402 behaves like a service raising Gitlab::Access::AccessDeniedError3403 raises Gitlab::Access::AccessDeniedError3404 behaves like updating a project3405 as a project maintainer3406 behaves like a service updating members3407 updates the members3408 returns success status3409 invokes after_execute with correct args3410 authorization update callback is triggered3411 does not enqueues todos for deletion3412 when members are downgraded to guest3413 with Gitlab::Access::GUEST level as a string3414 behaves like schedules to delete confidential todos3415 is expected to all equal 103416 with Gitlab::Access::GUEST level as an integer3417 behaves like schedules to delete confidential todos3418 is expected to all equal 103419 when access_level is invalid3420 raises an error3421 when members update results in no change3422 does not invoke update! and post_update3423 authorization update callback is not triggered3424 when member update results in an error3425 behaves like a service returning an error3426 behaves like returns error status when params are invalid3427 is expected to eq :error3428 when a member update results in invalid record3429 returns the error3430 rollbacks back the entire update3431 and updating members to OWNER3432 behaves like a service raising Gitlab::Access::AccessDeniedError3433 raises Gitlab::Access::AccessDeniedError3434 and updating themselves to OWNER3435 behaves like a service raising Gitlab::Access::AccessDeniedError3436 raises Gitlab::Access::AccessDeniedError3437 and downgrading members from OWNER3438 behaves like a service raising Gitlab::Access::AccessDeniedError3439 raises Gitlab::Access::AccessDeniedError3440 when current_user is considered an owner in the project via inheritance3441 and can update members to OWNER3442 behaves like a service updating members3443 updates the members3444 returns success status3445 invokes after_execute with correct args3446 authorization update callback is triggered3447 does not enqueues todos for deletion3448 when members are downgraded to guest3449 with Gitlab::Access::GUEST level as a string3450 behaves like schedules to delete confidential todos3451 is expected to all equal 103452 with Gitlab::Access::GUEST level as an integer3453 behaves like schedules to delete confidential todos3454 is expected to all equal 103455 when access_level is invalid3456 raises an error3457 when members update results in no change3458 does not invoke update! and post_update3459 authorization update callback is not triggered3460 and can downgrade members from OWNER3461 behaves like a service updating members3462 updates the members3463 returns success status3464 invokes after_execute with correct args3465 authorization update callback is triggered3466 does not enqueues todos for deletion3467 when members are downgraded to guest3468 with Gitlab::Access::GUEST level as a string3469 behaves like schedules to delete confidential todos3470 is expected to all equal 103471 with Gitlab::Access::GUEST level as an integer3472 behaves like schedules to delete confidential todos3473 is expected to all equal 103474 when access_level is invalid3475 raises an error3476 when members update results in no change3477 does not invoke update! and post_update3478 authorization update callback is not triggered3479 with a single member3480 returns the correct response3481 when current user is an admin3482 when all owners are being downgraded3483 behaves like a service raising Gitlab::Access::AccessDeniedError3484 raises Gitlab::Access::AccessDeniedError3485 when all blocked owners are being downgraded3486 behaves like a service raising Gitlab::Access::AccessDeniedError3487 raises Gitlab::Access::AccessDeniedError3488Banzai::Filter::References::CommitReferenceFilter3489 requires project context3490 ignores valid references contained inside 'pre' element3491 ignores valid references contained inside 'code' element3492 ignores valid references contained inside 'a' element3493 ignores valid references contained inside 'style' element3494 internal reference3495 links to a valid reference of 7 characters3496 links to a valid reference of 8 characters3497 links to a valid reference of 12 characters3498 links to a valid reference of 18 characters3499 links to a valid reference of 20 characters3500 links to a valid reference of 32 characters3501 links to a valid reference of 40 characters3502 always uses the short ID as the link text3503 links with adjacent text3504 ignores invalid commit IDs3505 includes a title attribute3506 escapes the title attribute3507 includes default classes3508 includes a data-project attribute3509 includes a data-commit attribute3510 supports an :only_path context3511 in merge request context3512 handles merge request contextual commit references3513 a doc with many (29) strings that could be SHAs3514 makes only a single request to Gitaly3515 cross-project / cross-namespace complete reference3516 link has valid text3517 has valid text3518 ignores invalid commit IDs on the referenced project3519 cross-project / same-namespace complete reference3520 link has valid text3521 has valid text3522 ignores invalid commit IDs on the referenced project3523 cross-project shorthand reference3524 link has valid text3525 has valid text3526 ignores invalid commit IDs on the referenced project3527 cross-project URL reference3528 links to a valid reference3529 links with adjacent text3530 ignores invalid commit IDs on the referenced project3531 URL reference for a commit patch3532 links to a valid reference3533 has valid text3534 does not link to patch when extension match is after the path3535 group context3536 ignores internal references3537 links to a valid reference3538 checking N+13539 does not have N+1 per multiple references per project3540Gitlab::DatabaseImporters::SelfMonitoring::Project::CreateService3541 #execute3542 without application_settings3543 returns error3544 without admin users3545 returns error3546 with application settings and admin users3547 is idempotent3548 tracks successful install3549 creates group3550 creates project with internal visibility3551 creates project with internal visibility even when internal visibility is restricted3552 creates project with correct name and description3553 creates project with group as owner3554 saves the project id3555 creates a Prometheus integration3556 creates an environment for the project3557 returns error when saving project ID fails3558 behaves like has prometheus integration3559 is expected to eq true3560 when the environment creation fails3561 returns error3562 when project already exists3563 returns success3564 when local requests from hooks and integrations are not allowed3565 behaves like has prometheus integration3566 is expected to eq true3567 with non default prometheus address3568 behaves like has prometheus integration3569 is expected to eq true3570 with :9090 symbol3571 behaves like has prometheus integration3572 is expected to eq true3573 with 0.0.0.0:90903574 behaves like has prometheus integration3575 is expected to eq true3576 when prometheus setting is not present in gitlab.yml3577 does not fail3578 when prometheus setting is nil3579 does not fail3580 when prometheus setting is disabled in gitlab.yml3581 does not configure prometheus3582 when prometheus server address is blank in gitlab.yml3583 does not configure prometheus3584 when project cannot be created3585 returns error3586 when prometheus manual configuration cannot be saved3587 returns error3588Gitlab::Auth::OAuth::User3589 .find_by_uid_and_provider3590 retrieves the correct user3591 #persisted?3592 finds an existing user based on uid and provider (facebook)3593 returns false if user is not found in database3594 #save3595 when account exists on server3596 does not mark the user as external3597 signup3598 marks user as having password_automatically_set3599 when signup is disabled3600 creates the user3601 does not repeat the default user password3602 has the password length within specified range3603 when user confirmation email is enabled3604 creates and confirms the user anyway3605 when the current minimum password length is different from the default minimum password length3606 creates the user3607 with auto_link_user disabled (default)3608 provider is marked as external3609 marks user as external3610 provider was external, now has been removed3611 does not mark external user as internal3612 provider is not external3613 when adding a new OAuth identity3614 does not promote an external user to internal3615 with new allow_single_sign_on enabled syntax3616 creates a user from Omniauth3617 with old allow_single_sign_on enabled syntax3618 creates a user from Omniauth3619 with new allow_single_sign_on disabled syntax3620 throws an error3621 with old allow_single_sign_on disabled (Default)3622 throws an error3623 with auto_link_user enabled for a different provider3624 and a current GitLab user with a matching email3625 adds the OmniAuth identity to the GitLab user account3626 and no current GitLab user with a matching email3627 provider is marked as external3628 marks user as external3629 provider was external, now has been removed3630 does not mark external user as internal3631 provider is not external3632 when adding a new OAuth identity3633 does not promote an external user to internal3634 with new allow_single_sign_on enabled syntax3635 creates a user from Omniauth3636 with old allow_single_sign_on enabled syntax3637 creates a user from Omniauth3638 with new allow_single_sign_on disabled syntax3639 throws an error3640 with old allow_single_sign_on disabled (Default)3641 throws an error3642 with auto_link_user enabled for the correct provider3643 and a current GitLab user with a matching email3644 adds the OmniAuth identity to the GitLab user account3645 and no current GitLab user with a matching email3646 provider is marked as external3647 marks user as external3648 provider was external, now has been removed3649 does not mark external user as internal3650 provider is not external3651 when adding a new OAuth identity3652 does not promote an external user to internal3653 with new allow_single_sign_on enabled syntax3654 creates a user from Omniauth3655 with old allow_single_sign_on enabled syntax3656 creates a user from Omniauth3657 with new allow_single_sign_on disabled syntax3658 throws an error3659 with old allow_single_sign_on disabled (Default)3660 throws an error3661 with auto_link_user enabled for all providers3662 and a current GitLab user with a matching email3663 adds the OmniAuth identity to the GitLab user account3664 and no current GitLab user with a matching email3665 provider is marked as external3666 marks user as external3667 provider was external, now has been removed3668 does not mark external user as internal3669 provider is not external3670 when adding a new OAuth identity3671 does not promote an external user to internal3672 with new allow_single_sign_on enabled syntax3673 creates a user from Omniauth3674 with old allow_single_sign_on enabled syntax3675 creates a user from Omniauth3676 with new allow_single_sign_on disabled syntax3677 throws an error3678 with old allow_single_sign_on disabled (Default)3679 throws an error3680 with auto_link_ldap_user disabled (default)3681 provider is marked as external3682 marks user as external3683 provider was external, now has been removed3684 does not mark external user as internal3685 provider is not external3686 when adding a new OAuth identity3687 does not promote an external user to internal3688 with new allow_single_sign_on enabled syntax3689 creates a user from Omniauth3690 with old allow_single_sign_on enabled syntax3691 creates a user from Omniauth3692 with new allow_single_sign_on disabled syntax3693 throws an error3694 with old allow_single_sign_on disabled (Default)3695 throws an error3696 and other providers3697 when sync_name is disabled3698 updates the gl_user name3699 when sync_name is enabled3700 updates the gl_user name3701 with auto_link_ldap_user enabled3702 and no LDAP provider defined3703 provider is marked as external3704 marks user as external3705 provider was external, now has been removed3706 does not mark external user as internal3707 provider is not external3708 when adding a new OAuth identity3709 does not promote an external user to internal3710 with new allow_single_sign_on enabled syntax3711 creates a user from Omniauth3712 with old allow_single_sign_on enabled syntax3713 creates a user from Omniauth3714 with new allow_single_sign_on disabled syntax3715 throws an error3716 with old allow_single_sign_on disabled (Default)3717 throws an error3718 and at least one LDAP provider is defined3719 and a corresponding LDAP person3720 and no account for the LDAP user3721 when the LDAP user is found by UID3722 does not repeat the default user password3723 creates a user with dual LDAP and omniauth identities3724 has name and email set as synced3725 has name and email set as read-only3726 has synced attributes provider set to ldapmain3727 when the LDAP user is found by email address3728 creates the LDAP identity3729 and LDAP user has an account already3730 when sync_name is disabled3731 does not update the user name3732 when sync_name is enabled3733 updates the user name3734 when an LDAP person is not found by uid3735 tries to find an LDAP person by email and adds the omniauth identity to the user3736 when also not found by email3737 tries to find an LDAP person by DN and adds the omniauth identity to the user3738 when there is an LDAP connection error3739 does not save the identity3740 and a corresponding LDAP person with a non-default username3741 and no account for the LDAP user3742 creates a user favoring the LDAP username and strips email domain3743 and no corresponding LDAP person3744 provider is marked as external3745 marks user as external3746 provider was external, now has been removed3747 does not mark external user as internal3748 provider is not external3749 when adding a new OAuth identity3750 does not promote an external user to internal3751 with new allow_single_sign_on enabled syntax3752 creates a user from Omniauth3753 with old allow_single_sign_on enabled syntax3754 creates a user from Omniauth3755 with new allow_single_sign_on disabled syntax3756 throws an error3757 with old allow_single_sign_on disabled (Default)3758 throws an error3759 with both auto_link_user and auto_link_ldap_user enabled3760 and at least one LDAP provider is defined3761 and a corresponding LDAP person3762 and no account for the LDAP user3763 creates a user with dual LDAP and omniauth identities3764 has name and email set as synced3765 has name and email set as read-only3766 has synced attributes provider set to ldapmain3767 and LDAP user has an account already3768 adds the omniauth identity to the LDAP account3769 blocking3770 signup with SAML3771 does not repeat the default user password3772 behaves like being blocked on creation3773 when blocking on creation3774 creates a blocked user3775 when a sign up user cap has been set up but has not been reached yet3776 still creates a blocked user3777 behaves like not being blocked on creation3778 when not blocking on creation3779 creates a non-blocked user3780 signup with omniauth only3781 behaves like being blocked on creation3782 when blocking on creation3783 creates a blocked user3784 when a sign up user cap has been set up but has not been reached yet3785 still creates a blocked user3786 behaves like not being blocked on creation3787 when not blocking on creation3788 creates a non-blocked user3789 signup with linked omniauth and LDAP account3790 and no account for the LDAP user3791 behaves like being blocked on creation3792 when blocking on creation3793 creates a blocked user3794 when a sign up user cap has been set up but has not been reached yet3795 still creates a blocked user3796 behaves like not being blocked on creation3797 when not blocking on creation3798 creates a non-blocked user3799 and LDAP user has an account already3800 behaves like not being blocked on creation3801 when not blocking on creation3802 creates a non-blocked user3803 behaves like not being blocked on creation3804 when not blocking on creation3805 creates a non-blocked user3806 sign-in3807 behaves like not being blocked on creation3808 when not blocking on creation3809 creates a non-blocked user3810 behaves like not being blocked on creation3811 when not blocking on creation3812 creates a non-blocked user3813 behaves like not being blocked on creation3814 when not blocking on creation3815 creates a non-blocked user3816 behaves like not being blocked on creation3817 when not blocking on creation3818 creates a non-blocked user3819 ensure backwards compatibility with sync email from provider option3820 when provider sets an email3821 updates the user email3822 has email set as synced3823 has email set as read-only3824 has synced attributes provider set to my-provider3825 when provider doesn't set an email3826 does not update the user email3827 has email set as not synced3828 does not have email set as read-only3829 generating username3830 when no collision with existing user3831 generates the username with no counter3832 when collision with existing user3833 generates the username with a counter3834 when username is a reserved word3835 generates the username with a counter3836 updating email with sync profile3837 when provider sets an email3838 updates the user email3839 has email set as synced3840 has email set as read-only3841 has synced attributes provider set to my-provider3842 when provider doesn't set an email3843 does not update the user email3844 has email set as not synced3845 does not have email set as read-only3846 updating name3847 when provider sets a name3848 updates the user name3849 when provider doesn't set a name3850 does not update the user name3851 updating location3852 when provider sets a location3853 updates the user location3854 when provider doesn't set a location3855 does not update the user location3856 updating user info3857 update all info3858 updates the user email3859 updates the user name3860 updates the user location3861 sets my-provider as the attributes provider3862 update only requested info3863 updates the user name3864 updates the user location3865 does not update the user email3866 update default_scope3867 updates the user email3868 update no info when profile sync is nil3869 does not have sync_attribute3870 does not update the user email3871 does not update the user name3872 does not update the user location3873 does not create associated user synced attributes metadata3874 when gl_user is nil3875 does not raise NoMethodError3876 ._uid_and_provider3877 normalizes extern_uid3878 #find_ldap_person3879 when LDAP connection fails3880 returns nil3881 #bypass_two_factor?3882 when with allow_bypass_two_factor disabled (Default)3883 when with allow_bypass_two_factor enabled3884 when provider in allow_bypass_two_factor array3885 when provider not in allow_bypass_two_factor array3886 #protocol_name3887 is OAuth3888Integrations::Field3889 #initialize3890 sets type password for secret fields3891 uses the given type for other names3892 raises an error if an invalid attribute is given3893 raises an error if an invalid type is given3894 #name3895 is stringified3896 when not set3897 complains3898 #section3899 responds to section3900 when not set3901 has the correct default3902 when set to a static value3903 is known3904 when set to a dynamic value3905 is computed3906 is executed in the class scope3907 #type3908 responds to type3909 when not set3910 has the correct default3911 when set to a static value3912 is known3913 when set to a dynamic value3914 is computed3915 is executed in the class scope3916 #placeholder3917 responds to placeholder3918 when not set3919 has the correct default3920 when set to a static value3921 is known3922 when set to a dynamic value3923 is computed3924 is executed in the class scope3925 #choices3926 responds to choices3927 when not set3928 has the correct default3929 when set to a static value3930 is known3931 when set to a dynamic value3932 is computed3933 is executed in the class scope3934 #value3935 responds to value3936 when not set3937 has the correct default3938 when set to a static value3939 is known3940 when set to a dynamic value3941 is computed3942 is executed in the class scope3943 #checkbox_label3944 responds to checkbox_label3945 when not set3946 has the correct default3947 when set to a static value3948 is known3949 when set to a dynamic value3950 is computed3951 is executed in the class scope3952 #title3953 responds to title3954 when not set3955 has the correct default3956 when set to a static value3957 is known3958 when set to a dynamic value3959 is computed3960 is executed in the class scope3961 #help3962 responds to help3963 when not set3964 has the correct default3965 when set to a static value3966 is known3967 when set to a dynamic value3968 is computed3969 is executed in the class scope3970 #non_empty_password_help3971 responds to non_empty_password_help3972 when not set3973 has the correct default3974 when set to a static value3975 is known3976 when set to a dynamic value3977 is computed3978 is executed in the class scope3979 #non_empty_password_title3980 responds to non_empty_password_title3981 when not set3982 has the correct default3983 when set to a static value3984 is known3985 when set to a dynamic value3986 is computed3987 is executed in the class scope3988 #required3989 responds to required3990 when not set3991 has the correct default3992 when set to a static value3993 is known3994 when set to a dynamic value3995 is computed3996 is executed in the class scope3997 #api_only3998 responds to api_only3999 when not set4000 has the correct default4001 when set to a static value4002 is known4003 when set to a dynamic value4004 is computed4005 is executed in the class scope4006 #is_secret4007 responds to is_secret4008 when not set4009 has the correct default4010 when set to a static value4011 is known4012 when set to a dynamic value4013 is computed4014 is executed in the class scope4015 #exposes_secrets4016 responds to exposes_secrets4017 when not set4018 has the correct default4019 when set to a static value4020 is known4021 when set to a dynamic value4022 is computed4023 is executed in the class scope4024 #required?4025 returns true if the value is truthy4026 returns false if the value is falsey4027 #api_only?4028 returns true if the value is truthy4029 returns false if the value is falsey4030 #is_secret?4031 returns true if the value is truthy4032 returns false if the value is falsey4033 #exposes_secrets?4034 returns true if the value is truthy4035 returns false if the value is falsey4036 #text?4037 returns true if the type matches4038 returns false if the type does not match4039 #textarea?4040 returns true if the type matches4041 returns false if the type does not match4042 #password?4043 returns true if the type matches4044 returns false if the type does not match4045 #checkbox?4046 returns true if the type matches4047 returns false if the type does not match4048 #select?4049 returns true if the type matches4050 returns false if the type does not match4051 #secret?4052 when empty4053 is expected not to be secret4054 when a secret field4055 is expected to be secret4056 when named url4057 is expected not to be secret4058Gitlab::PathRegex4059 TOP_LEVEL_ROUTES4060 includes all the top level namespaces4061 does not allow expansion4062 GROUP_ROUTES4063 don't contain a second wildcard4064 does not allow expansion4065 PROJECT_WILDCARD_ROUTES4066 includes all paths that can be used after a namespace/project path4067 does not allow expansion4068 .root_namespace_route_regex4069 rejects top level routes4070 accepts project wildcard routes4071 accepts group routes4072 is not case sensitive4073 does not allow extra slashes4074 .full_namespace_path_regex4075 is not case sensitive4076 does not allow extra slashes4077 at the top level4078 when the final level4079 rejects top level routes4080 accepts project wildcard routes4081 accepts group routes4082 when more levels follow4083 rejects top level routes4084 accepts project wildcard routes4085 accepts group routes4086 at the second level4087 when the final level4088 accepts top level routes4089 rejects project wildcard routes4090 rejects group routes4091 when more levels follow4092 accepts top level routes4093 rejects project wildcard routes4094 rejects group routes4095 .project_route_regex4096 accepts top level routes4097 rejects project wildcard routes4098 accepts group routes4099 is not case sensitive4100 does not allow extra slashes4101 .full_project_path_regex4102 accepts top level routes4103 rejects project wildcard routes4104 accepts group routes4105 is not case sensitive4106 does not allow extra slashes4107 .namespace_format_regex4108 is expected to match "gitlab-ce"4109 is expected to match "gitlab_git"4110 is expected to match "_underscore.js"4111 is expected to match "100px.com"4112 is expected to match "gitlab.org"4113 is expected not to match "?gitlab"4114 is expected not to match "git lab"4115 is expected not to match "gitlab.git"4116 is expected not to match "gitlab.org."4117 is expected not to match "gitlab.org/"4118 is expected not to match "/gitlab.org"4119 is expected not to match "gitlab git"4120 is expected not to match "gitlab?"4121 is expected to match "gitlab.org-"4122 is expected to match "gitlab.org_"4123 .project_path_format_regex4124 is expected to match "gitlab-ce"4125 is expected to match "gitlab_git"4126 is expected to match "_underscore.js"4127 is expected to match "100px.com"4128 is expected not to match "?gitlab"4129 is expected not to match "git lab"4130 is expected not to match "gitlab.git"4131 is expected not to match "gitlab?"4132 is expected not to match "gitlab git"4133 is expected to match "gitlab.org"4134 is expected to match "gitlab.org-"4135 is expected to match "gitlab.org_"4136 is expected to match "gitlab.org."4137 is expected not to match "gitlab.org/"4138 is expected not to match "/gitlab.org"4139 repository routes4140 .repository_route_regex4141 matches the expected paths4142 .repository_git_route_regex4143 matches the expected paths4144 .repository_git_lfs_route_regex4145 matches the expected paths4146 .repository_wiki_git_route_regex4147 matches the expected paths4148 is expected not to match "snippets/1.wiki.git"4149 .full_snippets_repository_path_regex4150 matches the expected paths4151 is expected not to match "root/snippets/1"4152 is expected not to match "gitlab-org/gitlab-test/snippets/foo"4153 .container_image_regex4154 is expected to match "gitlab-foss"4155 is expected to match "gitlab_foss"4156 is expected to match "gitlab-org/gitlab-foss"4157 is expected to match "a/b/c/d/e"4158 is expected to match "100px.com/100px.ruby"4159 does not match beyond 4 slashes4160 does not match other non-word characters4161 .container_image_blob_sha_regex4162 is expected to match "sha256:asdf1234567890ASDF"4163 is expected to match "foo:123"4164 is expected to match "a12bc3f590szp"4165 is expected not to match ""4166 does not match malicious characters4167 .dependency_proxy_route_regex4168 is expected to match "/v2/group1/dependency_proxy/containers/alpine/manifests/latest"4169 is expected to match "/v2/group1/dependency_proxy/containers/alpine/blobs/sha256:14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab"4170 is expected not to match ""4171 is expected not to match "/v3/group1/dependency_proxy/containers/alpine/manifests/latest"4172 is expected not to match "/v2/group1/dependency_proxy/container/alpine/manifests/latest"4173 is expected not to match "/v2/group1/dependency_prox/containers/alpine/manifests/latest"4174 is expected not to match "/v2/group1/dependency_proxy/containers/alpine/manifest/latest"4175 is expected not to match "/v2/group1/dependency_proxy/containers/alpine/manifest/la%2Ftest"4176 is expected not to match "/v2/group1/dependency_proxy/containers/alpine/manifest/latest/../one"4177 is expected not to match "/v3/group1/dependency_proxy/containers/alpine/blobs/sha256:14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab"4178 is expected not to match "/v2/group1/dependency_proxy/container/alpine/blobs/sha256:14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab"4179 is expected not to match "/v2/group1/dependency_prox/containers/alpine/blobs/sha256:14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab"4180 is expected not to match "/v2/group1/dependency_proxy/containers/alpine/blob/sha256:14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab"4181 is expected not to match "/v2/group1/dependency_proxy/containers/alpine/blob/sha256:F14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab/../latest"4182 is expected not to match "/v2/group1/dependency_proxy/containers/alpine/blob/sha256:F14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab/latest"4183Gitlab::Database::BatchCount4184 #batch_count4185 counts table4186 counts with :id field4187 counts with "id" field4188 counts with table.id field4189 counts with Arel column4190 counts table with batch_size 50K4191 will not count table with a batch size less than allowed4192 produces the same result with different batch sizes4193 counts with a start and finish4194 stops counting when finish value is reached4195 defaults the batch size to 1000004196 does not use BETWEEN to define the range4197 behaves like when a transaction is open4198 raises an error4199 behaves like when batch fetch query is canceled4200 reduces batch size by half and retry fetch4201 when all retries fail4202 logs failing query4203 disallowed_configurations4204 returns fallback if start is bigger than finish4205 returns fallback if loops more than allowed4206 returns fallback if batch size is less than min required4207 raises an error if distinct count is requested4208 when a relation is grouped4209 count by default column4210 counts grouped records4211 #batch_count_with_timeout4212 counts table4213 counts with :id field4214 counts with "id" field4215 counts with table.id field4216 counts with Arel column4217 counts table with batch_size 50K4218 will not count table with a batch size less than allowed4219 produces the same result with different batch sizes4220 counts with a start and finish4221 stops counting when finish value is reached4222 returns a partial count when timeout elapses4223 starts counting from a given partial result4224 behaves like when a transaction is open4225 raises an error4226 behaves like when batch fetch query is canceled4227 reduces batch size by half and retry fetch4228 when all retries fail4229 logs failing query4230 disallowed_configurations4231 returns fallback if start is bigger than finish4232 returns fallback if loops more than allowed4233 returns fallback if batch size is less than min required4234 raises an error if distinct count is requested4235 when a relation is grouped4236 count by default column4237 counts grouped records4238 #batch_distinct_count4239 counts with column field4240 counts with "id" field4241 counts with table.column field4242 counts with Arel column4243 counts with :column field with batch_size of 50K4244 will not count table with a batch size less than allowed4245 produces the same result with different batch sizes4246 counts with a start and finish4247 stops counting when finish value is reached4248 counts with User min and max as start and finish4249 defaults the batch size to 100004250 behaves like when a transaction is open4251 raises an error4252 disallowed configurations4253 returns fallback if start is bigger than finish4254 returns fallback if loops more than allowed4255 returns fallback if batch size is less than min required4256 will raise an error if distinct count with the :id column is requested4257 when a relation is grouped4258 distinct count by non-unique column4259 counts grouped records4260 behaves like when batch fetch query is canceled4261 reduces batch size by half and retry fetch4262 when all retries fail4263 logs failing query4264 #batch_sum4265 returns the sum of values in the given column4266 works when given an Arel column4267 works with a batch size of 50K4268 works with start and finish provided4269 returns the same result regardless of batch size4270 defaults the batch size to 10004271 behaves like when a transaction is open4272 raises an error4273 behaves like disallowed configurations4274 returns fallback if start is bigger than finish4275 returns fallback if loops more than allowed4276 returns fallback if batch size is less than min required4277 behaves like when batch fetch query is canceled4278 reduces batch size by half and retry fetch4279 when all retries fail4280 logs failing query4281 #batch_average4282 calls BatchAverageCounter4283MergeRequests::AddTodoWhenBuildFailsService4284 #execute4285 commit status with ref4286 notifies the todo service4287 commit status with non-HEAD ref4288 does not notify the todo service4289 commit status without ref4290 does not notify the todo service4291 when commit status is a build allowed to fail4292 does not create todo4293 when build belongs to a merge request pipeline4294 notifies the todo service4295 #close4296 commit status with ref4297 notifies the todo service4298 commit status with non-HEAD ref4299 does not notify the todo service4300 commit status without ref4301 does not notify the todo service4302 when build belongs to a merge request pipeline4303 notifies the todo service4304 #close_all4305 when using pipeline that belongs to merge request4306 resolves todos about failed builds for pipeline4307 when pipeline is not related to merge request4308 does not resolve any todos about failed builds4309Autocomplete::UsersFinder4310 #execute4311 is expected to contain exactly #<User id:522 @johndoe>, #<User id:525 @user106>, #<User id:526 @user107>, and #<User id:527 @user108>4312 preloads the status association4313 when current_user not passed or nil4314 is expected to contain exactly4315 when project passed4316 is expected to contain exactly #<User id:529 @namespace350>4317 when author_id passed4318 and author is active4319 is expected to contain exactly #<User id:529 @namespace350> and #<User id:522 @johndoe>4320 and author is blocked4321 is expected to contain exactly #<User id:529 @namespace350>4322 and author is banned4323 is expected to contain exactly #<User id:529 @namespace350>4324 searching with less than 3 characters4325 allows partial matches4326 when group passed and project not passed4327 is expected to contain exactly #<User id:522 @johndoe>4328 searching with less than 3 characters4329 allows partial matches4330 when passed a subgroup4331 includes users from parent groups as well4332 when filtered by search4333 is expected to contain exactly #<User id:522 @johndoe>4334 searching with less than 3 characters4335 does not allow partial matches4336 when filtered by skip_users4337 is expected to contain exactly #<User id:522 @johndoe> and #<User id:525 @user106>4338 when todos exist4339 when filtered by todo_filter without todo_state_filter4340 is expected to contain exactly4341 when filtered by todo_filter with pending todo_state_filter4342 is expected to contain exactly #<User id:522 @johndoe>4343 when filtered by todo_filter with done todo_state_filter4344 is expected to contain exactly #<User id:525 @user106>4345 when filtered by current_user4346 is expected to contain exactly #<User id:523 @blocked_user>, #<User id:522 @johndoe>, #<User id:525 @user106>, and #<User id:526 @user107>4347 when filtered by author_id4348 is expected to contain exactly #<User id:522 @johndoe>, #<User id:525 @user106>, #<User id:526 @user107>, and #<User id:571 @user127>4349 when filtered by state4350 searching without states4351 is expected to contain exactly #<User id:522 @johndoe>, #<User id:525 @user106>, #<User id:526 @user107>, and #<User id:572 @user128>4352 searching with states=active4353 is expected to contain exactly #<User id:522 @johndoe>, #<User id:525 @user106>, #<User id:526 @user107>, and #<User id:573 @user129>4354 searching with states=blocked4355 is expected to contain exactly #<User id:523 @blocked_user>4356 searching with states=banned4357 is expected to contain exactly #<User id:524 @banned_user>4358 searching with states=blocked,banned4359 is expected to contain exactly #<User id:523 @blocked_user> and #<User id:524 @banned_user>4360Gitlab::Checks::BranchCheck4361 #validate!4362 does not raise any error4363 trying to delete the default branch4364 raises an error4365 prohibited branches check4366 prohibits 40-character hexadecimal branch names4367 doesn't prohibit a nested hexadecimal in a branch name4368 deleting a hexadecimal branch4369 doesn't prohibit the deletion of a hexadecimal branch name4370 protected branches check4371 raises an error if the user is not allowed to do forced pushes to protected branches4372 raises an error if the user is not allowed to merge to protected branches4373 raises an error if the user is not allowed to push to protected branches4374 when user has push access4375 if protected branches is allowed to force push4376 allows force push4377 if protected branches is not allowed to force push4378 prevents force push4379 when user does not have push access4380 if protected branches is allowed to force push4381 prevents force push4382 if protected branches is not allowed to force push4383 prevents force push4384 when project repository is empty4385 user is not allowed to push to protected branches4386 raises an error4387 user is allowed to push to protected branches4388 allows branch creation4389 branch creation4390 user can push to branch4391 does not raise an error4392 user cannot push to branch4393 user cannot merge to branch4394 raises an error4395 user can merge to branch4396 newrev isn't in any protected branches4397 raises an error4398 newrev is included in a protected branch4399 via web interface4400 allows branch creation4401 via SSH4402 raises an error4403 branch deletion4404 if the user is not allowed to delete protected branches4405 raises an error4406 if the user is allowed to delete protected branches4407 through the web interface4408 allows branch deletion4409 over SSH or HTTP4410 raises an error4411ResourceEvents::ChangeStateService4412 #execute4413 when resource is an Issue4414 when no source is given4415 behaves like a state event4416 creates the expected event if resource has opened state4417 sets the created_at timestamp from the system_note_timestamp4418 creates the expected event if resource has reopened state4419 sets the created_at timestamp from the system_note_timestamp4420 creates the expected event if resource has closed state4421 sets the created_at timestamp from the system_note_timestamp4422 creates the expected event if resource has locked state4423 sets the created_at timestamp from the system_note_timestamp4424 when source commit is given4425 behaves like a state event4426 creates the expected event if resource has opened state4427 sets the created_at timestamp from the system_note_timestamp4428 creates the expected event if resource has reopened state4429 sets the created_at timestamp from the system_note_timestamp4430 creates the expected event if resource has closed state4431 sets the created_at timestamp from the system_note_timestamp4432 creates the expected event if resource has locked state4433 sets the created_at timestamp from the system_note_timestamp4434 when source merge request is given4435 behaves like a state event4436 creates the expected event if resource has opened state4437 sets the created_at timestamp from the system_note_timestamp4438 creates the expected event if resource has reopened state4439 sets the created_at timestamp from the system_note_timestamp4440 creates the expected event if resource has closed state4441 sets the created_at timestamp from the system_note_timestamp4442 creates the expected event if resource has locked state4443 sets the created_at timestamp from the system_note_timestamp4444 when resource is a MergeRequest4445 when no source is given4446 behaves like a state event4447 creates the expected event if resource has opened state4448 sets the created_at timestamp from the system_note_timestamp4449 creates the expected event if resource has reopened state4450 sets the created_at timestamp from the system_note_timestamp4451 creates the expected event if resource has closed state4452 sets the created_at timestamp from the system_note_timestamp4453 creates the expected event if resource has locked state4454 sets the created_at timestamp from the system_note_timestamp4455 when source commit is given4456 behaves like a state event4457 creates the expected event if resource has opened state4458 sets the created_at timestamp from the system_note_timestamp4459 creates the expected event if resource has reopened state4460 sets the created_at timestamp from the system_note_timestamp4461 creates the expected event if resource has closed state4462 sets the created_at timestamp from the system_note_timestamp4463 creates the expected event if resource has locked state4464 sets the created_at timestamp from the system_note_timestamp4465 when source merge request is given4466 behaves like a state event4467 creates the expected event if resource has opened state4468 sets the created_at timestamp from the system_note_timestamp4469 creates the expected event if resource has reopened state4470 sets the created_at timestamp from the system_note_timestamp4471 creates the expected event if resource has closed state4472 sets the created_at timestamp from the system_note_timestamp4473 creates the expected event if resource has locked state4474 sets the created_at timestamp from the system_note_timestamp4475Gitlab::PrometheusClient4476 #ping4477 issues a "query" request to the API endpoint4478 #healthy?4479 returns true when status code is 200 and healthy response body4480 returns false when status code is 200 and unhealthy response body4481 raises error when status code not 2004482 #ready?4483 returns true when status code is 2004484 returns false when status code is not 2004485 raises error when ready api throws exception4486 failure to reach a provided prometheus url4487 ping4488 behaves like exceptions are raised4489 raises a Gitlab::PrometheusClient::ConnectionError when a Net::OpenTimeout is rescued4490 raises a Gitlab::PrometheusClient::ConnectionError when a Net::ReadTimeout is rescued4491 raises a Gitlab::PrometheusClient::ConnectionError when a Net::WriteTimeout is rescued4492 raises a Gitlab::PrometheusClient::ConnectionError when a Gitlab::HTTP::ReadTotalTimeout is rescued4493 raises a Gitlab::PrometheusClient::ConnectionError when a EOFError is rescued4494 raises a Gitlab::PrometheusClient::ConnectionError when a SocketError is rescued4495 raises a Gitlab::PrometheusClient::ConnectionError when a OpenSSL::SSL::SSLError is rescued4496 raises a Gitlab::PrometheusClient::ConnectionError when a OpenSSL::OpenSSLError is rescued4497 raises a Gitlab::PrometheusClient::ConnectionError when a Errno::ECONNRESET is rescued4498 raises a Gitlab::PrometheusClient::ConnectionError when a Errno::ECONNREFUSED is rescued4499 raises a Gitlab::PrometheusClient::ConnectionError when a Errno::EHOSTUNREACH is rescued4500 raises a Gitlab::PrometheusClient::ConnectionError when a Errno::ENETUNREACH is rescued4501 raises a Gitlab::PrometheusClient::ConnectionError when a Gitlab::HTTP::BlockedUrlError is rescued4502 raises a Gitlab::PrometheusClient::ConnectionError when a Gitlab::HTTP::RedirectionTooDeep is rescued4503 raises a Gitlab::PrometheusClient::ConnectionError when a Net::HTTPBadResponse is rescued4504 proxy4505 behaves like exceptions are raised4506 raises a Gitlab::PrometheusClient::ConnectionError when a Net::OpenTimeout is rescued4507 raises a Gitlab::PrometheusClient::ConnectionError when a Net::ReadTimeout is rescued4508 raises a Gitlab::PrometheusClient::ConnectionError when a Net::WriteTimeout is rescued4509 raises a Gitlab::PrometheusClient::ConnectionError when a Gitlab::HTTP::ReadTotalTimeout is rescued4510 raises a Gitlab::PrometheusClient::ConnectionError when a EOFError is rescued4511 raises a Gitlab::PrometheusClient::ConnectionError when a SocketError is rescued4512 raises a Gitlab::PrometheusClient::ConnectionError when a OpenSSL::SSL::SSLError is rescued4513 raises a Gitlab::PrometheusClient::ConnectionError when a OpenSSL::OpenSSLError is rescued4514 raises a Gitlab::PrometheusClient::ConnectionError when a Errno::ECONNRESET is rescued4515 raises a Gitlab::PrometheusClient::ConnectionError when a Errno::ECONNREFUSED is rescued4516 raises a Gitlab::PrometheusClient::ConnectionError when a Errno::EHOSTUNREACH is rescued4517 raises a Gitlab::PrometheusClient::ConnectionError when a Errno::ENETUNREACH is rescued4518 raises a Gitlab::PrometheusClient::ConnectionError when a Gitlab::HTTP::BlockedUrlError is rescued4519 raises a Gitlab::PrometheusClient::ConnectionError when a Gitlab::HTTP::RedirectionTooDeep is rescued4520 raises a Gitlab::PrometheusClient::ConnectionError when a Net::HTTPBadResponse is rescued4521 #query4522 when request returns vector results4523 returns data from the API call4524 when request returns matrix results4525 returns nil4526 when request returns no data4527 returns []4528 behaves like failure response4529 when request returns 400 with an error message4530 raises a Gitlab::PrometheusClient::QueryError error4531 when request returns 400 without an error message4532 raises a Gitlab::PrometheusClient::QueryError error4533 when request returns 5004534 raises a Gitlab::PrometheusClient::UnexpectedResponseError error4535 when request returns non json data4536 raises a Gitlab::PrometheusClient::UnexpectedResponseError error4537 #aggregate4538 when request returns vector results4539 returns data from the API call grouped by labels4540 when request returns no data4541 returns {}4542 behaves like failure response4543 when request returns 400 with an error message4544 raises a Gitlab::PrometheusClient::QueryError error4545 when request returns 400 without an error message4546 raises a Gitlab::PrometheusClient::QueryError error4547 when request returns 5004548 raises a Gitlab::PrometheusClient::UnexpectedResponseError error4549 when request returns non json data4550 raises a Gitlab::PrometheusClient::UnexpectedResponseError error4551 #series4552 calls endpoint and returns list of series4553 #label_values4554 calls endpoint and returns label values4555 #query_range4556 when non utc time is passed4557 passed dates are properly converted to utc4558 when a start time is passed4559 passed it in the requested URL4560 when request returns vector results4561 returns nil4562 when request returns matrix results4563 returns data from the API call4564 when request returns no data4565 returns []4566 behaves like failure response4567 when request returns 400 with an error message4568 raises a Gitlab::PrometheusClient::QueryError error4569 when request returns 400 without an error message4570 raises a Gitlab::PrometheusClient::QueryError error4571 when request returns 5004572 raises a Gitlab::PrometheusClient::UnexpectedResponseError error4573 when request returns non json data4574 raises a Gitlab::PrometheusClient::UnexpectedResponseError error4575 .compute_step4576 time_interval_in_seconds: 0, step: 604577 is expected to eq 604578 time_interval_in_seconds: 10 hours, step: 604579 is expected to eq 604580 time_interval_in_seconds: 10 hours and 1 second, step: 614581 is expected to eq 614582 time_interval_in_seconds: 30 minutes, step: 604583 is expected to eq 604584 time_interval_in_seconds: 3 hours, step: 604585 is expected to eq 604586 time_interval_in_seconds: 8 hours, step: 604587 is expected to eq 604588 time_interval_in_seconds: 1 day, step: 1444589 is expected to eq 1444590 time_interval_in_seconds: 3 days, step: 4324591 is expected to eq 4324592 time_interval_in_seconds: 1 week, step: 10084593 is expected to eq 10084594 proxy4595 get API4596 when response status code is 2004597 returns response object4598 when response status code is not 2004599 returns response object4600 when Gitlab::HTTP::ResponseError is raised4601 without response code4602 raises PrometheusClient::ConnectionError4603 with response code4604 raises Gitlab::PrometheusClient::QueryError4605Git::TagHooksService4606 System hooks4607 executes system hooks4608 Webhooks4609 executes hooks on the project4610 Pipelines4611 creates a new pipeline4612 Push data4613 annotated tag4614 has expected push data attributes4615 with repository data4616 has expected repository attributes4617 with commits4618 is expected to be a kind of Array4619 has 1 element4620 the commit4621 is expected to include {:timestamp => "2014-02-27T11:01:38+02:00"}4622 has expected commit attributes4623 with an author4624 has expected author attributes4625 lightweight tag4626 has expected push data attributes4627 with repository data4628 has expected repository attributes4629 with commits4630 is expected to be a kind of Array4631 has 1 element4632 the commit4633 is expected to include {:timestamp => "2014-02-27T11:01:38+02:00"}4634 has expected commit attributes4635 with an author4636 has expected author attributes4637Gitlab::Search::AbuseDetection4638 abusive scopes validation4639 allows only approved scopes4640 disallows anything not approved4641 abusive character matching4642 does match refs permitted by git refname: main4643 does NOT match refs with special characters: main4644 does match refs permitted by git refname: тест4645 does NOT match refs with special characters: тест4646 does match refs permitted by git refname: maiñ4647 does NOT match refs with special characters: maiñ4648 does match refs permitted by git refname: main1234649 does NOT match refs with special characters: main1234650 does match refs permitted by git refname: main-v1234651 does NOT match refs with special characters: main-v1234652 does match refs permitted by git refname: main-v12.34653 does NOT match refs with special characters: main-v12.34654 does match refs permitted by git refname: feature/it_works4655 does NOT match refs with special characters: feature/it_works4656 does match refs permitted by git refname: really_important!4657 does NOT match refs with special characters: really_important!4658 does match refs permitted by git refname: 测试4659 does NOT match refs with special characters: 测试4660 numericality validation4661 considers non Integers to be invalid4662 considers Integers to be valid4663 query_string validation4664 search: "a", errors: {:query_string=>["stopword only abusive search detected"]}4665 validates query string for pointless search4666 search: "an", errors: {:query_string=>["stopword only abusive search detected"]}4667 validates query string for pointless search4668 search: "and", errors: {:query_string=>["stopword only abusive search detected"]}4669 validates query string for pointless search4670 search: "are", errors: {:query_string=>["stopword only abusive search detected"]}4671 validates query string for pointless search4672 search: "as", errors: {:query_string=>["stopword only abusive search detected"]}4673 validates query string for pointless search4674 search: "at", errors: {:query_string=>["stopword only abusive search detected"]}4675 validates query string for pointless search4676 search: "be", errors: {:query_string=>["stopword only abusive search detected"]}4677 validates query string for pointless search4678 search: "but", errors: {:query_string=>["stopword only abusive search detected"]}4679 validates query string for pointless search4680 search: "by", errors: {:query_string=>["stopword only abusive search detected"]}4681 validates query string for pointless search4682 search: "for", errors: {:query_string=>["stopword only abusive search detected"]}4683 validates query string for pointless search4684 search: "if", errors: {:query_string=>["stopword only abusive search detected"]}4685 validates query string for pointless search4686 search: "in", errors: {:query_string=>["stopword only abusive search detected"]}4687 validates query string for pointless search4688 search: "into", errors: {:query_string=>["stopword only abusive search detected"]}4689 validates query string for pointless search4690 search: "is", errors: {:query_string=>["stopword only abusive search detected"]}4691 validates query string for pointless search4692 search: "it", errors: {:query_string=>["stopword only abusive search detected"]}4693 validates query string for pointless search4694 search: "no", errors: {:query_string=>["stopword only abusive search detected"]}4695 validates query string for pointless search4696 search: "not", errors: {:query_string=>["stopword only abusive search detected"]}4697 validates query string for pointless search4698 search: "of", errors: {:query_string=>["stopword only abusive search detected"]}4699 validates query string for pointless search4700 search: "on", errors: {:query_string=>["stopword only abusive search detected"]}4701 validates query string for pointless search4702 search: "or", errors: {:query_string=>["stopword only abusive search detected"]}4703 validates query string for pointless search4704 search: "such", errors: {:query_string=>["stopword only abusive search detected"]}4705 validates query string for pointless search4706 search: "that", errors: {:query_string=>["stopword only abusive search detected"]}4707 validates query string for pointless search4708 search: "the", errors: {:query_string=>["stopword only abusive search detected"]}4709 validates query string for pointless search4710 search: "their", errors: {:query_string=>["stopword only abusive search detected"]}4711 validates query string for pointless search4712 search: "then", errors: {:query_string=>["stopword only abusive search detected"]}4713 validates query string for pointless search4714 search: "there", errors: {:query_string=>["stopword only abusive search detected"]}4715 validates query string for pointless search4716 search: "these", errors: {:query_string=>["stopword only abusive search detected"]}4717 validates query string for pointless search4718 search: "they", errors: {:query_string=>["stopword only abusive search detected"]}4719 validates query string for pointless search4720 search: "this", errors: {:query_string=>["stopword only abusive search detected"]}4721 validates query string for pointless search4722 search: "to", errors: {:query_string=>["stopword only abusive search detected"]}4723 validates query string for pointless search4724 search: "was", errors: {:query_string=>["stopword only abusive search detected"]}4725 validates query string for pointless search4726 search: "will", errors: {:query_string=>["stopword only abusive search detected"]}4727 validates query string for pointless search4728 search: "with", errors: {:query_string=>["stopword only abusive search detected"]}4729 validates query string for pointless search4730 search: "x", errors: {:query_string=>["abusive tiny search detected"]}4731 validates query string for pointless search4732 search: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", errors: {:query_string=>["abusive term length detected"]}4733 validates query string for pointless search4734 search: "", errors: {}4735 validates query string for pointless search4736 search: "*", errors: {}4737 validates query string for pointless search4738 search: "ruby", errors: {}4739 validates query string for pointless search4740 abusive type coercion from string validation4741 considers anything not a String invalid4742 considers Strings to be valid4743Projects::DataTransfer4744 # order random4745 is expected to be valid4746 associations4747 is expected to belong to project required: false4748 is expected to belong to namespace required: false4749 .beginning_of_month4750 is expected to eq 2022-05-01 00:00:00.000000000 +00004751 scopes4752 .current_month4753 returns data transfer for the current month4754 .with_project_between_dates4755 returns the correct number of results4756 .with_namespace_between_dates4757 returns the correct number of results4758 behaves like CounterAttribute4759 defines a method to store counters4760 repository_egress4761 #increment_counter4762 when attribute is a counter attribute4763 amount: 104764 increments the counter in Redis and logs it4765 does not increment the counter for the record4766 schedules a worker to flush counter increments asynchronously4767 amount: -34768 increments the counter in Redis and logs it4769 does not increment the counter for the record4770 schedules a worker to flush counter increments asynchronously4771 #increment_amount4772 increases the egress in cache4773 #current_counter4774 increases the amount in cache4775 when increment amount is 04776 does nothing4777 #bulk_increment_counter4778 when attribute is a counter attribute4779 increments the counter in Redis and logs each increment4780 does not increment the counter for the record4781 schedules a worker to flush counter increments asynchronously4782 when feature flag split_log_bulk_increment_counter is disabled4783 logs a single total increment4784 artifacts_egress4785 #increment_counter4786 when attribute is a counter attribute4787 amount: 104788 increments the counter in Redis and logs it4789 does not increment the counter for the record4790 schedules a worker to flush counter increments asynchronously4791 amount: -34792 increments the counter in Redis and logs it4793 does not increment the counter for the record4794 schedules a worker to flush counter increments asynchronously4795 #increment_amount4796 increases the egress in cache4797 #current_counter4798 increases the amount in cache4799 when increment amount is 04800 does nothing4801 #bulk_increment_counter4802 when attribute is a counter attribute4803 increments the counter in Redis and logs each increment4804 does not increment the counter for the record4805 schedules a worker to flush counter increments asynchronously4806 when feature flag split_log_bulk_increment_counter is disabled4807 logs a single total increment4808 packages_egress4809 #increment_counter4810 when attribute is a counter attribute4811 amount: 104812 increments the counter in Redis and logs it4813 does not increment the counter for the record4814 schedules a worker to flush counter increments asynchronously4815 amount: -34816 increments the counter in Redis and logs it4817 does not increment the counter for the record4818 schedules a worker to flush counter increments asynchronously4819 #increment_amount4820 increases the egress in cache4821 #current_counter4822 increases the amount in cache4823 when increment amount is 04824 does nothing4825 #bulk_increment_counter4826 when attribute is a counter attribute4827 increments the counter in Redis and logs each increment4828 does not increment the counter for the record4829 schedules a worker to flush counter increments asynchronously4830 when feature flag split_log_bulk_increment_counter is disabled4831 logs a single total increment4832 registry_egress4833 #increment_counter4834 when attribute is a counter attribute4835 amount: 104836 increments the counter in Redis and logs it4837 does not increment the counter for the record4838 schedules a worker to flush counter increments asynchronously4839 amount: -34840 increments the counter in Redis and logs it4841 does not increment the counter for the record4842 schedules a worker to flush counter increments asynchronously4843 #increment_amount4844 increases the egress in cache4845 #current_counter4846 increases the amount in cache4847 when increment amount is 04848 does nothing4849 #bulk_increment_counter4850 when attribute is a counter attribute4851 increments the counter in Redis and logs each increment4852 does not increment the counter for the record4853 schedules a worker to flush counter increments asynchronously4854 when feature flag split_log_bulk_increment_counter is disabled4855 logs a single total increment4856 #update_counters_with_lease4857 updates counters of the record4858 behaves like obtaining lease to update database4859 when it is unable to obtain lock4860 logs a warning4861 when feature flag counter_attribute_db_lease_for_update is disabled4862 does not attempt to get a lock4863 when the execution raises error4864 reraises error4865 unique index4866 raises unique index violation4867 when project was moved from one namespace to another4868 creates a new record4869 when a different project is created4870 creates a new record4871Spam::SpamVerdictService4872 #execute4873 issue4874 behaves like execute spam verdict service4875 if all services return nil4876 renders ALLOW verdict4877 if only one service returns a verdict4878 and it is supported4879 renders that verdict4880 and it is unexpected4881 allows4882 if more than one service returns a verdict4883 and they are supported4884 renders the more restrictive verdict4885 and one is supported4886 renders the more restrictive verdict4887 and none are supported4888 renders the more restrictive verdict4889 if allow_possible_spam application setting is true4890 and a service returns a verdict that should be overridden4891 overrides and renders the override verdict4892 and a service returns a verdict that does not need to be overridden4893 does not override and renders the original verdict4894 records metrics4895 verdict: "allow", label: "ALLOW"4896 records duration with labels4897 verdict: "conditional_allow", label: "CONDITIONAL_ALLOW"4898 records duration with labels4899 verdict: "block", label: "BLOCK"4900 records duration with labels4901 verdict: "disallow", label: "DISALLOW"4902 records duration with labels4903 verdict: "noop", label: "NOOP"4904 records duration with labels4905 snippet4906 behaves like execute spam verdict service4907 if all services return nil4908 renders ALLOW verdict4909 if only one service returns a verdict4910 and it is supported4911 renders that verdict4912 and it is unexpected4913 allows4914 if more than one service returns a verdict4915 and they are supported4916 renders the more restrictive verdict4917 and one is supported4918 renders the more restrictive verdict4919 and none are supported4920 renders the more restrictive verdict4921 if allow_possible_spam application setting is true4922 and a service returns a verdict that should be overridden4923 overrides and renders the override verdict4924 and a service returns a verdict that does not need to be overridden4925 does not override and renders the original verdict4926 records metrics4927 verdict: "allow", label: "ALLOW"4928 records duration with labels4929 verdict: "conditional_allow", label: "CONDITIONAL_ALLOW"4930 records duration with labels4931 verdict: "block", label: "BLOCK"4932 records duration with labels4933 verdict: "disallow", label: "DISALLOW"4934 records duration with labels4935 verdict: "noop", label: "NOOP"4936 records duration with labels4937 #get_akismet_verdict4938 issue4939 behaves like akismet verdict4940 if Akismet is enabled4941 if Akismet considers it spam4942 if reCAPTCHA is enabled4943 returns conditionally allow verdict4944 if reCAPTCHA is not enabled4945 renders disallow verdict4946 if Akismet does not consider it spam4947 renders allow verdict4948 if Akismet is not enabled4949 renders allow verdict4950 snippet4951 behaves like akismet verdict4952 if Akismet is enabled4953 if Akismet considers it spam4954 if reCAPTCHA is enabled4955 returns conditionally allow verdict4956 if reCAPTCHA is not enabled4957 renders disallow verdict4958 if Akismet does not consider it spam4959 renders allow verdict4960 if Akismet is not enabled4961 renders allow verdict4962 #get_spamcheck_verdict4963 issue4964 behaves like spamcheck verdict4965 if a Spam Check endpoint enabled and set to a URL4966 if the endpoint is accessible4967 if the result is a NOOP verdict4968 returns the verdict4969 the result is a valid verdict4970 the result was evaluated4971 returns the verdict and updates the spam score4972 the result was not evaluated4973 returns the verdict and does not update the spam score4974 user spam score feature is disabled4975 returns the verdict and does not update the spam score4976 when recaptcha is enabled4977 verdict_value: 0, expected: "allow", verdict_score: 0.14978 returns expected spam constant and updates the spam score4979 verdict_value: 1, expected: "conditional_allow", verdict_score: 0.54980 returns expected spam constant and updates the spam score4981 verdict_value: 2, expected: "disallow", verdict_score: 0.84982 returns expected spam constant and updates the spam score4983 verdict_value: 3, expected: "block", verdict_score: 0.94984 returns expected spam constant and updates the spam score4985 when recaptcha is disabled4986 verdict_value: 0, expected: "allow"4987 returns expected spam constant4988 verdict_value: 1, expected: "conditional_allow"4989 returns expected spam constant4990 verdict_value: 2, expected: "disallow"4991 returns expected spam constant4992 verdict_value: 3, expected: "block"4993 returns expected spam constant4994 the requested is aborted4995 returns nil4996 if the endpoint times out4997 returns nil4998 if a Spam Check endpoint is not set4999 returns nil5000 if Spam Check endpoint is not enabled5001 returns nil5002 snippet5003 behaves like spamcheck verdict5004 if a Spam Check endpoint enabled and set to a URL5005 if the endpoint is accessible5006 if the result is a NOOP verdict5007 returns the verdict5008 the result is a valid verdict5009 the result was evaluated5010 returns the verdict and updates the spam score5011 the result was not evaluated5012 returns the verdict and does not update the spam score5013 user spam score feature is disabled5014 returns the verdict and does not update the spam score5015 when recaptcha is enabled5016 verdict_value: 0, expected: "allow", verdict_score: 0.15017 returns expected spam constant and updates the spam score5018 verdict_value: 1, expected: "conditional_allow", verdict_score: 0.55019 returns expected spam constant and updates the spam score5020 verdict_value: 2, expected: "disallow", verdict_score: 0.85021 returns expected spam constant and updates the spam score5022 verdict_value: 3, expected: "block", verdict_score: 0.95023 returns expected spam constant and updates the spam score5024 when recaptcha is disabled5025 verdict_value: 0, expected: "allow"5026 returns expected spam constant5027 verdict_value: 1, expected: "conditional_allow"5028 returns expected spam constant5029 verdict_value: 2, expected: "disallow"5030 returns expected spam constant5031 verdict_value: 3, expected: "block"5032 returns expected spam constant5033 the requested is aborted5034 returns nil5035 if the endpoint times out5036 returns nil5037 if a Spam Check endpoint is not set5038 returns nil5039 if Spam Check endpoint is not enabled5040 returns nil5041GroupDescendant5042 for a group5043 #hierarchy5044 only queries once for the ancestors5045 only queries once for the ancestors when a top is given5046 builds a hierarchy for a group5047 builds a hierarchy upto a specified parent5048 raises an error if specifying a base that is not part of the tree5049 .build_hierarchy5050 combines hierarchies until the top5051 combines upto a given parent5052 handles building a tree out of order5053 tracks the exception when a parent was not preloaded5054 recovers if a parent was not reloaded by querying for the parent5055 raises an error if not all elements were preloaded5056 for a project5057 #hierarchy5058 builds a hierarchy for a project5059 builds a hierarchy upto a specified parent5060 .build_hierarchy5061 combines hierarchies until the top5062 combines upto a given parent5063 merges to elements in the same hierarchy5064 merges complex hierarchies5065Gitlab::CycleAnalytics::Permissions5066 user with no relation to the project5067 has no permissions to issue stage5068 has no permissions to test stage5069 has no permissions to staging stage5070 has no permissions to code stage5071 has no permissions to review stage5072 has no permissions to plan stage5073 user is maintainer5074 has permissions to issue stage5075 has permissions to test stage5076 has permissions to staging stage5077 has permissions to code stage5078 has permissions to review stage5079 has permissions to plan stage5080 user has no build permissions5081 has permissions to issue stage5082 has no permissions to test stage5083 has no permissions to staging stage5084 user has no merge request permissions5085 has permissions to issue stage5086 has no permissions to code stage5087 has no permissions to review stage5088 user has no issue permissions5089 has permissions to code stage5090 has no permissions to issue stage5091Gitlab::Gfm::UploadsRewriter5092 text contains links to uploads5093 does not rewrite plain links as embedded5094 does not casue a timeout on pathological text5095 file are stored locally5096 #rewrite5097 rewrites content5098 copies files5099 does not remove old files5100 generates a new secret for each file5101 skips nil files do5102 skips non-existant files5103 files are stored remotely5104 #rewrite5105 rewrites content5106 copies files5107 does not remove old files5108 generates a new secret for each file5109 skips nil files do5110 skips non-existant files5111 #needs_rewrite?5112 is expected to eq true5113Gitlab::SlashCommands::Command5114 #execute5115 when no command is available5116 displays 404 messages5117 when an unknown command is triggered5118 displays the help message5119 the user can not create an issue5120 rejects the actions5121 when trying to do deployment5122 and user can not create deployment5123 returns action5124 and user has deployment permission5125 returns action5126 when duplicate action exists5127 returns error5128 #match_command5129 IssueShow is triggered5130 is expected to eq Gitlab::SlashCommands::IssueShow5131 IssueCreate is triggered5132 is expected to eq Gitlab::SlashCommands::IssueNew5133 IssueSearch is triggered5134 is expected to eq Gitlab::SlashCommands::IssueSearch5135 IssueMove is triggered5136 is expected to eq Gitlab::SlashCommands::IssueMove5137 IssueComment is triggered5138 is expected to eq Gitlab::SlashCommands::IssueComment5139 when incident declare is triggered5140 IncidentNew is triggered5141 is expected to eq Gitlab::SlashCommands::IncidentManagement::IncidentNew5142 when feature flag is disabled5143 IncidentNew is triggered5144 is expected not to eq Gitlab::SlashCommands::IncidentManagement::IncidentNew5145Gitlab::Ci::Config::Entry::Variable5146 # order random5147 ComplexVariable5148 when config is a hash with description5149 when metadata allowed_value_data is not provided5150 #valid?5151 is expected not to be valid5152 #errors5153 is expected to include "var1 config must be a string"5154 when metadata allowed_value_data is (value, description)5155 #valid?5156 is expected to be valid5157 #value5158 is expected to eq "value"5159 #value_with_data5160 is expected to eq {:value=>"value"}5161 #value_with_prefill_data5162 is expected to eq {:description=>"description", :value=>"value"}5163 when config value is a symbol5164 #value5165 is expected to eq "value"5166 #value_with_data5167 is expected to eq {:value=>"value"}5168 #value_with_prefill_data5169 is expected to eq {:description=>"description", :value=>"value"}5170 when config value is an integer5171 #value5172 is expected to eq "123"5173 #value_with_data5174 is expected to eq {:value=>"123"}5175 #value_with_prefill_data5176 is expected to eq {:description=>"description", :value=>"123"}5177 when config description is a symbol5178 #value5179 is expected to eq "value"5180 #value_with_data5181 is expected to eq {:value=>"value"}5182 #value_with_prefill_data5183 is expected to eq {:description=>:description, :value=>"value"}5184 when metadata allowed_value_data is (value, xyz)5185 #valid?5186 is expected not to be valid5187 #errors5188 is expected to include "var1 config uses invalid data keys: description"5189 when config is a hash without description5190 when metadata allowed_value_data is not provided5191 #valid?5192 is expected not to be valid5193 #errors5194 is expected to include "var1 config must be a string"5195 when metadata allowed_value_data is (value, description)5196 #valid?5197 is expected to be valid5198 #value5199 is expected to eq "value"5200 #value_with_data5201 is expected to eq {:value=>"value"}5202 #value_with_prefill_data5203 is expected to eq {:value=>"value"}5204 when config is a hash with expand5205 when metadata allowed_value_data is not provided5206 #valid?5207 is expected not to be valid5208 #errors5209 is expected to include "var1 config must be a string"5210 when metadata allowed_value_data is (value, expand)5211 #valid?5212 is expected to be valid5213 #value5214 is expected to eq "value"5215 #value_with_data5216 is expected to eq {:raw=>true, :value=>"value"}5217 when config expand is true5218 #value_with_data5219 is expected to eq {:raw=>false, :value=>"value"}5220 when config expand is a string5221 #valid?5222 is expected not to be valid5223 #errors5224 is expected to include "var1 config expand should be a boolean value"5225 when metadata allowed_value_data is (value, xyz)5226 #valid?5227 is expected not to be valid5228 #errors5229 is expected to include "var1 config uses invalid data keys: expand"5230 when config is a hash with options5231 when there is no metadata5232 #valid?5233 is expected not to be valid5234 #errors5235 is expected to include "var1 config must be a string"5236 when options are allowed5237 #valid?5238 is expected to be valid5239 #value5240 is expected to eq "value"5241 #value_with_data5242 is expected to eq {:value=>"value"}5243 #value_with_prefill_data5244 is expected to eq {:options=>["value", "value2"], :value=>"value"}5245 SimpleVariable5246 when config is a string5247 #valid?5248 is expected to be valid5249 #value5250 is expected to eq "value"5251 when config is an integer5252 #valid?5253 is expected to be valid5254 #value5255 is expected to eq "1"5256 when config is an array5257 #valid?5258 is expected not to be valid5259 #errors5260 is expected to include "variable definition must be either a string or a hash"5261StarredProjectsFinder5262 #execute5263 user has a public profile5264 as same user5265 is expected to contain exactly #<Project id:510 namespace481/project-498>>, #<Project id:511 namespace482/project-499>>, and #<Project id:512 namespace483/project-500>>5266 as other user5267 is expected to contain exactly #<Project id:513 namespace484/project-501>> and #<Project id:514 namespace485/project-502>>5268 as no user5269 is expected to contain exactly #<Project id:516 namespace487/project-504>> and #<Project id:517 namespace488/project-505>>5270 user has a private profile5271 as same user5272 is expected to contain exactly #<Project id:519 namespace490/project-507>>, #<Project id:520 namespace491/project-508>>, and #<Project id:521 namespace492/project-509>>5273 as other user5274 user does not have access to view the private profile5275 is expected to be empty5276 user has access to view the private profile5277 is expected to contain exactly #<Project id:525 namespace496/project-513>>, #<Project id:526 namespace497/project-514>>, and #<Project id:527 namespace498/project-515>>5278 as no user5279 is expected to be empty5280MergeRequests::UpdateReviewersService5281 execute5282 when the parameters are valid5283 updates the MR5284 creates system note about merge_request review request5285 creates a pending todo for new review request5286 sends email reviewer change notifications to old and new reviewers5287 updates open merge request counter for reviewers5288 updates the tracking5289 tracks reviewers changed event5290 calls MergeRequest::ResolveTodosService#async_execute5291 executes hooks with update action5292 does not update the reviewers if they do not have access5293 when using sentinel values5294 behaves like removing all reviewers5295 removes all reviewers5296 when the reviewer_ids parameter is the empty list5297 behaves like removing all reviewers5298 removes all reviewers5299 behaves like triggers GraphQL subscription mergeRequestReviewersUpdated5300 is expected to receive merge_request_reviewers_updated(#<MergeRequest id:59 group78/project-519!1>) 1 time5301 when reviewers did not change5302 behaves like does not trigger GraphQL subscription mergeRequestReviewersUpdated5303 is expected not to receive merge_request_reviewers_updated(*(any args)) 0 times5304Mutations::Releases::Create5305 #resolve5306 when the current user has access to create releases5307 returns no errors5308 creates the release with the correct tag5309 creates the release with the correct name5310 creates the release with the correct description5311 creates the release with the correct released_at5312 creates the release with the correct created_at5313 creates the release with the correct milestone associations5314 asset links5315 creates a single asset link5316 creates the link with the correct name5317 creates the link with the correct url5318 creates the link with the correct link type5319 creates the link with the correct direct filepath5320 with protected tag5321 when user has access to the protected tag5322 does not have errors5323 when user does not have access to the protected tag5324 has an access error5325 when the current user doesn't have access to create releases5326 raises an error5327BulkImports::Entity5328 associations5329 is expected to belong to bulk_import required: true5330 is expected to belong to parent required: false5331 is expected to belong to group optional: true inverse_of => bulk_import_entities5332 is expected to belong to project required: false5333 is expected to have many trackers class_name => BulkImports::Tracker inverse_of => entity5334 validations5335 is expected to validate that :source_type cannot be empty/falsy5336 is expected to validate that :source_full_path cannot be empty/falsy5337 is expected to validate that :destination_name cannot be empty/falsy5338 is expected to define :source_type as an enum backed by an integer with values ‹[:group_entity, :project_entity]›5339 when formatting with regexes5340 is expected to allow :source_full_path to be ‹"source"›, ‹"source/path"›, or ‹"source/full/path"›5341 is expected not to allow :source_full_path to be ‹"/source"›, ‹"http://source/path"›, ‹"sou rce/full/path"›, or ‹""›5342 when associated with a group and project5343 is invalid5344 when not associated with a group or project5345 is valid5346 when associated with a group and no project5347 is valid as a group_entity5348 is valid when destination_namespace is empty5349 is invalid when destination_namespace is nil5350 is invalid when destination_slug is empty5351 is invalid when destination_slug is nil5352 is invalid as a project_entity5353 when associated with a project and no group5354 is valid5355 is invalid when destination_namespace is nil5356 is invalid as a project_entity5357 when the parent is a group import5358 is valid5359 when the parent is a project import5360 is invalid5361 validate destination namespace of a group_entity5362 is invalid if destination namespace is the source namespace5363 is invalid if destination namespace is a descendant of the source5364 when source_type is a project_entity5365 is valid5366 #encoded_source_full_path5367 encodes entity source full path5368 scopes5369 .by_user_id5370 returns entities associated with specified user5371 .all_human_statuses5372 returns all human readable entity statuses5373 #pipelines5374 when entity is group5375 returns group pipelines5376 when entity is project5377 returns project pipelines5378 #pipeline_exists?5379 returns true when the given pipeline name exists in the pipelines list5380 returns false when the given pipeline name exists in the pipelines list5381 #pluralized_name5382 when entity is group5383 returns groups5384 when entity is project5385 returns projects5386 #export_relations_url_path5387 when entity is group5388 returns group export relations url5389 when entity is project5390 returns project export relations url5391 #relation_download_url_path5392 returns export relations url with download query string5393 #entity_type5394 returns entity type5395 #project?5396 returns true if project entity5397 #group?5398 returns true if group entity5399 #base_resource_url_path5400 returns base entity url path5401 #wiki_url_path5402 returns entity wiki url path5403 #update_service5404 returns correct update service class5405 #full_path5406 returns group full path for project entity5407 returns project full path for project entity5408 returns nil when not associated with group or project5409 #default_visibility_level5410 when entity is a group5411 returns default group visibility5412 when entity is a project5413 returns default project visibility5414 #update_has_failures5415 when entity has failures5416 sets has_failures flag to true5417 when entity does not have failures5418 sets has_failures flag to false5419Banzai::Filter::References::DesignReferenceFilter5420 does not error when we add redaction to the pipeline5421 .call5422 requires project context5423 #call5424 feature flags5425 design management is not enabled5426 behaves like a no-op filter5427 does nothing5428 wrapped in a <pre/>5429 behaves like a no-op filter5430 does nothing5431 wrapped in a <code/>5432 behaves like a no-op filter5433 does nothing5434 wrapped in a <a/>5435 behaves like a no-op filter5436 does nothing5437 wrapped in a <style/>5438 behaves like a no-op filter5439 does nothing5440 .identifier5441 filename: "simple.png"5442 can parse the reference5443 filename: "SIMPLE.PNG"5444 can parse the reference5445 filename: "has-hyphen.jpg"5446 can parse the reference5447 filename: "snake_case.svg"5448 can parse the reference5449 static properties5450 is expected to eq :design5451 #data_attributes_for5452 is expected to include {:issue => 62, :original => "Added http://localhost/namespace508/project-525/-/issues/10/designs/homescreen-445.jpg", :project => 533, :design => 428}5453 internal reference5454 behaves like a reference containing an element node5455 does not escape inner html5456 behaves like a good link reference5457 produces a good link5458 the filename contains invalid characters5459 filename: "with some spaces.png"5460 behaves like a no-op filter5461 does nothing5462 filename: "with <script>console.log(\"pwded\")<%2Fscript>.png"5463 behaves like a no-op filter5464 does nothing5465 filename: "foo\"bar.png"5466 behaves like a no-op filter5467 does nothing5468 filename: "A \"very\" good file.png"5469 behaves like a no-op filter5470 does nothing5471 the reference is to a non-existant design5472 behaves like a no-op filter5473 does nothing5474 design management is disabled for the referenced project5475 behaves like a no-op filter5476 does nothing5477 link pattern5478 matches5479 cross-project / cross-namespace complete reference5480 links to a valid reference5481 link has valid text5482 includes default classes5483 behaves like a reference containing an element node5484 does not escape inner html5485 behaves like a good link reference5486 produces a good link5487 design management is disabled for that project5488 behaves like a no-op filter5489 does nothing5490 the reference is invalid5491 behaves like a no-op filter5492 does nothing5493 performance5494 is linear in the number of projects with design management enabled each design refers to5495SnippetInputAction5496 validations5497 action: :create, file_path: "foobar", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: true, invalid_field: nil5498 is expected to equal true5499 action: :move, file_path: "foobar", content: "foobar", previous_path: "foo1", allowed_actions: nil, is_valid: true, invalid_field: nil5500 is expected to equal true5501 action: :delete, file_path: "foobar", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: true, invalid_field: nil5502 is expected to equal true5503 action: :update, file_path: "foobar", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: true, invalid_field: nil5504 is expected to equal true5505 action: :foo, file_path: "foobar", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: false, invalid_field: :action5506 is expected to include :action5507 action: "create", file_path: "foobar", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: true, invalid_field: nil5508 is expected to equal true5509 action: "move", file_path: "foobar", content: "foobar", previous_path: "foo1", allowed_actions: nil, is_valid: true, invalid_field: nil5510 is expected to equal true5511 action: "delete", file_path: "foobar", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: true, invalid_field: nil5512 is expected to equal true5513 action: "update", file_path: "foobar", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: true, invalid_field: nil5514 is expected to equal true5515 action: "foo", file_path: "foobar", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: false, invalid_field: :action5516 is expected to include :action5517 action: nil, file_path: "foobar", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: false, invalid_field: :action5518 is expected to include :action5519 action: "", file_path: "foobar", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: false, invalid_field: :action5520 is expected to include :action5521 action: :move, file_path: "foobar", content: "foobar", previous_path: nil, allowed_actions: nil, is_valid: false, invalid_field: :previous_path5522 is expected to include :previous_path5523 action: :move, file_path: "foobar", content: "foobar", previous_path: "", allowed_actions: nil, is_valid: false, invalid_field: :previous_path5524 is expected to include :previous_path5525 action: :move, file_path: "foobar", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: false, invalid_field: :file_path5526 is expected to include :file_path5527 action: :move, file_path: nil, content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: true, invalid_field: nil5528 is expected to equal true5529 action: :move, file_path: "", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: true, invalid_field: nil5530 is expected to equal true5531 action: :move, file_path: nil, content: "foobar", previous_path: "foo1", allowed_actions: nil, is_valid: true, invalid_field: nil5532 is expected to equal true5533 action: :move, file_path: "foobar", content: nil, previous_path: "foo1", allowed_actions: nil, is_valid: true, invalid_field: nil5534 is expected to equal true5535 action: :move, file_path: "foobar", content: "", previous_path: "foo1", allowed_actions: nil, is_valid: true, invalid_field: nil5536 is expected to equal true5537 action: :create, file_path: "foobar", content: nil, previous_path: "foobar", allowed_actions: nil, is_valid: false, invalid_field: :content5538 is expected to include :content5539 action: :create, file_path: "foobar", content: "", previous_path: "foobar", allowed_actions: nil, is_valid: false, invalid_field: :content5540 is expected to include :content5541 action: :create, file_path: nil, content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: true, invalid_field: nil5542 is expected to equal true5543 action: :create, file_path: "", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: true, invalid_field: nil5544 is expected to equal true5545 action: :update, file_path: "foobar", content: nil, previous_path: "foobar", allowed_actions: nil, is_valid: false, invalid_field: :content5546 is expected to include :content5547 action: :update, file_path: "foobar", content: "", previous_path: "foobar", allowed_actions: nil, is_valid: false, invalid_field: :content5548 is expected to include :content5549 action: :update, file_path: "other", content: "foobar", previous_path: "foobar", allowed_actions: nil, is_valid: false, invalid_field: :file_path5550 is expected to include :file_path5551 action: :update, file_path: "foobar", content: "foobar", previous_path: nil, allowed_actions: nil, is_valid: true, invalid_field: nil5552 is expected to equal true5553 action: :update, file_path: "foobar", content: "foobar", previous_path: "", allowed_actions: nil, is_valid: true, invalid_field: nil5554 is expected to equal true5555 action: :update, file_path: "foobar", content: "foobar", previous_path: "", allowed_actions: :update, is_valid: true, invalid_field: nil5556 is expected to equal true5557 action: :update, file_path: "foobar", content: "foobar", previous_path: "", allowed_actions: "update", is_valid: true, invalid_field: nil5558 is expected to equal true5559 action: :update, file_path: "foobar", content: "foobar", previous_path: "", allowed_actions: [:update], is_valid: true, invalid_field: nil5560 is expected to equal true5561 action: :update, file_path: "foobar", content: "foobar", previous_path: "", allowed_actions: [:update, :create], is_valid: true, invalid_field: nil5562 is expected to equal true5563 action: :update, file_path: "foobar", content: "foobar", previous_path: "", allowed_actions: :create, is_valid: false, invalid_field: :action5564 is expected to include :action5565 action: :update, file_path: "foobar", content: "foobar", previous_path: "", allowed_actions: "create", is_valid: false, invalid_field: :action5566 is expected to include :action5567 action: :update, file_path: "foobar", content: "foobar", previous_path: "", allowed_actions: [:create], is_valid: false, invalid_field: :action5568 is expected to include :action5569 action: :foo, file_path: "foobar", content: "foobar", previous_path: "", allowed_actions: :foo, is_valid: false, invalid_field: :action5570 is expected to include :action5571 #to_commit_action5572 transforms attributes to commit action5573 action is update5574 when previous_path is present5575 returns the existing previous_path5576 when previous_path is not present5577 assigns the file_path to the previous_path5578Gitlab::MultiCollectionPaginator5579 raises an error for invalid page size5580 combines both collections5581 includes elements second collection if first collection is empty5582 with a full first page5583 knows the total count of the collection5584 fills the first page with elements of the first collection5585 fils the second page with a mixture of the first & second collection5586 fils the last page with elements from the second collection5587projects/edit5588 project export disabled5589 does not display the project export option5590 forking5591 project is not a fork5592 hides the remove fork relationship settings5593 project is a fork5594 shows the remove fork relationship settings to an authorized user5595 hides the fork relationship settings from an unauthorized user5596 hides the fork source from an unauthorized user5597 shows the fork source to an authorized user5598 prompt user about registration features5599 when service ping is enabled5600 behaves like does not render registration features prompt5601 does not render a placeholder input with registration features message5602 with no license and service ping disabled5603 behaves like renders registration features prompt5604 renders a placeholder input with registration features message5605 pages menu entry callout5606 with feature flag disabled5607 does not show a callout5608 with feature flag enabled5609 does show a callout5610Gitlab::Ci::Config::Entry::Release5611 validation5612 when entry config value is correct5613 behaves like a valid entry5614 #value5615 returns release configuration5616 #valid?5617 is valid5618 when value includes 'assets' keyword5619 behaves like a valid entry5620 #value5621 returns release configuration5622 #valid?5623 is valid5624 when value includes 'name' keyword5625 behaves like a valid entry5626 #value5627 returns release configuration5628 #valid?5629 is valid5630 when value includes 'ref' keyword5631 behaves like a valid entry5632 #value5633 returns release configuration5634 #valid?5635 is valid5636 when value includes 'released_at' keyword5637 behaves like a valid entry5638 #value5639 returns release configuration5640 #valid?5641 is valid5642 when value includes 'milestones' keyword5643 for an array of milestones5644 behaves like a valid entry5645 #value5646 returns release configuration5647 #valid?5648 is valid5649 for a single milestone5650 behaves like a valid entry5651 #value5652 returns release configuration5653 #valid?5654 is valid5655 when value includes 'ref' keyword5656 when 'ref' is a full commit SHA5657 behaves like a valid entry5658 #value5659 returns release configuration5660 #valid?5661 is valid5662 when 'ref' is a short commit SHA5663 behaves like a valid entry5664 #value5665 returns release configuration5666 #valid?5667 is valid5668 when 'ref' is a branch name5669 behaves like a valid entry5670 #value5671 returns release configuration5672 #valid?5673 is valid5674 when 'ref' is a semantic versioning tag5675 behaves like a valid entry5676 #value5677 returns release configuration5678 #valid?5679 is valid5680 when 'ref' is a semantic versioning tag rc5681 behaves like a valid entry5682 #value5683 returns release configuration5684 #valid?5685 is valid5686 when value includes 'released_at' keyword5687 behaves like a valid entry5688 #value5689 returns release configuration5690 #valid?5691 is valid5692 when value includes 'milestones' keyword5693 for an array of milestones5694 behaves like a valid entry5695 #value5696 returns release configuration5697 #valid?5698 is valid5699 for a single milestone5700 behaves like a valid entry5701 #value5702 returns release configuration5703 #valid?5704 is valid5705 when value includes 'tag_message' keyword5706 behaves like a valid entry5707 #value5708 returns release configuration5709 #valid?5710 is valid5711 when 'tag_message' is nil5712 behaves like a valid entry5713 #value5714 returns release configuration5715 #valid?5716 is valid5717 when entry value is not correct5718 #errors5719 when value of attribute is invalid5720 behaves like reports error5721 reports error5722 when release description is missing5723 behaves like reports error5724 reports error5725 when release tag_name is missing5726 behaves like reports error5727 reports error5728 when there is an unknown key present5729 behaves like reports error5730 reports error5731 when `released_at` is not a valid date5732 behaves like reports error5733 reports error5734 when `ref` is not valid5735 behaves like reports error5736 reports error5737 when `milestones` is not an array of strings5738 behaves like reports error5739 reports error5740 when `tag_message` is not a string5741 behaves like reports error5742 reports error5743MergeRequests::ExportCsvService5744 csv_data5745 contains the correct information5746 assignees5747 when assigned5748 contains the names of assignees5749 contains the usernames of assignees5750 when not assigned5751 returns empty strings5752 approvers5753 when approved5754 contains the names of approvers separated by a comma5755 contains the usernames of approvers separated by a comma5756 when not approved5757 returns empty strings5758 merged user5759 MR is merged5760 is merged5761 has a merged user5762 MR is not merged5763 returns empty strings5764 milestone5765 milestone is assigned5766 contains the milestone ID5767 no milestone is assigned5768 returns an empty string5769 #email5770 emails csv5771 renders with a target filesize5772TimeboxesHelper5773 #timebox_date_range5774 milestone5775 is expected to be nil5776 is expected to eq "expires on Apr 28, 2023"5777 is expected to eq "expired on Apr 26, 2023"5778 is expected to eq "starts on Apr 28, 2023"5779 is expected to eq "started on Apr 26, 2023"5780 is expected to eq "Apr 26, 2023–Apr 28, 2023"5781 #group_milestone_route5782 when in subgroup5783 generates correct url despite assigned @group5784 #recent_releases_with_counts5785 returns releases with counts5786 #milestone_status_string5787 milestone: lazy { milestone_expired }, status: "Expired"5788 returns status string5789 milestone: lazy { milestone_closed }, status: "Closed"5790 returns status string5791 milestone: lazy { milestone_closed_and_expired }, status: "Closed"5792 returns status string5793 milestone: lazy { milestone_upcoming }, status: "Upcoming"5794 returns status string5795 milestone: lazy { milestone_open }, status: "Open"5796 returns status string5797 #milestone_badge_variant5798 milestone: lazy { milestone_expired }, variant: :warning5799 returns badge variant5800 milestone: lazy { milestone_closed }, variant: :danger5801 returns badge variant5802 milestone: lazy { milestone_closed_and_expired }, variant: :danger5803 returns badge variant5804 milestone: lazy { milestone_upcoming }, variant: :neutral5805 returns badge variant5806 milestone: lazy { milestone_open }, variant: :success5807 returns badge variant5808Gitlab::Changelog::Config5809 .from_git5810 retrieves the configuration from Git5811 retrieves the specified configuration from git5812 returns the default configuration when no YAML file exists in Git5813 when changelog is empty5814 returns the default configuration5815 .from_hash5816 sets the configuration according to a Hash5817 raises Error when the categories are not a Hash5818 raises a Gitlab::Changelog::Error when the template is invalid5819 #contributor?5820 when user is a member of project5821 is expected to eq false5822 when user has at least one merge request merged into default_branch5823 is expected to eq true5824 is expected to eq false5825 #category5826 returns the name of a category5827 returns the raw category name when no alternative name is configured5828 #format_date5829 formats a date according to the configured date format5830 #always_credit_author?5831 when include_groups is defined5832 when user generating changelog has access to group5833 returns whether author should always be credited5834 when user generating changelog has no access to group5835 always returns false5836 when include_groups is not defined5837 always returns false5838MergeRequests::ResolvedDiscussionNotificationService5839 #execute5840 when not all discussions are resolved5841 doesn't add a system note5842 doesn't send a notification email5843 doesn't send a webhook5844 when all discussions are resolved5845 adds a system note5846 sends a notification email5847 sends a webhook5848StageEntity5849 #as_json5850 contains relevant fields5851 contains detailed status5852 contains valid name5853 contains path to the stage5854 contains path to the stage dropdown5855 contains stage title5856 does not contain play_details info5857 when the jobs should be grouped5858 exposes the group key5859 and contains commit status5860 contains commit status5861 with a skipped stage5862 contains play_all_manual5863 with a scheduled stage5864 contains play_all_manual5865 with a manual stage5866 contains play_all_manual5867Gitlab::SidekiqConfig::WorkerMatcher5868 #match?5869 with valid input5870 query: "worker_name=WorkerA", expected_metadatas: ["WorkerA"]5871 is expected to contain exactly "WorkerA"5872 query: "worker_name=WorkerA2", expected_metadatas: ["WorkerA2"]5873 is expected to contain exactly "WorkerA2"5874 query: "worker_name=WorkerB|worker_name=WorkerD", expected_metadatas: ["WorkerB"]5875 is expected to contain exactly "WorkerB"5876 query: "worker_name!=WorkerA", expected_metadatas: ["WorkerA2", "WorkerB", "WorkerC"]5877 is expected to contain exactly "WorkerA2", "WorkerB", and "WorkerC"5878 query: "feature_category=category_a", expected_metadatas: ["WorkerA", "WorkerA2"]5879 is expected to contain exactly "WorkerA" and "WorkerA2"5880 query: "feature_category=category_a,category_c", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]5881 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"5882 query: "feature_category=category_a|feature_category=category_c", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]5883 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"5884 query: "feature_category!=category_a", expected_metadatas: ["WorkerB", "WorkerC"]5885 is expected to contain exactly "WorkerB" and "WorkerC"5886 query: "has_external_dependencies=true", expected_metadatas: ["WorkerB"]5887 is expected to contain exactly "WorkerB"5888 query: "has_external_dependencies=false", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]5889 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"5890 query: "has_external_dependencies=true,false", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]5891 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"5892 query: "has_external_dependencies=true|has_external_dependencies=false", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]5893 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"5894 query: "has_external_dependencies!=true", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerC"]5895 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerC"5896 query: "urgency=high", expected_metadatas: ["WorkerA2", "WorkerB"]5897 is expected to contain exactly "WorkerA2" and "WorkerB"5898 query: "urgency=low", expected_metadatas: ["WorkerA"]5899 is expected to contain exactly "WorkerA"5900 query: "urgency=high,low,throttled", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]5901 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"5902 query: "urgency=low|urgency=throttled", expected_metadatas: ["WorkerA", "WorkerC"]5903 is expected to contain exactly "WorkerA" and "WorkerC"5904 query: "urgency!=high", expected_metadatas: ["WorkerA", "WorkerC"]5905 is expected to contain exactly "WorkerA" and "WorkerC"5906 query: "name=a", expected_metadatas: ["WorkerA"]5907 is expected to contain exactly "WorkerA"5908 query: "name=a,b", expected_metadatas: ["WorkerA", "WorkerB"]5909 is expected to contain exactly "WorkerA" and "WorkerB"5910 query: "name=a,a:2|name=b", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB"]5911 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerB"5912 query: "name!=a,a:2", expected_metadatas: ["WorkerB", "WorkerC"]5913 is expected to contain exactly "WorkerB" and "WorkerC"5914 query: "resource_boundary=memory", expected_metadatas: ["WorkerB", "WorkerC"]5915 is expected to contain exactly "WorkerB" and "WorkerC"5916 query: "resource_boundary=memory,cpu", expected_metadatas: ["WorkerA", "WorkerB", "WorkerC"]5917 is expected to contain exactly "WorkerA", "WorkerB", and "WorkerC"5918 query: "resource_boundary=memory|resource_boundary=cpu", expected_metadatas: ["WorkerA", "WorkerB", "WorkerC"]5919 is expected to contain exactly "WorkerA", "WorkerB", and "WorkerC"5920 query: "resource_boundary!=memory,cpu", expected_metadatas: ["WorkerA2"]5921 is expected to contain exactly "WorkerA2"5922 query: "tags=no_disk_io", expected_metadatas: ["WorkerA", "WorkerB"]5923 is expected to contain exactly "WorkerA" and "WorkerB"5924 query: "tags=no_disk_io,git_access", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB"]5925 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerB"5926 query: "tags=no_disk_io|tags=git_access", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB"]5927 is expected to contain exactly "WorkerA", "WorkerA2", and "WorkerB"5928 query: "tags=no_disk_io&tags=git_access", expected_metadatas: ["WorkerA"]5929 is expected to contain exactly "WorkerA"5930 query: "tags!=no_disk_io", expected_metadatas: ["WorkerA2", "WorkerC"]5931 is expected to contain exactly "WorkerA2" and "WorkerC"5932 query: "tags!=no_disk_io,git_access", expected_metadatas: ["WorkerC"]5933 is expected to contain exactly "WorkerC"5934 query: "tags=unknown_tag", expected_metadatas: []5935 is expected to contain exactly5936 query: "tags!=no_disk_io", expected_metadatas: ["WorkerA2", "WorkerC"]5937 is expected to contain exactly "WorkerA2" and "WorkerC"5938 query: "tags!=no_disk_io,git_access", expected_metadatas: ["WorkerC"]5939 is expected to contain exactly "WorkerC"5940 query: "tags!=unknown_tag", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]5941 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"5942 query: "feature_category=category_a&urgency=high", expected_metadatas: ["WorkerA2"]5943 is expected to contain exactly "WorkerA2"5944 query: "feature_category=category_a&urgency=high|feature_category=category_c", expected_metadatas: ["WorkerA2", "WorkerC"]5945 is expected to contain exactly "WorkerA2" and "WorkerC"5946 query: "*", expected_metadatas: ["WorkerA", "WorkerA2", "WorkerB", "WorkerC"]5947 is expected to contain exactly "WorkerA", "WorkerA2", "WorkerB", and "WorkerC"5948 with invalid input5949 query: "feature_category=\"category_a\"", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm5950 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm5951 query: "feature_category=", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm5952 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm5953 query: "feature_category~category_a", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm5954 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm5955 query: "invalid_term=a", error: Gitlab::SidekiqConfig::WorkerMatcher::UnknownPredicate5956 is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::UnknownPredicate5957Gitlab::Harbor::Query5958 Validations5959 page5960 with valid page5961 initialize successfully5962 with invalid page5963 initialize failed5964 limit5965 with valid limit5966 initialize successfully5967 with invalid limit5968 with limit less than 05969 initialize failed5970 with limit greater than 255971 initialize failed5972 repository_id5973 with valid repository_id5974 initialize successfully5975 with invalid repository_id5976 initialize failed5977 artifact_id5978 with valid artifact_id5979 initialize successfully5980 with invalid artifact_id5981 initialize failed5982 sort5983 with valid sort5984 initialize successfully5985 with invalid sort5986 initialize failed5987 search5988 with valid search5989 initialize successfully5990 with invalid search5991 initialize failed5992 #repositories5993 when params is {}5994 fills default params5995 when params contains options5996 fills params with standard of Harbor5997 when params contains invalid sort option5998 ignores invalid sort params5999 when client.get_repositories returns data6000 returns the right repositories data6001 #artifacts6002 when params is {}6003 fills default params6004 when params contains options6005 fills params with standard of Harbor6006 when params contains invalid sort option6007 ignores invalid sort params6008 when client.get_artifacts returns data6009 returns the right artifacts data6010 #tags6011 when params is {}6012 fills default params6013 when params contains options6014 fills params with standard of Harbor6015 when params contains invalid sort option6016 ignores invalid sort params6017 when client.get_tags returns data6018 returns the right tags data6019Gitlab::TemplateParser::AST::Identifier6020 #evaluate6021 evaluates a selector6022 returns nil if the key is not set6023 returns nil if the input is not a Hash6024 returns the current data when using the special identifier "it"6025Gitlab::TemplateParser::AST::Integer6026 #evaluate6027 evaluates a selector6028 returns nil if the index is not set6029 returns nil if the input is not an Array6030Gitlab::TemplateParser::AST::Selector6031 #evaluate6032 evaluates a selector6033 evaluates a selector that returns nil6034Gitlab::TemplateParser::AST::Variable6035 #evaluate6036 evaluates a variable6037 evaluates an undefined variable6038 evaluates the special variable "it"6039Gitlab::TemplateParser::AST::Expressions6040 #evaluate6041 evaluates all expressions6042Gitlab::TemplateParser::AST::Text6043 #evaluate6044 returns the text6045Gitlab::TemplateParser::AST::If6046 #evaluate6047 evaluates a truthy if expression without an else clause6048 evaluates a falsy if expression without an else clause6049 evaluates a falsy if expression with an else clause6050 #truthy?6051 returns true for a non-empty String6052 returns true for a non-empty Array6053 returns true for a Boolean true6054 returns false for an empty String6055 returns true for an empty Array6056 returns false for a Boolean false6057Gitlab::TemplateParser::AST::Each6058 #evaluate6059 evaluates the expression6060 returns an empty string when the input is not a collection6061 disallows too many nested loops6062Sidebars::Projects::Menus::AnalyticsMenu6063 # order random6064 Menu items6065 CI/CD6066 is expected not to be nil6067 when the project repository is empty6068 is expected to be nil6069 when builds access level is DISABLED6070 is expected to be nil6071 when the user does not have access6072 is expected to be nil6073 Repository6074 is expected not to be nil6075 when the project repository is empty6076 is expected to be nil6077 when a user does not have access to repository graphs6078 is expected to be nil6079 when the user does not have access6080 is expected to be nil6081 Value Stream6082 is expected not to be nil6083 when the user does not have access6084 is expected to be nil6085 when issues are disabled6086 is expected not to be nil6087 when merge requests are disabled6088 is expected not to be nil6089 when the issues and merge requests are disabled6090 is expected to be nil6091 #link6092 returns link to the value stream page6093 when Value Stream is not visible6094 returns link to the the first visible menu item6095 #render?6096 whe user cannot read analytics6097 returns false6098 whe user can read analytics6099 returns true6100 when menu does not have any menu items6101 returns false6102 when menu has menu items6103 returns true6104BulkImports::Projects::Pipelines::DesignBundlePipeline6105 #run6106 imports design repository into destination project and removes tmpdir6107 #extract6108 downloads & extracts design bundle filepath6109 #load6110 creates design repository from bundle6111 when lfs is disabled6112 returns6113 when file does not exist6114 returns6115 when path is directory6116 returns6117 when path is symlink6118 returns6119 when path is not under tmpdir6120 returns6121 when path is being traversed6122 raises an error6123 #after_run6124 removes tmpdir6125 when tmpdir does not exist6126 does not attempt to remove tmpdir6127Gitlab::Auth::Ldap::Config6128 .servers6129 returns empty array if no server information is available6130 .available_providers6131 returns one provider6132 #initialize6133 requires a provider6134 returns an instance of Gitlab::Auth::Ldap::Config6135 raises an error if a unknown provider is used6136 #adapter_options6137 constructs basic options6138 includes failover hosts when set6139 includes authentication options when auth is configured6140 sets encryption method to simple_tls when configured as simple_tls6141 sets encryption method to start_tls when configured as start_tls6142 transforms SSL cert and key to OpenSSL objects6143 logs an error when an invalid key or cert are configured6144 when verify_certificates is enabled6145 sets tls_options to OpenSSL defaults6146 when verify_certificates is disabled6147 sets verify_mode to OpenSSL VERIFY_NONE6148 when ca_file is specified6149 passes it through in tls_options6150 when ca_file is a blank string6151 does not add the ca_file key to tls_options6152 when ssl_version is specified6153 passes it through in tls_options6154 when ssl_version is a blank string6155 does not add the ssl_version key to tls_options6156 #omniauth_options6157 constructs basic options6158 includes authentication options when auth is configured6159 transforms SSL cert and key to OpenSSL objects6160 when verify_certificates is enabled6161 specifies disable_verify_certificates as false6162 when verify_certificates is disabled6163 specifies disable_verify_certificates as true6164 when ca_file is present6165 passes it through6166 when ca_file is blank6167 does not include the ca_file option6168 when ssl_version is present6169 passes it through6170 when ssl_version is blank6171 does not include the ssl_version option6172 #has_auth?6173 is true when password is set6174 is true when bind_dn is set and password is empty6175 is false when password and bind_dn are not set6176 #attributes6177 uses default attributes when no custom attributes are configured6178 merges the configuration attributes with default attributes6179 #default_attributes6180 includes the configured uid attribute in the username attributes6181 only includes unique values for username attributes6182 #base6183 when the configured base is not normalized6184 returns the normalized base6185 when the configured base is normalized6186 returns the base unaltered6187 when the configured base is malformed6188 returns the base unaltered6189 when the configured base is blank6190 returns the base unaltered6191 sign_in_enabled?6192 enabled: true, prevent_ldap_sign_in: false, result: true6193 is expected to eq true6194 enabled: "true", prevent_ldap_sign_in: false, result: true6195 is expected to eq true6196 enabled: true, prevent_ldap_sign_in: true, result: false6197 is expected to eq false6198 enabled: false, prevent_ldap_sign_in: nil, result: false6199 is expected to eq false6200Environments::CreateForBuildService6201 # order random6202 #execute6203 when job has environment name attribute6204 behaves like returning a correct environment6205 returns a persisted environment object6206 when environment has already existed6207 returns the existing environment object6208 and job environment also has an auto_stop_in attribute6209 behaves like returning a correct environment6210 returns a persisted environment object6211 when environment has already existed6212 returns the existing environment object6213 and job environment has an auto_stop_in variable attribute6214 behaves like returning a correct environment6215 returns a persisted environment object6216 when environment has already existed6217 returns the existing environment object6218 when job has deployment tier attribute6219 when environment has not been created yet6220 sets the specified deployment tier6221 when deployment tier is staging6222 sets the specified deployment tier6223 when deployment tier is unknown6224 raises an error6225 when environment has already been created6226 does not overwrite the specified deployment tier6227 when job starts a review app6228 behaves like returning a correct environment6229 returns a persisted environment object6230 when environment has already existed6231 returns the existing environment object6232 when job stops a review app6233 behaves like returning a correct environment6234 returns a persisted environment object6235 when environment has already existed6236 returns the existing environment object6237 when merge_request is provided6238 and environment does not exist6239 creates an environment associated with the merge request6240 and environment already exists6241 does not change the merge request associated with the environment6242 when a pipeline contains a deployment job6243 and the environment does not exist6244 creates the environment specified by the job6245 and the pipeline is for a merge request6246 associates the environment with the merge request6247 when an environment already exists6248 ensures environment existence for the job6249 and the pipeline is for a merge request6250 does not associate the environment with the merge request6251 when an environment name contains an invalid character6252 sets the failure status6253 when a pipeline contains a teardown job6254 ensures environment existence for the job6255 when a pipeline does not contain a deployment job6256 does not create any environments6257Pages::MigrateLegacyStorageToDeploymentService6258 calls ::Pages::ZipDirectoryService6259 does not mark pages as not deployed if public directory is absent but invalid entries are not ignored6260 removes pages archive when can not save deployment6261 when mark_projects_as_not_deployed is passed6262 marks pages as not deployed if public directory is absent and invalid entries are ignored6263 does not mark pages as not deployed if public directory is absent but pages_deployment exists6264 when pages site is deployed to legacy storage6265 creates pages deployment6266 removes tmp pages archive6267 does not change pages deployment if it is set6268SnippetBlobPresenter6269 #rich_data6270 with PersonalSnippet6271 when blob is binary6272 returns the HTML associated with the binary6273 with markdown format6274 returns rich markdown content6275 with notebook format6276 returns rich notebook content6277 with openapi format6278 returns rich openapi content6279 with svg format6280 returns rich svg content6281 with other format6282 does not return no rich content6283 route helpers6284 #raw_path6285 behaves like snippet blob raw path6286 for PersonalSnippets6287 returns the raw personal snippet blob path6288 for ProjectSnippets6289 returns the raw project snippet blob path6290 with a snippet without a repository6291 with ProjectSnippet6292 returns the raw project snippet path6293 with PersonalSnippet6294 returns the raw personal snippet path6295 #raw_plain_data6296 with a plain file6297 shows raw data for non binary files6298 with a binary file6299 returns nil6300 #raw_url6301 behaves like snippet blob raw url6302 for PersonalSnippets6303 returns the raw personal snippet blob url6304 for ProjectSnippets6305 returns the raw project snippet blob url6306 with a snippet without a repository6307 with ProjectSnippet6308 returns the raw project snippet url6309 with PersonalSnippet6310 returns the raw personal snippet url6311Gitlab::SlashCommands::IssueNew6312 #execute6313 without description6314 creates the issue6315 with description6316 creates the issue with description6317 with more newlines between the title and the description6318 creates the issue6319 issue cannot be created6320 displays the errors6321 when create issue service return an unrecoverable error6322 displays the errors6323 .match6324 matches the title without description6325 matches the title with description6326 matches the alias new6327Gitlab::GitalyClient::ConflictsService6328 #list_conflict_files6329 behaves like listing conflicts6330 sends an RPC request6331 when allow_tree_conflicts is set to true6332 behaves like listing conflicts6333 sends an RPC request6334 #resolve_conflicts6335 sends an RPC request6336 raises a relevant exception if resolution_error is present6337 with branches with UTF-8 characters6338 handles commit messages with UTF-8 characters6339API::Support::GitAccessActor6340 .from_params6341 with params that are valid6342 returns an instance of API::Support::GitAccessActor6343 with params that are invalid6344 returns an instance of API::Support::GitAccessActor6345 when passing an identifier used gitaly6346 finds the user based on an identifier6347 when passing a signing key6348 does not identify the user6349 does not identify the key6350 when passing an auth-only key6351 identifies the user6352 identifies the key6353 attributes6354 #user6355 when initialized with a User6356 returns the User6357 when initialized with a Key6358 returns the User associated to the Key6359 #key_or_user6360 when params contains a :key_id6361 is an instance of Key6362 when params contains a :user_id6363 is an instance of User6364 when params contains a :username6365 is an instance of User (via UserFinder)6366 #deploy_key_or_user6367 returns a deploy key when the params contains deploy key6368 returns a user when the params contains personal key6369 returns a user when the params contains user id6370 returns a user when the params contains user name6371 #username6372 when initialized with a User6373 returns the username6374 when initialized with a Key6375 that has no User associated6376 returns nil6377 that has a User associated6378 returns the username of the User associated to the Key6379 #key_details6380 when initialized with a User6381 returns an empty Hash6382 when initialized with a Key6383 that has no User associated6384 returns a Hash6385 that has a User associated6386 returns a Hash6387 when initialized with a DeployKey6388 returns a Hash6389 #update_last_used_at!6390 when initialized with a User6391 does nothing6392 when initialized with a Key6393 updates update_last_used_at6394 does not update `last_used_at` when the functionality is disabled6395Packages::Conan::PackageFinder6396 #execute6397 visibility: :private, role: :maintainer, packages_visible: true6398 is expected to eq [#<Packages::Package id: 2, project_id: 650, created_at: "2023-04-27 06:21:15.648481676 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1028, status: "default", last_downloaded_at: nil>]6399 visibility: :private, role: :developer, packages_visible: true6400 is expected to eq [#<Packages::Package id: 2, project_id: 650, created_at: "2023-04-27 06:21:15.648481676 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1028, status: "default", last_downloaded_at: nil>]6401 visibility: :private, role: :reporter, packages_visible: true6402 is expected to eq [#<Packages::Package id: 2, project_id: 650, created_at: "2023-04-27 06:21:15.648481676 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1028, status: "default", last_downloaded_at: nil>]6403 visibility: :private, role: :guest, packages_visible: false6404 is expected to eq []6405 visibility: :private, role: :anonymous, packages_visible: false6406 is expected to eq []6407 visibility: :internal, role: :maintainer, packages_visible: true6408 is expected to eq [#<Packages::Package id: 2, project_id: 650, created_at: "2023-04-27 06:21:15.648481676 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1028, status: "default", last_downloaded_at: nil>]6409 visibility: :internal, role: :developer, packages_visible: true6410 is expected to eq [#<Packages::Package id: 2, project_id: 650, created_at: "2023-04-27 06:21:15.648481676 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1028, status: "default", last_downloaded_at: nil>]6411 visibility: :internal, role: :reporter, packages_visible: true6412 is expected to eq [#<Packages::Package id: 2, project_id: 650, created_at: "2023-04-27 06:21:15.648481676 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1028, status: "default", last_downloaded_at: nil>]6413 visibility: :internal, role: :guest, packages_visible: true6414 is expected to eq [#<Packages::Package id: 2, project_id: 650, created_at: "2023-04-27 06:21:15.648481676 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1028, status: "default", last_downloaded_at: nil>]6415 visibility: :internal, role: :anonymous, packages_visible: false6416 is expected to eq []6417 visibility: :public, role: :maintainer, packages_visible: true6418 is expected to eq [#<Packages::Package id: 2, project_id: 650, created_at: "2023-04-27 06:21:15.648481676 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1028, status: "default", last_downloaded_at: nil>]6419 visibility: :public, role: :developer, packages_visible: true6420 is expected to eq [#<Packages::Package id: 2, project_id: 650, created_at: "2023-04-27 06:21:15.648481676 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1028, status: "default", last_downloaded_at: nil>]6421 visibility: :public, role: :reporter, packages_visible: true6422 is expected to eq [#<Packages::Package id: 2, project_id: 650, created_at: "2023-04-27 06:21:15.648481676 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1028, status: "default", last_downloaded_at: nil>]6423 visibility: :public, role: :guest, packages_visible: true6424 is expected to eq [#<Packages::Package id: 2, project_id: 650, created_at: "2023-04-27 06:21:15.648481676 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1028, status: "default", last_downloaded_at: nil>]6425 visibility: :public, role: :anonymous, packages_visible: true6426 is expected to eq [#<Packages::Package id: 2, project_id: 650, created_at: "2023-04-27 06:21:15.648481676 +0000", updat...sion: "1.0.0", package_type: "conan", creator_id: 1028, status: "default", last_downloaded_at: nil>]6427Gitlab::Analytics::CycleAnalytics::StageEvents::CodeStageStart6428 needs connection with an issue via merge_requests_closing_issues table6429 behaves like value stream analytics event6430 is expected to be a kind of String6431 is expected to be a kind of Symbol6432 is expected to include ApplicationRecord(abstract)6433 is expected to respond to #timestamp_projection6434 is expected to respond to #html_description6435 is expected to be a kind of Array6436 #apply_query_customization6437 expects an ActiveRecord::Relation object as argument and returns a modified version of it6438 #hash_code6439 returns a hash that uniquely identifies an event6440 does not differ when the same object is built with the same params6441 behaves like LEFT JOIN-able value stream analytics event6442 can use the event as LEFT JOIN6443 when looking at the record with data6444 contains the timestamp expression6445 when looking at the record without data6446 returns nil for the timestamp expression6447Gitlab::ProtocolAccess6448 .allowed?6449 protocol: "web", project: nil, admin_setting: nil, namespace_setting: nil, expected_result: true6450 is expected to equal true6451 protocol: "ssh", project: nil, admin_setting: nil, namespace_setting: nil, expected_result: true6452 is expected to equal true6453 protocol: "http", project: nil, admin_setting: nil, namespace_setting: nil, expected_result: true6454 is expected to equal true6455 protocol: "ssh", project: nil, admin_setting: "", namespace_setting: nil, expected_result: true6456 is expected to equal true6457 protocol: "http", project: nil, admin_setting: "", namespace_setting: nil, expected_result: true6458 is expected to equal true6459 protocol: "ssh", project: nil, admin_setting: "ssh", namespace_setting: nil, expected_result: true6460 is expected to equal true6461 protocol: "http", project: nil, admin_setting: "http", namespace_setting: nil, expected_result: true6462 is expected to equal true6463 protocol: "ssh", project: nil, admin_setting: "http", namespace_setting: nil, expected_result: false6464 is expected to equal false6465 protocol: "http", project: nil, admin_setting: "ssh", namespace_setting: nil, expected_result: false6466 is expected to equal false6467 protocol: "ssh", project: p1, admin_setting: nil, namespace_setting: "all", expected_result: true6468 is expected to equal true6469 protocol: "http", project: p1, admin_setting: nil, namespace_setting: "all", expected_result: true6470 is expected to equal true6471 protocol: "ssh", project: p1, admin_setting: nil, namespace_setting: "ssh", expected_result: true6472 is expected to equal true6473 protocol: "http", project: p1, admin_setting: nil, namespace_setting: "http", expected_result: true6474 is expected to equal true6475 protocol: "ssh", project: p1, admin_setting: nil, namespace_setting: "http", expected_result: false6476 is expected to equal false6477 protocol: "http", project: p1, admin_setting: nil, namespace_setting: "ssh", expected_result: false6478 is expected to equal false6479 protocol: "ssh", project: p1, admin_setting: "", namespace_setting: "all", expected_result: true6480 is expected to equal true6481 protocol: "http", project: p1, admin_setting: "", namespace_setting: "all", expected_result: true6482 is expected to equal true6483 protocol: "ssh", project: p1, admin_setting: "ssh", namespace_setting: "ssh", expected_result: true6484 is expected to equal true6485 protocol: "http", project: p1, admin_setting: "http", namespace_setting: "http", expected_result: true6486 is expected to equal true6487Sbom::PackageUrl::Encoder6488 # order random6489 #encode6490 valid maven purl6491 is expected to eq "pkg:maven/org.apache.commons/io@1.3.4"6492 basic valid maven purl without version6493 is expected to eq "pkg:maven/org.apache.commons/io"6494 valid go purl without version and with subpath6495 is expected to eq "pkg:golang/google.golang.org/genproto#googleapis/api/annotations"6496 valid go purl with version and subpath6497 is expected to eq "pkg:golang/google.golang.org/genproto@abcdedf#googleapis/api/annotations"6498 bitbucket namespace and name should be lowercased6499 is expected to eq "pkg:bitbucket/birkenfeld/pygments-main@244fd47e07d1014f0aed9c"6500 github namespace and name should be lowercased6501 is expected to eq "pkg:github/package-url/purl-spec@244fd47e07d1004f0aed9c"6502 debian can use qualifiers6503 is expected to eq "pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie"6504 docker uses qualifiers and hash image id as versions6505 is expected to eq "pkg:docker/customer/dockerimage@sha256%3A244fd47e07d1004f0aed9c?repository_url=gcr.io"6506 Java gem can use a qualifier6507 is expected to eq "pkg:gem/jruby-launcher@1.1.2?platform=java"6508 maven often uses qualifiers6509 is expected to eq "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?classifier=sources&repository_url=repo.spring.io%2Frelease"6510 maven pom reference6511 is expected to eq "pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?extension=pom&repository_url=repo.spring.io%2Frelease"6512 maven can come with a type qualifier6513 is expected to eq "pkg:maven/net.sf.jacob-project/jacob@1.14.3?classifier=x86&type=dll"6514 npm can be scoped6515 is expected to eq "pkg:npm/%40angular/animation@12.3.1"6516 nuget names are case sensitive6517 is expected to eq "pkg:nuget/EnterpriseLibrary.Common@6.0.1304"6518 pypi names have special rules and not case sensitive6519 is expected to eq "pkg:pypi/django-package@1.11.1.dev1"6520 rpm often use qualifiers6521 is expected to eq "pkg:rpm/fedora/curl@7.50.3-1.fc25?arch=i386&distro=fedora-25"6522 slash / after scheme is not significant6523 is expected to eq "pkg:maven/org.apache.commons/io"6524 double slash // after scheme is not significant6525 is expected to eq "pkg:maven/org.apache.commons/io"6526 slash /// after type is not significant6527 is expected to eq "pkg:maven/org.apache.commons/io"6528 valid maven purl with case sensitive namespace and name6529 is expected to eq "pkg:maven/HTTPClient/HTTPClient@0.3-3"6530 valid maven purl containing a space in the version and qualifier6531 is expected to eq "pkg:maven/mygroup/myartifact@1.0.0+Final?mykey=my+value"6532 valid conan purl6533 is expected to eq "pkg:conan/cctz@2.3"6534 valid conan purl with namespace and qualifier channel6535 is expected to eq "pkg:conan/bincrafters/cctz@2.3?channel=stable"6536 valid conda purl with qualifiers6537 is expected to eq "pkg:conda/absl-py@0.4.1?build=py36h06a4308_0&channel=main&subdir=linux-64&type=tar.bz2"6538 valid cran purl6539 is expected to eq "pkg:cran/A3@0.9.1"6540 valid swift purl6541 is expected to eq "pkg:swift/github.com/Alamofire/Alamofire@5.4.3"6542 valid hackage purl6543 is expected to eq "pkg:hackage/AC-HalfInteger@1.2.1"6544InjectEnterpriseEditionModule6545 #prepend_mod_with6546 behaves like expand the extension with6547 when extension namespace is set at top-level6548 calls prepend with the extension module6549 when extension namespace is set at another namespace6550 calls prepend with the extension module from the additional namespace6551 when extension namespace exists but not the extension6552 does not call prepend6553 when extension namespace does not exist6554 does not call prepend6555 #extend_mod_with6556 behaves like expand the extension with6557 when extension namespace is set at top-level6558 calls extend with the extension module6559 when extension namespace is set at another namespace6560 calls extend with the extension module from the additional namespace6561 when extension namespace exists but not the extension6562 does not call extend6563 when extension namespace does not exist6564 does not call extend6565 #include_mod_with6566 behaves like expand the extension with6567 when extension namespace is set at top-level6568 calls include with the extension module6569 when extension namespace is set at another namespace6570 calls include with the extension module from the additional namespace6571 when extension namespace exists but not the extension6572 does not call include6573 when extension namespace does not exist6574 does not call include6575 #prepend_mod6576 behaves like expand the assumed extension with6577 when extension namespace is set at top-level6578 calls prepend with the extension module6579 when extension namespace exists but not the extension6580 does not call prepend6581 when extension namespace does not exist6582 does not call prepend6583 #extend_mod6584 behaves like expand the assumed extension with6585 when extension namespace is set at top-level6586 calls extend with the extension module6587 when extension namespace exists but not the extension6588 does not call extend6589 when extension namespace does not exist6590 does not call extend6591 #include_mod6592 behaves like expand the assumed extension with6593 when extension namespace is set at top-level6594 calls include with the extension module6595 when extension namespace exists but not the extension6596 does not call include6597 when extension namespace does not exist6598 does not call include6599 #gitlab_extensions6600 when there are no extension modules6601 returns the class itself6602 when there are extension modules6603 returns the class itself and any extensions6604Gitlab::Git::KeepAround6605 does not fail if we attempt to reference bad commit6606 stores a reference to the specified commit sha so it isn't garbage collected6607 does not fail if writting the ref fails6608 for multiple SHAs6609 skips non-existent SHAs6610 skips already-kept-around SHAs6611DeployKeysProject6612 Associations6613 is expected to belong to deploy_key required: false6614 is expected to belong to project required: false6615 Validation6616 is expected to validate that :project_id cannot be empty/falsy6617 is expected to validate that :deploy_key cannot be empty/falsy6618 Destroying6619 when the deploy key is only used by this project6620 when the deploy key is public6621 doesn't destroy the deploy key6622 when the deploy key is private6623 destroys the deploy key6624 when the deploy key is used by more than one project6625 doesn't destroy the deploy key6626BasePolicy6627 .class_for6628 detects policy class based on the subject ancestors6629 detects policy class for a presented subject6630 uses GlobalPolicy when :global is given6631 read cross project6632 is expected to be allowed :read_cross_project6633 for anonymous6634 is expected to be allowed :read_cross_project6635 when an external authorization service is enabled6636 behaves like admin only access6637 is expected not to be allowed :read_cross_project6638 with an admin6639 allowed when in admin mode6640 prevented when not in admin mode6641 with anonymous6642 is expected not to be allowed :read_cross_project6643 bypassing the session for sessionless login6644 changes from prevented to allowed6645 full private access: read_all_resources6646 behaves like admin only access6647 is expected not to be allowed :read_all_resources6648 with an admin6649 allowed when in admin mode6650 prevented when not in admin mode6651 with anonymous6652 is expected not to be allowed :read_all_resources6653 bypassing the session for sessionless login6654 changes from prevented to allowed6655 full private access: admin_all_resources6656 behaves like admin only access6657 is expected not to be allowed :admin_all_resources6658 with an admin6659 allowed when in admin mode6660 prevented when not in admin mode6661 with anonymous6662 is expected not to be allowed :admin_all_resources6663 bypassing the session for sessionless login6664 changes from prevented to allowed6665 change_repository_storage6666 behaves like admin only access6667 is expected not to be allowed :change_repository_storage6668 with an admin6669 allowed when in admin mode6670 prevented when not in admin mode6671 with anonymous6672 is expected not to be allowed :change_repository_storage6673 bypassing the session for sessionless login6674 changes from prevented to allowed6675UserFinder6676 #find_by_id6677 when the user exists6678 returns the user6679 when the user exists (id as string)6680 returns the user6681 when the user does not exist6682 returns nil6683 #find_by_username6684 when the user exists6685 returns the user6686 when the user does not exist6687 returns nil6688 #find_by_id_or_username6689 when the user exists (id)6690 returns the user6691 when the user exists (id as string)6692 returns the user6693 when the user exists (username)6694 returns the user6695 when the user does not exist (username)6696 returns nil6697 when the user does not exist6698 returns nil6699 #find_by_id!6700 when the user exists6701 returns the user6702 when the user exists (id as string)6703 returns the user6704 when the user does not exist6705 raises ActiveRecord::RecordNotFound6706 #find_by_username!6707 when the user exists6708 returns the user6709 when the user does not exist6710 raises ActiveRecord::RecordNotFound6711 #find_by_id_or_username!6712 when the user exists (id)6713 returns the user6714 when the user exists (id as string)6715 returns the user6716 when the user exists (username)6717 returns the user6718 when the user does not exist (username)6719 raises ActiveRecord::RecordNotFound6720 when the user does not exist6721 raises ActiveRecord::RecordNotFound6722Packages::Npm::Metadatum6723 relationships6724 is expected to belong to package required: false inverse_of => npm_metadatum6725 validations6726 package6727 is expected to validate that :package cannot be empty/falsy6728 ensure npm package type6729 package_json6730 is expected to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x"}}›6731 is expected to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x"}, extra-field: {:foo=>"bar"}}›6732 is expected to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x", :"extra-field"=>"x"}}›6733 is expected not to allow :package_json to be ‹{"version" => "v1.0", "dist" => {"tarball"=>"x", "shasum"=>"x"}}›6734 is expected not to allow :package_json to be ‹{"name" => "foo", "dist" => {"tarball"=>"x", "shasum"=>"x"}}›6735 is expected not to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0"}›6736 is expected not to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"shasum"=>"x"}}›6737 is expected not to allow :package_json to be ‹{"name" => "foo", "version" => "v1.0", "dist" => {"tarball"=>"x"}}›6738 is expected not to allow :package_json to be ‹{}›6739 is expected not to allow :package_json to be ‹{test: "testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest"}›6740 scopes6741 .package_id_in6742 returns metadatums with the given package ids6743Gitlab::Ci::Status::Build::Scheduled6744 #illustration6745 is expected to include :image, :size, and :title6746 #status_tooltip6747 has a placeholder for the remaining time6748 .matches?6749 when build is scheduled and scheduled_at is present6750 is expected to be truthy6751 when build is scheduled6752 is expected to be falsy6753 when scheduled_at is present6754 is expected to be falsy6755BulkImports::CreatePipelineTrackersService6756 #execute!6757 when entity is group6758 creates trackers for group entity6759 when entity is project6760 creates trackers for project entity6761 when tracker configuration has a minimum version defined6762 when the source instance version is older than the tracker mininum version6763 creates trackers as skipped if version requirement does not meet6764 logs an info message for the skipped pipelines6765 when the source instance version is undefined6766 creates trackers as created6767 when tracker configuration has a maximum version defined6768 when the source instance version is older than the tracker maximum version6769 creates trackers as skipped if version requirement does not meet6770 when the source instance version is a patch version6771 creates trackers with the same status as the non-patch source version6772JiraConnectSubscriptions::CreateService6773 remote user does not have access6774 behaves like a failed execution6775 does not create a subscription6776 returns an error status6777 remote user cannot be retrieved6778 behaves like a failed execution6779 does not create a subscription6780 returns an error status6781 when user does have access6782 creates a subscription6783 returns success6784 namespace has projects6785 starts workers to sync projects in batches with delay6786 when path is invalid6787 behaves like a failed execution6788 does not create a subscription6789 returns an error status6790 when user does not have access6791 behaves like a failed execution6792 does not create a subscription6793 returns an error status6794scripts/changed-feature-flags6795 # order random6796 GetFeatureFlagsFromFiles6797 .extracted_flags6798 with definition files in the development directory6799 behaves like extract feature flags6800 returns feature flags on their own6801 returns feature flags and their state as enabled6802 returns feature flags and their state as disabled6803 does not return feature flags when there are mixed deleted and non-deleted definition files6804 with definition files in the ops directory6805 behaves like extract feature flags6806 returns feature flags on their own6807 returns feature flags and their state as enabled6808 returns feature flags and their state as disabled6809 does not return feature flags when there are mixed deleted and non-deleted definition files6810 with definition files in the experiment directory6811 ignores the files6812 with only deleted definition files6813 returns feature flags and their state as deleted6814 does not return feature flags when the desired state is enabled6815 does not return feature flags when the desired state is disabled6816Banzai::ReferenceParser::ExternalIssueParser6817 #nodes_visible_to_user6818 when the link has a data-issue attribute6819 creates reference when the feature is 06820 creates reference when the feature is 106821 creates reference when the feature is 206822 #referenced_by6823 when the link has a data-project attribute6824 when the link has a data-external-issue attribute6825 returns an Array of ExternalIssue instances6826 when the link does not have a data-external-issue attribute6827 returns an empty Array6828 when the link does not have a data-project attribute6829 returns an empty Array6830 #issue_ids_per_project6831 returns a Hash containing range IDs per project6832 does not add a project when the data-external-issue attribute is empty6833shared/_label_row.html.haml6834 with a project context6835 has label title6836 has a non-linked label title6837 has Issues link6838 has Merge request link6839 shows the path from where the label was created6840 with a subgroup context6841 has label title6842 has a non-linked label title6843 has Issues link6844 has Merge request link6845 shows the path from where the label was created6846 with a group context6847 has label title6848 has a non-linked label title6849 has Issues link6850 has Merge request link6851 does not show a path from where the label was created6852 with an admin context6853 has label title6854 has a non-linked label title6855 does not show Issues link6856 does not show Merge request link6857 does not show a path from where the label was created6858InstanceConfiguration6859 without cache6860 #settings6861 #ssh_algorithms_hashes6862 does not return anything if file does not exist6863 does not return anything if file is empty6864 returns the md5 and sha256 if file valid and exists6865 includes all algorithms6866 does not include disabled algorithm6867 #host6868 returns current instance host6869 #gitlab_pages6870 returns Settings.pages6871 returns the GitLab's pages host ip address6872 returns the ip address as nil if the domain is invalid6873 returns the ip address of the domain6874 #size_limits6875 returns size limits from application settings6876 returns nil if receive_max_input_size not set6877 returns nil if set to 0 (unlimited)6878 #package_file_size_limits6879 returns package file size limits6880 #ci_cd_limits6881 returns CI/CD limits6882 #rate_limits6883 returns rate limits from application settings6884 with cache6885 caches settings content6886 cached settings6887 expires after EXPIRATION_TIME6888seed production settings6889 GITLAB_SHARED_RUNNERS_REGISTRATION_TOKEN is set in the environment6890Saved Runner Registration Token6891Saved CI JWT signing key6892 writes the token to the database6893 GITLAB_PROMETHEUS_METRICS_ENABLED is set in the environment6894 GITLAB_PROMETHEUS_METRICS_ENABLED is true6895Saved Prometheus metrics enabled flag6896Saved CI JWT signing key6897 prometheus_metrics_enabled is set to true6898 GITLAB_PROMETHEUS_METRICS_ENABLED is false6899Saved Prometheus metrics enabled flag6900Saved CI JWT signing key6901 prometheus_metrics_enabled is set to false6902 GITLAB_PROMETHEUS_METRICS_ENABLED is default6903Saved CI JWT signing key6904 prometheus_metrics_enabled is set to true6905 CI JWT signing key6906Saved CI JWT signing key6907 writes valid RSA key to the database6908IssueLinks::DestroyService6909 #execute6910 behaves like a destroyable issuable link6911 when successfully removes an issuable link6912 removes related issue6913 creates notes6914 returns success message6915 when failing to remove an issuable link6916 does not remove relation6917 does not create notes6918 returns error message6919 when target is an incident6920 behaves like an incident management tracked event6921 .track_event6922 tracks the event using redis6923 behaves like Snowplow event tracking with RedisHLL context6924 behaves like Snowplow event tracking6925 is emitted6926MergeRequests::MigrateExternalDiffsService6927 .enqueue!6928 enqueues nothing if external diffs are disabled6929 enqueues eligible in-database diffs if external diffs are enabled6930 #execute6931 migrates an in-database diff to the external store6932UsersStarProjectsFinder6933 #execute6934 as same user6935 is expected to contain exactly #<UsersStarProject id: 23, project_id: 693, user_id: 1099, created_at: "2023-04-27 06:22:23.166501000 +0000", updated_at: "2023-04-27 06:22:23.166501000 +0000"> and #<UsersStarProject id: 22, project_id: 693, user_id: 1097, created_at: "2023-04-27 06:22:22.915129000 +0000", updated_at: "2023-04-27 06:22:22.915129000 +0000">6936 as other user6937 is expected to contain exactly #<UsersStarProject id: 25, project_id: 694, user_id: 1101, created_at: "2023-04-27 06:22:24.050517000 +0000", updated_at: "2023-04-27 06:22:24.050517000 +0000">6938 as no user6939 is expected to contain exactly #<UsersStarProject id: 28, project_id: 695, user_id: 1106, created_at: "2023-04-27 06:22:25.253213000 +0000", updated_at: "2023-04-27 06:22:25.253213000 +0000">6940 with active users only6941 ignores stars of non-active users6942API::Entities::Release6943 evidences6944 when the current user can read code6945 exposes the evidence sha and the json path6946 when the current user cannot read code6947 does not expose any evidence data6948 description_html6949 is inexistent6950 when include_html_description option is true6951 renders special references if current user has access6952 does not render special references if current user has no access6953 links6954 includes links6955Projects::MoveProjectAuthorizationsService6956 #execute6957 moves the authorizations from one project to another6958 does not move existent authorizations to the current project6959 when remove_remaining_elements is false6960 does not remove remaining project authorizations6961Ci::ResourceGroups::AssignResourceFromResourceGroupWorker6962 has the `until_executed` deduplicate strategy6963 has an option to reschedule once if deduplicated6964 #perform6965 is labeled as idempotent6966 performs multiple times sequentially without raising an exception6967 when resource group exists6968 executes AssignResourceFromResourceGroupService6969 when build does not exist6970 does not execute AssignResourceFromResourceGroupService6971ResolvesGroups6972 avoids N+1 queries on the fields marked with lookahead6973Puma6974{"timestamp":"2023-04-27T06:22:43.271Z","pid":9545,"message":"Puma starting in cluster mode..."}6975{"timestamp":"2023-04-27T06:22:43.271Z","pid":9545,"message":"* Puma version: 5.6.5 (ruby 3.0.6-p216) (\"Birdie's Version\")"}6976{"timestamp":"2023-04-27T06:22:43.271Z","pid":9545,"message":"* Min threads: 1"}6977{"timestamp":"2023-04-27T06:22:43.271Z","pid":9545,"message":"* Max threads: 4"}6978{"timestamp":"2023-04-27T06:22:43.271Z","pid":9545,"message":"* Environment: test"}6979{"timestamp":"2023-04-27T06:22:43.271Z","pid":9545,"message":"* Master PID: 9545"}6980{"timestamp":"2023-04-27T06:22:43.271Z","pid":9545,"message":"* Workers: 1"}6981{"timestamp":"2023-04-27T06:22:43.271Z","pid":9545,"message":"* Restarts: (✔) hot (✖) phased"}6982{"timestamp":"2023-04-27T06:22:43.272Z","pid":9545,"message":"* Preloading application"}6983{"timestamp":"2023-04-27T06:22:43.285Z","pid":9545,"message":"* Listening on unix:///builds/gitlab-org/gitlab/tmp/tests/puma.socket"}6984{"timestamp":"2023-04-27T06:22:43.285Z","pid":9545,"message":"Use Ctrl-C to stop"}6985{"timestamp":"2023-04-27T06:22:43.285Z","pid":9545,"message":"! WARNING: Detected running cluster mode with 1 worker."}6986{"timestamp":"2023-04-27T06:22:43.285Z","pid":9545,"message":"! Running Puma in cluster mode with a single worker is often a misconfiguration."}6987{"timestamp":"2023-04-27T06:22:43.285Z","pid":9545,"message":"! Consider running Puma in single-mode (workers = 0) in order to reduce memory overhead."}6988{"timestamp":"2023-04-27T06:22:43.285Z","pid":9545,"message":"! Set the `silence_single_worker_warning` option to silence this warning message."}6989{"timestamp":"2023-04-27T06:22:43.286Z","pid":9545,"message":"! Promoting existing objects to old generation..."}6990{"timestamp":"2023-04-27T06:22:43.298Z","pid":9545,"message":"! Compacting..."}6991{"timestamp":"2023-04-27T06:22:43.336Z","pid":9545,"message":"! Friendly fork preparation complete."}6992{"timestamp":"2023-04-27T06:22:43.339Z","pid":9545,"message":"- Worker 0 (PID: 9546) booted in 0.0s, phase: 0"}6993{"timestamp":"2023-04-27T06:22:44.450Z","pid":9545,"message":"- Worker 0 (PID: 9553) booted in 0.0s, phase: 0"}6994 has a worker that self-terminates on signal SIGQUIT6995{"timestamp":"2023-04-27T06:22:45.260Z","pid":9545,"message":"- Worker 0 (PID: 9560) booted in 0.0s, phase: 0"}6996 has a worker that self-terminates on signal SIGTERM6997{"timestamp":"2023-04-27T06:22:46.309Z","pid":9545,"message":"- Worker 0 (PID: 9567) booted in 0.0s, phase: 0"}6998 has a worker that self-terminates on signal SIGKILL6999{"timestamp":"2023-04-27T06:22:46.315Z","pid":9545,"message":"=== puma shutdown: 2023-04-27 06:22:46 +0000 ==="}7000{"timestamp":"2023-04-27T06:22:46.315Z","pid":9545,"message":"- Goodbye!"}7001{"timestamp":"2023-04-27T06:22:46.315Z","pid":9545,"message":"- Gracefully shutting down workers..."}7002BuildActionEntity7003 #as_json7004 contains original job name7005 contains path to the action play7006 contains whether it is playable7007 when job is scheduled7008 returns scheduled7009 returns scheduled_at7010 returns unschedule path7011Banzai::Filter::ColorFilter7012 inserts color chip for supported color format #1237013 inserts color chip for supported color format #12347014 inserts color chip for supported color format #1234567015 inserts color chip for supported color format #123456787016 inserts color chip for supported color format rgb(0,0,0)7017 inserts color chip for supported color format RGB(0, 0, 0)7018 inserts color chip for supported color format rgba(0,0,0,1)7019 inserts color chip for supported color format RGBA(0,0,0,0.7)7020 inserts color chip for supported color format hsl(270,30%,50%)7021 inserts color chip for supported color format HSLA(270, 30%, 50%, .7)7022 ignores valid color code without backticks(code tags)7023 ignores valid color code with prepended space7024 ignores valid color code with appended space7025 ignores valid color code surrounded by spaces7026 ignores invalid color code7027Gitlab::Ci::ProjectConfig7028 # order random7029 when config is not defined anywhere7030 returns nil7031 when config is defined in a separate repository7032 returns root config including the path to another repository7033 when path specifies a refname7034 returns root config including the path and refname to another repository7035 when config is defined in a custom path in the repository7036 returns root config including the local custom file7037 when config is defined in the default .gitlab-ci.yml7038 returns root config including the canonical CI config file7039 when config is the Auto-Devops template7040 returns root config including the auto-devops template7041 when bridge job is passed in as parameter7042 returns the content already available in command7043 when config is defined remotely7044 returns root config including the remote config7045 when config is passed as a parameter7046 returns the parameter content7047Mutations::AlertManagement::HttpIntegration::ResetToken7048 is expected to require graphql authorizations :admin_operations7049 #resolve7050 user has sufficient access to project7051 when HttpIntegrations::UpdateService responds with success7052 returns the integration with no errors7053 when HttpIntegrations::UpdateService responds with an error7054 returns errors7055 when resource is not accessible to the user7056 raises an error if the resource is not accessible to the user7057notify/change_in_merge_request_draft_status_email.html.haml7058 shows user added draft status on email7059 shows user removed draft status on email7060 renders the email correctly7061Banzai::Pipeline::DescriptionPipeline7062 uses a limited allowlist7063 removes 'pre' elements7064 removes 'code' elements7065 removes 'img' elements7066 removes 'ol' elements7067 removes 'ul' elements7068 removes 'li' elements7069 still allows 'b' elements7070 still allows 'i' elements7071 still allows 'strong' elements7072 still allows 'em' elements7073 still allows 'a' elements7074 still allows 'ins' elements7075 still allows 'del' elements7076 still allows 'sup' elements7077 still allows 'sub' elements7078 still allows 'p' elements7079Terraform::StateVersionPolicy7080 rules7081 no access7082 is expected to be disallowed :read_terraform_state7083 is expected to be disallowed :admin_terraform_state7084 developer7085 is expected to be allowed :read_terraform_state7086 is expected to be disallowed :admin_terraform_state7087 maintainer7088 is expected to be allowed :read_terraform_state7089 is expected to be allowed :admin_terraform_state7090Gitlab::Octokit::Middleware7091 #call7092 when the URL is a public URL7093 behaves like Allowed URL7094 does not raise an error7095 with failed address check7096 behaves like Blocked URL7097 raises an error7098 with disabled dns rebinding check7099 behaves like Allowed URL7100 does not raise an error7101 when the URL is a localhost address7102 when localhost requests are not allowed7103 behaves like Blocked URL7104 raises an error7105 when localhost requests are allowed7106 behaves like Allowed URL7107 does not raise an error7108 when the URL is a local network address7109 when local network requests are not allowed7110 behaves like Blocked URL7111 raises an error7112 when local network requests are allowed7113 behaves like Allowed URL7114 does not raise an error7115 when a non HTTP/HTTPS URL is provided7116 raises an error7117BulkImports::FileTransfer::GroupConfig7118 #portable_tree7119 returns portable tree7120 #export_path7121 returns tmpdir location7122 #portable_relations7123 returns a list of top level exportable relations7124 does not include skipped relations7125 #top_relation_tree7126 returns relation tree of a top level relation7127 #relation_excluded_keys7128 returns excluded keys for relation7129 #batchable_relation?7130 when relation is batchable7131 returns true7132 when relation is not batchable7133 returns false7134 when relation is not listed as portable7135 returns false7136 #batchable_relations7137 returns a list of collection associations for a group7138 #export_service_for7139 when relation is a tree7140 returns TreeExportService7141 when relation is a file7142 returns FileExportService7143 when relation is unknown7144 raises7145Gitlab::Auth::KeyStatusChecker7146 #show_console_message?7147 for an expired key7148 is expected to eq true7149 for a key expiring in the next 7 days7150 is expected to eq true7151 for a key expiring after the next 7 days7152 is expected to eq false7153 for a key that never expires7154 is expected to eq false7155 #console_message7156 for an expired key7157 is expected to eq "INFO: Your SSH key has expired. Please generate a new key."7158 for a key expiring in the next 7 days7159 is expected to eq "INFO: Your SSH key is expiring soon. Please generate a new key."7160 for a key expiring after the next 7 days7161 is expected to be nil7162 for a key that never expires7163 is expected to be nil7164Gitlab::Graphql::MarkdownField7165 .markdown_field7166 creates the field with some default attributes7167 developer warnings7168 raises when passing a resolver7169 resolving markdown7170 renders markdown from the same property as the field name without the `_html` suffix7171 when a `method` argument is passed7172 renders markdown from a specific property7173 when a block is passed for the resolved object7174 renders markdown from the same property as the field name without the `_html` suffix7175 basic verification that references work7176 renders markdown correctly7177 when the issue is not publicly accessible7178 hides the references from users that are not allowed to see the reference7179 shows the reference to users that are allowed to see it7180Types::ColorType7181 is expected to eq "Color"7182 coerces Color object into hex string7183 coerces an hex string into Color object7184 coerces an named Color into hex string7185 coerces an named color into Color object7186 rejects invalid input7187 rejects nil7188Namespaces::UserNamespace7189 validations7190 is expected to validate that :owner cannot be empty/falsy7191 #owners7192 is expected to contain exactly #<User id: @user505>7193Suggestions::OutdateService7194 #execute7195 when there is a change within multi-line suggestion range7196 updates the outdatable suggestion record7197 when there is no change within multi-line suggestion range7198 does not outdates suggestion record7199projects/generic_commit_statuses/_generic_commit_status.html.haml7200 won't include a column with a link to its pipeline by default7201 can include a column with a link to its pipeline7202WebHooks::LogDestroyWorker7203 #perform7204 with a Web hook7205 deletes the relevant logs7206 is idempotent7207 raises and tracks an error if destroy failed7208 with extra arguments7209 does not raise an error7210 with no arguments7211 does not raise an error7212 with empty arguments7213 does not raise an error7214 with unknown hook7215 does not raise an error7216SensitiveSerializableHash7217 .prevent_from_serialization7218 does not include the field in serializable_hash7219 does not change parent class attributes_exempt_from_serializable_hash7220 #serializable_hash7221 for a web hook7222 behaves like attr_encrypted attribute7223 WebHook#token7224 has a attr_encrypted_attributes field7225 does not include the attribute in serializable_hash7226 behaves like attr_encrypted attribute7227 WebHook#url7228 has a attr_encrypted_attributes field7229 does not include the attribute in serializable_hash7230 behaves like attr_encrypted attribute7231 WebHook#url_variables7232 has a attr_encrypted_attributes field7233 does not include the attribute in serializable_hash7234 behaves like attr_encrypted attribute7235 Ci::InstanceVariable#value7236 has a attr_encrypted_attributes field7237 does not include the attribute in serializable_hash7238 behaves like add_authentication_token_field attribute7239 does not include token_expires_at in serializable_hash7240 Ci::Runner#token7241 has a add_authentication_token_field field7242 does not include the attribute in serializable_hash7243 behaves like add_authentication_token_field attribute7244 ApplicationSetting#health_check_access_token7245 has a add_authentication_token_field field7246 does not include the attribute in serializable_hash7247 behaves like add_authentication_token_field attribute7248 PersonalAccessToken#token7249 has a add_authentication_token_field field7250 does not include the attribute in serializable_hash7251Gitlab::Ci::Config::Entry::Rules7252 .new7253 with a list of rule rule7254 is expected to be a kind of Gitlab::Ci::Config::Entry::Rules7255 is expected to be valid7256 with a list of two rules7257 is expected to be valid7258 with a single rule object7259 is expected not to be valid7260 with nested rules7261 is expected to be valid7262 with rules nested more than one level7263 is expected to be valid7264 #value7265 with a list of rule rule7266 is expected to eq [{:if=>"$THIS == \"that\"", :when=>"never"}]7267 with a list of two rules7268 is expected to eq [{:if=>"$THIS == \"that\"", :when=>"always"}, {:if=>"$SKIP", :when=>"never"}]7269 with a single rule object7270 is expected to eq []7271 with nested rules7272 is expected to contain exactly {:if=>"$THIS == \"that\"", :when=>"always"} and {:if=>"$SKIP", :when=>"never"}7273 with rules nested more than one level7274 is expected to contain exactly {:if=>"$THIS == \"that\"", :when=>"always"}, {:if=>"$SKIP", :when=>"never"}, and {:if=>"$THIS == \"other\"", :when=>"always"}7275 .default7276 does not have default policy7277gitlab:dependency_proxy namespace rake task7278 migrate7279 object storage disabled7280 doesn't migrate files7281 object storage enabled7282 migrates local file to object storage7283 an error is raised while migrating7284 fails to migrate a local file that does not exist7285Exportable7286 # order random7287 .readable_records7288 when model does not respond to association name7289 returns nil7290 when model does respond to association name7291 when there are no records7292 returns nil7293 when association has #exportable_record? defined7294 when user can read all records7295 returns collection of readable records7296 when user can not read records7297 returns collection of readable records7298 when association does not have #exportable_record? defined7299 calls #readable_by?7300 with single relation7301 when user can read the record7302 returns collection of readable records7303 when user can not read the record7304 returns collection of readable records7305 .restricted_associations7306 when `exportable_restricted_associations` is not defined in inheriting class7307 returns empty array7308 when `exportable_restricted_associations` is defined in inheriting class7309 returns empty array if provided key are not restricted7310 returns array with restricted keys7311 .exportable_association?7312 when model does not respond to association name7313 returns false7314 when model responds to association name7315 when association contains records7316 when current_user is not present7317 returns false7318 when current_user can read association7319 returns true7320 when current_user can not read association7321 returns false7322 when association is empty7323 returns true7324 when association type is has_many7325 returns true7326 .has_many_association?7327 when association type is `has_many`7328 returns true7329 when association type is `has_one`7330 returns true7331 when association type is `belongs_to`7332 returns true7333Gitlab::Ci::Config::Entry::Files7334 validations7335 when entry config value is valid7336 #value7337 returns key value7338 #valid?7339 is valid7340 #errors7341 when entry value is not an array7342 saves errors7343 when entry value is not an array of strings7344 saves errors7345 when entry value contains more than two values7346 saves errors7347Gitlab::Ci::Config::Entry::Workflow7348 validations7349 when work config value is a string7350 #valid?7351 is invalid7352 attaches an error specifying that workflow should point to a hash7353 #value7354 returns the invalid configuration7355 when work config value is a hash7356 #valid?7357 is valid7358 attaches no errors7359 #value7360 returns the config7361 with an invalid key7362 #valid?7363 is invalid7364 attaches an error specifying the unknown key7365 #value7366 returns the invalid configuration7367 with workflow name7368 with a blank name7369 is invalid7370 returns error about invalid name7371 with too long name7372 is invalid7373 returns error about invalid name7374 when name is nil7375 is valid7376 when name is not provided7377 is valid7378 .default7379 is nil7380BitbucketServer::Representation::Comment7381 #id7382 is expected to eq 97383 #author_username7384 returns username7385 when username is absent7386 returns slug7387 when slug and username are absent7388 returns displayName7389 #author_email7390 is expected to eq "test.user@example.com"7391 #note7392 is expected to eq "is this a new line?"7393 #created_at7394 is expected to be a kind of Time7395 #updated_at7396 is expected to be a kind of Time7397 #comments7398 is expected to eq 47399 is expected to all be a kind of BitbucketServer::Representation::Comment7400 is expected to contain exactly "Hello world", "Ok", "hello", and "hi"7401 comments have the right parent7402Users::SignupService7403 #execute7404 when updating name7405 updates the name attribute7406 returns an error result when name is missing7407 when updating role7408 updates the role attribute7409 returns an error result when role is missing7410 when updating setup_for_company7411 updates the setup_for_company attribute7412 when on SaaS7413 returns an error result when setup_for_company is missing7414 when not on .com7415 returns success when setup_for_company is blank7416Mutations::Groups::Update7417 is expected to require graphql authorizations :admin_group7418 #resolve7419 changing shared runners setting7420 user_role: :owner, shared_examples_name: "updating the group shared runners setting"7421 behaves like updating the group shared runners setting7422 updates the group shared runners setting7423 returns no errors7424 with invalid params7425 doesn't update the shared_runners_setting7426 returns an error7427 user_role: :developer, shared_examples_name: "denying access to group shared runners setting"7428 behaves like denying access to group shared runners setting7429 raises Gitlab::Graphql::Errors::ResourceNotAvailable7430 user_role: :reporter, shared_examples_name: "denying access to group shared runners setting"7431 behaves like denying access to group shared runners setting7432 raises Gitlab::Graphql::Errors::ResourceNotAvailable7433 user_role: :guest, shared_examples_name: "denying access to group shared runners setting"7434 behaves like denying access to group shared runners setting7435 raises Gitlab::Graphql::Errors::ResourceNotAvailable7436 user_role: :anonymous, shared_examples_name: "denying access to group shared runners setting"7437 behaves like denying access to group shared runners setting7438 raises Gitlab::Graphql::Errors::ResourceNotAvailable7439LooseForeignKeys::CleanupWorker7440-- create_table(:_test_loose_fk_parent_table_1)7441 -> 0.0216s7442-- create_table(:_test_loose_fk_parent_table_2)7443 -> 0.0029s7444-- create_table(:_test_loose_fk_child_table_1_1)7445 -> 0.0028s7446-- create_table(:_test_loose_fk_child_table_1_2)7447 -> 0.0024s7448-- create_table(:_test_loose_fk_child_table_2_1)7449 -> 0.0022s7450-- execute("CREATE TRIGGER _test_loose_fk_parent_table_1_loose_fk_trigger AFTER DELETE ON _test_loose_fk_parent_table_1 REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records();")7451 -> 0.0010s7452-- execute("CREATE TRIGGER _test_loose_fk_parent_table_2_loose_fk_trigger AFTER DELETE ON _test_loose_fk_parent_table_2 REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records();")7453 -> 0.0009s7454 cleans up all rows7455 multi-database support7456 current_minute: 2, configured_base_models: {:main=>"ActiveRecord::Base", :ci=>"Ci::ApplicationRecord"}, expected_connection_model: "ActiveRecord::Base"7457 uses the correct connection7458 current_minute: 3, configured_base_models: {:main=>"ActiveRecord::Base", :ci=>"Ci::ApplicationRecord"}, expected_connection_model: "Ci::ApplicationRecord"7459 uses the correct connection7460 current_minute: 2, configured_base_models: {:main=>"ActiveRecord::Base"}, expected_connection_model: "ActiveRecord::Base"7461 uses the correct connection7462 current_minute: 3, configured_base_models: {:main=>"ActiveRecord::Base"}, expected_connection_model: "ActiveRecord::Base"7463 uses the correct connection7464-- drop_table(:_test_loose_fk_parent_table_1)7465 -> 0.0197s7466-- drop_table(:_test_loose_fk_parent_table_2)7467 -> 0.0028s7468-- drop_table(:_test_loose_fk_child_table_1_1)7469 -> 0.0023s7470-- drop_table(:_test_loose_fk_child_table_1_2)7471 -> 0.0020s7472-- drop_table(:_test_loose_fk_child_table_2_1)7473 -> 0.0019s7474Ci::Runners::ProcessRunnerVersionUpdateService7475 #execute7476 with upgrade check returning error7477 does not update ci_runner_versions records7478 when fetching runner releases is disabled7479 does not update ci_runner_versions records7480 with successful result from upgrade check7481 with no existing ci_runner_version record7482 creates ci_runner_versions record7483 with existing ci_runner_version record7484 updates ci_runner_versions record7485 with up-to-date ci_runner_version record7486 does not update ci_runner_versions record7487Gitlab::Analytics::CycleAnalytics::Aggregated::BaseQueryBuilder7488 scopes the query for the given project7489 author_username param7490 returns stage events associated with the given author7491 returns empty result when unknown author is given7492 milestone_title param7493 returns stage events associated with the milestone7494 returns empty result when unknown milestone is given7495 label_name param7496 returns stage events associated with multiple labels7497 does not include records with partial label match7498 assignee_username param7499 returns stage events associated assignee7500 timestamp filtering7501 filters by the end event time range7502 when in_progress items are requested7503 filters by the start event time range7504Gitlab::Ci::Status::SuccessWarning7505 #test7506 is expected to eq "passed"7507 #label7508 is expected to eq "passed with warnings"7509 #icon7510 is expected to eq "status_warning"7511 #group7512 is expected to eq "success-with-warnings"7513 .matches?7514 when matchable subject is successful7515 when matchable subject has warnings7516 is a correct match7517 when matchable subject does not have warnings7518 does not match7519 when matchable subject is not successful7520 when matchable subject has warnings7521 does not match7522 when matchable subject does not have warnings7523 does not match7524shared/projects/_list7525 with projects7526 renders the list of projects7527 will not show elements a user shouldn't be able to see7528 without projects7529 when @contributed_projects is set7530 and is empty7531 renders a no-content message7532 when @starred_projects is set7533 and is empty7534 renders a no-content message7535 and without a special instance variable7536 for an explore_page7537 renders a no-content message7538 for a non-explore page7539 renders a no-content message7540gitlab:lfs namespace rake task7541 migration tasks7542 migrate7543 object storage disabled7544 doesn't migrate files7545 object storage enabled7546 migrates local file to object storage7547 migrate_to_local7548 object storage enabled7549 migrates remote files to local storage7550notify/autodevops_disabled_email.text.erb7551 when the pipeline contains a failed job7552 renders the email correctly7553Packages::Debian::FindOrCreatePackageService7554 #execute7555 with a codename as distribution name7556 behaves like find or create Debian package7557 returns the same object7558 with package marked as pending_destruction7559 creates a new package7560 with a suite as distribution name7561 behaves like find or create Debian package7562 returns the same object7563 with package marked as pending_destruction7564 creates a new package7565 with existing package in another distribution7566 raises ArgumentError7567 with non-existing distribution7568 raises ActiveRecord::RecordNotFound7569Packages::Nuget::MetadataExtractionService7570 #execute7571 with valid package file id7572 is expected to eq {:package_dependencies=>[{:name=>"Newtonsoft.Json", :target_framework=>".NETCoreApp3.0", :version=>"1...name=>"DummyProject.DummyPackage", :package_tags=>[], :package_types=>[], :package_version=>"1.0.0"}7573 with nuspec file7574 with dependencies7575 is expected to have key :package_dependencies7576 extracts dependencies7577 with package types7578 is expected to have key :package_types7579 extracts package types7580 with a nuspec file with metadata7581 is expected to eq ["bar", "foo", "tag1", "tag2", "tag3", "tag4", "tag5", "test"]7582 with a nuspec file with metadata7583 is expected to eq "https://opensource.org/licenses/MIT"7584 is expected to eq "https://gitlab.com/gitlab-org/gitlab"7585 is expected to eq "https://opensource.org/files/osi_keyhole_300X300_90ppi_0.png"7586 with invalid package file id7587 is expected to raise Packages::Nuget::MetadataExtractionService::ExtractionError with "invalid package file"7588 linked to a non nuget package7589 is expected to raise Packages::Nuget::MetadataExtractionService::ExtractionError with "invalid package file"7590 with a 0 byte package file id7591 is expected to raise Packages::Nuget::MetadataExtractionService::ExtractionError with "invalid package file"7592 without the nuspec file7593 is expected to raise Packages::Nuget::MetadataExtractionService::ExtractionError with "nuspec file not found"7594 with a too big nuspec file7595 is expected to raise Packages::Nuget::MetadataExtractionService::ExtractionError with "nuspec file too big"7596 with a corrupted nupkg file with a wrong entry size7597 is expected to raise Packages::Nuget::MetadataExtractionService::ExtractionError with "nuspec file has the wrong entry size: entry 'DummyProject.DummyPackage.nuspec' should be 255B, but is larger when inflated."7598Projects::PipelineHelper7599 #js_pipeline_tabs_data7600 returns pipeline tabs data7601Resolvers::Ci::RunnerPlatformsResolver7602 #resolve7603 returns all possible runner platforms7604RuboCop::Cop::RSpec::FactoryBot::InlineAssociation7605 # order random7606 no offenses7607 for `association(:user)`7608 does not register any offenses7609 for `association(:user, :admin)`7610 does not register any offenses7611 for `association(:user, name: "any")`7612 does not register any offenses7613 for `after(:build) do |object|`7614 does not register any offenses7615 for `initialize_with do`7616 does not register any offenses7617 for `user_id { create(:user).id }`7618 does not register any offenses7619 offenses7620 recognizes `add_attribute`7621 recognizes `transient` attributes7622 code_snippet: "create(:user)", autocorrected: "association(:user)"7623 registers an offense and corrects7624 code_snippet: "FactoryBot.create(:user)", autocorrected: "association(:user)"7625 registers an offense and corrects7626 code_snippet: "::FactoryBot.create(:user)", autocorrected: "association(:user)"7627 registers an offense and corrects7628 code_snippet: "create(:user, :admin)", autocorrected: "association(:user, :admin)"7629 registers an offense and corrects7630 code_snippet: "create(:user, name: \"any\")", autocorrected: "association(:user, name: \"any\")"7631 registers an offense and corrects7632 code_snippet: "build(:user)", autocorrected: "association(:user)"7633 registers an offense and corrects7634 code_snippet: "FactoryBot.build(:user)", autocorrected: "association(:user)"7635 registers an offense and corrects7636 code_snippet: "::FactoryBot.build(:user)", autocorrected: "association(:user)"7637 registers an offense and corrects7638 code_snippet: "build(:user, :admin)", autocorrected: "association(:user, :admin)"7639 registers an offense and corrects7640 code_snippet: "build(:user, name: \"any\")", autocorrected: "association(:user, name: \"any\")"7641 registers an offense and corrects7642BulkImports::Common::Graphql::GetMembersQuery7643 has a valid query7644 #data_path7645 returns data path7646 #page_info_path7647 returns pagination information path7648 #to_s7649 when entity is group7650 queries group & group members7651 when entity is project7652 queries project & project members7653Integrations::JiraTrackerData7654 behaves like Integrations::BaseDataFields7655 associations7656 is expected to belong to integration required: false7657 #activated?7658 with integration7659 with value set to false7660 is expected to eq false7661 with value set to true7662 is expected to eq true7663 without integration7664 is expected to eq false7665 #to_database_hash7666 does not include certain attributes7667 deployment_type7668 is expected to define :deployment_type as an enum backed by an integer with values ‹[:unknown, :server, :cloud]›, prefix: :deployment7669 encrypted attributes7670 is expected to contain exactly :api_url, :password, :url, and :username7671Resolvers::IncidentManagement::TimelineEventTagsResolver7672 # order random7673 returns timeline event tags7674 is expected to have nullable GraphQL type TimelineEventTagTypeConnection7675 when timeline event is nil7676 returns no timeline event tags7677 when there is no timeline event tag link7678 returns no timeline event tags7679 when user does not have permissions7680 returns no timeline event tags7681AuthorizedProjectUpdate::PeriodicRecalculateService7682 #execute7683 calls AuthorizedProjectUpdate::UserRefreshOverUserRangeWorker7684ProtectedBranches::UpdateService7685 with entity project7686 behaves like execute with entity7687 #execute7688 updates a protected branch7689 refreshes the cache7690 when updating name of a protected branch to one that contains HTML tags7691 updates a protected branch7692 when a policy restricts rule update7693 prevents update of the protected branch rule7694 with entity group7695 behaves like execute with entity7696 #execute7697 updates a protected branch7698 refreshes the cache7699 when updating name of a protected branch to one that contains HTML tags7700 updates a protected branch7701 when a policy restricts rule update7702 prevents update of the protected branch rule7703Gitlab::Ci::Config::Yaml::Result7704 # order random7705 does not have a header when config is a single hash7706 raises an error when reading a header when there is none7707 stores an error / exception when initialized with it7708 when config is an array of hashes7709 when first document matches the header schema7710 has a header7711 when first document does not match the header schema7712 does not have header7713 when the first document is undefined7714 does not have header7715IssueEmailParticipant7716 Associations7717 is expected to belong to issue required: false7718 Modules7719 is expected to includes the Presentable module7720 Validations7721 is expected to validate that :issue cannot be empty/falsy7722 is expected to validate that :email is unique within the scope of :issue_id7723 is invalid if the email is nil7724 behaves like an object with RFC3696 compliant email-formatted attributes7725 specifically its :email attribute7726 with a value of 'info@example.com'7727 is valid7728 with a value of 'info+test@example.com'7729 is valid7730 with a value of 'o'reilly@example.com'7731 is valid7732 with a value of 'foobar'7733 is invalid7734 with a value of 'test@test@example.com'7735 is invalid7736 with a value of 'test.test.@example.com'7737 is invalid7738 with a value of '.test.test@example.com'7739 is invalid7740 with a value of 'mailto:test@example.com'7741 is invalid7742 with a value of 'lol!'+=?><#$%^&*()@gmail.com'7743 is invalid7744Gitlab::GithubImport::Importer::LfsObjectImporter7745 #execute7746 calls the LfsDownloadService with the lfs object attributes7747Preloaders::Environments::DeploymentPreloader7748 does not trigger N+1 queries7749 batch loads the dependent associations7750 avoids scoping with IN clause during preload7751 sets environment on the associated deployment7752 does not attempt to set environment on a nil deployment7753Gitlab::CrossProjectAccess::CheckInfo7754 #should_run?7755 runs when an action is defined7756 runs when the action is missing7757 does not run when the action is excluded7758 runs when the `if` conditional is true7759 does not run when the if condition is false7760 does not run when the `unless` check is true7761 runs when the `unless` check is false7762 returns the opposite of #should_skip? when the check is a skip7763 #should_skip?7764 skips when an action is defined7765 does not skip when the action is not defined7766 does not skip when the action is excluded7767 skips when the `if` conditional is true7768 does not skip the `if` conditional is false7769 does not skip when the `unless` check is true7770 skips when `unless` check is false7771 returns the opposite of #should_run? when the check is not a skip7772Ci::CreatePipelineService7773 # order random7774 when project has not exceeded the active jobs limit7775 creates the pipeline successfully7776 when project has exceeded the active jobs limit7777 fails the pipeline before populating it7778GoogleCloud::CreateCloudsqlInstanceService7779 #execute7780 triggers creation of a cloudsql instance7781 triggers worker to manage cloudsql instance creation operation results7782 when google APIs fail7783 returns error7784 when project has GCP_REGION defined7785 uses defined region7786WebauthnRegistration7787 relations7788 is expected to belong to user required: false7789 validations7790 is expected to validate that :credential_xid cannot be empty/falsy7791 is expected to validate that :public_key cannot be empty/falsy7792 is expected to validate that :counter cannot be empty/falsy7793 is expected to validate that the length of :name is at least 07794 is expected not to allow :name to be ‹nil›7795 is expected to validate that :counter looks like an integer greater than or equal to 0 and less than or equal to 42949672957796MergeRequests::ResolveTodosAfterApprovalWorker7797 calls TodoService#resolve_todos_for_target7798 behaves like subscribes to event7799 consumes the published event7800 behaves like an idempotent worker7801 is labeled as idempotent7802 performs multiple times sequentially without raising an exception7803 when the user does not exist7804 behaves like when object does not exist7805 logs and does not call TodoService#resolve_todos_for_target7806 when the merge request does not exist7807 behaves like when object does not exist7808 logs and does not call TodoService#resolve_todos_for_target7809Lfs::PushService7810 does nothing if there are no LFS objects7811 #execute7812 uploads the object when upload is requested7813 does not upload the object when upload is not requested7814 verifies the upload if requested7815 skips verification if requested but upload fails7816 returns a failure when submitting a batch fails7817 returns a failure when submitting an upload fails7818 non-project-repository LFS objects7819 only tries to upload the project-repository LFS object7820Issuables::CrmContactFilter7821 when a contact has issues7822 returns all contact1 issues7823 returns all contact2 issues7824 when a contact has no issues7825 returns no issues7826API::Validations::Validators::FilePath7827 when allowlist is not set7828 behaves like file validation7829 valid file path7830 does not raise a validation error7831 invalid file path7832 raise a validation error7833 behaves like file validation7834 valid file path7835 does not raise a validation error7836 invalid file path7837 raise a validation error7838 when allowlist is set7839 when file path is included in the allowlist7840 does not raise a validation error7841 when file path is not included in the allowlist7842 raises a validation error7843Resolvers::AlertManagement::AlertResolver7844 user does not have permission7845 is expected to eq #<ActiveRecord::Relation []>7846 user has permission7847 is expected to contain exactly #<AlertManagement::Alert id:1 namespace755/project-783^alert#1> and #<AlertManagement::Alert id:2 namespace755/project-783^alert#2>7848 finding by iid7849 is expected to contain exactly #<AlertManagement::Alert id:1 namespace755/project-783^alert#1>7850 finding by status7851 is expected to contain exactly #<AlertManagement::Alert id:2 namespace755/project-783^alert#2>7852 filtering by domain7853 is expected to contain exactly #<AlertManagement::Alert id:1 namespace755/project-783^alert#1>, #<AlertManagement::Alert id:2 namespace755/project-783^alert#2>, and #<AlertManagement::Alert id:6 namespace755/project-783^alert#5>7854 sorting7855 when sorting by events count7856 sorts alerts ascending7857 sorts alerts descending7858RuboCop::Cop::QA::ElementWithPattern7859 # order random7860 outside of a migration spec file7861 does not register an offense7862 in a QA file7863 registers an offense for elements with a pattern7864 does not register an offense for element without a pattern7865Gitlab::Bullet::Exclusions7866 #execute7867 with preferred method of path and method name7868 behaves like loads exclusion results7869 is expected to match [["_path_", "_method_"]]7870 with file pattern7871 behaves like loads exclusion results7872 is expected to match [["_file_pattern_"]]7873 with file name and line range7874 behaves like loads exclusion results7875 is expected to match [["file_name.rb", 5..10]]7876 without exclusions7877 behaves like loads exclusion results7878 is expected to match [[]]7879 without exclusions key in config7880 behaves like loads exclusion results7881 is expected to match []7882 when config file does not exist7883 provides an empty array for exclusions7884 with a Symbol7885 raises an exception7886 #validate_paths!7887 when validating scenarios7888 when using paths with method name7889 when source file for exclusion exists7890 is expected not to raise Exception7891 when source file for exclusion does not exist7892 is expected to raise RuntimeError7893 when using path only7894 when source file for exclusion exists7895 is expected not to raise Exception7896 when source file for exclusion does not exist7897 is expected to raise RuntimeError7898 when path_with_method is false for a file pattern7899 is expected not to raise Exception7900BuildHooksWorker7901 #perform7902 when build exists7903 calls build hooks7904 when build does not exist7905 does not raise exception7906 .perform_async7907 sends a message to the application logger, before performing7908 behaves like worker with data consistency7909 .get_data_consistency_feature_flag_enabled?7910 returns true7911 .get_data_consistency7912 returns correct data consistency7913Gitlab::Database::LoadBalancing::HostList7914 #initialize7915 sets metrics for current number of hosts and current index7916 #length7917 returns the number of hosts in the list7918 #host_names_and_ports7919 with ports7920 returns the host names of all hosts7921 without ports7922 returns the host names of all hosts7923 #hosts7924 returns a copy of the host7925 #hosts=7926 updates the list of hosts to use7927 #next7928 returns a host7929 cycles through all available hosts7930 skips hosts that are offline7931 returns nil if no hosts are online7932 returns nil if no hosts are available7933 #shuffle7934 randomizes the list7935AuthorizedProjectUpdate::ProjectRecalculatePerUserWorker7936 is labeled as idempotent7937 performs multiple times sequentially without raising an exception7938 does not change authorizations when run twice7939 #perform7940 does not fail if the project does not exist7941 does not fail if the user does not exist7942 calls AuthorizedProjectUpdate::ProjectRecalculatePerUserService7943 exclusive lease7944 when exclusive lease has not been taken7945 obtains a new exclusive lease7946 when exclusive lease has already been taken7947 raises an error7948Gitlab::Ci::Pipeline::Seed::Pipeline7949 #stages7950 returns the stage resources7951 #size7952 returns the number of jobs7953 #errors7954 when attributes are valid7955 returns nil7956 when attributes are not valid7957 returns the errors7958 #deployments_count7959 counts the jobs having an environment associated7960 #root_variables7961 returns root_variables7962Gitlab::ImportExport::Project::RelationSaver7963 #save7964 when relation is the root node7965 serializes the root node as a json file in the export path7966 serializes only allowed attributes7967 successfuly serializes without errors7968 when relation is a child node7969 serializes the child node as a ndjson file in the export path inside the project folder7970 serializes only allowed attributes7971 successfuly serializes without errors7972 when relation name is not supported7973 returns false and register the error7974 when an exception occurs during serialization7975 returns false and register the exception error message7976Onboarding::UserAddedWorker#perform7977 # order random7978 behaves like records an onboarding progress action7979 is expected to receive execute({:action=>:user_added}) 1 time7980Types::CustomerRelations::OrganizationType7981 is expected to eq "CustomerRelationsOrganization"7982 is expected to have graphql fields :id, :name, :default_rate, :description, :active, :created_at, and :updated_at7983 is expected to require graphql authorizations :read_crm_organization7984Terraform/Module-Base.gitlab-ci.yml7985 # order random7986 the created pipeline7987 does not create any jobs7988Ci::CreatePipelineService7989 .pre/.post stages7990 when pipeline contains a build except .pre/.post7991 creates a pipeline7992 when pipeline does not contain any other build except .pre/.post7993 does not create a pipeline7994dashboard/projects/_nav.html.haml7995 highlights All tab by default7996 highlights Personal tab personal param is present7997Gitlab::AlertManagement::Fingerprint7998 .generate7999 when data is an array8000 returns the hashed fingerprint8001 with a variety of data8002 data: 1118003 performs like a hashed fingerprint8004 data: "fingerprint"8005 performs like a hashed fingerprint8006 data: :fingerprint8007 performs like a hashed fingerprint8008 data: true8009 performs like a hashed fingerprint8010 when data is a hash8011 behaves like fingerprinted Hash8012 performs like a hashed fingerprint8013 hashes with different order8014 calculates the same result8015 hash is too large8016 raises an error8017groups/group_members/index8018 when user can invite members for the group8019 renders as expected8020 when user can not invite members for the group8021 renders as expected8022 when @banned is nil8023 calls group_members_app_data with { banned: [] }8024Gitlab::Search::AbuseValidators::NoAbusiveTermLengthValidator8025 when a term is over the limit8026 adds a validation error8027 when all terms are under the limit8028 does NOT add any validation errors8029 when a URL is detected in a search term8030 when under twice the limit8031 does NOT add any validation errors8032 when over twice the limit8033 adds a validation error8034Gitlab::Ci::Config::Entry::Inherit::Variables8035 validations8036 config: true, valid: true8037 is expected to eq true8038 config: false, valid: true8039 is expected to eq true8040 config: ["A"], valid: true8041 is expected to eq true8042 config: ["A", "B"], valid: true8043 is expected to eq true8044 config: [:image], valid: true8045 is expected to eq true8046 config: [true], valid: false8047 is expected to eq false8048 config: "string", valid: false8049 is expected to eq false8050Types::Ci::TestCaseType8051 is expected to eq "TestCase"8052 contains attributes related to a pipeline test case8053Atlassian::JiraConnect::Serializers::AuthorEntity8054 when object is a User model8055 exposes all fields8056 when object is a CommitAuthor struct from a commit8057 exposes name and email only8058Packages::Maven::Metadata::AppendPackageFileService8059 #execute8060 with some content8061 creates all the related package files8062 with FIPS mode8063 does not generate file_md58064 with nil content8065 behaves like returning an error service response8066 returns an error service response8067 with nil package8068 behaves like returning an error service response8069 returns an error service response8070PersonalAccessTokens::ExpiringWorker8071 #perform8072 when a token needs to be notified8073 uses notification service to send the email8074 marks the notification as delivered8075 when no tokens need to be notified8076 doesn't use notification service to send the email8077 doesn't change the notification delivered of the token8078 when a token is an impersonation token8079 doesn't use notification service to send the email8080 doesn't change the notification delivered of the token8081Gitlab::DependencyLinker::PodspecLinker8082 .support?8083 supports *.podspec8084 does not support other files8085 #link8086 does not link the pod name8087 links the license8088 links the homepage8089 links the source URL8090 links dependencies8091Resolvers::Users::GroupCountResolver8092 #resolve8093 resolves group count for users8094 permissions8095 when current_user is an admin8096 is expected to eq [2, 1]8097 when current_user does not have access to the requested resource8098 is expected to equal nil8099 when current_user does not exist8100 is expected to equal nil8101MergeRequestForPipelineEntity8102 as json8103 exposes needed attributes8104Ci::BuildScheduleWorker8105 when build is found8106 when build is scheduled8107 executes RunScheduledBuildService8108 when build is not scheduled8109 executes RunScheduledBuildService8110 when build is not found8111 does nothing8112MergeRequests::CreateApprovalEventService8113 #execute8114 creates approve MR event8115Projects::CountService8116 .query8117 raises NotImplementedError8118 #relation_for_count8119 calls the class method query with the project id8120 #count8121 returns the number of rows8122 caches the number of rows8123 #refresh_cache8124 refreshes the cache8125 #delete_cache8126 removes the cache8127 #cache_key_name8128 raises NotImplementedError8129 #cache_key8130 returns the cache key as an Array8131API::Ci::Helpers::Runner8132 #get_runner_details_from_request8133 when no runner info is present8134 returns the runner IP8135 when runner info is present8136 extracts the runner details8137 #log_artifacts_filesize8138 behaves like storing arguments in the application context8139 places the expected params in the application context8140 behaves like not executing any extra queries for the application context8141 does not execute more queries than without adding anything to the application context8142Integrations::ChatMessage::MergeMessage8143 behaves like Integrations::ChatMessage8144 when input contains link markup8145 strips all link markup characters8146 without markdown8147 open8148 returns a message regarding opening of merge requests8149 close8150 returns a message regarding closing of merge requests8151 with markdown8152 open8153 returns a message regarding opening of merge requests8154 close8155 returns a message regarding closing of merge requests8156 approved8157 returns a message regarding completed approval of merge requests8158 unapproved8159 returns a message regarding revocation of completed approval of merge requests8160 approval8161 returns a message regarding added approval of merge requests8162 unapproval8163 returns a message regarding revoking approval of merge requests8164CohortsService8165 #execute8166 returns a list of user cohorts8167GpgKeys::DestroyService8168 destroys the GPG key8169Releases::Source8170 .all8171 returns all formats of sources8172 #url8173 returns zip archived source url8174 when ref is directory structure8175 converts slash to dash8176trusted_proxies8177 with default config8178 preserves private IPs8179 filters out localhost8180 filters out bad values8181 with private IP ranges added8182 filters out private and local IPs8183 with proxy IP added8184 filters out proxy IP8185 handles invalid ip addresses8186IdentityProviderPolicy8187 #rules8188 is expected to be allowed :link8189 is expected to be allowed :unlink8190 when user is anonymous8191 is expected not to be allowed :link8192 is expected not to be allowed :unlink8193 when provider is saml8194 is expected to be allowed :link8195 is expected not to be allowed :unlink8196 when provider is cas38197 is expected to be allowed :link8198 is expected not to be allowed :unlink8199Gitlab::Pagination::Keyset8200 .available_for_type?8201 returns true for Project8202 return false for other types of relations8203 .available?8204 with order-by id asc8205 behaves like keyset pagination is available8206 returns true for Project8207 return false for other types of relations8208 with order-by id desc8209 behaves like keyset pagination is available8210 returns true for Project8211 return false for other types of relations8212 with other order-by columns8213 returns false for Project8214 return false for other types of relations8215Integrations::ChatMessage::BaseMessage8216 #fallback8217 without relative links8218 is expected to eq "Just another *markdown* message"8219 with relative links8220 is expected to eq "Check this out https://gitlab-domain.com/uploads/Screenshot1.png"8221 with multiple relative links8222 is expected to eq "Check this out https://gitlab-domain.com/uploads/Screenshot1.png. And this https://gitlab-domain.com/uploads/Screenshot2.png"8223 #strip_markup8224 input: nil, output: nil8225 returns the expected output8226 input: "", output: ""8227 returns the expected output8228 input: "[label](url)", output: "label(url)"8229 returns the expected output8230 input: "<url|label>", output: "urllabel"8231 returns the expected output8232 input: "<a href=\"url\">label</a>", output: "a href=\"url\"label/a"8233 returns the expected output8234Gitlab::Metrics::Memory8235 .gc_heap_fragmentation8236 when the Ruby heap is perfectly utilized8237 is expected to eq 08238 when the Ruby heap is greatly fragmented8239 is expected to be > 0.998240 when the Ruby heap is semi-fragmented8241 is expected to eq 0.58242TestSuiteComparerEntity8243 #as_json8244 when head suite has a newly failed test case which does not exist in base8245 contains correct compared test suite details8246 when head suite has a new error test case which does not exist in base8247 contains correct compared test suite details8248 when head suite still has a failed test case which failed in base8249 contains correct compared test suite details8250 when head suite has a success test case which failed in base8251 contains correct compared test suite details8252 when head suite has suite error8253 contains suite error for head suite8254 when base suite has suite error8255 contains suite error for head suite8256 when base and head suite both have suite errors8257 contains suite error for head suite8258Terraform/Base.gitlab-ci.yml8259 the created pipeline8260 does not create any jobs8261Ci::TriggerRequest8262 validation8263 be invalid if saving a variable8264 be valid if not saving a variable8265Ci::Runners::StaleMachinesCleanupCronWorker8266 # order random8267 #perform8268 behaves like an idempotent worker8269 is labeled as idempotent8270 performs multiple times sequentially without raising an exception8271 delegates to Ci::Runners::StaleMachinesCleanupService8272 cleans up stale runner managers8273Gitlab::Usage::Metrics::Instrumentations::CountMlCandidatesMetric8274 # order random8275 behaves like a correct instrumented metric value and query8276 behaves like a correct instrumented metric value8277 has correct value8278 behaves like a correct instrumented metric query8279 has correct generate query8280RuboCop::Cop::Gitlab::ServiceResponse8281 # order random8282 flags the use of `http_status:` parameter in ServiceResponse in initializer8283 does not flag the `http_status:` param on a homonym method8284 flags the use of `http_status:` parameter in ServiceResponse in error8285 does not flag calls without params8286 flags the use of `http_status:` parameter in ServiceResponse in success8287 does not flag the offense when `http_status` is not used8288devise/confirmations/almost_there8289 # order random8290 confirmations text8291 when correct email8292 is expected to have text "Please check your email (こんにちは@test) to confirm your account"8293 when random text8294 is expected to have text "Please check your email to confirm your account"8295 register again prompt8296 is expected to have visible link "register again with a different email" with href "/users/sign_up"8297BulkImports::Common::Pipelines::EntityFinisher8298WARNING: An expectation of `:try` was set on `nil`. To allow expectations on `nil` and suppress this message, set `RSpec::Mocks.configuration.allow_message_expectations_on_nil` to `true`. To disallow expectations on `nil`, set `RSpec::Mocks.configuration.allow_message_expectations_on_nil` to `false`. Called from /builds/gitlab-org/gitlab/spec/lib/bulk_imports/common/pipelines/entity_finisher_spec.rb:27:in `block (2 levels) in <top (required)>'.8299 updates the entity status to finished8300 when entity is in a final finished or failed state8301 does nothing8302 does nothing8303 when all entity trackers failed8304 marks entity as failed8305Gitlab::GitAccessDesign8306 #check8307 when the user is allowed to manage designs8308 is expected to be a kind of Gitlab::GitAccessResult::Success8309 when the user is not allowed to manage designs8310 raises an error8311 when the protocol is not web8312 raises an error8313Types::Ci::RunnerType8314 is expected to eq "CiRunner"8315 is expected to require graphql authorizations :read_runner8316 contains attributes related to a runner8317Ci::CopyCrossDatabaseAssociationsService8318 #execute8319 returns a success response8320ExploreHelper8321 #explore_nav_links8322 has all the expected links by default8323 #public_visibility_restricted?8324 delegates to Gitlab::VisibilityLevel8325 #projects_filter_items8326 returns correct dropdown items8327 #projects_filter_selected8328 when visibility_level is present8329 returns corresponding item8330 when visibility_level is empty8331 returns corresponding item8332RuboCop::Cop::Gitlab::EventStoreSubscriber8333 # order random8334 when a Sidekiq worker overrides #perform8335 does not register an offense8336 a non worker class8337 does not register an offense8338 when a Sidekiq worker implements #handle_event8339 does not register an offense8340 when an event store subscriber does not implement #handle_event8341 registers an offense8342 when an event store subscriber does not override #perform8343 does not register an offense8344 when an event store subscriber overrides #perform8345 registers an offense8346Gitlab::Usage::Metrics::Aggregates::Sources::RedisHll8347 .calculate_events_union8348 calls Gitlab::UsageDataCounters::HLLRedisCounter.calculate_events_union8349 prevents from using fallback value as valid union result8350 .calculate_metrics_intersections8351 uses values returned by union to compute the intersection8352 raises error if union is < 08353Gitlab::Tracking::Destinations::DatabaseEventsSnowplow8354 # order random8355 when snowplow is enabled8356 #event8357 sends event to tracker8358 increase total snowplow events counter8359 when on gitlab.com environment8360 sends event to tracker8361 for callbacks8362 on success8363 increase gitlab_successful_snowplow_events_total counter8364 on failure8365 increase gitlab_failed_snowplow_events_total counter and logs failures8366Gitlab::CrossProjectAccess::CheckCollection8367 #add_collection8368 merges the checks of 2 collections8369 #should_run?8370 returns true if one of the check says it should run8371 returns false if one of the check says it should be skipped8372Gitlab::Lazy8373 when not calling any methods8374 does not call the supplied block8375 when calling a method on the object8376 lazy loads the value returned by the block8377 #respond_to?8378 returns true for a method defined on the wrapped object8379 returns false for a method not defined on the wrapped object8380CalendarHelper8381 #calendar_url_options8382 when signed in8383 includes the current_user's feed_token8384 when signed out8385 does not have a feed_token8386 when feed token disabled8387 does not have a feed_token8388Gitlab::HealthChecks::GitalyCheck8389 #readiness8390 Gitaly server is up8391 is expected to eq [#<struct Gitlab::HealthChecks::Result name="gitaly_check", success=true, message=nil, labels={:shard=>"default"}>]8392 Gitaly server is down8393 is expected to eq [#<struct Gitlab::HealthChecks::Result name="gitaly_check", success=false, message="Connection refused", labels={:shard=>"default"}>]8394 #metrics8395 Gitaly server is up8396 provides metrics8397 Gitaly server is down8398 provides metrics8399Gitlab::Usage::Metrics::Instrumentations::InstallationCreationDateMetric8400 # order random8401 with a root user8402 behaves like a correct instrumented metric value8403 has correct value8404 without a root user8405 behaves like a correct instrumented metric value8406 has correct value8407Gitlab::Database::PostgresqlAdapter::TypeMapCache8408 #initialize_type_map8409 caches loading of types in memory8410 only reuses the cache if the connection parameters are exactly the same8411 #reload_type_map8412 clears the cache and executes the type map query again8413PagerDuty::WebhookPayloadParser8414 .call8415 when payload is a correct PagerDuty payload8416 returns parsed payload8417 when assignments summary and html_url are blank8418 returns parsed payload with blank assignees8419 when impacted_services summary and html_url are blank8420 returns parsed payload with blank impacted service8421 when payload schema is invalid8422 returns payload with blank incident8423 when event is unknown8424 returns empty payload8425Gitlab::Ci::Ansi2json::Parser8426 bold?8427 returns true if style mask matches bold format8428 returns false if style mask does not match bold format8429 matching_formats8430 returns matching formats given a style mask8431 returns an empty array if no formats match the style mask8432Google::Apis::Core::HttpCommand8433 with a successful response8434 returns the response body if block not present8435 calls block if present8436 retries with max elapsed_time and retries8437AnalyticsMergeRequestSerializer8438 when there is a single object provided8439 contains important elements of the merge request8440Gitlab::GithubImport::ImportPullRequestReviewWorker8441 is expected to includes the Gitlab::GithubImport::ObjectImporter module8442 #representation_class8443 is expected to eq Gitlab::GithubImport::Representation::PullRequestReview8444 #importer_class8445 is expected to eq Gitlab::GithubImport::Importer::PullRequestReviewImporter8446Import::BitbucketProviderRepoEntity8447 behaves like exposes required fields for import entity8448 exposes required fields8449 correctly exposes id8450 correctly exposes full name8451 correctly exposes sanitized name8452 correctly exposes provider link8453Packages::Npm::PackagePresenter8454 #name8455 returns the name8456 #versions8457 returns the versions8458 #dist_tags8459 returns the dist_tags8460Gitlab::Audit::DeployTokenAuthor8461 #initialize8462 sets correct attributes8463 sets default name when it is not provided8464Gitlab::ErrorTracking::StackTraceHighlightDecorator8465 .decorate8466 does not change issue_id8467 does not change date_received8468 decorates the stack trace context8469Ci::Runners::UnregisterRunnerService#execute8470 destroys runner8471DiffViewer::Image8472 .can_render?8473 returns false if both old and new blob are absent8474 returns true if the old blob is present8475 returns true if the new blob is present8476 returns true if both old and new blobs are present8477Users::CreateStatisticsWorker8478 #perform8479 when successful8480 create an users statistics entry8481 when unsuccessful8482 logs an error8483Gitlab::Git::Patches::Patch8484 #size8485 is correct8486Gitlab::ImportExport::AfterExportStrategyBuilder8487 .build!8488 initializes strategy with attributes param8489 when klass param is8490 null it returns the default strategy8491 not a valid class it raises StrategyNotFoundError exception8492 not a descendant of AfterExportStrategy8493Types::Packages::PackageBaseType8494 is expected to eq "Represents a package in the Package Registry"8495 is expected to require graphql authorizations :read_package8496 includes all expected fields8497Types::CiConfiguration::Sast::AnalyzersEntityType8498 is expected to eq "SastCiConfigurationAnalyzersEntity"8499 is expected to have graphql fields :name, :label, :enabled, :description, and :variables8500Types::Ci::JobArtifactType8501 has the correct fields8502Packages::Rubygems::Metadatum8503 relationships8504 is expected to belong to package required: false8505 validations8506 is expected to validate that :package cannot be empty/falsy8507 #rubygems_package_type8508 will not allow a package with a different package_type8509Serverless::DomainEntity8510 #as_json8511 has an id8512 has a domain8513Gitlab::GrapeLogging::Loggers::CloudflareLogger8514 #parameters8515 with no Cloudflare headers8516 returns an empty hash8517 with Cloudflare headers8518 returns the correct duration in seconds8519Types::CiConfiguration::Sast::Type8520 is expected to eq "SastCiConfiguration"8521 is expected to have graphql fields :global, :pipeline, and :analyzers8522API::Entities::GroupDetail8523 #as_json8524 includes prevent_sharing_groups_outside_hierarchy for a root group8525 excludes prevent_sharing_groups_outside_hierarchy for a subgroup8526groups/settings/_remove.html.haml8527 render8528 enables the Remove group button for a group8529Types::WorkItems::Widgets::LabelsType8530 exposes the expected fields8531Banzai::Filter::OutputSafety8532 when given HTML is safe8533 returns safe HTML8534 when given HTML is not safe8535 returns escaped HTML8536Types::Ci::Config::NeedType8537 is expected to eq "CiConfigNeed"8538 exposes the expected fields8539Gitlab::AppLogger8540 is expected to equal Gitlab::AppJsonLogger8541 logs to AppJsonLogger8542Gitlab::GitalyClient::DiffStitcher8543 enumeration8544 combines segregated diff messages together8545Serializers::UnsafeJson8546 .dump8547 calls object#to_json with unsafe: true and returns the result8548 .load8549 calls JSON.load and returns the result8550Sidebars::Groups::SuperSidebarMenus::MonitorMenu8551 # order random8552 defines list of NilMenuItem placeholders8553 has title and sprite_icon8554RolloutStatuses::IngressEntity8555 exposes canary weight8556Admin::UserEntity8557 #as_json8558 exposes correct attributes8559Types::MergeRequestStateEventEnum8560 has the appropriate values8561AuthorizedProjectUpdate::ProjectAccessChangedService8562 #execute8563 executes projects_authorizations refresh8564Types::Ci::VariableInterface8565 is expected to have graphql fields :id, :key, :raw, :value, and :variable_type8566Types::PermissionTypes::WorkItem8567 is expected to have graphql field :admin_parent_link8568Gitlab::GitalyClient::BlobsStitcher8569 enumeration8570 combines segregated blob messages together8571Knapsack report was generated. Preview:8572{8573 "spec/services/ci/pipeline_processing/atomic_processing_service_spec.rb": 285.5111350399984,8574 "spec/models/deployment_spec.rb": 188.29586487699999,8575 "spec/lib/gitlab/metrics/subscribers/active_record_spec.rb": 41.15832396299993,8576 "spec/tasks/gitlab/usage_data_rake_spec.rb": 112.66887772799964,8577 "spec/models/design_management/design_spec.rb": 29.016263214998617,8578 "spec/services/members/update_service_spec.rb": 69.57785266800056,8579 "spec/lib/banzai/filter/references/commit_reference_filter_spec.rb": 54.97453753700029,8580 "spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb": 53.80387416800113,8581 "spec/lib/gitlab/auth/o_auth/user_spec.rb": 37.06088001699936,8582 "spec/models/integrations/field_spec.rb": 6.2895485869994445,8583 "spec/lib/gitlab/path_regex_spec.rb": 6.842006943999877,8584 "spec/lib/gitlab/database/batch_count_spec.rb": 13.221446045999983,8585 "spec/services/merge_requests/add_todo_when_build_fails_service_spec.rb": 30.665948784999273,8586 "spec/finders/autocomplete/users_finder_spec.rb": 22.96425572299995,8587 "spec/lib/gitlab/checks/branch_check_spec.rb": 28.490070327001376,8588 "spec/services/resource_events/change_state_service_spec.rb": 14.983422238999992,8589 "spec/lib/gitlab/prometheus_client_spec.rb": 7.883068220000496,8590 "spec/services/git/tag_hooks_service_spec.rb": 23.233167927000977,8591 "spec/lib/gitlab/search/abuse_detection_spec.rb": 4.742665451998619,8592 "spec/models/projects/data_transfer_spec.rb": 5.243592151000485,8593 "spec/services/spam/spam_verdict_service_spec.rb": 4.278317068999968,8594 "spec/models/concerns/group_descendant_spec.rb": 12.831361583001126,8595 "spec/lib/gitlab/cycle_analytics/permissions_spec.rb": 17.71668764199967,8596 "spec/lib/gitlab/gfm/uploads_rewriter_spec.rb": 18.583065329999954,8597 "spec/lib/gitlab/slash_commands/command_spec.rb": 17.420262060000823,8598 "spec/lib/gitlab/ci/config/entry/variable_spec.rb": 2.6163292170003842,8599 "spec/finders/starred_projects_finder_spec.rb": 15.239589789000092,8600 "spec/services/merge_requests/update_reviewers_service_spec.rb": 16.37826700199912,8601 "spec/graphql/mutations/releases/create_spec.rb": 11.180290516000241,8602 "spec/models/bulk_imports/entity_spec.rb": 4.995992767000644,8603 "spec/lib/banzai/filter/references/design_reference_filter_spec.rb": 4.57714129300075,8604 "spec/models/snippet_input_action_spec.rb": 2.058130348999839,8605 "spec/lib/gitlab/multi_collection_paginator_spec.rb": 10.732279453000956,8606 "spec/views/projects/edit.html.haml_spec.rb": 14.430090575999202,8607 "spec/lib/gitlab/ci/config/entry/release_spec.rb": 2.2586731780011178,8608 "spec/services/merge_requests/export_csv_service_spec.rb": 9.35890294300043,8609 "spec/helpers/timeboxes_helper_spec.rb": 7.174225639999349,8610 "spec/lib/gitlab/changelog/config_spec.rb": 10.479656817000432,8611 "spec/services/merge_requests/resolved_discussion_notification_service_spec.rb": 10.128258837999965,8612 "spec/serializers/stage_entity_spec.rb": 17.209074222999334,8613 "spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb": 2.3041099359998043,8614 "spec/lib/gitlab/harbor/query_spec.rb": 1.857906962000925,8615 "spec/lib/gitlab/template_parser/ast_spec.rb": 4.547716184000819,8616 "spec/lib/sidebars/projects/menus/analytics_menu_spec.rb": 4.3128558970001905,8617 "spec/lib/bulk_imports/projects/pipelines/design_bundle_pipeline_spec.rb": 8.561593689000802,8618 "spec/lib/gitlab/auth/ldap/config_spec.rb": 2.08560247800051,8619 "spec/services/environments/create_for_build_service_spec.rb": 6.080192333998639,8620 "spec/services/pages/migrate_legacy_storage_to_deployment_service_spec.rb": 9.009910282999044,8621 "spec/presenters/snippet_blob_presenter_spec.rb": 5.760075213000164,8622 "spec/lib/gitlab/slash_commands/issue_new_spec.rb": 5.771204792999924,8623 "spec/lib/gitlab/gitaly_client/conflicts_service_spec.rb": 9.395016210000904,8624 "spec/lib/api/support/git_access_actor_spec.rb": 3.742797322000115,8625 "spec/finders/packages/conan/package_finder_spec.rb": 5.836801539000589,8626 "spec/lib/gitlab/analytics/cycle_analytics/stage_events/code_stage_start_spec.rb": 4.8111185479992855,8627 "spec/lib/gitlab/protocol_access_spec.rb": 2.0760279880014423,8628 "spec/lib/sbom/package_url/encoder_spec.rb": 1.5634749680011737,8629 "spec/config/inject_enterprise_edition_module_spec.rb": 1.520404470998983,8630 "spec/lib/gitlab/git/keep_around_spec.rb": 5.7977108510003745,8631 "spec/models/deploy_keys_project_spec.rb": 3.0668459699991217,8632 "spec/policies/base_policy_spec.rb": 1.9322821669993573,8633 "spec/finders/user_finder_spec.rb": 1.560746139000912,8634 "spec/models/packages/npm/metadatum_spec.rb": 1.6250514349994774,8635 "spec/lib/gitlab/ci/status/build/scheduled_spec.rb": 3.810049636998883,8636 "spec/services/bulk_imports/create_pipeline_trackers_service_spec.rb": 3.2324803510000493,8637 "spec/services/jira_connect_subscriptions/create_service_spec.rb": 4.2896001289991545,8638 "spec/scripts/changed-feature-flags_spec.rb": 1.0337517100015248,8639 "spec/lib/banzai/reference_parser/external_issue_parser_spec.rb": 5.637576709999848,8640 "spec/views/shared/_label_row.html.haml_spec.rb": 3.5541987420001533,8641 "spec/models/instance_configuration_spec.rb": 3.649568505999923,8642 "spec/db/production/settings_spec.rb": 5.016688886998963,8643 "spec/services/issue_links/destroy_service_spec.rb": 3.3540734739999607,8644 "spec/services/merge_requests/migrate_external_diffs_service_spec.rb": 4.446091099000114,8645 "spec/finders/users_star_projects_finder_spec.rb": 4.913917291998587,8646 "spec/lib/api/entities/release_spec.rb": 5.000689037999109,8647 "spec/services/projects/move_project_authorizations_service_spec.rb": 5.865746707000653,8648 "spec/workers/ci/resource_groups/assign_resource_from_resource_group_worker_spec.rb": 1.8109807339988038,8649 "spec/graphql/resolvers/concerns/resolves_groups_spec.rb": 1.115880143999675,8650 "spec/rack_servers/puma_spec.rb": 5.52250797600027,8651 "spec/serializers/build_action_entity_spec.rb": 5.626431701999536,8652 "spec/lib/banzai/filter/color_filter_spec.rb": 0.9686696440003288,8653 "spec/lib/gitlab/ci/project_config_spec.rb": 6.0547637559993746,8654 "spec/graphql/mutations/alert_management/http_integration/reset_token_spec.rb": 1.4052396269999008,8655 "spec/views/notify/change_in_merge_request_draft_status_email.html.haml_spec.rb": 5.3952977749995625,8656 "spec/lib/banzai/pipeline/description_pipeline_spec.rb": 1.6479724929995427,8657 "spec/policies/terraform/state_version_policy_spec.rb": 3.612607148999814,8658 "spec/lib/gitlab/octokit/middleware_spec.rb": 1.048442208999404,8659 "spec/models/bulk_imports/file_transfer/group_config_spec.rb": 1.0424427590005507,8660 "spec/lib/gitlab/auth/key_status_checker_spec.rb": 0.6752336800000194,8661 "spec/lib/gitlab/graphql/markdown_field_spec.rb": 2.4677326460005133,8662 "spec/graphql/types/color_type_spec.rb": 0.6599085609996109,8663 "spec/models/namespaces/user_namespace_spec.rb": 0.5518894980014011,8664 "spec/services/suggestions/outdate_service_spec.rb": 5.266456092000226,8665 "spec/views/projects/jobs/_generic_commit_status.html.haml_spec.rb": 3.0933965389995137,8666 "spec/workers/web_hooks/log_destroy_worker_spec.rb": 2.7183779410006537,8667 "spec/models/concerns/sensitive_serializable_hash_spec.rb": 1.8635939209998469,8668 "spec/lib/gitlab/ci/config/entry/rules_spec.rb": 1.0708425070006342,8669 "spec/tasks/gitlab/dependency_proxy/migrate_rake_spec.rb": 3.775273940000261,8670 "spec/models/concerns/exportable_spec.rb": 2.2070480910006154,8671 "spec/lib/gitlab/ci/config/entry/files_spec.rb": 0.8701811700011604,8672 "spec/lib/gitlab/ci/config/entry/workflow_spec.rb": 1.2429376479994971,8673 "spec/lib/bitbucket_server/representation/comment_spec.rb": 0.874030049000794,8674 "spec/services/users/signup_service_spec.rb": 1.912099658000443,8675 "spec/graphql/mutations/groups/update_spec.rb": 2.955856276999839,8676 "spec/workers/loose_foreign_keys/cleanup_worker_spec.rb": 2.0074457120008447,8677 "spec/services/ci/runners/process_runner_version_update_service_spec.rb": 1.9537404450002214,8678 "spec/lib/gitlab/analytics/cycle_analytics/aggregated/base_query_builder_spec.rb": 2.4399318370014953,8679 "spec/lib/gitlab/ci/status/success_warning_spec.rb": 0.9247589759997936,8680 "spec/views/shared/projects/_list.html.haml_spec.rb": 1.3271622119991662,8681 "spec/tasks/gitlab/lfs/migrate_rake_spec.rb": 2.801134565999746,8682 "spec/views/notify/autodevops_disabled_email.text.erb_spec.rb": 2.1261969459992542,8683 "spec/services/packages/debian/find_or_create_package_service_spec.rb": 2.189517541000896,8684 "spec/services/packages/nuget/metadata_extraction_service_spec.rb": 1.626553934000185,8685 "spec/helpers/projects/pipeline_helper_spec.rb": 1.8506406920005247,8686 "spec/graphql/resolvers/ci/runner_platforms_resolver_spec.rb": 0.42263198500040744,8687 "spec/rubocop/cop/rspec/factory_bot/inline_association_spec.rb": 1.6298024850002548,8688 "spec/lib/bulk_imports/common/graphql/get_members_query_spec.rb": 1.694031321001603,8689 "spec/models/integrations/jira_tracker_data_spec.rb": 1.0203429000011965,8690 "spec/graphql/resolvers/incident_management/timeline_event_tags_resolver_spec.rb": 3.515565653999147,8691 "spec/services/authorized_project_update/periodic_recalculate_service_spec.rb": 1.899884768999982,8692 "spec/services/protected_branches/update_service_spec.rb": 1.7049549000003026,8693 "spec/lib/gitlab/ci/config/yaml/result_spec.rb": 0.808460202999413,8694 "spec/models/issue_email_participant_spec.rb": 1.6791145819988742,8695 "spec/lib/gitlab/github_import/importer/lfs_object_importer_spec.rb": 0.8131962920015212,8696 "spec/models/preloaders/environments/deployment_preloader_spec.rb": 2.740494559999206,8697 "spec/lib/gitlab/cross_project_access/check_info_spec.rb": 1.0260379699993791,8698 "spec/services/ci/create_pipeline_service/limit_active_jobs_spec.rb": 2.963369977000184,8699 "spec/services/google_cloud/create_cloudsql_instance_service_spec.rb": 3.2262950020012795,8700 "spec/models/webauthn_registration_spec.rb": 0.687901328999942,8701 "spec/workers/merge_requests/resolve_todos_after_approval_worker_spec.rb": 4.441209481001351,8702 "spec/services/lfs/push_service_spec.rb": 1.4243889459994534,8703 "spec/finders/issuables/crm_contact_filter_spec.rb": 1.4211382460016466,8704 "spec/lib/api/validations/validators/file_path_spec.rb": 0.6574614219989598,8705 "spec/graphql/resolvers/alert_management/alert_resolver_spec.rb": 2.725795320000543,8706 "spec/rubocop/cop/qa/element_with_pattern_spec.rb": 0.773031524999169,8707 "spec/lib/gitlab/bullet/exclusions_spec.rb": 0.9078278670003783,8708 "spec/workers/build_hooks_worker_spec.rb": 2.146168265000597,8709 "spec/lib/gitlab/database/load_balancing/host_list_spec.rb": 0.8022298640007648,8710 "spec/workers/authorized_project_update/project_recalculate_per_user_worker_spec.rb": 1.6037953260001814,8711 "spec/lib/gitlab/ci/pipeline/seed/pipeline_spec.rb": 2.2551615569991554,8712 "spec/lib/gitlab/import_export/project/relation_saver_spec.rb": 1.3599551409988635,8713 "spec/workers/onboarding/user_added_worker_spec.rb": 0.8056458329992893,8714 "spec/graphql/types/customer_relations/organization_type_spec.rb": 0.528897139000037,8715 "spec/lib/gitlab/ci/templates/Terraform/module_base_gitlab_ci_yaml_spec.rb": 1.0640939669992804,8716 "spec/services/ci/create_pipeline_service/pre_post_stages_spec.rb": 2.1641488839995873,8717 "spec/views/dashboard/projects/_nav.html.haml_spec.rb": 1.1088476049990277,8718 "spec/lib/gitlab/alert_management/fingerprint_spec.rb": 1.5357711799988465,8719 "spec/views/groups/group_members/index.html.haml_spec.rb": 1.0645974170001864,8720 "spec/lib/gitlab/search/abuse_validators/no_abusive_term_length_validator_spec.rb": 0.44061937399965245,8721 "spec/lib/gitlab/ci/config/entry/inherit/variables_spec.rb": 0.5586354869992647,8722 "spec/graphql/types/ci/test_case_type_spec.rb": 0.4280003650001163,8723 "spec/lib/atlassian/jira_connect/serializers/author_entity_spec.rb": 0.5392833679998148,8724 "spec/services/packages/maven/metadata/append_package_file_service_spec.rb": 1.5602007180004875,8725 "spec/workers/personal_access_tokens/expiring_worker_spec.rb": 1.1585841529995378,8726 "spec/lib/gitlab/dependency_linker/podspec_linker_spec.rb": 0.7335733170002641,8727 "spec/graphql/resolvers/users/group_count_resolver_spec.rb": 1.9046502589990268,8728 "spec/serializers/merge_request_for_pipeline_entity_spec.rb": 1.984502904000692,8729 "spec/workers/ci/build_schedule_worker_spec.rb": 1.7407655179995345,8730 "spec/services/merge_requests/create_approval_event_service_spec.rb": 1.6952497710008174,8731 "spec/services/projects/count_service_spec.rb": 0.7518171060000896,8732 "spec/lib/api/ci/helpers/runner_helpers_spec.rb": 2.0679735189987696,8733 "spec/models/integrations/chat_message/merge_message_spec.rb": 0.7012130790008086,8734 "spec/services/cohorts_service_spec.rb": 2.5373368020009366,8735 "spec/services/gpg_keys/destroy_service_spec.rb": 2.3351984130003984,8736 "spec/models/releases/source_spec.rb": 1.3555146109993075,8737 "spec/initializers/trusted_proxies_spec.rb": 0.6208000639999227,8738 "spec/policies/identity_provider_policy_spec.rb": 0.8142747530000634,8739 "spec/lib/gitlab/pagination/keyset_spec.rb": 0.926105896000081,8740 "spec/models/integrations/chat_message/base_message_spec.rb": 0.6503619619998062,8741 "spec/lib/gitlab/metrics/memory_spec.rb": 0.5962228450007387,8742 "spec/serializers/test_suite_comparer_entity_spec.rb": 0.9024611880013254,8743 "spec/lib/gitlab/ci/templates/Terraform/base_gitlab_ci_yaml_spec.rb": 1.356606119999924,8744 "spec/models/ci/trigger_request_spec.rb": 0.3692881090009905,8745 "spec/workers/ci/runners/stale_machines_cleanup_cron_worker_spec.rb": 1.049759688999984,8746 "spec/lib/gitlab/usage/metrics/instrumentations/count_ml_candidates_metric_spec.rb": 1.4535472850002407,8747 "spec/rubocop/cop/gitlab/service_response_spec.rb": 0.7713584150005772,8748 "spec/views/devise/confirmations/almost_there.html.haml_spec.rb": 0.7248472569990554,8749 "spec/lib/bulk_imports/common/pipelines/entity_finisher_spec.rb": 1.4738140839999687,8750 "spec/lib/gitlab/git_access_design_spec.rb": 0.8471941300012986,8751 "spec/graphql/types/ci/runner_type_spec.rb": 0.5653891870006191,8752 "spec/services/ci/copy_cross_database_associations_service_spec.rb": 0.9765617529992596,8753 "spec/helpers/explore_helper_spec.rb": 0.7835724039996421,8754 "spec/rubocop/cop/gitlab/event_store_subscriber_spec.rb": 0.6028961849988264,8755 "spec/lib/gitlab/usage/metrics/aggregates/sources/redis_hll_spec.rb": 0.6435766419999709,8756 "spec/lib/gitlab/tracking/destinations/database_events_snowplow_spec.rb": 0.5576128580014483,8757 "spec/lib/gitlab/cross_project_access/check_collection_spec.rb": 0.43430791399987356,8758 "spec/lib/gitlab/lazy_spec.rb": 0.7039415590006683,8759 "spec/helpers/calendar_helper_spec.rb": 0.805021272999511,8760 "spec/lib/gitlab/health_checks/gitaly_check_spec.rb": 0.5379250989990396,8761 "spec/lib/gitlab/usage/metrics/instrumentations/installation_creation_date_metric_spec.rb": 0.7175397069986502,8762 "spec/lib/gitlab/database/postgresql_adapter/type_map_cache_spec.rb": 1.0643399370001134,8763 "spec/lib/pager_duty/webhook_payload_parser_spec.rb": 0.6118037139985972,8764 "spec/lib/gitlab/ci/ansi2json/parser_spec.rb": 0.6925797399999283,8765 "spec/initializers/google_api_client_spec.rb": 0.42459486499865307,8766 "spec/serializers/analytics_merge_request_serializer_spec.rb": 1.211446638999405,8767 "spec/workers/gitlab/github_import/import_pull_request_review_worker_spec.rb": 0.5538715680013411,8768 "spec/serializers/import/bitbucket_provider_repo_entity_spec.rb": 0.6409311820007133,8769 "spec/presenters/packages/npm/package_presenter_spec.rb": 0.8602962200002366,8770 "spec/lib/gitlab/audit/deploy_token_author_spec.rb": 0.4420860640002502,8771 "spec/lib/gitlab/error_tracking/stack_trace_highlight_decorator_spec.rb": 0.5108323699987523,8772 "spec/services/ci/runners/unregister_runner_service_spec.rb": 0.39669529700040584,8773 "spec/models/diff_viewer/image_spec.rb": 0.4576742530007323,8774 "spec/workers/users/create_statistics_worker_spec.rb": 1.0236008600004425,8775 "spec/lib/gitlab/git/patches/patch_spec.rb": 0.30218378199970175,8776 "spec/lib/gitlab/import_export/after_export_strategy_builder_spec.rb": 0.4937713609997445,8777 "spec/graphql/types/packages/package_base_type_spec.rb": 0.45113362399933976,8778 "spec/graphql/types/ci_configuration/sast/analyzers_entity_type_spec.rb": 0.37395715799902973,8779 "spec/graphql/types/ci/job_artifact_type_spec.rb": 0.6616052810004476,8780 "spec/models/packages/rubygems/metadatum_spec.rb": 0.5657077069990919,8781 "spec/serializers/serverless/domain_entity_spec.rb": 0.5555436180002289,8782 "spec/lib/gitlab/grape_logging/loggers/cloudflare_logger_spec.rb": 0.6813308199998573,8783 "spec/graphql/types/ci_configuration/sast/type_spec.rb": 0.45152871400023287,8784 "spec/lib/api/entities/group_detail_spec.rb": 0.592559454998991,8785 "spec/views/groups/settings/_remove.html.haml_spec.rb": 0.5761751560003177,8786 "spec/graphql/types/work_items/widgets/labels_type_spec.rb": 0.44490416400003596,8787 "spec/lib/banzai/filter/output_safety_spec.rb": 0.450752893999379,8788 "spec/graphql/types/ci/config/need_type_spec.rb": 0.42643069500081765,8789 "spec/lib/gitlab/app_logger_spec.rb": 0.5135957000002236,8790 "spec/lib/gitlab/gitaly_client/diff_stitcher_spec.rb": 0.5448807880002278,8791 "spec/lib/serializers/unsafe_json_spec.rb": 0.42160140499981935,8792 "spec/lib/sidebars/groups/super_sidebar_menus/monitor_menu_spec.rb": 0.3799560980005481,8793 "spec/serializers/rollout_statuses/ingress_entity_spec.rb": 1.0260065900001791,8794 "spec/serializers/admin/user_entity_spec.rb": 0.5796856460001436,8795 "spec/graphql/types/merge_request_state_event_enum_spec.rb": 0.40976154599957226,8796 "spec/services/authorized_project_update/project_access_changed_service_spec.rb": 0.39273214700006065,8797 "spec/graphql/types/ci/variable_interface_spec.rb": 0.7232115679998969,8798 "spec/graphql/types/permission_types/work_item_spec.rb": 0.3708238679992064,8799 "spec/lib/gitlab/gitaly_client/blobs_stitcher_spec.rb": 0.52287237900054618800}8801Knapsack global time execution for tests: 26m 38s8802Pending: (Failures listed here are expected and do not affect your suite's status)8803 1) Deployment modules behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required when creating an object does not raise an error if the internal id is blank8804 # No reason given8805 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:498806 2) Deployment modules behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required when updating an object does not raise an error if the internal id is blank8807 # No reason given8808 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:578809 3) Gitlab::Metrics::Subscribers::ActiveRecord.load_balancing_metric_counter_keys single database has expected keys8810 # Skipping because some of the extra databases [:ci, :main_clusterwide] are setup8811 # ./spec/lib/gitlab/metrics/subscribers/active_record_spec.rb:558812 4) Gitlab::Metrics::Subscribers::ActiveRecord.load_balancing_metric_counter_keys single database does not have ci keys8813 # Skipping because some of the extra databases [:ci, :main_clusterwide] are setup8814 # ./spec/lib/gitlab/metrics/subscribers/active_record_spec.rb:768815 5) Gitlab::Metrics::Subscribers::ActiveRecord.load_balancing_metric_duration_keys single database has expected keys8816 # Skipping because some of the extra databases [:ci, :main_clusterwide] are setup8817 # ./spec/lib/gitlab/metrics/subscribers/active_record_spec.rb:1148818 6) Gitlab::Metrics::Subscribers::ActiveRecord.load_balancing_metric_duration_keys single database does not have ci keys8819 # Skipping because some of the extra databases [:ci, :main_clusterwide] are setup8820 # ./spec/lib/gitlab/metrics/subscribers/active_record_spec.rb:1238821 7) DesignManagement::Design behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required when creating an object does not raise an error if the internal id is blank8822 # No reason given8823 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:498824 8) DesignManagement::Design behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required when updating an object does not raise an error if the internal id is blank8825 # No reason given8826 # ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:578827Finished in 26 minutes 44 seconds (files took 55.26 seconds to load)88283897 examples, 0 failures, 8 pending8829Randomized with seed 513968830[TEST PROF INFO] Time spent in factories: 11:39.799 (43.39% of total time)8831RSpec exited with 0.8832No examples to retry, congrats!8834Not uploading cache ruby-gems-debian-bullseye-ruby-3.0-16 due to policy8836Uploading artifacts...8837coverage/: found 5 matching artifact files and directories 8838crystalball/: found 2 matching artifact files and directories 8839WARNING: deprecations/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8840knapsack/: found 4 matching artifact files and directories 8841query_recorder/: found 2 matching artifact files and directories 8842rspec/: found 14 matching artifact files and directories 8843WARNING: tmp/capybara/: no matching files. Ensure that the artifact path is relative to the working directory (/builds/gitlab-org/gitlab) 8844log/*.log: found 16 matching artifact files and directories 8845WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4187656174/artifacts?artifact_format=zip&artifact_type=archive&expire_in=31d new-url=https://gitlab.com8846WARNING: Retrying... context=artifacts-uploader error=request redirected8847Uploading artifacts as "archive" to coordinator... 201 Created id=4187656174 responseStatus=201 Created token=64_aSSWf8848Uploading artifacts...8849rspec/junit_rspec.xml: found 1 matching artifact files and directories 8850WARNING: Upload request redirected location=https://gitlab.com/api/v4/jobs/4187656174/artifacts?artifact_format=gzip&artifact_type=junit&expire_in=31d new-url=https://gitlab.com8851WARNING: Retrying... context=artifacts-uploader error=request redirected8852Uploading artifacts as "junit" to coordinator... 201 Created id=4187656174 responseStatus=201 Created token=64_aSSWf8854Job succeeded