Improve Geo::RepositoriesCleanUpWorker spec with hashed storage examples

parent 475873d2
...@@ -12,12 +12,14 @@ describe Geo::RepositoriesCleanUpWorker do ...@@ -12,12 +12,14 @@ describe Geo::RepositoriesCleanUpWorker do
let(:synced_group) { create(:group) } let(:synced_group) { create(:group) }
let(:geo_node) { create(:geo_node, namespaces: [synced_group]) } let(:geo_node) { create(:geo_node, namespaces: [synced_group]) }
context 'legacy storage' do
it 'performs GeoRepositoryDestroyWorker for each project that does not belong to selected namespaces to replicate' do it 'performs GeoRepositoryDestroyWorker for each project that does not belong to selected namespaces to replicate' do
project_in_synced_group = create(:project, group: synced_group) project_in_synced_group = create(:project, group: synced_group)
unsynced_project = create(:project, :repository) unsynced_project = create(:project, :repository)
disk_path = "#{unsynced_project.namespace.full_path}/#{unsynced_project.path}"
expect(GeoRepositoryDestroyWorker).to receive(:perform_async) expect(GeoRepositoryDestroyWorker).to receive(:perform_async)
.with(unsynced_project.id, unsynced_project.name, unsynced_project.disk_path, unsynced_project.repository.storage) .with(unsynced_project.id, unsynced_project.name, disk_path, unsynced_project.repository.storage)
.once.and_return(1) .once.and_return(1)
expect(GeoRepositoryDestroyWorker).not_to receive(:perform_async) expect(GeoRepositoryDestroyWorker).not_to receive(:perform_async)
...@@ -25,6 +27,31 @@ describe Geo::RepositoriesCleanUpWorker do ...@@ -25,6 +27,31 @@ describe Geo::RepositoriesCleanUpWorker do
subject.perform(geo_node.id) subject.perform(geo_node.id)
end end
end
context 'hashed storage' do
before do
stub_application_setting(hashed_storage_enabled: true)
end
it 'performs GeoRepositoryDestroyWorker for each project that does not belong to selected namespaces to replicate' do
project_in_synced_group = create(:project, group: synced_group)
unsynced_project = create(:project, :repository)
hash = Digest::SHA2.hexdigest(unsynced_project.id.to_s)
disk_path = "@hashed/#{hash[0..1]}/#{hash[2..3]}/#{hash}"
expect(GeoRepositoryDestroyWorker).to receive(:perform_async)
.with(unsynced_project.id, unsynced_project.name, disk_path, unsynced_project.repository.storage)
.once.and_return(1)
expect(GeoRepositoryDestroyWorker).not_to receive(:perform_async)
.with(project_in_synced_group.id, project_in_synced_group.name, project_in_synced_group.disk_path, project_in_synced_group.repository.storage)
subject.perform(geo_node.id)
end
end
it 'does not perform GeoRepositoryDestroyWorker when repository does not exist' do it 'does not perform GeoRepositoryDestroyWorker when repository does not exist' do
create(:project) create(:project)
......
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