61 lines
2 KiB
Ruby
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
|