require 'spec_helper' describe Freddy::Request do let(:freddy) { Freddy.build(logger, config) } let(:destination) { random_destination } let(:payload) { {pay: 'load'} } let(:request) { freddy.request } after { freddy.close } context 'requesting from multiple threads' do let(:nr_of_threads) { 50 } before do freddy.respond_to 'thread-queue' do |payload, msg_handler| msg_handler.success(payload) end end it 'handles multiple threads' do require 'hamster/experimental/mutable_set' msg_counter = Hamster.mutable_set nr_of_threads.times.map do |index| Thread.new do response = freddy.deliver_with_response 'thread-queue', payload msg_counter << index expect(response).to eq(payload) end end.each(&:join) expect(msg_counter.count).to eq(nr_of_threads) end end end