Add common ThreadingHelper module for specs (#29116)

This commit is contained in:
Matt Jankowski 2024-02-07 09:53:29 -05:00 committed by GitHub
parent dbafec88e5
commit 95da28d201
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 40 additions and 57 deletions

View file

@ -219,27 +219,19 @@ RSpec.describe ResolveAccountService, type: :service do
end
it 'processes one remote account at a time using locks' do
wait_for_start = true
fail_occurred = false
return_values = Concurrent::Array.new
threads = Array.new(5) do
Thread.new do
true while wait_for_start
begin
return_values << described_class.new.call('foo@ap.example.com')
rescue ActiveRecord::RecordNotUnique
fail_occurred = true
ensure
RedisConfiguration.pool.checkin if Thread.current[:redis]
end
multi_threaded_execution(5) do
begin
return_values << described_class.new.call('foo@ap.example.com')
rescue ActiveRecord::RecordNotUnique
fail_occurred = true
ensure
RedisConfiguration.pool.checkin if Thread.current[:redis]
end
end
wait_for_start = false
threads.each(&:join)
expect(fail_occurred).to be false
expect(return_values).to_not include(nil)
end