diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-12-20 16:37:47 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-12-20 16:37:47 +0300 |
commit | aee0a117a889461ce8ced6fcf73207fe017f1d99 (patch) | |
tree | 891d9ef189227a8445d83f35c1b0fc99573f4380 /spec/support/database | |
parent | 8d46af3258650d305f53b819eabf7ab18d22f59e (diff) |
Add latest changes from gitlab-org/gitlab@14-6-stable-eev14.6.0-rc42
Diffstat (limited to 'spec/support/database')
-rw-r--r-- | spec/support/database/cross-database-modification-allowlist.yml | 59 | ||||
-rw-r--r-- | spec/support/database/multiple_databases.rb | 37 | ||||
-rw-r--r-- | spec/support/database/prevent_cross_joins.rb | 10 | ||||
-rw-r--r-- | spec/support/database/query_analyzer.rb | 12 |
4 files changed, 41 insertions, 77 deletions
diff --git a/spec/support/database/cross-database-modification-allowlist.yml b/spec/support/database/cross-database-modification-allowlist.yml index d05812a64eb..d6e74349069 100644 --- a/spec/support/database/cross-database-modification-allowlist.yml +++ b/spec/support/database/cross-database-modification-allowlist.yml @@ -1,90 +1,31 @@ -- "./ee/spec/controllers/projects/settings/access_tokens_controller_spec.rb" -- "./ee/spec/lib/gitlab/ci/templates/Jobs/dast_default_branch_gitlab_ci_yaml_spec.rb" - "./ee/spec/mailers/notify_spec.rb" -- "./ee/spec/models/ci/bridge_spec.rb" -- "./ee/spec/models/ci/build_spec.rb" -- "./ee/spec/models/ci/minutes/additional_pack_spec.rb" -- "./ee/spec/models/ee/ci/job_artifact_spec.rb" - "./ee/spec/models/group_member_spec.rb" -- "./ee/spec/replicators/geo/pipeline_artifact_replicator_spec.rb" - "./ee/spec/replicators/geo/terraform_state_version_replicator_spec.rb" -- "./ee/spec/services/ci/destroy_pipeline_service_spec.rb" - "./ee/spec/services/ci/retry_build_service_spec.rb" -- "./ee/spec/services/ci/subscribe_bridge_service_spec.rb" -- "./ee/spec/services/deployments/auto_rollback_service_spec.rb" -- "./ee/spec/services/ee/ci/job_artifacts/destroy_all_expired_service_spec.rb" -- "./ee/spec/services/ee/users/destroy_service_spec.rb" -- "./ee/spec/services/projects/transfer_service_spec.rb" -- "./ee/spec/services/security/security_orchestration_policies/rule_schedule_service_spec.rb" - "./spec/controllers/abuse_reports_controller_spec.rb" -- "./spec/controllers/admin/spam_logs_controller_spec.rb" -- "./spec/controllers/admin/users_controller_spec.rb" - "./spec/controllers/omniauth_callbacks_controller_spec.rb" - "./spec/controllers/projects/issues_controller_spec.rb" -- "./spec/controllers/projects/pipelines_controller_spec.rb" -- "./spec/controllers/projects/settings/access_tokens_controller_spec.rb" - "./spec/features/issues/issue_detail_spec.rb" - "./spec/features/projects/pipelines/pipeline_spec.rb" - "./spec/features/signed_commits_spec.rb" - "./spec/helpers/issuables_helper_spec.rb" - "./spec/lib/gitlab/auth_spec.rb" - "./spec/lib/gitlab/ci/pipeline/chain/create_spec.rb" -- "./spec/lib/gitlab/ci/pipeline/chain/seed_block_spec.rb" -- "./spec/lib/gitlab/ci/pipeline/seed/build_spec.rb" -- "./spec/lib/gitlab/ci/templates/5_minute_production_app_ci_yaml_spec.rb" -- "./spec/lib/gitlab/ci/templates/AWS/deploy_ecs_gitlab_ci_yaml_spec.rb" -- "./spec/lib/gitlab/ci/templates/Jobs/deploy_gitlab_ci_yaml_spec.rb" -- "./spec/lib/gitlab/ci/templates/auto_devops_gitlab_ci_yaml_spec.rb" -- "./spec/lib/gitlab/ci/templates/managed_cluster_applications_gitlab_ci_yaml_spec.rb" - "./spec/lib/gitlab/email/handler/create_issue_handler_spec.rb" - "./spec/lib/gitlab/email/handler/create_merge_request_handler_spec.rb" - "./spec/lib/gitlab/email/handler/create_note_handler_spec.rb" - "./spec/lib/gitlab/email/handler/create_note_on_issuable_handler_spec.rb" -- "./spec/lib/peek/views/active_record_spec.rb" -- "./spec/models/ci/build_need_spec.rb" - "./spec/models/ci/build_trace_chunk_spec.rb" -- "./spec/models/ci/group_variable_spec.rb" - "./spec/models/ci/job_artifact_spec.rb" -- "./spec/models/ci/job_variable_spec.rb" -- "./spec/models/ci/pipeline_spec.rb" - "./spec/models/ci/runner_spec.rb" -- "./spec/models/ci/variable_spec.rb" - "./spec/models/clusters/applications/runner_spec.rb" -- "./spec/models/commit_status_spec.rb" -- "./spec/models/concerns/batch_destroy_dependent_associations_spec.rb" -- "./spec/models/concerns/bulk_insertable_associations_spec.rb" -- "./spec/models/concerns/has_environment_scope_spec.rb" -- "./spec/models/concerns/token_authenticatable_spec.rb" - "./spec/models/design_management/version_spec.rb" - "./spec/models/hooks/system_hook_spec.rb" - "./spec/models/members/project_member_spec.rb" -- "./spec/models/spam_log_spec.rb" - "./spec/models/user_spec.rb" - "./spec/models/user_status_spec.rb" -- "./spec/requests/api/ci/pipeline_schedules_spec.rb" -- "./spec/requests/api/ci/pipelines_spec.rb" -- "./spec/requests/api/commit_statuses_spec.rb" - "./spec/requests/api/commits_spec.rb" -- "./spec/requests/api/graphql/mutations/ci/pipeline_destroy_spec.rb" -- "./spec/requests/api/resource_access_tokens_spec.rb" -- "./spec/requests/api/users_spec.rb" -- "./spec/services/ci/create_pipeline_service/environment_spec.rb" -- "./spec/services/ci/create_pipeline_service_spec.rb" -- "./spec/services/ci/destroy_pipeline_service_spec.rb" -- "./spec/services/ci/ensure_stage_service_spec.rb" -- "./spec/services/ci/expire_pipeline_cache_service_spec.rb" -- "./spec/services/ci/job_artifacts/destroy_all_expired_service_spec.rb" -- "./spec/services/ci/job_artifacts/destroy_associations_service_spec.rb" -- "./spec/services/ci/pipeline_bridge_status_service_spec.rb" -- "./spec/services/ci/pipelines/add_job_service_spec.rb" - "./spec/services/ci/retry_build_service_spec.rb" -- "./spec/services/groups/transfer_service_spec.rb" -- "./spec/services/projects/destroy_service_spec.rb" - "./spec/services/projects/overwrite_project_service_spec.rb" -- "./spec/services/projects/transfer_service_spec.rb" -- "./spec/services/resource_access_tokens/revoke_service_spec.rb" -- "./spec/services/users/destroy_service_spec.rb" -- "./spec/services/users/reject_service_spec.rb" - "./spec/workers/merge_requests/create_pipeline_worker_spec.rb" -- "./spec/workers/remove_expired_members_worker_spec.rb" - "./spec/workers/repository_cleanup_worker_spec.rb" diff --git a/spec/support/database/multiple_databases.rb b/spec/support/database/multiple_databases.rb index 9e72ea589e3..94857b47127 100644 --- a/spec/support/database/multiple_databases.rb +++ b/spec/support/database/multiple_databases.rb @@ -6,6 +6,10 @@ module Database skip 'Skipping because multiple databases not set up' unless Gitlab::Database.has_config?(:ci) end + def skip_if_multiple_databases_are_setup + skip 'Skipping because multiple databases are set up' if Gitlab::Database.has_config?(:ci) + end + def reconfigure_db_connection(name: nil, config_hash: {}, model: ActiveRecord::Base, config_model: nil) db_config = (config_model || model).connection_db_config @@ -46,6 +50,26 @@ module Database new_handler&.clear_all_connections! end # rubocop:enable Database/MultipleDatabases + + def with_added_ci_connection + if Gitlab::Database.has_config?(:ci) + # No need to add a ci: connection if we already have one + yield + else + with_reestablished_active_record_base(reconnect: true) do + reconfigure_db_connection( + name: :ci, + model: Ci::ApplicationRecord, + config_model: ActiveRecord::Base + ) + + yield + + # Cleanup connection_specification_name for Ci::ApplicationRecord + Ci::ApplicationRecord.remove_connection + end + end + end end module ActiveRecordBaseEstablishConnection @@ -69,18 +93,9 @@ RSpec.configure do |config| end end - config.around(:each, :mocked_ci_connection) do |example| - with_reestablished_active_record_base(reconnect: true) do - reconfigure_db_connection( - name: :ci, - model: Ci::ApplicationRecord, - config_model: ActiveRecord::Base - ) - + config.around(:each, :add_ci_connection) do |example| + with_added_ci_connection do example.run - - # Cleanup connection_specification_name for Ci::ApplicationRecord - Ci::ApplicationRecord.remove_connection end end end diff --git a/spec/support/database/prevent_cross_joins.rb b/spec/support/database/prevent_cross_joins.rb index e69374fbc70..42c69a26788 100644 --- a/spec/support/database/prevent_cross_joins.rb +++ b/spec/support/database/prevent_cross_joins.rb @@ -31,9 +31,13 @@ module Database # See https://gitlab.com/gitlab-org/gitlab/-/issues/339396 return if sql.include?("DISABLE TRIGGER") || sql.include?("ENABLE TRIGGER") - # PgQuery might fail in some cases due to limited nesting: - # https://github.com/pganalyze/pg_query/issues/209 - tables = PgQuery.parse(sql).tables + tables = begin + PgQuery.parse(sql).tables + rescue PgQuery::ParseError + # PgQuery might fail in some cases due to limited nesting: + # https://github.com/pganalyze/pg_query/issues/209 + return + end schemas = ::Gitlab::Database::GitlabSchema.table_schemas(tables) diff --git a/spec/support/database/query_analyzer.rb b/spec/support/database/query_analyzer.rb index 85fa55f81ef..6d6627d54b9 100644 --- a/spec/support/database/query_analyzer.rb +++ b/spec/support/database/query_analyzer.rb @@ -4,11 +4,15 @@ # can be disabled selectively RSpec.configure do |config| - config.around do |example| + config.before do |example| if example.metadata.fetch(:query_analyzers, true) - ::Gitlab::Database::QueryAnalyzer.instance.within { example.run } - else - example.run + ::Gitlab::Database::QueryAnalyzer.instance.begin! + end + end + + config.after do |example| + if example.metadata.fetch(:query_analyzers, true) + ::Gitlab::Database::QueryAnalyzer.instance.end! end end end |