debian-mirror-gitlab/spec/tasks/gitlab/db/decomposition/connection_status_spec.rb
2023-06-20 00:43:36 +05:30

61 lines
2 KiB
Ruby

# frozen_string_literal: true
require 'rake_helper'
RSpec.describe 'gitlab:db:decomposition:connection_status', feature_category: :cell do
let(:max_connections) { 500 }
let(:current_connections) { 300 }
subject { run_rake_task('gitlab:db:decomposition:connection_status') }
before :all do
Rake.application.rake_require 'tasks/gitlab/db/decomposition/connection_status'
end
before do
allow(ApplicationRecord.connection).to receive(:select_one).with(any_args).and_return(
{ "active" => current_connections, "max" => max_connections }
)
end
context 'when separate ci database is not configured' do
before do
skip_if_multiple_databases_are_setup
end
context "when PostgreSQL max_connections is too low" do
it 'suggests to increase it' do
expect { subject }.to output(
"Currently using #{current_connections} connections out of #{max_connections} max_connections,\n" \
"which may run out when you switch to two database connections.\n\n" \
"Consider increasing PostgreSQL 'max_connections' setting.\n" \
"Depending on the installation method, there are different ways to\n" \
"increase that setting. Please consult the GitLab documentation.\n"
).to_stdout
end
end
context "when PostgreSQL max_connections is high enough" do
let(:max_connections) { 1000 }
it 'only shows current status' do
expect { subject }.to output(
"Currently using #{current_connections} connections out of #{max_connections} max_connections,\n" \
"which is enough for running GitLab using two database connections.\n"
).to_stdout
end
end
end
context 'when separate ci database is configured' do
before do
skip_if_multiple_databases_not_setup
end
it "does not show connection information" do
expect { subject }.to output(
"GitLab database already running on two connections\n"
).to_stdout
end
end
end