Sha256: 0339da99448bb3056e258b5f3786f2b42b0106598380a2d6ddba0ef3bde812bf

Contents?: true

Size: 1.07 KB

Versions: 4

Compression:

Stored size: 1.07 KB

Contents

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 }

  it 'raises empty responder exception when responding without callback' do
    expect {@responder = request.respond_to destination }.to raise_error described_class::EmptyResponder
  end

  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

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
freddy-0.4.6 spec/freddy/request_spec.rb
freddy-0.4.4 spec/freddy/request_spec.rb
freddy-jruby-0.4.3 spec/freddy/request_spec.rb
freddy-0.4.3 spec/freddy/request_spec.rb