Commit 7b51049d authored by Gabriel Mazetto's avatar Gabriel Mazetto Committed by Nick Thomas

Execute FDW SystemChecks only in Geo Secondary node

parent 3551d6a3
...@@ -2,10 +2,10 @@ module SystemCheck ...@@ -2,10 +2,10 @@ module SystemCheck
module Geo module Geo
class FdwEnabledCheck < SystemCheck::BaseCheck class FdwEnabledCheck < SystemCheck::BaseCheck
set_name 'GitLab Geo tracking database is configured to use Foreign Data Wrapper?' 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? def skip?
!Gitlab::Geo.enabled? !Gitlab::Geo.secondary?
end end
def check? def check?
......
...@@ -2,17 +2,19 @@ module SystemCheck ...@@ -2,17 +2,19 @@ module SystemCheck
module Geo module Geo
class FdwSchemaUpToDateCheck < SystemCheck::BaseCheck class FdwSchemaUpToDateCheck < SystemCheck::BaseCheck
set_name 'GitLab Geo tracking database Foreign Data Wrapper schema is up-to-date?' 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? def skip?
unless Gitlab::Geo.enabled? unless Gitlab::Geo.secondary?
self.skip_reason = 'Geo is not enabled' self.skip_reason = NOT_SECONDARY_NODE
return true return true
end end
unless Gitlab::Geo::Fdw.enabled? unless Gitlab::Geo::Fdw.enabled?
self.skip_reason = 'Foreign Data Wrapper is not configured' self.skip_reason = FDW_NOT_CONFIGURED
return true return true
end 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| ...@@ -200,6 +200,10 @@ RSpec.configure do |config|
example.run if Gitlab::Database.postgresql? example.run if Gitlab::Database.postgresql?
end end
config.around(:each, :geo_tracking_db) do |example|
example.run if Gitlab::Geo.geo_database_configured?
end
config.around(:each, :postgresql) do |example| config.around(:each, :postgresql) do |example|
example.run if Gitlab::Database.postgresql? example.run if Gitlab::Database.postgresql?
end 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