summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/database_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/gitlab/database_spec.rb')
-rw-r--r--spec/lib/gitlab/database_spec.rb20
1 files changed, 20 insertions, 0 deletions
diff --git a/spec/lib/gitlab/database_spec.rb b/spec/lib/gitlab/database_spec.rb
index 452a662bdcb..c893bca9e62 100644
--- a/spec/lib/gitlab/database_spec.rb
+++ b/spec/lib/gitlab/database_spec.rb
@@ -237,6 +237,26 @@ RSpec.describe Gitlab::Database do
end
end
+ it 'does return a valid schema for a replica connection' do
+ with_replica_pool_for(ActiveRecord::Base) do |main_replica_pool|
+ expect(described_class.gitlab_schemas_for_connection(main_replica_pool.connection)).to include(:gitlab_main, :gitlab_shared)
+ end
+
+ with_replica_pool_for(Ci::ApplicationRecord) do |ci_replica_pool|
+ expect(described_class.gitlab_schemas_for_connection(ci_replica_pool.connection)).to include(:gitlab_ci, :gitlab_shared)
+ end
+ end
+
+ def with_replica_pool_for(base_model)
+ config = Gitlab::Database::LoadBalancing::Configuration.new(base_model, [base_model.connection_pool.db_config.host])
+ lb = Gitlab::Database::LoadBalancing::LoadBalancer.new(config)
+ pool = lb.create_replica_connection_pool(1)
+
+ yield pool
+ ensure
+ pool&.disconnect!
+ end
+
context "when there's CI connection", :request_store do
before do
skip_if_multiple_databases_not_setup