Commit cac6a815 authored by Nick Thomas's avatar Nick Thomas

Merge branch '5266-fix-fdw-check' into 'master'

Execute FDW SystemChecks only in Geo Secondary node

Closes #5266

See merge request gitlab-org/gitlab-ee!4970
parents 3551d6a3 7b51049d
......@@ -2,10 +2,10 @@ module SystemCheck
module Geo
class FdwEnabledCheck < SystemCheck::BaseCheck
set_name 'GitLab Geo tracking database is configured to use Foreign Data Wrapper?'
set_skip_reason 'Geo is not enabled'
set_skip_reason 'not a secondary node'
def skip?
!Gitlab::Geo.enabled?
!Gitlab::Geo.secondary?
end
def check?
......
......@@ -2,17 +2,19 @@ module SystemCheck
module Geo
class FdwSchemaUpToDateCheck < SystemCheck::BaseCheck
set_name 'GitLab Geo tracking database Foreign Data Wrapper schema is up-to-date?'
set_skip_reason 'Geo is not enabled'
NOT_SECONDARY_NODE = 'not a secondary node'.freeze
FDW_NOT_CONFIGURED = 'foreign data wrapper is not configured'.freeze
def skip?
unless Gitlab::Geo.enabled?
self.skip_reason = 'Geo is not enabled'
unless Gitlab::Geo.secondary?
self.skip_reason = NOT_SECONDARY_NODE
return true
end
unless Gitlab::Geo::Fdw.enabled?
self.skip_reason = 'Foreign Data Wrapper is not configured'
self.skip_reason = FDW_NOT_CONFIGURED
return true
end
......
require 'spec_helper'
require 'rake_helper'
describe SystemCheck::Geo::FdwEnabledCheck, :geo do
describe '#skip?' do
subject { described_class.new.skip? }
it 'skips when Geo is disabled' do
allow(Gitlab::Geo).to receive(:enabled?) { false }
is_expected.to be_truthy
end
it 'skips when Geo is enabled but its a primary node' do
allow(Gitlab::Geo).to receive(:enabled?) { true }
allow(Gitlab::Geo).to receive(:secondary?) { false }
is_expected.to be_truthy
end
it 'does not skip when Geo is enabled and its a secondary node' do
allow(Gitlab::Geo).to receive(:enabled?) { true }
allow(Gitlab::Geo).to receive(:secondary?) { true }
is_expected.to be_falsey
end
end
describe '#check?' do
context 'with functional FDW environment', :geo_tracking_db do
it 'returns true' do
expect(subject.check?).to be_truthy
end
end
end
end
require 'spec_helper'
require 'rake_helper'
describe SystemCheck::Geo::FdwSchemaUpToDateCheck, :geo do
describe '#skip?' do
it 'skips when Geo is disabled' do
allow(Gitlab::Geo).to receive(:enabled?) { false }
expect(subject.skip?).to be_truthy
expect(subject.skip_reason).to eq('not a secondary node')
end
it 'skips when Geo is enabled but its a primary node' do
allow(Gitlab::Geo).to receive(:enabled?) { true }
allow(Gitlab::Geo).to receive(:secondary?) { false }
expect(subject.skip?).to be_truthy
expect(subject.skip_reason).to eq('not a secondary node')
end
it 'skips when FDW is disabled' do
allow(Gitlab::Geo).to receive(:enabled?) { true }
allow(Gitlab::Geo).to receive(:secondary?) { true }
allow(Gitlab::Geo::Fdw).to receive(:enabled?) { false }
expect(subject.skip?).to be_truthy
expect(subject.skip_reason).to eq('foreign data wrapper is not configured')
end
it 'does not skip when Geo is enabled, its a secondary node and FDW is enabled' do
allow(Gitlab::Geo).to receive(:enabled?) { true }
allow(Gitlab::Geo).to receive(:secondary?) { true }
allow(Gitlab::Geo::Fdw).to receive(:enabled?) { true }
expect(subject.skip?).to be_falsey
end
end
context 'with functional FDW environment', :geo_tracking_db do
it 'returns true' do
expect(subject.check?).to be_truthy
end
end
end
......@@ -200,6 +200,10 @@ RSpec.configure do |config|
example.run if Gitlab::Database.postgresql?
end
config.around(:each, :geo_tracking_db) do |example|
example.run if Gitlab::Geo.geo_database_configured?
end
config.around(:each, :postgresql) do |example|
example.run if Gitlab::Database.postgresql?
end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment