From 0c872e02b2c822e3397515ec324051ff540f0cd5 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Tue, 20 Dec 2022 14:22:11 +0000 Subject: Add latest changes from gitlab-org/gitlab@15-7-stable-ee --- spec/initializers/database_config_spec.rb | 30 ++++++++++++++++---- spec/initializers/diagnostic_reports_spec.rb | 32 ++++++++++++++-------- .../forbid_sidekiq_in_transactions_spec.rb | 6 ++-- spec/initializers/lograge_spec.rb | 2 +- spec/initializers/rails_yaml_safe_load_spec.rb | 5 +++- 5 files changed, 51 insertions(+), 24 deletions(-) (limited to 'spec/initializers') diff --git a/spec/initializers/database_config_spec.rb b/spec/initializers/database_config_spec.rb index 230f1296760..bbb5e7b1923 100644 --- a/spec/initializers/database_config_spec.rb +++ b/spec/initializers/database_config_spec.rb @@ -7,15 +7,33 @@ RSpec.describe 'Database config initializer', :reestablished_active_record_base load Rails.root.join('config/initializers/database_config.rb') end - it 'retains the correct database name for the connection' do - previous_db_name = ApplicationRecord.connection.pool.db_config.name + shared_examples 'does not change connection attributes' do + it 'retains the correct database name for connection' do + previous_db_name = database_base_model.connection.pool.db_config.name - subject + subject - expect(ApplicationRecord.connection.pool.db_config.name).to eq(previous_db_name) + expect(database_base_model.connection.pool.db_config.name).to eq(previous_db_name) + end + + it 'does not overwrite custom pool settings' do + expect { subject }.not_to change { database_base_model.connection_db_config.pool } + end + end + + context 'when main database connection' do + let(:database_base_model) { Gitlab::Database.database_base_models[:main] } + + it_behaves_like 'does not change connection attributes' end - it 'does not overwrite custom pool settings' do - expect { subject }.not_to change { ActiveRecord::Base.connection_db_config.pool } + context 'when ci database connection' do + before do + skip_if_multiple_databases_not_setup + end + + let(:database_base_model) { Gitlab::Database.database_base_models[:ci] } + + it_behaves_like 'does not change connection attributes' end end diff --git a/spec/initializers/diagnostic_reports_spec.rb b/spec/initializers/diagnostic_reports_spec.rb index 01b1ed9b7b5..dc989efe809 100644 --- a/spec/initializers/diagnostic_reports_spec.rb +++ b/spec/initializers/diagnostic_reports_spec.rb @@ -2,15 +2,17 @@ require 'spec_helper' -RSpec.describe 'diagnostic reports' do +RSpec.describe 'diagnostic reports', :aggregate_failures, feature_category: :application_performance do subject(:load_initializer) do load Rails.root.join('config/initializers/diagnostic_reports.rb') end - shared_examples 'does not modify worker startup hooks' do + shared_examples 'does not modify worker hooks' do it do expect(Gitlab::Cluster::LifecycleEvents).not_to receive(:on_worker_start) + expect(Gitlab::Cluster::LifecycleEvents).not_to receive(:on_worker_stop) expect(Gitlab::Memory::ReportsDaemon).not_to receive(:instance) + expect(Gitlab::Memory::Reporter).not_to receive(:new) load_initializer end @@ -27,21 +29,27 @@ RSpec.describe 'diagnostic reports' do end let(:report_daemon) { instance_double(Gitlab::Memory::ReportsDaemon) } + let(:reporter) { instance_double(Gitlab::Memory::Reporter) } it 'modifies worker startup hooks, starts Gitlab::Memory::ReportsDaemon' do expect(Gitlab::Cluster::LifecycleEvents).to receive(:on_worker_start).and_call_original - + expect(Gitlab::Cluster::LifecycleEvents).to receive(:on_worker_stop) # stub this out to not mutate global state expect_next_instance_of(Gitlab::Memory::ReportsDaemon) do |daemon| - expect(daemon).to receive(:start).and_call_original + expect(daemon).to receive(:start) + end - # make sleep no-op - allow(daemon).to receive(:sleep).and_return(nil) + load_initializer + end - # let alive return 3 times: true, true, false - allow(daemon).to receive(:alive).and_return(true, true, false) - end + it 'writes scheduled heap dumps in on_worker_stop' do + expect(Gitlab::Cluster::LifecycleEvents).to receive(:on_worker_start) + expect(Gitlab::Cluster::LifecycleEvents).to receive(:on_worker_stop).and_call_original + expect(Gitlab::Memory::Reporter).to receive(:new).and_return(reporter) + expect(reporter).to receive(:run_report).with(an_instance_of(Gitlab::Memory::Reports::HeapDump)) load_initializer + # This is necessary because this hook normally fires during worker shutdown. + Gitlab::Cluster::LifecycleEvents.do_worker_stop end end @@ -50,7 +58,7 @@ RSpec.describe 'diagnostic reports' do allow(::Gitlab::Runtime).to receive(:puma?).and_return(false) end - include_examples 'does not modify worker startup hooks' + include_examples 'does not modify worker hooks' end end @@ -59,7 +67,7 @@ RSpec.describe 'diagnostic reports' do allow(::Gitlab::Runtime).to receive(:puma?).and_return(true) end - include_examples 'does not modify worker startup hooks' + include_examples 'does not modify worker hooks' end context 'when GITLAB_DIAGNOSTIC_REPORTS_ENABLED is set to false' do @@ -68,6 +76,6 @@ RSpec.describe 'diagnostic reports' do allow(::Gitlab::Runtime).to receive(:puma?).and_return(true) end - include_examples 'does not modify worker startup hooks' + include_examples 'does not modify worker hooks' end end diff --git a/spec/initializers/forbid_sidekiq_in_transactions_spec.rb b/spec/initializers/forbid_sidekiq_in_transactions_spec.rb index a89ac73f6fa..7b1907a7451 100644 --- a/spec/initializers/forbid_sidekiq_in_transactions_spec.rb +++ b/spec/initializers/forbid_sidekiq_in_transactions_spec.rb @@ -34,8 +34,7 @@ RSpec.describe 'Sidekiq::Worker' do Class.new do include Sidekiq::Worker - def perform - end + def perform; end end end @@ -47,8 +46,7 @@ RSpec.describe 'Sidekiq::Worker' do context 'for mailers' do let(:mailer_class) do Class.new(ApplicationMailer) do - def test_mail - end + def test_mail; end end end diff --git a/spec/initializers/lograge_spec.rb b/spec/initializers/lograge_spec.rb index 0a794e8ebcd..c423c144dc2 100644 --- a/spec/initializers/lograge_spec.rb +++ b/spec/initializers/lograge_spec.rb @@ -93,7 +93,7 @@ RSpec.describe 'lograge', type: :request do include MemoryInstrumentationHelper before do - skip_memory_instrumentation! + verify_memory_instrumentation_available! end it 'logs memory usage metrics' do diff --git a/spec/initializers/rails_yaml_safe_load_spec.rb b/spec/initializers/rails_yaml_safe_load_spec.rb index 8cf6a3676e0..714c568b07a 100644 --- a/spec/initializers/rails_yaml_safe_load_spec.rb +++ b/spec/initializers/rails_yaml_safe_load_spec.rb @@ -3,6 +3,8 @@ require 'spec_helper' RSpec.describe 'Rails YAML safe load' do + let_it_be(:project_namespace) { create(:project_namespace) } + let(:unsafe_load) { false } let(:klass) do @@ -13,7 +15,8 @@ RSpec.describe 'Rails YAML safe load' do end end - let(:instance) { klass.new(description: data) } + let(:issue_type) { WorkItems::Type.default_by_type(:issue) } + let(:instance) { klass.new(description: data, work_item_type_id: issue_type.id, namespace_id: project_namespace.id) } context 'with default permitted classes' do let(:data) do -- cgit v1.2.3