Commit 8d717e94 authored by Robert Speicher's avatar Robert Speicher

Merge branch 'sh-optimize-geo-specs-db-clean' into 'master'

Optimize Geo specs by using deletion strategy for DB cleaner only when necessary

Closes #4259

See merge request gitlab-org/gitlab-ee!3716
parents b5862567 169507c4
require 'spec_helper'
# Disable transactions via :truncate method because a foreign table
# can't see changes inside a transaction of a different connection.
describe Geo::AttachmentRegistryFinder, :geo, :truncate do
describe Geo::AttachmentRegistryFinder, :geo do
include ::EE::GeoHelpers
let(:secondary) { create(:geo_node) }
......@@ -28,7 +26,9 @@ describe Geo::AttachmentRegistryFinder, :geo, :truncate do
stub_current_geo_node(secondary)
end
context 'FDW' do
# Disable transactions via :delete method because a foreign table
# can't see changes inside a transaction of a different connection.
context 'FDW', :delete do
before do
skip('FDW is not configured') if Gitlab::Database.postgresql? && !Gitlab::Geo.fdw?
end
......
require 'spec_helper'
# Disable transactions via :truncate method because a foreign table
# can't see changes inside a transaction of a different connection.
describe Geo::ExpireUploadsFinder, :geo, :truncate do
describe Geo::ExpireUploadsFinder, :geo do
let(:project) { create(:project) }
context 'FDW' do
# Disable transactions via :delete method because a foreign table
# can't see changes inside a transaction of a different connection.
context 'FDW', :delete do
before do
skip('FDW is not configured') if Gitlab::Database.postgresql? && !Gitlab::Geo.fdw?
end
......
require 'spec_helper'
# Disable transactions via :truncate method because a foreign table
# can't see changes inside a transaction of a different connection.
describe Geo::ProjectRegistryFinder, :geo, :truncate do
describe Geo::ProjectRegistryFinder, :geo do
include ::EE::GeoHelpers
let(:secondary) { create(:geo_node) }
......@@ -154,7 +152,9 @@ describe Geo::ProjectRegistryFinder, :geo, :truncate do
end
end
context 'FDW' do
# Disable transactions via :delete method because a foreign table
# can't see changes inside a transaction of a different connection.
context 'FDW', :delete do
before do
skip('FDW is not configured') if Gitlab::Database.postgresql? && !Gitlab::Geo.fdw?
end
......
require 'spec_helper'
# Disable transactions via :truncate method because a foreign table
# can't see changes inside a transaction of a different connection.
describe GeoNodeStatus, :geo, :truncate do
describe GeoNodeStatus, :geo do
include ::EE::GeoHelpers
let!(:primary) { create(:geo_node, :primary) }
......@@ -52,7 +50,9 @@ describe GeoNodeStatus, :geo, :truncate do
end
end
describe '#attachments_synced_count' do
# Disable transactions via :delete method because a foreign table
# can't see changes inside a transaction of a different connection.
describe '#attachments_synced_count', :delete do
it 'only counts successful syncs' do
create_list(:user, 3, avatar: fixture_file_upload(Rails.root + 'spec/fixtures/dk.png', 'image/png'))
uploads = Upload.all.pluck(:id)
......@@ -95,7 +95,7 @@ describe GeoNodeStatus, :geo, :truncate do
end
end
describe '#attachments_failed_count' do
describe '#attachments_failed_count', :delete do
it 'counts failed avatars, attachment, personal snippets and files' do
# These two should be ignored
create(:geo_file_registry, :lfs, :with_file, success: false)
......@@ -110,7 +110,7 @@ describe GeoNodeStatus, :geo, :truncate do
end
end
describe '#attachments_synced_in_percentage' do
describe '#attachments_synced_in_percentage', :delete do
let(:avatar) { fixture_file_upload(Rails.root.join('spec/fixtures/dk.png')) }
let(:upload_1) { create(:upload, model: group, path: avatar) }
let(:upload_2) { create(:upload, model: project_1, path: avatar) }
......
require 'spec_helper'
# Disable transactions via :truncate method because a foreign table
# Disable transactions via :delete method because a foreign table
# can't see changes inside a transaction of a different connection.
describe Geo::FilesExpireService, :geo, :truncate do
describe Geo::FilesExpireService, :geo, :delete do
let(:project) { create(:project) }
let!(:old_full_path) { project.full_path }
subject { described_class.new(project, old_full_path) }
......
......@@ -21,6 +21,10 @@ RSpec.configure do |config|
DatabaseCleaner.strategy = :truncation, { except: %w[licenses] }
end
config.before(:each, :delete) do
DatabaseCleaner.strategy = :deletion, { except: %w[licenses] }
end
config.before(:each, :migration) do
DatabaseCleaner.strategy = :truncation, { cache_tables: false }
end
......
require 'spec_helper'
# Disable transactions via :truncate method because a foreign table
# can't see changes inside a transaction of a different connection.
describe Geo::FileDownloadDispatchWorker, :geo, :truncate do
describe Geo::FileDownloadDispatchWorker, :geo do
include ::EE::GeoHelpers
let(:primary) { create(:geo_node, :primary, host: 'primary-geo-node') }
......@@ -171,7 +169,9 @@ describe Geo::FileDownloadDispatchWorker, :geo, :truncate do
end
end
describe 'when PostgreSQL FDW is available', :geo do
# Disable transactions via :delete method because a foreign table
# can't see changes inside a transaction of a different connection.
describe 'when PostgreSQL FDW is available', :geo, :delete do
# Skip if FDW isn't activated on this database
it_behaves_like '#perform', Gitlab::Database.postgresql? && !Gitlab::Geo.fdw?
end
......
require 'spec_helper'
# Disable transactions via :truncate method because a foreign table
# Disable transactions via :delete method because a foreign table
# can't see changes inside a transaction of a different connection.
describe Geo::RepositoryShardSyncWorker, :geo, :truncate, :clean_gitlab_redis_cache do
describe Geo::RepositoryShardSyncWorker, :geo, :delete, :clean_gitlab_redis_cache do
include ::EE::GeoHelpers
let!(:primary) { create(:geo_node, :primary) }
......
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